{
  "openapi": "3.1.0",
  "info": {
    "title": "ReRoom Shared Interface Contracts",
    "version": "1.0.0",
    "description": "Generated from the interface/ TypeScript contract layer. This spec is secondary to the TypeScript contracts and route inventory."
  },
  "servers": [
    {
      "url": "https://reroom.ai/api",
      "description": "Production"
    },
    {
      "url": "http://localhost:3000/api",
      "description": "Local development"
    }
  ],
  "tags": [
    {
      "name": "users",
      "description": "Authentication, profile bootstrap, credits, billing, invites, email sign-in, organization lookup, and subscription upgrade flows."
    },
    {
      "name": "rooms",
      "description": "Core rendering, retrieval, resubmission, feedback, metadata, v7 layered rendering, and room-output lifecycle endpoints."
    },
    {
      "name": "boards",
      "description": "Collaborative board CRUD, nodes, edges, board assets, room placement, search, permissions, transfer, and invite flows."
    },
    {
      "name": "teams",
      "description": "Team CRUD, membership, seats, invites, billing portal, and invoice retrieval flows."
    },
    {
      "name": "chats",
      "description": "Chat rooms, chat rounds, round responses, render decisions, and environment helpers for conversational rendering flows."
    },
    {
      "name": "utils",
      "description": "Utility endpoints for upload helpers, preprocessing, segmentation, recognition, background removal, image analysis, and search helpers."
    }
  ],
  "paths": {
    "/api/2d-blocks/events": {
      "post": {
        "summary": "POST /api/2d-blocks/events",
        "tags": [
          "2d-blocks"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/2d-blocks/events/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/2d-blocks/events/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/2d-blocks/generate": {
      "post": {
        "summary": "POST /api/2d-blocks/generate",
        "tags": [
          "2d-blocks"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/2d-block-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/2d-blocks/generate/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "502": {
            "description": "HTTP 502 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/2d-blocks/generate/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/2d-block-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/2d-blocks/remove-background": {
      "post": {
        "summary": "POST /api/2d-blocks/remove-background",
        "tags": [
          "2d-blocks"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/2d-blocks/remove-background/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/2d-blocks/remove-background/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/ab-tests/default-landing": {
      "post": {
        "summary": "POST /api/ab-tests/default-landing",
        "tags": [
          "ab-tests"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/ab-tests/default-landing/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/ab-tests/default-landing/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "ab_tests",
          "default_path"
        ]
      }
    },
    "/api/ab-tests/exposures": {
      "post": {
        "summary": "POST /api/ab-tests/exposures",
        "tags": [
          "ab-tests"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/ab-test-types.ts.\nGenerated from app/api/ab-tests/exposures/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/ab-tests/exposures/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/ab-test-types.ts"
        ],
        "x-response-keys": [
          "err",
          "ok",
          "variant"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/blog/posts": {
      "get": {
        "summary": "GET /api/blog/posts",
        "tags": [
          "blog"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/blog-types.ts.\nGenerated from app/api/blog/posts/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/blog/posts/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/blog-types.ts"
        ],
        "x-response-keys": [
          "res"
        ]
      },
      "post": {
        "summary": "POST /api/blog/posts",
        "tags": [
          "blog"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/blog-types.ts.\nGenerated from app/api/blog/posts/route.ts.",
        "security": [],
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/blog/posts/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 201,
        "x-source-types": [
          "src/data/types/blog-types.ts"
        ],
        "x-response-keys": [
          "detail",
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/blog/posts/{slug}": {
      "get": {
        "summary": "GET /api/blog/posts/{slug}",
        "tags": [
          "blog"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/blog-types.ts.\nGenerated from app/api/blog/posts/[slug]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/blog/posts/[slug]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/blog-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/blog/posts/{slug}",
        "tags": [
          "blog"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/blog-types.ts.\nGenerated from app/api/blog/posts/[slug]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/blog/posts/[slug]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/blog-types.ts"
        ],
        "x-response-keys": [
          "detail",
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/blog/posts/{slug}",
        "tags": [
          "blog"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/blog-types.ts.\nGenerated from app/api/blog/posts/[slug]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/blog/posts/[slug]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/blog-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/blog/posts/{slug}/publish": {
      "post": {
        "summary": "POST /api/blog/posts/{slug}/publish",
        "tags": [
          "blog"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/blog/posts/[slug]/publish/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/blog/posts/[slug]/publish/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/blog/upload-url": {
      "post": {
        "summary": "POST /api/blog/upload-url",
        "tags": [
          "blog"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/blog/upload-url/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/blog/upload-url/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards": {
      "get": {
        "summary": "List boards for the active personal or team context.",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBoardsResponse"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      },
      "post": {
        "summary": "Create a new board.",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/boards/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateBoardResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBoardRequest"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}": {
      "get": {
        "summary": "GET /api/boards/[id]: Get board details",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts, src/data/types/team-types.ts.\nGenerated from app/api/boards/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/boards/[id]: Update a board",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/boards/[_id]/schema.ts.\nLinked source type files: src/data/types/board-types.ts, src/data/types/team-types.ts.\nGenerated from app/api/boards/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/boards/{_id}",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts, src/data/types/team-types.ts.\nGenerated from app/api/boards/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/boards/{_id}/assets": {
      "get": {
        "summary": "GET /api/boards/[id]/assets: Get all assets for a board",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/assets/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/assets/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/boards/[id]/assets: Create a new asset for a board",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/assets/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/assets/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/assets/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/assets/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/edges": {
      "post": {
        "summary": "POST /api/boards/[id]/edges: Create an edge",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/edges/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/edges/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/edges/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/edges/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/invites": {
      "get": {
        "summary": "GET /api/boards/[id]/invites: Get board invites",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/invites/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/invites/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/boards/{_id}/invites",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/invites/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/invites/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/invites/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/invites/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/nodes": {
      "post": {
        "summary": "POST /boards/[_id]/nodes - Create a new node",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/nodes/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/nodes/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/nodes/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/nodes/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "put": {
        "summary": "PUT /boards/[_id]/nodes - Update multiple nodes",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/nodes/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/nodes/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/nodes/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/nodes/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/nodes/image-node": {
      "post": {
        "summary": "POST /api/boards/[id]/nodes/image-node: Create a new image node",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/nodes/image-node/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/nodes/image-node/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/nodes/image-node/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/nodes/image-node/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/nodes/image-url-node": {
      "post": {
        "summary": "POST /api/boards/{_id}/nodes/image-url-node",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/nodes/image-url-node/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/nodes/image-url-node/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/nodes/image-url-node/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/nodes/image-url-node/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/permissions": {
      "get": {
        "summary": "GET /boards/:id/permissions - List all user-level permissions",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/permissions/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/permissions/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /boards/:id/permissions - Batch update user-level permissions",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/permissions/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/permissions/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/permissions/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/permissions/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/permissions/{uid}": {
      "delete": {
        "summary": "DELETE /boards/:id/permissions/:uid - Remove user-level permissions",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/permissions/[uid]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/permissions/[uid]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/boards/{_id}/rooms": {
      "post": {
        "summary": "POST /api/boards/[_id]/rooms - Create a new room on the board",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/boards/[_id]/rooms/schema.ts.\nLinked source type files: src/data/types/board-types.ts, src/data/types/rooms/v7/room-types.ts, src/data/types/team-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/boards/[_id]/rooms/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/rooms/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/rooms/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/team-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/search": {
      "post": {
        "summary": "POST /boards/[id]/search - search history",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/search/schema.ts.\nLinked source type files: src/data/types/board-types.ts, src/data/types/search-types.ts.\nGenerated from app/api/boards/[_id]/search/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/search/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/search/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/search-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/transfer": {
      "post": {
        "summary": "POST /boards/[_id]/transfer - Transfer board ownership",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/transfer/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/transfer/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/transfer/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/transfer/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/{_id}/upload": {
      "post": {
        "summary": "POST /api/boards/{_id}/upload",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/boards/[_id]/upload/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/[_id]/upload/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/[_id]/upload/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/boards/[_id]/upload/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/boards/invites/{token}": {
      "delete": {
        "summary": "DELETE /api/boards/invites/{token}",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/invites/[token]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/invites/[token]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/boards/invites/{token}/accept": {
      "post": {
        "summary": "POST /boards/invites/:token/accept - Accept board invitation",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/invites/[token]/accept/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "description": "HTTP 410 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/invites/[token]/accept/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/boards/invites/{token}/reject": {
      "post": {
        "summary": "POST /api/boards/invites/{token}/reject",
        "tags": [
          "boards"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/boards/invites/[token]/reject/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/boards/invites/[token]/reject/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/characters": {
      "get": {
        "summary": "GET /api/characters",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/character-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/characters/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      },
      "post": {
        "summary": "POST /api/characters",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/character-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/characters/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "operation_id",
          "res",
          "retryable",
          "version"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/characters/{_id}": {
      "get": {
        "summary": "GET /api/characters/{_id}",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/characters/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "patch": {
        "summary": "PATCH /api/characters/{_id}",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/characters/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/characters/{_id}",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/characters/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/characters/{_id}/assets/{assetId}": {
      "get": {
        "summary": "GET /api/characters/{_id}/assets/{assetId}",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/characters/[_id]/assets/[assetId]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/[_id]/assets/[assetId]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/characters/{_id}/versions": {
      "post": {
        "summary": "POST /api/characters/{_id}/versions",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/character-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/characters/[_id]/versions/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/[_id]/versions/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "operation_status",
          "res",
          "retryable",
          "version"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/characters/analyze": {
      "post": {
        "summary": "POST /api/characters/analyze",
        "tags": [
          "characters"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/character-types.ts.\nGenerated from app/api/characters/analyze/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "HTTP 422 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "HTTP 429 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/analyze/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/characters/casts": {
      "get": {
        "summary": "GET /api/characters/casts",
        "tags": [
          "characters"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/character-types.ts.\nGenerated from app/api/characters/casts/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/casts/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts"
        ],
        "x-response-keys": [
          "res"
        ]
      },
      "post": {
        "summary": "POST /api/characters/casts",
        "tags": [
          "characters"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/character-types.ts.\nGenerated from app/api/characters/casts/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/casts/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/characters/casts",
        "tags": [
          "characters"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/character-types.ts.\nGenerated from app/api/characters/casts/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/characters/casts/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/chats/rooms": {
      "get": {
        "summary": "List chat rooms for the authenticated user.",
        "tags": [
          "chats"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nQuery parameters are documented by app/api/chats/rooms/schema.ts.\nGenerated from app/api/chats/rooms/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListChatRoomsResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/chats/rooms/route.ts",
        "x-validator": "none",
        "x-query-schema-source": "app/api/chats/rooms/schema.ts",
        "x-query-types": [
          "ListChatRoomsQuery"
        ],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "rooms"
        ],
        "parameters": [
          {
            "name": "before",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "env",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "sketchup",
                "blender",
                "revit",
                "rhino",
                "unknown"
              ]
            }
          }
        ]
      }
    },
    "/api/chats/rooms/{_id}": {
      "get": {
        "summary": "GET /api/chats/rooms/{_id}",
        "tags": [
          "chats"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/chats/rooms/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/chats/rooms/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "chat_room",
          "chat_rounds",
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/chats/rounds": {
      "post": {
        "summary": "Start an SSE chat round stream.",
        "tags": [
          "chats"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by zod using app/api/chats/rounds/schema.ts.\nRequest body consumes raw bytes.\nThis route streams server-sent events rather than returning a single JSON response body.\nLinked source type files: src/data/types/chat-types.ts, src/data/types/search-types.ts.\nResponse body is streamed as text/event-stream rather than a single JSON document.\nGenerated from app/api/chats/rounds/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Server-sent event stream.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad request or validation failure.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiErrorEnvelope"
                    },
                    {
                      "$ref": "#/components/schemas/ValidationErrorEnvelope"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/chats/rounds/route.ts",
        "x-validator": "zod",
        "x-query-types": [],
        "x-request-schema-source": "app/api/chats/rounds/schema.ts",
        "x-request-content-type": "application/octet-stream",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/chat-types.ts",
          "src/data/types/search-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        }
      }
    },
    "/api/chats/rounds/{_id}": {
      "get": {
        "summary": "GET /api/chats/rounds/{_id}",
        "tags": [
          "chats"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/chats/rounds/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/chats/rounds/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/chats/rounds/{_id}/responses/{key}": {
      "get": {
        "summary": "GET /api/chats/rounds/{_id}/responses/{key}",
        "tags": [
          "chats"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/chat-types.ts, src/data/types/rooms/v7/room-types.ts.\nGenerated from app/api/chats/rounds/[_id]/responses/[key]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/chats/rounds/[_id]/responses/[key]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/chat-types.ts",
          "src/data/types/rooms/v7/room-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/chats/rounds/render": {
      "post": {
        "summary": "POST /api/chats/rounds/render",
        "tags": [
          "chats"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by zod using app/api/chats/rounds/render/schema.ts.\nLinked source type files: src/data/types/chat-types.ts, src/data/types/rooms/v7/room-types.ts.\nGenerated from app/api/chats/rounds/render/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "Bad request or validation failure.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiErrorEnvelope"
                    },
                    {
                      "$ref": "#/components/schemas/ValidationErrorEnvelope"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/chats/rounds/render/route.ts",
        "x-validator": "zod",
        "x-query-types": [],
        "x-request-schema-source": "app/api/chats/rounds/render/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/chat-types.ts",
          "src/data/types/rooms/v7/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/chats/utils/check-env": {
      "post": {
        "summary": "POST /api/chats/utils/check-env",
        "tags": [
          "chats"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by zod using app/api/chats/utils/check-env/schema.ts.\nLinked source type files: src/data/types/chat-types.ts.\nGenerated from app/api/chats/utils/check-env/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "Bad request or validation failure.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiErrorEnvelope"
                    },
                    {
                      "$ref": "#/components/schemas/ValidationErrorEnvelope"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/chats/utils/check-env/route.ts",
        "x-validator": "zod",
        "x-query-types": [],
        "x-request-schema-source": "app/api/chats/utils/check-env/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/chat-types.ts"
        ],
        "x-response-keys": [
          "env",
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/community/admin/comments/{id}/moderation": {
      "post": {
        "summary": "POST /api/community/admin/comments/{id}/moderation",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/admin/comments/[id]/moderation/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/admin/comments/[id]/moderation/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "detail",
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/community/admin/comments/{id}/translation/requeue": {
      "post": {
        "summary": "POST /api/community/admin/comments/{id}/translation/requeue",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/admin/comments/[id]/translation/requeue/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/admin/comments/[id]/translation/requeue/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/community/admin/discussions/{id}/moderation": {
      "post": {
        "summary": "POST /api/community/admin/discussions/{id}/moderation",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/admin/discussions/[id]/moderation/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/admin/discussions/[id]/moderation/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "detail",
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/community/admin/discussions/{id}/translation/requeue": {
      "post": {
        "summary": "POST /api/community/admin/discussions/{id}/translation/requeue",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/admin/discussions/[id]/translation/requeue/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/admin/discussions/[id]/translation/requeue/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/community/discussions": {
      "get": {
        "summary": "GET /api/community/discussions",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/discussions/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/discussions/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "res"
        ]
      },
      "post": {
        "summary": "POST /api/community/discussions",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/discussions/route.ts.",
        "security": [],
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/discussions/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 201,
        "x-source-types": [],
        "x-response-keys": [
          "detail",
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/community/discussions/{slug}/comments": {
      "get": {
        "summary": "GET /api/community/discussions/{slug}/comments",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/discussions/[slug]/comments/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/discussions/[slug]/comments/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/community/discussions/{slug}/comments",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/discussions/[slug]/comments/route.ts.",
        "security": [],
        "responses": {
          "201": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/discussions/[slug]/comments/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 201,
        "x-source-types": [],
        "x-response-keys": [
          "detail",
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/community/discussions/{slug}/upvote": {
      "post": {
        "summary": "POST /api/community/discussions/{slug}/upvote",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/community/discussions/[slug]/upvote/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/discussions/[slug]/upvote/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/community/images/upload": {
      "post": {
        "summary": "POST /api/community/images/upload",
        "tags": [
          "community"
        ],
        "description": "Public route with no auth helper detected.\nRequest body uses multipart/form-data.\nThis route consumes raw request bytes and should be treated as a webhook endpoint.\nGenerated from app/api/community/images/upload/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "413": {
            "description": "HTTP 413 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/community/images/upload/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "multipart/form-data",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "detail",
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/edges/{_id}": {
      "put": {
        "summary": "PUT /api/edges/[id] - Update an edge",
        "tags": [
          "edges"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/edges/[_id]/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/edges/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/edges/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/edges/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/edges/[id] - Delete an edge",
        "tags": [
          "edges"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/edges/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/edges/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/email/open/{token}": {
      "get": {
        "summary": "Record a lifecycle email open and return a tracking pixel.",
        "tags": [
          "email"
        ],
        "description": "Public route with no auth helper detected.\nThe response is a 1x1 transparent GIF.\nGenerated from app/api/email/open/[token]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful binary response.",
            "content": {
              "image/gif": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/email/open/[token]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/errors": {
      "post": {
        "summary": "POST /api/errors",
        "tags": [
          "errors"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/errors/schema.ts.\nLinked source type files: src/data/types/error-types.ts.\nGenerated from app/api/errors/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/errors/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/errors/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/error-types.ts"
        ],
        "x-response-keys": [
          "success"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/floorplans": {
      "get": {
        "summary": "GET /api/floorplans",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      },
      "post": {
        "summary": "POST /api/floorplans",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/floorplans/{id}": {
      "get": {
        "summary": "GET /api/floorplans/{id}",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/artifacts/{format}": {
      "get": {
        "summary": "Download an owned, paid and delivered floor-plan artifact.",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nformat must be dxf, glb or scene. DXF exports layered 3D CAD faces in metres; GLB exports the same model for 3D apps. Both are file downloads; scene returns validated JSON. IFC is internal and is not a customer download. Refunded, unpaid and unapproved models are inaccessible.\nGenerated from app/api/floorplans/[id]/artifacts/[format]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Artifact content type depends on the requested format.",
            "content": {
              "model/gltf-binary": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "application/dxf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/artifacts/[format]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "format",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/checkout": {
      "post": {
        "summary": "POST /api/floorplans/{id}/checkout",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/checkout/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/checkout/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/correction": {
      "post": {
        "summary": "POST /api/floorplans/{id}/correction",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/correction/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/correction/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/refund": {
      "post": {
        "summary": "POST /api/floorplans/{id}/refund",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/refund/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/refund/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/retry": {
      "post": {
        "summary": "POST /api/floorplans/{id}/retry",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/retry/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/retry/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/views": {
      "post": {
        "summary": "POST /api/floorplans/{id}/views",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/views/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/views/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/views/{viewId}": {
      "get": {
        "summary": "Download a saved camera image from an owned, delivered floor plan.",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nReturns a private PNG attachment after verifying the stored image checksum.\nGenerated from app/api/floorplans/[id]/views/[viewId]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful binary response.",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/views/[viewId]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "viewId",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /api/floorplans/{id}/views/{viewId}",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/views/[viewId]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/views/[viewId]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "viewId",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/{id}/views/{viewId}/render": {
      "post": {
        "summary": "POST /api/floorplans/{id}/views/{viewId}/render",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/[id]/views/[viewId]/render/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/[id]/views/[viewId]/render/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "viewId",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/floorplans/catalog": {
      "get": {
        "summary": "GET /api/floorplans/catalog",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/catalog/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/catalog/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/floorplans/upload-url": {
      "post": {
        "summary": "POST /api/floorplans/upload-url",
        "tags": [
          "floorplans"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/floorplans/upload-url/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/floorplans/upload-url/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/funnel-events": {
      "post": {
        "summary": "POST /api/funnel-events",
        "tags": [
          "funnel-events"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/funnel-events/schema.ts.\nLinked source type files: src/data/types/funnel-event-types.ts.\nGenerated from app/api/funnel-events/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/funnel-events/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/funnel-events/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/funnel-event-types.ts"
        ],
        "x-response-keys": [
          "err",
          "ok"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/gallery/cache": {
      "get": {
        "summary": "GET /api/gallery/cache",
        "tags": [
          "gallery"
        ],
        "description": "Public route with no auth helper detected.\nQuery parameters are documented by app/api/gallery/cache/schema.ts.\nLinked source type files: src/data/types/gallery-cache-types.ts.\nGenerated from app/api/gallery/cache/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/gallery/cache/route.ts",
        "x-validator": "none",
        "x-query-schema-source": "app/api/gallery/cache/schema.ts",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/gallery-cache-types.ts"
        ],
        "x-response-keys": []
      }
    },
    "/api/inventories": {
      "get": {
        "summary": "GET /api/inventories",
        "tags": [
          "inventories"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/inventory-types.ts.\nGenerated from app/api/inventories/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/inventories/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/inventory-types.ts"
        ],
        "x-response-keys": []
      },
      "post": {
        "summary": "POST /api/inventories",
        "tags": [
          "inventories"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/inventories/schema.ts.\nLinked source type files: src/data/types/inventory-types.ts.\nGenerated from app/api/inventories/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/inventories/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/inventories/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/inventory-types.ts"
        ],
        "x-response-keys": [
          "_id",
          "err",
          "ext",
          "key",
          "photos"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/inventories/{_id}/add-photo": {
      "put": {
        "summary": "PUT /api/inventories/{_id}/add-photo",
        "tags": [
          "inventories"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/inventories/[_id]/add-photo/schema.ts.\nLinked source type files: src/data/types/inventory-types.ts.\nGenerated from app/api/inventories/[_id]/add-photo/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/inventories/[_id]/add-photo/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/inventories/[_id]/add-photo/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/inventory-types.ts"
        ],
        "x-response-keys": [
          "_id",
          "err",
          "ext",
          "key",
          "photos"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/layers": {
      "post": {
        "summary": "POST /api/layers",
        "tags": [
          "layers"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/layers/schema.ts.\nLinked source type files: src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/layers/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/layers/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/layers/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/layers/{_id}": {
      "get": {
        "summary": "GET /api/layers/{_id}",
        "tags": [
          "layers"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/layers/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/layers/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/layers/{_id}",
        "tags": [
          "layers"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/layers/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/layers/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/layers/{_id}",
        "tags": [
          "layers"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/layers/[_id]/schema.ts.\nLinked source type files: src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/layers/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/layers/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/layers/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /api/layers/{_id}",
        "tags": [
          "layers"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/layers/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/layers/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/layers/{_id}/upscale": {
      "post": {
        "summary": "POST /api/layers/[_id]/upscale: upscale the output image",
        "tags": [
          "layers"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/layers/[_id]/upscale/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/layers/[_id]/upscale/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/madeof/analyze": {
      "post": {
        "summary": "POST /api/madeof/analyze",
        "tags": [
          "madeof"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/madeof-types.ts.\nGenerated from app/api/madeof/analyze/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "HTTP 429 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "502": {
            "description": "HTTP 502 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/madeof/analyze/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/madeof-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/madeof/materials": {
      "get": {
        "summary": "GET /api/madeof/materials",
        "tags": [
          "madeof"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/madeof/materials/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/madeof/materials/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/messages": {
      "post": {
        "summary": "POST /api/messages",
        "tags": [
          "messages"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/messages/schema.ts.\nGenerated from app/api/messages/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/messages/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/messages/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/nodes/{_id}": {
      "put": {
        "summary": "PUT /nodes/[_id] - Update a node",
        "tags": [
          "nodes"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/nodes/[_id]/schema.ts.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/nodes/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/nodes/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/nodes/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /nodes/[_id] - Delete a node",
        "tags": [
          "nodes"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/nodes/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/nodes/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/organizations": {
      "post": {
        "summary": "POST /api/organizations",
        "tags": [
          "organizations"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/organizations/schema.ts.\nLinked source type files: src/data/types/organization-types.ts.\nGenerated from app/api/organizations/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/organizations/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/organizations/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/organization-types.ts"
        ],
        "x-response-keys": [
          "_id"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/organizations/{_id}": {
      "get": {
        "summary": "GET /api/organizations/{_id}",
        "tags": [
          "organizations"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/organizations/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/organizations/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/outputs/{_id}": {
      "get": {
        "summary": "GET /api/outputs/{_id}",
        "tags": [
          "outputs"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts.\nGenerated from app/api/outputs/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/outputs/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/personalize/images": {
      "get": {
        "summary": "GET /personalize/images?styleId= - Get images with styleId",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/images/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/images/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/personalize/images/{_id}": {
      "put": {
        "summary": "PUT /personalize/image/:id - update image",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/personalize/images/[_id]/schema.ts.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/images/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/images/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/personalize/images/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /personalize/image/:id - remove image",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/images/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/images/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/personalize/moodboards": {
      "post": {
        "summary": "POST /personalize/moodboards - create moodboard",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/personalize/moodboards/schema.ts.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/moodboards/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/moodboards/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/personalize/moodboards/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/personalize/moodboards/{_id}": {
      "get": {
        "summary": "GET /personalize/moodboards/:id - Get moodboard details",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/moodboards/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/moodboards/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /personalize/moodboards/:id/images - Add image to moodboard",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/personalize/moodboards/[_id]/schema.ts.\nRequest body consumes raw bytes.\nThis route consumes raw request bytes and should be treated as a webhook endpoint.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/moodboards/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/moodboards/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/personalize/moodboards/[_id]/schema.ts",
        "x-request-content-type": "application/octet-stream",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        }
      },
      "put": {
        "summary": "PUT /personalize/moodboards/:id - Update moodboard details",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/personalize/moodboards/[_id]/schema.ts.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/moodboards/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/moodboards/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/personalize/moodboards/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /personalize/moodboards/:id - Remove moodboard",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/moodboards/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/moodboards/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/personalize/moodboards/{_id}/upload": {
      "post": {
        "summary": "POST /api/personalize/moodboards/{_id}/upload",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/personalize/moodboards/[_id]/upload/schema.ts.\nGenerated from app/api/personalize/moodboards/[_id]/upload/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/moodboards/[_id]/upload/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/personalize/moodboards/[_id]/upload/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/personalize/profiles": {
      "post": {
        "summary": "POST /personalize/profiles - create profile",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/personalize/profiles/schema.ts.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/profiles/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/profiles/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/personalize/profiles/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/personalize/styles": {
      "get": {
        "summary": "GET /personalize/styles - List user's styles",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/personalize-types.ts.\nGenerated from app/api/personalize/styles/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/styles/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/personalize-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/personalize/styles/{_id}": {
      "delete": {
        "summary": "DELETE /personalize/styles/:id - Delete style",
        "tags": [
          "personalize"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/personalize/styles/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/personalize/styles/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/product-events": {
      "post": {
        "summary": "POST /api/product-events",
        "tags": [
          "product-events"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/product-events/schema.ts.\nGenerated from app/api/product-events/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/product-events/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/product-events/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "ok"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/profiles": {
      "post": {
        "summary": "POST /api/profiles",
        "tags": [
          "profiles"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/profiles/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/profiles/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/prompting/combine-style": {
      "post": {
        "summary": "POST /api/prompting/combine-style",
        "tags": [
          "prompting"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/prompting/combine-style/schema.ts.\nRequest body consumes raw bytes.\nThis route streams server-sent events rather than returning a single JSON response body.\nLinked source type files: src/data/types/rooms/v6/preprocess-types.ts.\nGenerated from app/api/prompting/combine-style/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Server-sent event stream.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/prompting/combine-style/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/prompting/combine-style/schema.ts",
        "x-request-content-type": "application/octet-stream",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v6/preprocess-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        }
      }
    },
    "/api/rooms": {
      "post": {
        "summary": "Submit a render job.",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/schema.ts.\nLinked source type files: src/data/types/character-types.ts, src/data/types/credit-types.ts, src/data/types/madeof-types.ts, src/data/types/rooms/v5/preprocess-types.ts, src/data/types/rooms/v6/preprocess-types.ts, src/data/types/staging-types.ts, src/data/types/team-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/rooms/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitRoomResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts",
          "src/data/types/credit-types.ts",
          "src/data/types/madeof-types.ts",
          "src/data/types/rooms/v5/preprocess-types.ts",
          "src/data/types/rooms/v6/preprocess-types.ts",
          "src/data/types/staging-types.ts",
          "src/data/types/team-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRoomRequest"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}": {
      "get": {
        "summary": "GET /api/rooms/{_id}",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/rooms/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/rooms/{_id}/angle": {
      "post": {
        "summary": "POST /api/rooms/{_id}/angle",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/[_id]/angle/schema.ts.\nLinked source type files: src/data/types/user-types.ts.\nGenerated from app/api/rooms/[_id]/angle/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/angle/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/[_id]/angle/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/confirm": {
      "post": {
        "summary": "POST /api/rooms/{_id}/confirm",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/[_id]/confirm/schema.ts.\nLinked source type files: src/data/types/rooms/v6/room-types.ts.\nGenerated from app/api/rooms/[_id]/confirm/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/confirm/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/[_id]/confirm/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v6/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "message",
          "success"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/edit-result": {
      "post": {
        "summary": "POST /api/rooms/{_id}/edit-result",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/[_id]/edit-result/schema.ts.\nLinked source type files: src/data/types/user-types.ts.\nGenerated from app/api/rooms/[_id]/edit-result/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/edit-result/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/[_id]/edit-result/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/feedback": {
      "get": {
        "summary": "GET /api/rooms/{_id}/feedback",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/rooms/v5/room-types.ts.\nGenerated from app/api/rooms/[_id]/feedback/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/feedback/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v5/room-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/rooms/{_id}/feedback",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/rooms/[_id]/feedback/schema.ts.\nLinked source type files: src/data/types/rooms/v5/room-types.ts.\nGenerated from app/api/rooms/[_id]/feedback/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/feedback/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/[_id]/feedback/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v5/room-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/fix": {
      "post": {
        "summary": "POST /api/rooms/{_id}/fix",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/rooms/[_id]/fix/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/fix/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "status"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/rooms/{_id}/lab": {
      "get": {
        "summary": "GET /api/rooms/{_id}/lab",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/rooms/[_id]/lab/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/lab/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/rooms/{_id}/metadata": {
      "get": {
        "summary": "GET /api/rooms/{_id}/metadata",
        "tags": [
          "rooms"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/rooms/[_id]/metadata/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/metadata/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/rooms/{_id}/outputs": {
      "get": {
        "summary": "GET /api/rooms/{_id}/outputs",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/rooms/[_id]/outputs/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/outputs/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "outputs"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/rooms/{_id}/parametric/placements": {
      "post": {
        "summary": "POST /api/rooms/{_id}/parametric/placements",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/[_id]/parametric/placements/schema.ts.\nGenerated from app/api/rooms/[_id]/parametric/placements/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/parametric/placements/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/[_id]/parametric/placements/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/resubmit": {
      "post": {
        "summary": "POST /api/rooms/{_id}/resubmit",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/[_id]/resubmit/schema.ts.\nLinked source type files: src/data/types/character-types.ts, src/data/types/credit-types.ts, src/data/types/rooms/v6/preprocess-types.ts, src/data/types/rooms/v6/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/rooms/[_id]/resubmit/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/resubmit/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/[_id]/resubmit/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/character-types.ts",
          "src/data/types/credit-types.ts",
          "src/data/types/rooms/v6/preprocess-types.ts",
          "src/data/types/rooms/v6/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/revert": {
      "post": {
        "summary": "POST /api/rooms/{_id}/revert",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/[_id]/revert/schema.ts.\nLinked source type files: src/data/types/rooms/v6/room-types.ts.\nGenerated from app/api/rooms/[_id]/revert/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/revert/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/[_id]/revert/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v6/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "message",
          "success"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/stats-download": {
      "post": {
        "summary": "POST /api/rooms/{_id}/stats-download",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/rooms/[_id]/stats-download/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/stats-download/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "success"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/{_id}/upscale": {
      "post": {
        "summary": "POST /api/rooms/{_id}/upscale",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/user-types.ts.\nGenerated from app/api/rooms/[_id]/upscale/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/[_id]/upscale/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/rooms/copy-room": {
      "post": {
        "summary": "POST /api/rooms/copy-room",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/rooms/copy-room/schema.ts.\nGenerated from app/api/rooms/copy-room/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/copy-room/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/copy-room/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "message"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/list-history": {
      "get": {
        "summary": "List legacy room history for the active personal or team context.",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nQuery parameters are documented by app/api/rooms/list-history/schema.ts.\nGenerated from app/api/rooms/list-history/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListRoomHistoryResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/list-history/route.ts",
        "x-validator": "none",
        "x-query-schema-source": "app/api/rooms/list-history/schema.ts",
        "x-query-types": [
          "ListRoomHistoryQuery"
        ],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "before",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "room_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "room_style",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "team_id",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "team_member_uid",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/rooms/list-public": {
      "get": {
        "summary": "GET /api/rooms/list-public",
        "tags": [
          "rooms"
        ],
        "description": "Public route with no auth helper detected.\nQuery parameters are documented by app/api/rooms/list-public/schema.ts.\nGenerated from app/api/rooms/list-public/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/list-public/route.ts",
        "x-validator": "none",
        "x-query-schema-source": "app/api/rooms/list-public/schema.ts",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/rooms/list-shortcut": {
      "get": {
        "summary": "GET /api/rooms/list-shortcut",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/rooms/list-shortcut/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/list-shortcut/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/rooms/tools/parametric": {
      "post": {
        "summary": "POST /api/rooms/tools/parametric",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/tools/parametric/schema.ts.\nGenerated from app/api/rooms/tools/parametric/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/tools/parametric/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/tools/parametric/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/tools/photoreal": {
      "post": {
        "summary": "POST /api/rooms/tools/photoreal",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/tools/photoreal/schema.ts.\nLinked source type files: src/data/types/rooms/v6/preprocess-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/rooms/tools/photoreal/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/tools/photoreal/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/tools/photoreal/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v6/preprocess-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/v7": {
      "get": {
        "summary": "GET /api/rooms/v7",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nQuery parameters are documented by app/api/rooms/v7/schema.ts.\nLinked source type files: src/data/types/board-types.ts, src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/rooms/v7/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/route.ts",
        "x-validator": "none",
        "x-query-schema-source": "app/api/rooms/v7/schema.ts",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      },
      "post": {
        "summary": "POST /api/rooms/v7",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by zod using app/api/rooms/v7/schema.ts.\nLinked source type files: src/data/types/board-types.ts, src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/rooms/v7/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "Bad request or validation failure.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiErrorEnvelope"
                    },
                    {
                      "$ref": "#/components/schemas/ValidationErrorEnvelope"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/route.ts",
        "x-validator": "zod",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/v7/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRoomRequest"
              }
            }
          }
        }
      }
    },
    "/api/rooms/v7/{_id}": {
      "get": {
        "summary": "GET /api/rooms/v7/{_id}",
        "tags": [
          "rooms"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/rooms/v7/room-types.ts.\nGenerated from app/api/rooms/v7/[_id]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/rooms/v7/{_id}",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/rooms/v7/[_id]/schema.ts.\nLinked source type files: src/data/types/rooms/v7/room-types.ts.\nGenerated from app/api/rooms/v7/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/v7/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/v7/{_id}/convert": {
      "post": {
        "summary": "POST /api/rooms/v7/{_id}/convert",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/rooms/v6/room-types.ts, src/data/types/rooms/v7/room-types.ts.\nGenerated from app/api/rooms/v7/[_id]/convert/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/[_id]/convert/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v6/room-types.ts",
          "src/data/types/rooms/v7/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/rooms/v7/{_id}/edit-result": {
      "post": {
        "summary": "POST /api/rooms/v7/{_id}/edit-result",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/v7/[_id]/edit-result/schema.ts.\nLinked source type files: src/data/types/rooms/v7/room-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/rooms/v7/[_id]/edit-result/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/[_id]/edit-result/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/v7/[_id]/edit-result/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/v7/{_id}/resubmit": {
      "post": {
        "summary": "POST /api/rooms/v7/{_id}/resubmit",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by zod using app/api/rooms/v7/[_id]/resubmit/schema.ts.\nLinked source type files: src/data/types/user-types.ts.\nGenerated from app/api/rooms/v7/[_id]/resubmit/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "Bad request or validation failure.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApiErrorEnvelope"
                    },
                    {
                      "$ref": "#/components/schemas/ValidationErrorEnvelope"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/[_id]/resubmit/route.ts",
        "x-validator": "zod",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/v7/[_id]/resubmit/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/v7/blank": {
      "post": {
        "summary": "POST /api/rooms/v7/blank",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/rooms/v7/blank/schema.ts.\nLinked source type files: src/data/types/board-types.ts, src/data/types/rooms/v7/room-types.ts.\nGenerated from app/api/rooms/v7/blank/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/blank/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/rooms/v7/blank/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/rooms/v7/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/rooms/v7/render-from-reference": {
      "post": {
        "summary": "POST /api/rooms/v7/render-from-reference",
        "tags": [
          "rooms"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/rooms/v7/room-types.ts.\nGenerated from app/api/rooms/v7/render-from-reference/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/rooms/v7/render-from-reference/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v7/room-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/search/images": {
      "get": {
        "summary": "GET /api/search/images",
        "tags": [
          "search"
        ],
        "description": "Public route with no auth helper detected.\nLinked source type files: src/data/types/search-types.ts.\nGenerated from app/api/search/images/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/search/images/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/search-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/stream": {
      "get": {
        "summary": "GET /api/stream",
        "tags": [
          "stream"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/stream-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/stream/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stream/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/stream-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": []
      },
      "post": {
        "summary": "POST /api/stream",
        "tags": [
          "stream"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/stream/schema.ts.\nLinked source type files: src/data/types/stream-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/stream/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stream/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/stream/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/stream-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "_id",
          "answer",
          "created_at",
          "err",
          "is_plus",
          "phase"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/stream/{_id}": {
      "get": {
        "summary": "GET /api/stream/{_id}",
        "tags": [
          "stream"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nQuery parameters are documented by app/api/stream/[_id]/schema.ts.\nGenerated from app/api/stream/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stream/[_id]/route.ts",
        "x-validator": "none",
        "x-query-schema-source": "app/api/stream/[_id]/schema.ts",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "answer",
          "answer_cddts",
          "answer_ping",
          "created_at",
          "device",
          "is_plus",
          "offer",
          "offer_cddts",
          "offer_ping"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/stream/{_id}/answer": {
      "post": {
        "summary": "POST /api/stream/{_id}/answer",
        "tags": [
          "stream"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/stream/[_id]/answer/schema.ts.\nGenerated from app/api/stream/[_id]/answer/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stream/[_id]/answer/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/stream/[_id]/answer/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "_id"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "put": {
        "summary": "PUT /api/stream/{_id}/answer",
        "tags": [
          "stream"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/stream/[_id]/answer/schema.ts.\nGenerated from app/api/stream/[_id]/answer/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stream/[_id]/answer/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/stream/[_id]/answer/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/stream/{_id}/offer": {
      "get": {
        "summary": "GET /api/stream/{_id}/offer",
        "tags": [
          "stream"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/stream/[_id]/offer/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stream/[_id]/offer/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "sdp"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/stream/{_id}/offer",
        "tags": [
          "stream"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/stream/[_id]/offer/schema.ts.\nGenerated from app/api/stream/[_id]/offer/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stream/[_id]/offer/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/stream/[_id]/offer/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/stripe/account-session": {
      "post": {
        "summary": "POST /api/stripe/account-session",
        "tags": [
          "stripe"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/stripe/account-session/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/stripe/account-session/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "client_secret",
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/styles": {
      "get": {
        "summary": "GET /api/styles",
        "tags": [
          "styles"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/styles/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/styles/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/teams": {
      "get": {
        "summary": "List teams available to the authenticated user.",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTeamsResponse"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      },
      "post": {
        "summary": "Create a new team.",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/teams/schema.ts.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateTeamResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/teams/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTeamRequest"
              }
            }
          }
        }
      }
    },
    "/api/teams/{_id}": {
      "get": {
        "summary": "GET /teams/:id - Get team details",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /teams/:id - Update team",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/teams/[_id]/schema.ts.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/teams/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/teams/{_id}/invites": {
      "get": {
        "summary": "GET /teams/:id/invites - List team's pending invites",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/team-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/teams/[_id]/invites/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/invites/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /teams/:id/invites - Invite team member",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/teams/[_id]/invites/schema.ts.\nLinked source type files: src/data/types/team-types.ts, src/data/types/user-types.ts.\nGenerated from app/api/teams/[_id]/invites/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/invites/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/teams/[_id]/invites/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts",
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/teams/{_id}/members/{uid}": {
      "put": {
        "summary": "PUT /teams/:id/members/:uid - Update member",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/teams/[_id]/members/[uid]/schema.ts.\nGenerated from app/api/teams/[_id]/members/[uid]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/members/[uid]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/teams/[_id]/members/[uid]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "DELETE /teams/:id/members/:uid - Remove team member",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/teams/[_id]/members/[uid]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/members/[uid]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/teams/{_id}/members/{uid}/role": {
      "get": {
        "summary": "GET /api/teams/{_id}/members/{uid}/role",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/[_id]/members/[uid]/role/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/members/[uid]/role/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /teams/:id/members/:uid/role - Update member role",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/teams/[_id]/members/[uid]/role/schema.ts.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/[_id]/members/[uid]/role/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/[_id]/members/[uid]/role/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/teams/[_id]/members/[uid]/role/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          {
            "name": "uid",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/teams/check-stripe-payment": {
      "get": {
        "summary": "GET /api/teams/check-stripe-payment",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/teams/check-stripe-payment/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/check-stripe-payment/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "charged",
          "currency",
          "err",
          "eventId",
          "value"
        ]
      }
    },
    "/api/teams/get-invoices": {
      "get": {
        "summary": "GET /api/teams/get-invoices",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/teams/get-invoices/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/get-invoices/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/teams/invites": {
      "get": {
        "summary": "GET /teams/invites - List user's pending invites",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/invites/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/invites/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/teams/invites/{token}/accept": {
      "post": {
        "summary": "POST /teams/invites/[token]/accept - Accept team invitation",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/invites/[token]/accept/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/invites/[token]/accept/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/teams/invites/{token}/reject": {
      "post": {
        "summary": "POST /teams/invites/:token/reject - Reject team invitation",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/team-types.ts.\nGenerated from app/api/teams/invites/[token]/reject/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/invites/[token]/reject/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/teams/invites/manage/{inviteId}": {
      "delete": {
        "summary": "DELETE /teams/invites/manage/:inviteId - Delete pending invite",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/teams/invites/manage/[inviteId]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/invites/manage/[inviteId]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "inviteId",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/teams/stripe-portal": {
      "get": {
        "summary": "GET /api/teams/stripe-portal",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/teams/stripe-portal/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/stripe-portal/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "url"
        ]
      }
    },
    "/api/teams/subscribe-seats": {
      "post": {
        "summary": "POST /api/teams/subscribe-seats",
        "tags": [
          "teams"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/teams/subscribe-seats/schema.ts.\nLinked source type files: src/data/types/stripe-types.ts.\nGenerated from app/api/teams/subscribe-seats/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/teams/subscribe-seats/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/teams/subscribe-seats/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/stripe-types.ts"
        ],
        "x-response-keys": [
          "err",
          "url"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/upload": {
      "post": {
        "summary": "POST /api/upload",
        "tags": [
          "upload"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/upload/schema.ts.\nGenerated from app/api/upload/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/upload/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/upload/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "fileName",
          "uploadUrl"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users": {
      "get": {
        "summary": "Get authenticated user bootstrap payload.",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/users/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserBootstrapResponse"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "boards",
          "err",
          "user"
        ]
      },
      "post": {
        "summary": "Upsert a user session after Firebase authentication.",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/users/schema.ts.\nGenerated from app/api/users/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "default_path",
          "err",
          "is_new",
          "is_subscribed",
          "token",
          "user"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertUserRequest"
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update basic user profile fields.",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/users/schema.ts.\nThe current success payload mirrors Mongo's update acknowledgement rather than returning the updated user document.\nGenerated from app/api/users/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserRequest"
              }
            }
          }
        }
      }
    },
    "/api/users/ab-test-group": {
      "put": {
        "summary": "PUT /api/users/ab-test-group",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/ab-test-group/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/ab-test-group/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "group",
          "success"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/affiliate-payout-account": {
      "post": {
        "summary": "POST /api/users/affiliate-payout-account",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/affiliate-payout-account/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/affiliate-payout-account/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/affiliate-summary": {
      "get": {
        "summary": "GET /api/users/affiliate-summary",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/affiliate-types.ts.\nGenerated from app/api/users/affiliate-summary/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/affiliate-summary/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/affiliate-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/users/auth-email/plugin": {
      "post": {
        "summary": "Consume a plugin email magic link and bind its active ticket.",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/users/auth-email/plugin/schema.ts.\nJSON requests return the documented JSON response; browser form submissions redirect, set the authToken cookie, and preserve the plugin ticket.\nGenerated from app/api/users/auth-email/plugin/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyPluginEmailResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "HTTP 410 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/auth-email/plugin/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/auth-email/plugin/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyPluginEmailRequest"
              }
            }
          }
        }
      }
    },
    "/api/users/auth-email/sign-in": {
      "post": {
        "summary": "Request an email magic link.",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/users/auth-email/sign-in/schema.ts.\nLinked source type files: src/data/types/user-types.ts.\nThe success message is deliberately generic for unknown, blocked, rate-limited, or invalid plugin-ticket requests.\nGenerated from app/api/users/auth-email/sign-in/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailSignInResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/auth-email/sign-in/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/auth-email/sign-in/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/user-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailSignInRequest"
              }
            }
          }
        }
      }
    },
    "/api/users/auth-email/verify": {
      "post": {
        "summary": "Consume an email magic link and create an authenticated session.",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/users/auth-email/verify/schema.ts.\nJSON requests return the documented JSON response; browser form submissions redirect and set the authToken cookie.\nGenerated from app/api/users/auth-email/verify/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyEmailResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "HTTP 410 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationMixedErrorResponse"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/auth-email/verify/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/auth-email/verify/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "error"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyEmailRequest"
              }
            }
          }
        }
      }
    },
    "/api/users/auth-google/redirect": {
      "get": {
        "summary": "Complete Google OAuth redirect and set the auth session cookie.",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nThis route can respond with an HTTP redirect.\nSuccessful completion redirects the client and sets the authToken cookie.\nFailure responses currently use a non-standard { error: string } envelope.\nGenerated from app/api/users/auth-google/redirect/route.ts.",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect response.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthErrorResponse"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/auth-google/redirect/route.ts",
        "x-validator": "none",
        "x-query-types": [
          "GoogleAuthRedirectQuery"
        ],
        "x-success-status": 307,
        "x-source-types": [],
        "x-response-keys": [
          "error"
        ],
        "parameters": [
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bridge_path",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaign",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "redirect",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "error",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "error_description",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/users/auth-google/sign-in": {
      "post": {
        "summary": "Sign in with a Google credential and redirect.",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body uses multipart/form-data.\nThis route can respond with an HTTP redirect.\nSuccessful completion redirects the client and sets the authToken cookie.\nFailure responses currently use a non-standard { error: string } envelope.\nGenerated from app/api/users/auth-google/sign-in/route.ts.",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect response.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthErrorResponse"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/auth-google/sign-in/route.ts",
        "x-validator": "none",
        "x-query-types": [
          "GoogleSignInQuery"
        ],
        "x-request-content-type": "multipart/form-data",
        "x-success-status": 307,
        "x-source-types": [],
        "x-response-keys": [
          "error"
        ],
        "parameters": [
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaign",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "redirect",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/GoogleSignInFormRequest"
              }
            }
          }
        }
      }
    },
    "/api/users/auth-google/sketchup": {
      "post": {
        "summary": "Sign in for the SketchUp assistant bridge and redirect.",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body uses multipart/form-data.\nThis route can respond with an HTTP redirect.\nSuccessful completion redirects the client, sets the authToken cookie, and updates the requested ticket with the issued token.\nFailure responses may use either { error: string } or { err: string } depending on the branch.\nGenerated from app/api/users/auth-google/sketchup/route.ts.",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect response.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthMixedErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthMixedErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthMixedErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleAuthMixedErrorResponse"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/auth-google/sketchup/route.ts",
        "x-validator": "none",
        "x-query-types": [
          "GoogleSketchUpSignInQuery"
        ],
        "x-request-content-type": "multipart/form-data",
        "x-success-status": 307,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "error"
        ],
        "parameters": [
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaign",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ticket_key",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/GoogleSignInFormRequest"
              }
            }
          }
        }
      }
    },
    "/api/users/credits": {
      "post": {
        "summary": "POST /api/users/credits",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/users/credits/schema.ts.\nLinked source type files: src/data/types/credit-types.ts.\nGenerated from app/api/users/credits/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/credits/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/credits/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/credit-types.ts"
        ],
        "x-response-keys": [
          "err",
          "manual_credits",
          "monthly_credits",
          "num_credits",
          "purchased_credits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/geolocation": {
      "put": {
        "summary": "PUT /api/users/geolocation",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/users/geolocation/schema.ts.\nLinked source type files: src/data/types/tracking-types.ts.\nGenerated from app/api/users/geolocation/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/geolocation/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/geolocation/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/tracking-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/get-affiliate-code": {
      "get": {
        "summary": "GET /api/users/get-affiliate-code",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/get-affiliate-code/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "HTTP 409 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/get-affiliate-code/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "affiliate_code",
          "err",
          "is_new"
        ]
      }
    },
    "/api/users/get-info": {
      "get": {
        "summary": "GET /api/users/get-info",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/get-info/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/get-info/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "stripe_customer_id"
        ]
      }
    },
    "/api/users/get-invoices": {
      "get": {
        "summary": "GET /api/users/get-invoices",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/get-invoices/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/get-invoices/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/users/get-organizations": {
      "get": {
        "summary": "GET /api/users/get-organizations",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/get-organizations/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/get-organizations/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/users/invites": {
      "get": {
        "summary": "GET /api/users/invites",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nLinked source type files: src/data/types/board-types.ts, src/data/types/team-types.ts.\nGenerated from app/api/users/invites/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/invites/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/board-types.ts",
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ]
      }
    },
    "/api/users/join-program": {
      "post": {
        "summary": "POST /api/users/join-program",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/users/join-program/schema.ts.\nGenerated from app/api/users/join-program/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/join-program/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/join-program/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/locale-session-redirect": {
      "get": {
        "summary": "GET /api/users/locale-session-redirect",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/users/locale-session-redirect/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/locale-session-redirect/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/users/locale-session-redirect/complete": {
      "get": {
        "summary": "GET /api/users/locale-session-redirect/complete",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nThis route can respond with an HTTP redirect.\nGenerated from app/api/users/locale-session-redirect/complete/route.ts.",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect response.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/locale-session-redirect/complete/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 307,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/users/logout": {
      "get": {
        "summary": "GET /api/users/logout",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nThis route can respond with an HTTP redirect.\nGenerated from app/api/users/logout/route.ts.",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect response.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/logout/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 307,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/users/logout/complete": {
      "get": {
        "summary": "GET /api/users/logout/complete",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nThis route can respond with an HTTP redirect.\nGenerated from app/api/users/logout/complete/route.ts.",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect response.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/logout/complete/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 307,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/users/plugin/token/{token}": {
      "post": {
        "summary": "POST /users/plugin/token/[token] - update user_tickets for signed in user",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/users/plugin/token/[token]/schema.ts.\nGenerated from app/api/users/plugin/token/[token]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/plugin/token/[token]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/plugin/token/[token]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/programs": {
      "get": {
        "summary": "GET /api/users/programs",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/programs/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/programs/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/users/programs/{_id}": {
      "get": {
        "summary": "GET /api/users/programs/{_id}",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/programs/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/programs/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/users/prompt-edit-history": {
      "get": {
        "summary": "GET /api/users/prompt-edit-history",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/prompt-edit-history/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/prompt-edit-history/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "history"
        ]
      },
      "post": {
        "summary": "POST /api/users/prompt-edit-history",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/prompt-edit-history/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/prompt-edit-history/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "history"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/renders": {
      "get": {
        "summary": "GET /api/users/renders",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/renders/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/renders/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ]
      }
    },
    "/api/users/socket-token": {
      "post": {
        "summary": "Issue a short-lived credential scoped to Socket.IO authentication.",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/socket-token/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SocketAuthTokenResponse"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/socket-token/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "expires_in",
          "token"
        ]
      }
    },
    "/api/users/stripe-charge": {
      "get": {
        "summary": "GET /api/users/stripe-charge",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/users/stripe-charge/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/stripe-charge/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "charged",
          "currency",
          "err",
          "eventId",
          "value"
        ]
      }
    },
    "/api/users/switch-team": {
      "post": {
        "summary": "Switch the active team context cookie.",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/users/switch-team/schema.ts.\nLinked source type files: src/data/types/team-types.ts.\nA successful response also updates or clears the teamToken cookie.\nGenerated from app/api/users/switch-team/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SwitchTeamResponse"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/switch-team/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/switch-team/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/team-types.ts"
        ],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SwitchTeamRequest"
              }
            }
          }
        }
      }
    },
    "/api/users/tickets": {
      "get": {
        "summary": "GET /api/users/tickets",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/users/tickets/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/tickets/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "key"
        ]
      }
    },
    "/api/users/tickets/{key}": {
      "get": {
        "summary": "GET /api/users/tickets/{key}",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/users/tickets/[key]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/tickets/[key]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "token"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "post": {
        "summary": "POST /api/users/tickets/{key}",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/users/tickets/[key]/schema.ts.\nGenerated from app/api/users/tickets/[key]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/tickets/[key]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/tickets/[key]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      },
      "put": {
        "summary": "PUT /api/users/tickets/{key}",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/users/tickets/[key]/schema.ts.\nGenerated from app/api/users/tickets/[key]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/tickets/[key]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/tickets/[key]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "token"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/tickets/{key}/consume": {
      "get": {
        "summary": "GET /api/users/tickets/{key}/consume",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nThis route can respond with an HTTP redirect.\nGenerated from app/api/users/tickets/[key]/consume/route.ts.",
        "security": [],
        "responses": {
          "307": {
            "description": "Redirect response.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/tickets/[key]/consume/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 307,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/users/touches": {
      "post": {
        "summary": "POST /api/users/touches",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/users/touches/schema.ts.\nLinked source type files: src/data/types/tracking-types.ts.\nGenerated from app/api/users/touches/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/touches/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/touches/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/tracking-types.ts"
        ],
        "x-response-keys": [
          "err",
          "ok"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/unsubscribe": {
      "get": {
        "summary": "GET /api/users/unsubscribe",
        "tags": [
          "users"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/users/unsubscribe/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/unsubscribe/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": []
      }
    },
    "/api/users/upgrade-plus": {
      "post": {
        "summary": "POST /api/users/upgrade-plus",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/users/upgrade-plus/schema.ts.\nLinked source type files: src/data/types/stripe-types.ts.\nGenerated from app/api/users/upgrade-plus/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/upgrade-plus/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/upgrade-plus/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/stripe-types.ts"
        ],
        "x-response-keys": [
          "err",
          "url"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/upgrade-plus/img2vid-attribution": {
      "post": {
        "summary": "POST /api/users/upgrade-plus/img2vid-attribution",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nGenerated from app/api/users/upgrade-plus/img2vid-attribution/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "HTTP 503 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/upgrade-plus/img2vid-attribution/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "token"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/video-credits/checkout": {
      "post": {
        "summary": "POST /api/users/video-credits/checkout",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. teamToken cookie may provide optional active team context.\nRequest body is validated by joi using app/api/users/video-credits/checkout/schema.ts.\nLinked source type files: src/data/types/credit-types.ts.\nGenerated from app/api/users/video-credits/checkout/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          },
          {
            "teamTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "HTTP 403 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/video-credits/checkout/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/video-credits/checkout/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/credit-types.ts"
        ],
        "x-response-keys": [
          "err",
          "url"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/users/web-push": {
      "put": {
        "summary": "PUT /api/users/web-push",
        "tags": [
          "users"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/users/web-push/schema.ts.\nGenerated from app/api/users/web-push/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/users/web-push/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/users/web-push/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/empty-room": {
      "post": {
        "summary": "POST /api/utils/empty-room",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/empty-room/schema.ts.\nGenerated from app/api/utils/empty-room/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/empty-room/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/empty-room/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/image-info": {
      "post": {
        "summary": "POST /api/utils/image-info",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/image-info/schema.ts.\nRequest body consumes raw bytes.\nThis route consumes raw request bytes and should be treated as a webhook endpoint.\nLinked source type files: src/data/types/rooms/v6/preprocess-types.ts.\nGenerated from app/api/utils/image-info/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/image-info/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/image-info/schema.ts",
        "x-request-content-type": "application/octet-stream",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v6/preprocess-types.ts"
        ],
        "x-response-keys": [
          "background_detail_level",
          "camera_distance",
          "category",
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        }
      }
    },
    "/api/utils/image-url-to-no-auth": {
      "post": {
        "summary": "POST /api/utils/image-url-to-no-auth",
        "tags": [
          "utils"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/utils/image-url-to-no-auth/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/image-url-to-no-auth/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/preprocess": {
      "post": {
        "summary": "POST /api/utils/preprocess",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/preprocess/schema.ts.\nLinked source type files: src/data/types/rooms/v5/preprocess-types.ts.\nGenerated from app/api/utils/preprocess/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/preprocess/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/preprocess/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rooms/v5/preprocess-types.ts"
        ],
        "x-response-keys": [
          "_id",
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/preprocess/{_id}": {
      "get": {
        "summary": "GET /api/utils/preprocess/{_id}",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/utils/preprocess/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/preprocess/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/utils/recognitions": {
      "post": {
        "summary": "POST /api/utils/recognitions",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/recognitions/schema.ts.\nLinked source type files: src/data/types/recognition-types.ts.\nGenerated from app/api/utils/recognitions/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/recognitions/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/recognitions/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/recognition-types.ts"
        ],
        "x-response-keys": [
          "err",
          "recId"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/recognitions/{_id}": {
      "get": {
        "summary": "GET /api/utils/recognitions/{_id}",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/utils/recognitions/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/recognitions/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/utils/recognitions/{_id}/recognize": {
      "post": {
        "summary": "POST /api/utils/recognitions/{_id}/recognize",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/recognitions/[_id]/recognize/schema.ts.\nLinked source type files: src/data/types/recognition-types.ts.\nGenerated from app/api/utils/recognitions/[_id]/recognize/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/recognitions/[_id]/recognize/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/recognitions/[_id]/recognize/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/recognition-types.ts"
        ],
        "x-response-keys": [
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/rembg": {
      "post": {
        "summary": "POST /api/utils/rembg",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/rembg/schema.ts.\nLinked source type files: src/data/types/rembg-types.ts.\nGenerated from app/api/utils/rembg/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/rembg/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/rembg/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rembg-types.ts"
        ],
        "x-response-keys": [
          "_id",
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/rembg/{_id}": {
      "get": {
        "summary": "GET /api/utils/rembg/{_id}",
        "tags": [
          "utils"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/utils/rembg/[_id]/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/rembg/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      }
    },
    "/api/utils/rembg/create-free": {
      "post": {
        "summary": "POST /api/utils/rembg/create-free",
        "tags": [
          "utils"
        ],
        "description": "Public route with no auth helper detected.\nRequest body is validated by joi using app/api/utils/rembg/create-free/schema.ts.\nLinked source type files: src/data/types/rembg-types.ts.\nGenerated from app/api/utils/rembg/create-free/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/rembg/create-free/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/rembg/create-free/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/rembg-types.ts"
        ],
        "x-response-keys": [
          "_id"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/segments": {
      "post": {
        "summary": "POST /api/utils/segments",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/segments/schema.ts.\nLinked source type files: src/data/types/segment-types.ts.\nGenerated from app/api/utils/segments/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/segments/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/segments/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [
          "src/data/types/segment-types.ts"
        ],
        "x-response-keys": [
          "_id",
          "err"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/segments/{_id}": {
      "get": {
        "summary": "GET /api/utils/segments/{_id}",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nGenerated from app/api/utils/segments/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/segments/[_id]/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ]
      },
      "put": {
        "summary": "PUT /api/utils/segments/{_id}",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/segments/[_id]/schema.ts.\nGenerated from app/api/utils/segments/[_id]/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/segments/[_id]/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/segments/[_id]/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "_id",
          "err"
        ],
        "parameters": [
          {
            "name": "_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/utils/test": {
      "get": {
        "summary": "GET /api/utils/test",
        "tags": [
          "utils"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/utils/test/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "500": {
            "description": "HTTP 500 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/test/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "error",
          "message"
        ]
      }
    },
    "/api/utils/upload": {
      "post": {
        "summary": "POST /api/utils/upload",
        "tags": [
          "utils"
        ],
        "description": "Authenticated user required. Runtime accepts authToken cookie or Authorization bearer token.\nRequest body is validated by joi using app/api/utils/upload/schema.ts.\nGenerated from app/api/utils/upload/route.ts.",
        "security": [
          {
            "bearerAuth": []
          },
          {
            "authTokenCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorEnvelope"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/utils/upload/route.ts",
        "x-validator": "joi",
        "x-query-types": [],
        "x-request-schema-source": "app/api/utils/upload/schema.ts",
        "x-request-content-type": "application/json",
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "err",
          "res"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LooseJsonObject"
              }
            }
          }
        }
      }
    },
    "/api/version": {
      "get": {
        "summary": "GET /api/version",
        "tags": [
          "version"
        ],
        "description": "Public route with no auth helper detected.\nGenerated from app/api/version/route.ts.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LooseJsonValue"
                }
              }
            }
          }
        },
        "x-source-file": "app/api/version/route.ts",
        "x-validator": "none",
        "x-query-types": [],
        "x-success-status": 200,
        "x-source-types": [],
        "x-response-keys": [
          "buildId"
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "authTokenCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "authToken"
      },
      "teamTokenCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "teamToken"
      },
      "adminTokenCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "adminToken"
      }
    },
    "schemas": {
      "InterfaceId": {
        "type": "string",
        "description": "String identifier used for external contracts, even when the backing store uses MongoDB ObjectId.",
        "example": "66108918f4f74258b2df27d1"
      },
      "IsoDateString": {
        "type": "string",
        "format": "date-time",
        "description": "ISO-8601 date-time string serialized for clients outside the Next.js/Mongo runtime.",
        "example": "2026-04-06T12:34:56.000Z"
      },
      "LooseJsonValue": {
        "description": "Fallback JSON-compatible value when the runtime shape exists but is not yet curated into a stricter cross-client DTO.",
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LooseJsonValue"
            }
          },
          {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/LooseJsonValue"
            }
          }
        ],
        "nullable": true
      },
      "LooseJsonObject": {
        "type": "object",
        "description": "Fallback JSON object used for partially documented endpoints and nested misc fields.",
        "additionalProperties": {
          "$ref": "#/components/schemas/LooseJsonValue"
        }
      },
      "AuthTokenClaims": {
        "type": "object",
        "properties": {
          "uid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "picture": {
            "type": "string"
          }
        },
        "required": [
          "uid",
          "name",
          "username",
          "email",
          "picture"
        ]
      },
      "TeamTokenClaims": {
        "type": "object",
        "properties": {
          "team_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "team_name": {
            "type": "string"
          },
          "team_color": {
            "type": "string"
          },
          "team_is_owner": {
            "type": "boolean"
          }
        },
        "required": [
          "team_id",
          "team_name",
          "team_color",
          "team_is_owner"
        ]
      },
      "AdminTokenClaims": {
        "type": "object",
        "properties": {
          "uid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "picture": {
            "type": "string"
          },
          "is_admin": {
            "type": "boolean"
          }
        },
        "required": [
          "uid",
          "name",
          "username",
          "email",
          "picture",
          "is_admin"
        ]
      },
      "ApiErrorEnvelope": {
        "type": "object",
        "description": "Dominant error shape returned by the current API routes.",
        "properties": {
          "err": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "details": {
            "$ref": "#/components/schemas/LooseJsonValue"
          }
        },
        "required": [
          "err"
        ]
      },
      "ValidationErrorIssue": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "message"
        ]
      },
      "ValidationErrorEnvelope": {
        "type": "object",
        "description": "Structured validation shape produced by Zod-backed routes via verifyRequestDataZod.",
        "properties": {
          "message": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationErrorIssue"
            }
          }
        },
        "required": [
          "message",
          "errors"
        ]
      },
      "UserHistory": {
        "type": "object",
        "properties": {
          "roomId": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "key": {
            "type": "string"
          },
          "ext": {
            "type": "string"
          },
          "size": {
            "type": "number"
          }
        },
        "required": [
          "roomId",
          "key",
          "ext"
        ]
      },
      "BoardSummary": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "name": {
            "type": "string"
          },
          "desc": {
            "type": "string"
          },
          "visibility": {
            "type": "string"
          },
          "default_permission": {
            "type": "string"
          },
          "team_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "icon": {
            "type": "string"
          },
          "preview_image": {
            "type": "string"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "name",
          "desc",
          "visibility",
          "default_permission",
          "icon",
          "preview_image",
          "created_at",
          "updated_at"
        ]
      },
      "User": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "picture": {
            "type": "string"
          },
          "company": {
            "type": "string"
          },
          "intro": {
            "type": "string"
          },
          "is_admin": {
            "type": "boolean"
          },
          "is_plus": {
            "type": "boolean"
          },
          "num_credit": {
            "type": "number"
          },
          "user_class": {
            "type": "string"
          },
          "history": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserHistory"
            }
          },
          "reference_history": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "uid",
          "name",
          "username",
          "email",
          "picture",
          "is_plus",
          "num_credit",
          "history"
        ]
      },
      "UserBootstrapResponse": {
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/User"
          },
          "boards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BoardSummary"
            }
          }
        },
        "required": [
          "user",
          "boards"
        ]
      },
      "UpsertUserRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "campaign": {
            "type": "string"
          }
        },
        "required": [
          "token"
        ]
      },
      "UpsertUserResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "is_new": {
            "type": "boolean"
          },
          "user": {
            "$ref": "#/components/schemas/User"
          }
        },
        "required": [
          "token",
          "is_new",
          "user"
        ]
      },
      "UpdateUserRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "company": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "company"
        ]
      },
      "UpdateUserResponse": {
        "type": "object",
        "description": "Mongo update acknowledgement payload currently returned by PUT /api/users.",
        "properties": {
          "acknowledged": {
            "type": "boolean"
          },
          "matchedCount": {
            "type": "number"
          },
          "modifiedCount": {
            "type": "number"
          },
          "upsertedCount": {
            "type": "number"
          },
          "upsertedId": {
            "$ref": "#/components/schemas/InterfaceId",
            "nullable": true
          }
        },
        "required": [
          "acknowledged",
          "matchedCount",
          "modifiedCount",
          "upsertedCount",
          "upsertedId"
        ]
      },
      "GoogleSignInQuery": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "campaign": {
            "type": "string"
          },
          "redirect": {
            "type": "string"
          }
        }
      },
      "GoogleSketchUpSignInQuery": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "campaign": {
            "type": "string"
          },
          "ticket_key": {
            "type": "string"
          }
        }
      },
      "GoogleSignInFormRequest": {
        "type": "object",
        "properties": {
          "credential": {
            "type": "string"
          }
        },
        "required": [
          "credential"
        ]
      },
      "GoogleAuthRedirectQuery": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string"
          },
          "bridge_path": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "campaign": {
            "type": "string"
          },
          "redirect": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "error_description": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        }
      },
      "GoogleAuthErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ]
      },
      "GoogleAuthMixedErrorResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/GoogleAuthErrorResponse"
          },
          {
            "$ref": "#/components/schemas/ApiErrorEnvelope"
          }
        ]
      },
      "EmailSignInRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email"
          },
          "lang": {
            "type": "string"
          },
          "ticket": {
            "type": "string"
          },
          "redirect": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "lang"
        ]
      },
      "EmailSignInResponse": {
        "type": "object",
        "properties": {
          "msg": {
            "type": "string"
          }
        },
        "required": [
          "msg"
        ]
      },
      "VerifyEmailRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "pattern": "^[0-9a-fA-F]{64}$"
          },
          "redirect": {
            "type": "string"
          }
        },
        "required": [
          "token"
        ]
      },
      "VerifyPluginEmailRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "pattern": "^[0-9a-fA-F]{64}$"
          },
          "ticket": {
            "type": "string",
            "minLength": 1
          },
          "redirect": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "token",
          "ticket",
          "redirect"
        ]
      },
      "VerifyEmailResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "is_new": {
            "type": "boolean"
          },
          "is_plus": {
            "type": "boolean"
          },
          "team_is_plus": {
            "type": "boolean"
          },
          "is_subscribed": {
            "type": "boolean"
          },
          "default_path": {
            "type": "string"
          },
          "ab_test": {
            "type": "string",
            "enum": [
              "A",
              "B"
            ]
          },
          "ab_tests": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "A",
                "B"
              ]
            }
          }
        },
        "required": [
          "ok",
          "is_new",
          "is_plus",
          "team_is_plus",
          "is_subscribed",
          "default_path",
          "ab_test",
          "ab_tests"
        ]
      },
      "VerifyPluginEmailResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "ab_test": {
            "type": "string",
            "enum": [
              "A",
              "B"
            ]
          },
          "ab_tests": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "A",
                "B"
              ]
            }
          }
        },
        "required": [
          "ok",
          "ab_test",
          "ab_tests"
        ]
      },
      "EmailVerificationErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ]
          }
        },
        "required": [
          "error"
        ]
      },
      "EmailVerificationMixedErrorResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/EmailVerificationErrorResponse"
          },
          {
            "$ref": "#/components/schemas/ApiErrorEnvelope"
          }
        ]
      },
      "SocketAuthTokenResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "expires_in": {
            "type": "number",
            "minimum": 1
          }
        },
        "required": [
          "token",
          "expires_in"
        ]
      },
      "Team": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "num_seats": {
            "type": "number"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "name",
          "color",
          "created_at",
          "updated_at"
        ]
      },
      "TeamRole": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "team_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "member"
            ]
          },
          "is_plus": {
            "type": "boolean"
          },
          "num_credits": {
            "type": "number"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "team_id",
          "uid",
          "role",
          "is_plus",
          "num_credits",
          "created_at",
          "updated_at"
        ]
      },
      "TeamMember": {
        "type": "object",
        "properties": {
          "uid": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "picture": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "member"
            ]
          },
          "is_plus": {
            "type": "boolean"
          },
          "num_credits": {
            "type": "number"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "uid",
          "email",
          "picture",
          "role",
          "is_plus",
          "num_credits",
          "created_at",
          "updated_at"
        ]
      },
      "TeamDetails": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "num_seats": {
            "type": "number"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamMember"
            }
          }
        },
        "required": [
          "_id",
          "name",
          "color",
          "created_at",
          "updated_at",
          "members"
        ]
      },
      "TeamInvite": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "token": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "member"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "expired",
              "rejected"
            ]
          }
        },
        "required": [
          "email",
          "role",
          "status"
        ]
      },
      "CreateTeamRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      },
      "CreateTeamResponse": {
        "type": "object",
        "properties": {
          "res": {
            "$ref": "#/components/schemas/Team"
          }
        },
        "required": [
          "res"
        ]
      },
      "ListTeamsResponse": {
        "type": "object",
        "properties": {
          "res": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamDetails"
            }
          }
        },
        "required": [
          "res"
        ]
      },
      "SwitchTeamRequest": {
        "type": "object",
        "description": "Send a team id to activate team context, or an empty string to clear the active team cookie.",
        "properties": {
          "team_id": {
            "type": "string"
          }
        },
        "required": [
          "team_id"
        ]
      },
      "SwitchTeamResponse": {
        "type": "object",
        "properties": {
          "res": {
            "type": "string",
            "enum": [
              "ok"
            ]
          }
        },
        "required": [
          "res"
        ]
      },
      "Board": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "project_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "name": {
            "type": "string"
          },
          "desc": {
            "type": "string"
          },
          "visibility": {
            "type": "string",
            "enum": [
              "restricted",
              "team",
              "anyone"
            ]
          },
          "default_permission": {
            "type": "string",
            "enum": [
              "none",
              "viewer",
              "commenter",
              "editor"
            ]
          },
          "team_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "icon": {
            "type": "string"
          },
          "preview_image": {
            "type": "string"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "name",
          "desc",
          "visibility",
          "default_permission",
          "icon",
          "preview_image",
          "created_at",
          "updated_at"
        ]
      },
      "BoardAccess": {
        "type": "object",
        "properties": {
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "permission_level": {
            "type": "string",
            "enum": [
              "none",
              "viewer",
              "commenter",
              "editor",
              "owner"
            ]
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "board_id",
          "uid",
          "permission_level",
          "created_at",
          "updated_at"
        ]
      },
      "BoardInvite": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "inviter_id": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "token": {
            "type": "string"
          },
          "permission_level": {
            "type": "string",
            "enum": [
              "none",
              "viewer",
              "commenter",
              "editor"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "rejected",
              "expired"
            ]
          }
        },
        "required": [
          "board_id",
          "inviter_id",
          "email",
          "token",
          "permission_level",
          "status"
        ]
      },
      "BoardNode": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "type": {
            "type": "string"
          },
          "position": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y"
            ]
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "data": {
            "$ref": "#/components/schemas/LooseJsonValue"
          },
          "source_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "board_id",
          "type",
          "position",
          "width",
          "height",
          "data"
        ]
      },
      "BoardEdge": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "source_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "target_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "board_id",
          "source_id",
          "target_id"
        ]
      },
      "CreateBoardRequest": {
        "type": "object",
        "properties": {
          "is_chat": {
            "type": "boolean"
          }
        },
        "required": [
          "is_chat"
        ]
      },
      "CreateBoardResponse": {
        "type": "object",
        "properties": {
          "res": {
            "$ref": "#/components/schemas/Board"
          }
        },
        "required": [
          "res"
        ]
      },
      "ListBoardsResponse": {
        "type": "object",
        "properties": {
          "res": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Board"
            }
          }
        },
        "required": [
          "res"
        ]
      },
      "ChatImage": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "category": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "width",
          "height",
          "category",
          "description"
        ]
      },
      "ChatDialog": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "user",
              "assistant"
            ]
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "role",
          "text"
        ]
      },
      "ChatRoundContext": {
        "type": "object",
        "properties": {
          "job_image": {
            "$ref": "#/components/schemas/ChatImage"
          },
          "job_text": {
            "type": "string"
          },
          "job_system_prompt": {
            "type": "string"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatImage"
            }
          },
          "texts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "misc": {
            "$ref": "#/components/schemas/LooseJsonObject"
          }
        },
        "required": [
          "job_image",
          "job_text",
          "job_system_prompt",
          "images",
          "texts",
          "misc"
        ]
      },
      "ChatRoundRequest": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string"
          },
          "intent": {
            "type": "string"
          },
          "context": {
            "$ref": "#/components/schemas/ChatRoundContext"
          },
          "request": {
            "type": "string"
          },
          "model": {
            "type": "string",
            "enum": [
              "openai",
              "gemini"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "chat",
              "search",
              "image"
            ]
          }
        },
        "required": [
          "lang",
          "intent",
          "context",
          "request",
          "model",
          "mode"
        ]
      },
      "ChatRoom": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "lang": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "os": {
            "type": "string"
          },
          "env": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "last_round_context": {
            "$ref": "#/components/schemas/ChatRoundContext"
          },
          "last_round_intent": {
            "type": "string"
          },
          "dialogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatDialog"
            }
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "uid",
          "lang",
          "title",
          "os",
          "env",
          "country",
          "last_round_context",
          "last_round_intent",
          "dialogs",
          "created_at",
          "updated_at"
        ]
      },
      "ChatTextResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "completed",
              "failed",
              "in_progress",
              "incomplete"
            ]
          },
          "response": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "text"
            ]
          },
          "misc": {
            "$ref": "#/components/schemas/LooseJsonObject"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "key",
          "status",
          "response",
          "type",
          "misc",
          "created_at",
          "updated_at"
        ]
      },
      "ChatRenderResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "completed",
              "failed",
              "in_progress",
              "incomplete"
            ]
          },
          "room_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "response": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "render"
            ]
          },
          "num_outputs": {
            "type": "number"
          },
          "max_outputs": {
            "type": "number"
          },
          "plan": {
            "type": "string",
            "enum": [
              "free",
              "pro"
            ]
          },
          "outputs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string"
                },
                "width": {
                  "type": "number"
                },
                "height": {
                  "type": "number"
                }
              },
              "required": [
                "path",
                "width",
                "height"
              ]
            }
          },
          "misc": {
            "$ref": "#/components/schemas/LooseJsonObject"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "key",
          "status",
          "room_id",
          "response",
          "type",
          "num_outputs",
          "max_outputs",
          "plan",
          "outputs",
          "misc",
          "created_at",
          "updated_at"
        ]
      },
      "ChatRound": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "chatroom_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "lang": {
            "type": "string"
          },
          "intent": {
            "type": "string"
          },
          "context": {
            "$ref": "#/components/schemas/ChatRoundContext"
          },
          "request": {
            "type": "string"
          },
          "responses": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ChatTextResponse"
                },
                {
                  "$ref": "#/components/schemas/ChatRenderResponse"
                }
              ]
            }
          },
          "model": {
            "type": "string",
            "enum": [
              "openai",
              "gemini"
            ]
          },
          "phase": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "chatroom_id",
          "uid",
          "lang",
          "intent",
          "context",
          "request",
          "responses",
          "model",
          "phase",
          "summary",
          "created_at",
          "updated_at"
        ]
      },
      "StreamChatRoundRequest": {
        "type": "object",
        "properties": {
          "os": {
            "type": "string"
          },
          "env": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "chatroom_id": {
            "type": "string"
          },
          "round_id": {
            "type": "string"
          },
          "board_id": {
            "type": "string"
          },
          "view_base64": {
            "type": "string"
          },
          "request": {
            "$ref": "#/components/schemas/ChatRoundRequest"
          }
        },
        "required": [
          "os",
          "env",
          "country",
          "chatroom_id",
          "round_id",
          "board_id",
          "view_base64",
          "request"
        ]
      },
      "ListChatRoomsQuery": {
        "type": "object",
        "properties": {
          "before": {
            "type": "number"
          },
          "env": {
            "type": "string",
            "enum": [
              "sketchup",
              "blender",
              "revit",
              "rhino",
              "unknown"
            ]
          }
        },
        "required": [
          "before",
          "env"
        ]
      },
      "ListChatRoomsResponse": {
        "type": "object",
        "properties": {
          "rooms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatRoom"
            }
          }
        },
        "required": [
          "rooms"
        ]
      },
      "PromptInput": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string"
          },
          "prompt_refined": {
            "type": "string"
          },
          "neg_prompt": {
            "type": "string"
          },
          "neg_prompt_refined": {
            "type": "string"
          },
          "use_raw": {
            "type": "boolean"
          }
        },
        "required": [
          "prompt",
          "prompt_refined",
          "neg_prompt",
          "neg_prompt_refined"
        ]
      },
      "ImageInput": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "ext": {
            "type": "string"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "base64": {
            "type": "string"
          },
          "caption": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "hash": {
            "type": "string"
          }
        },
        "required": [
          "width",
          "height"
        ]
      },
      "Mask": {
        "type": "object",
        "properties": {
          "mask": {
            "type": "string"
          },
          "img": {
            "type": "string"
          },
          "bbox": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "prompt": {
            "type": "string"
          },
          "prompt_refined": {
            "type": "string"
          },
          "neg_prompt": {
            "type": "string"
          },
          "neg_prompt_refined": {
            "type": "string"
          },
          "misc": {
            "$ref": "#/components/schemas/LooseJsonObject"
          }
        },
        "required": [
          "mask",
          "img",
          "bbox",
          "prompt",
          "prompt_refined",
          "neg_prompt",
          "neg_prompt_refined",
          "misc"
        ]
      },
      "LegacyRoomOutput": {
        "type": "object",
        "properties": {
          "seed": {
            "type": "string"
          },
          "subseed": {
            "type": "string"
          },
          "ext": {
            "type": "string"
          },
          "misc": {
            "$ref": "#/components/schemas/LooseJsonObject"
          }
        },
        "required": [
          "seed",
          "subseed",
          "ext",
          "misc"
        ]
      },
      "LegacyRoom": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "key_history": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string"
                },
                "ext": {
                  "type": "string"
                }
              },
              "required": [
                "key",
                "ext"
              ]
            }
          },
          "outputs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LegacyRoomOutput"
            }
          },
          "phase": {
            "type": "string"
          },
          "tool": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "main_image": {
            "type": "string"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "masks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Mask"
            }
          },
          "type": {
            "type": "string"
          },
          "style": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lighting": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "texture": {
            "type": "string"
          },
          "is_render": {
            "type": "boolean"
          },
          "is_sketch": {
            "type": "boolean"
          },
          "is_floorplan": {
            "type": "boolean"
          },
          "is_public": {
            "type": "boolean"
          },
          "is_detailed": {
            "type": "boolean"
          },
          "is_furnish": {
            "type": "boolean"
          },
          "is_upscale": {
            "type": "boolean"
          },
          "is_fix": {
            "type": "boolean"
          },
          "is_plus": {
            "type": "boolean"
          },
          "version": {
            "type": "number",
            "enum": [
              6
            ]
          },
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "team_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "num_credit": {
            "type": "number"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "uid",
          "key_history",
          "outputs",
          "phase",
          "tool",
          "model",
          "main_image",
          "width",
          "height",
          "masks",
          "type",
          "style",
          "tags",
          "lighting",
          "color",
          "texture",
          "is_sketch",
          "is_public",
          "is_detailed",
          "is_furnish",
          "is_upscale",
          "is_fix",
          "is_plus",
          "updated_at",
          "created_at"
        ]
      },
      "CoreRenderInput": {
        "type": "object",
        "properties": {
          "image": {
            "$ref": "#/components/schemas/ImageInput"
          },
          "text": {
            "$ref": "#/components/schemas/PromptInput"
          },
          "base": {
            "$ref": "#/components/schemas/ImageInput"
          },
          "misc": {
            "$ref": "#/components/schemas/LooseJsonObject"
          }
        },
        "required": [
          "image",
          "text",
          "base",
          "misc"
        ]
      },
      "RoomLayerVisibility": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "is_eye_open": {
            "type": "boolean"
          },
          "visible_index": {
            "type": "number"
          },
          "opacity": {
            "type": "number"
          }
        },
        "required": [
          "_id",
          "is_eye_open",
          "visible_index",
          "opacity"
        ]
      },
      "V7Room": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "version": {
            "type": "number",
            "enum": [
              7
            ]
          },
          "input": {
            "$ref": "#/components/schemas/CoreRenderInput"
          },
          "layers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoomLayerVisibility"
            }
          },
          "team_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "is_public": {
            "type": "boolean"
          },
          "num_credit": {
            "type": "number"
          },
          "misc": {
            "$ref": "#/components/schemas/LooseJsonObject"
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "board_id",
          "version",
          "input",
          "layers",
          "is_public"
        ]
      },
      "V7Layer": {
        "type": "object",
        "properties": {
          "_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "uid": {
            "type": "string"
          },
          "board_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "room_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tool": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/CoreRenderInput"
          },
          "styles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InterfaceId"
            }
          },
          "mask": {
            "type": "string"
          },
          "mask_bbox": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "creativity": {
            "$ref": "#/components/schemas/LooseJsonObject"
          },
          "descriptions": {
            "$ref": "#/components/schemas/LooseJsonObject"
          },
          "model": {
            "type": "string"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "num_outputs": {
            "type": "number"
          },
          "phase": {
            "type": "string"
          },
          "plan": {
            "type": "string",
            "enum": [
              "free",
              "pro"
            ]
          },
          "created_at": {
            "$ref": "#/components/schemas/IsoDateString"
          },
          "updated_at": {
            "$ref": "#/components/schemas/IsoDateString"
          }
        },
        "required": [
          "_id",
          "uid",
          "room_id",
          "key",
          "name",
          "tool",
          "action",
          "input",
          "styles",
          "mask",
          "mask_bbox",
          "creativity",
          "descriptions",
          "model",
          "width",
          "height",
          "num_outputs",
          "phase",
          "plan",
          "created_at",
          "updated_at"
        ]
      },
      "SubmitRoomRequest": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "main_image": {
            "type": "string"
          },
          "masks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Mask"
            }
          },
          "type": {
            "type": "string"
          },
          "style": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lighting": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "texture": {
            "type": "string"
          },
          "is_render": {
            "type": "boolean"
          },
          "is_sketch": {
            "type": "boolean"
          },
          "is_floorplan": {
            "type": "boolean"
          },
          "is_public": {
            "type": "boolean"
          },
          "is_detailed": {
            "type": "boolean"
          },
          "is_furnish": {
            "type": "boolean"
          },
          "is_repaint": {
            "type": "boolean"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "model",
          "main_image",
          "masks",
          "type",
          "style",
          "tags",
          "lighting",
          "color",
          "texture",
          "is_render",
          "is_sketch",
          "is_floorplan",
          "is_public",
          "is_detailed",
          "is_furnish",
          "is_repaint"
        ]
      },
      "SubmitRoomResponse": {
        "type": "object",
        "properties": {
          "roomId": {
            "$ref": "#/components/schemas/InterfaceId"
          }
        },
        "required": [
          "roomId"
        ]
      },
      "ListRoomHistoryQuery": {
        "type": "object",
        "properties": {
          "before": {
            "type": "number"
          },
          "room_type": {
            "type": "string"
          },
          "room_style": {
            "type": "string"
          },
          "team_id": {
            "$ref": "#/components/schemas/InterfaceId"
          },
          "team_member_uid": {
            "type": "string"
          }
        }
      },
      "ListRoomHistoryResponse": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/LegacyRoom"
        }
      }
    }
  },
  "x-generated-at": "2026-09-06T13:42:59.561Z",
  "x-interface-model-catalog": [
    {
      "schemaName": "User",
      "description": "Cross-client user profile shape distilled from src/data user models and the /api/users bootstrap route.",
      "sourcePaths": [
        "src/data/types/user-types.ts",
        "app/api/users/route.ts",
        "app/api/users/schema.ts"
      ]
    },
    {
      "schemaName": "TeamDetails",
      "description": "Team and member summary shape used by /api/teams and invite-related routes.",
      "sourcePaths": [
        "src/data/types/team-types.ts",
        "app/api/teams/route.ts",
        "app/api/teams/schema.ts"
      ]
    },
    {
      "schemaName": "Board",
      "description": "Board metadata shape decoupled from React Flow-specific runtime types.",
      "sourcePaths": [
        "src/data/types/board-types.ts",
        "app/api/boards/route.ts",
        "app/api/boards/schema.ts"
      ]
    },
    {
      "schemaName": "ChatRound",
      "description": "Chat round DTO for multi-client chat history and SSE payload interpretation.",
      "sourcePaths": [
        "src/data/types/chat-types.ts",
        "app/api/chats/rounds/route.ts",
        "app/api/chats/rounds/schema.ts",
        "app/api/chats/rooms/[_id]/route.ts"
      ]
    },
    {
      "schemaName": "LegacyRoom",
      "description": "Version 6 room contract still used across the current API surface.",
      "sourcePaths": [
        "src/data/types/rooms/v6/room-types.ts",
        "src/data/types/rooms/v7/room-types.ts",
        "app/api/rooms/route.ts",
        "app/api/rooms/schema.ts"
      ]
    },
    {
      "schemaName": "V7Room",
      "description": "Version 7 room/layer contract for the newer layered rendering pipeline.",
      "sourcePaths": [
        "src/data/types/rooms/v6/room-types.ts",
        "src/data/types/rooms/v7/room-types.ts",
        "app/api/rooms/route.ts",
        "app/api/rooms/schema.ts"
      ]
    }
  ]
}
