{
  "openapi": "3.1.0",
  "info": {
    "title": "mykal",
    "description": "mykal public API — dual-mounted at /api/v1/* and /v1/*.",
    "version": "1.0.0"
  },
  "paths": {
    "/auth/login": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Login With Db",
        "description": "Login with full database support for local auth fallback.\nSets HTTP-only cookie for web clients in addition to returning tokens.",
        "operationId": "login_with_db_auth_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SHARED_AUTH__auth_schemas__LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SHARED_AUTH__auth_schemas__TokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/register": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Register With Db",
        "description": "Register a new user.\nStep 1: Forward SSO fields (email, password, name, phone) to OTROTL.\nStep 2: Store ALL fields (including domain extras) in LOCAL DB.",
        "operationId": "register_with_db_auth_register_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/logout": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Logout",
        "description": "Logout the current user.\n\nClears the HTTP-only cookie and blacklists the token (if a\nTokenBlacklist is configured). Supports logout_all to revoke\nall tokens for the user.",
        "operationId": "logout_auth_logout_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/auth/health": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Auth Health",
        "description": "Check authentication subsystem health.\n\nReturns SSO availability, circuit breaker state, and active auth method.",
        "operationId": "auth_health_auth_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthHealthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/auth/sso/forgot-password": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Sso Forgot Password",
        "description": "Redirect to ONETIMELOGIN's password recovery page.\n\nPer OTROTL-3 spec: Partner websites never handle password resets natively.\nAll password reset requests route to the centralized OTL domain.\n\nThe shared auth modal's \"Forgot password?\" link points here.\nUses OTROTL_PUBLIC_URL (browser-facing) if set, otherwise falls back to\nOTROTL_BASE_URL. Browser redirects must use the public URL since the\nuser's browser cannot reach localhost:8001.",
        "operationId": "sso_forgot_password_auth_sso_forgot_password_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/sso/login": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Redirect to OTROTL Login",
        "description": "Redirect the user's browser to the ONETIMELOGIN login page.\n\nAfter authentication, OTROTL redirects back to /auth/sso/callback\nwith a token, which is handled by the existing POST /auth/sso/callback.\n\nUses OTROTL_PUBLIC_URL (browser-facing) so the redirect works from\nthe user's browser. Falls back to OTROTL_BASE_URL if public URL is\nnot configured.",
        "operationId": "sso_login_redirect_auth_sso_login_get",
        "parameters": [
          {
            "name": "return_url",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": "/",
              "title": "Return Url"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/sso/register": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Redirect to OTROTL Registration",
        "description": "Redirect the user's browser to the ONETIMELOGIN registration page.\n\nAfter registration, OTROTL redirects back to /auth/sso/callback.\n\nUses OTROTL_PUBLIC_URL (browser-facing) so the redirect works from\nthe user's browser. Falls back to OTROTL_BASE_URL if public URL is\nnot configured.",
        "operationId": "sso_register_redirect_auth_sso_register_get",
        "parameters": [
          {
            "name": "return_url",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": "/",
              "title": "Return Url"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/me": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Auth Me",
        "description": "Return the currently authenticated user from the JWT token.\n\nRequires a valid ``Authorization: Bearer <token>`` header.\nReturns the JWT payload (sub, email, exp, and any extra claims).",
        "operationId": "auth_me_auth_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/sso/callback": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Sso Callback",
        "description": "Handle SSO callback from ONETIMELOGIN redirect.\n\nAfter a user authenticates on ONETIMELOGIN, they are redirected back\nto this site with an SSO token. This endpoint validates that token\nwith ONETIMELOGIN and issues local JWT tokens.",
        "operationId": "sso_callback_auth_sso_callback_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SSOCallbackRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SHARED_AUTH__auth_schemas__TokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/local/setup-password": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Setup Local Password",
        "description": "Set up a local password for fallback authentication.\n\nAfter first SSO login, users can set a local password so they can\nstill log in when ONETIMELOGIN is unavailable.",
        "operationId": "setup_local_password_auth_local_setup_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocalPasswordSetupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/auth/refresh": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Refresh Token",
        "description": "Refresh an access token using a refresh token.",
        "operationId": "refresh_token_auth_refresh_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SHARED_AUTH__auth_schemas__TokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/sso/logout": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Sso Logout",
        "description": "User-initiated SSO logout (WS2):\n1. Destroy local session/cookies\n2. Redirect to OTL /logout which broadcasts kill signal to all partners",
        "operationId": "sso_logout_auth_sso_logout_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/sso/back-channel-logout": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Sso Back Channel Logout",
        "description": "OTL sends this when a user logs out from another partner site (WS2).\nFinds local user by SSO user ID and marks for forced re-authentication.",
        "operationId": "sso_back_channel_logout_auth_sso_back_channel_logout_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/sso/front-channel-logout": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Sso Front Channel Logout",
        "description": "Front-channel logout endpoint loaded via invisible iframe from OTL (WS2).\nClears the local session and cookies, returns a 1x1 transparent GIF pixel.",
        "operationId": "sso_front_channel_logout_auth_sso_front_channel_logout_get",
        "parameters": [
          {
            "name": "jti",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Jti"
            }
          },
          {
            "name": "sub",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Sub"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/sso/webhooks/otl-events": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Otl Webhook",
        "description": "Receives HMAC-signed webhooks from OTL for lifecycle events (WS5):\n- user.account.deleted: Sever SSO link, convert to local-only user\n- user.access.revoked: Force logout for this user\n\nCCPA DROP and GDPR Right to Erasure compliance.",
        "operationId": "otl_webhook_auth_sso_webhooks_otl_events_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/sso/validate": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Validate Sso Token",
        "description": "Validate an SSO token without creating a session.",
        "operationId": "validate_sso_token_auth_sso_validate_post",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/auth/sso/status": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Sso Status",
        "description": "Check if user has an active SSO session.",
        "operationId": "sso_status_auth_sso_status_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/verify-email": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Verify Email Proxy",
        "description": "Proxy email verification to ONETIMELOGIN.",
        "operationId": "verify_email_proxy_auth_verify_email_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/resend-verification": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Resend Verification Proxy",
        "description": "Proxy resend-verification to ONETIMELOGIN.",
        "operationId": "resend_verification_proxy_auth_resend_verification_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/available-roles": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Available Roles Proxy",
        "description": "Proxy available-roles to ONETIMELOGIN for this site.",
        "operationId": "available_roles_proxy_auth_available_roles_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/auth/select-role": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Select Role Proxy",
        "description": "Proxy role selection to ONETIMELOGIN, then sync to local DB.",
        "operationId": "select_role_proxy_auth_select_role_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "User login",
        "description": "Authenticate a user with email and password (local) or SSO token.\n\n    Supports hybrid authentication:\n    - Local authentication with email/password\n    - SSO authentication (when SSO is configured)\n\n    Returns access and refresh tokens on successful authentication.\n    May require MFA verification if enabled for the user.",
        "operationId": "login_api_v1_auth_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/app__schemas__auth__LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Login successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/login/form": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "OAuth2 form login",
        "description": "OAuth2 compatible login endpoint using form data.\n    Used by OAuth2PasswordBearer for Swagger UI authentication.",
        "operationId": "login_form_api_v1_auth_login_form_post",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Body_login_form_api_v1_auth_login_form_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app__schemas__auth__TokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "User logout",
        "description": "Invalidate the current user session and tokens.\n\n    This endpoint:\n    - Invalidates the current access token\n    - Invalidates the associated refresh token\n    - Clears any server-side session data",
        "operationId": "logout_api_v1_auth_logout_post",
        "responses": {
          "200": {
            "description": "Logout successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/auth/refresh": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Refresh access token",
        "description": "Refresh the access token using a valid refresh token.\n\n    The refresh token must not be expired or revoked.\n    Returns a new access token and optionally a new refresh token.",
        "operationId": "refresh_token_api_v1_auth_refresh_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRefreshRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Token refreshed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app__schemas__auth__TokenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or expired refresh token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/me": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Get current user",
        "description": "Get the profile information of the currently authenticated user.\n\n    Returns detailed user information including:\n    - Basic profile (email, name, avatar)\n    - Account status (active, verified)\n    - Authentication method (SSO or local)\n    - MFA status",
        "operationId": "get_me_api_v1_auth_me_get",
        "responses": {
          "200": {
            "description": "User profile retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Update current user profile",
        "description": "Update the profile information of the currently authenticated user.\n\n    Allows updating:\n    - Display name\n    - First/last name\n    - Timezone\n    - Locale\n    - Avatar URL",
        "operationId": "update_me_api_v1_auth_me_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Profile updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/auth/status": {
      "get": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Get authentication status",
        "description": "Get the current authentication method status and availability.\n\n    Returns information about:\n    - Whether SSO (OTROTL) is available and configured\n    - Available authentication methods\n    - Circuit breaker state for SSO service\n    - Current authentication state",
        "operationId": "get_auth_status_api_v1_auth_status_get",
        "responses": {
          "200": {
            "description": "Auth status retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Get Auth Status Api V1 Auth Status Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/auth/set-local-password": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Set local password",
        "description": "Set or update a local password for the current user.\n\n    This is useful for:\n    - SSO users who want to also have local login capability\n    - Users who want to change their password\n\n    If the user already has a local password, they must provide\n    the current password for verification.",
        "operationId": "set_local_password_api_v1_auth_set_local_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordChangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Password set successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated or invalid current password",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Password validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/auth/mfa/setup": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Setup MFA",
        "description": "Initialize MFA setup for the current user.\n\n    Returns:\n    - TOTP secret for authenticator apps\n    - QR code URL for easy setup\n    - Backup codes for account recovery",
        "operationId": "setup_mfa_api_v1_auth_mfa_setup_post",
        "responses": {
          "200": {
            "description": "MFA setup initiated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MFASetupResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "MFA already enabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/auth/mfa/verify": {
      "post": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Verify MFA code",
        "description": "Verify MFA code to complete login or MFA setup.\n\n    For login: Complete authentication after entering MFA code.\n    For setup: Confirm MFA setup by verifying the first code.",
        "operationId": "verify_mfa_api_v1_auth_mfa_verify_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MFAVerifyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "MFA verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid MFA code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/mfa": {
      "delete": {
        "tags": [
          "Authentication",
          "Authentication"
        ],
        "summary": "Disable MFA",
        "description": "Disable MFA for the current user.\n\n    Requires password verification for security.",
        "operationId": "disable_mfa_api_v1_auth_mfa_delete",
        "responses": {
          "200": {
            "description": "MFA disabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid password",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/calendars": {
      "get": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "List calendars",
        "description": "List all calendars accessible to the current user.\n\n    Includes:\n    - Calendars owned by the user\n    - Calendars shared with the user\n\n    Supports pagination and filtering by visibility.",
        "operationId": "list_calendars_api_v1_calendars_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "include_shared",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include shared calendars",
              "default": true,
              "title": "Include Shared"
            },
            "description": "Include shared calendars"
          },
          {
            "name": "is_active",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by active status",
              "default": true,
              "title": "Is Active"
            },
            "description": "Filter by active status"
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Field to sort by",
              "default": "name",
              "title": "Sort By"
            },
            "description": "Field to sort by"
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SortOrder",
              "description": "Sort order",
              "default": "asc"
            },
            "description": "Sort order"
          }
        ],
        "responses": {
          "200": {
            "description": "List of calendars",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_CalendarResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Create calendar",
        "description": "Create a new calendar for the current user.\n\n    The user becomes the owner of the calendar with full permissions.",
        "operationId": "create_calendar_api_v1_calendars_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Calendar created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/calendars/{calendar_id}": {
      "get": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Get calendar",
        "description": "Get details of a specific calendar.\n\n    The user must have at least view permission on the calendar.",
        "operationId": "get_calendar_api_v1_calendars__calendar_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Calendar details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Calendar not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Update calendar",
        "description": "Update an existing calendar.\n\n    The user must have edit or admin permission on the calendar.\n    Only provided fields will be updated.",
        "operationId": "update_calendar_api_v1_calendars__calendar_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calendar updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Calendar not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Delete calendar",
        "description": "Soft delete a calendar.\n\n    The user must be the owner or have admin permission.\n    This sets the calendar as inactive rather than permanently deleting it.\n    All items in the calendar will also be soft deleted.",
        "operationId": "delete_calendar_api_v1_calendars__calendar_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Calendar deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Calendar not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/calendars/{calendar_id}/items": {
      "get": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Get calendar items",
        "description": "Get all items (meetings, events, tasks) in a calendar within a date range.\n\n    Supports filtering by:\n    - Date range (required)\n    - Item type (meeting, event, task)\n    - Status",
        "operationId": "get_calendar_items_api_v1_calendars__calendar_id__items_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Start date for filtering",
              "title": "Start Date"
            },
            "description": "Start date for filtering"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "End date for filtering",
              "title": "End Date"
            },
            "description": "End date for filtering"
          },
          {
            "name": "item_types",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by item types (meeting, event, task)",
              "title": "Item Types"
            },
            "description": "Filter by item types (meeting, event, task)"
          },
          {
            "name": "include_cancelled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include cancelled items",
              "default": false,
              "title": "Include Cancelled"
            },
            "description": "Include cancelled items"
          }
        ],
        "responses": {
          "200": {
            "description": "Calendar items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Get Calendar Items Api V1 Calendars  Calendar Id  Items Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Calendar not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/calendars/{calendar_id}/share": {
      "post": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Share calendar",
        "description": "Share a calendar with another user.\n\n    The current user must be the owner or have admin permission.\n    Specify the permission level for the shared user.",
        "operationId": "share_calendar_api_v1_calendars__calendar_id__share_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarSharingCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Calendar shared",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarSharingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Calendar or user not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Already shared with this user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/calendars/{calendar_id}/sharing": {
      "get": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "List calendar sharing",
        "description": "List all sharing entries for a calendar.\n\n    The user must be the owner or have admin permission to see all shares.\n    Regular users with view/edit permission can only see their own share.",
        "operationId": "list_calendar_sharing_api_v1_calendars__calendar_id__sharing_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Sharing entries",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarSharingResponse"
                  },
                  "title": "Response 200 List Calendar Sharing Api V1 Calendars  Calendar Id  Sharing Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Calendar not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/calendars/{calendar_id}/sharing/{sharing_id}": {
      "patch": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Update calendar sharing",
        "description": "Update the permission level for a calendar share.\n\n    The user must be the owner or have admin permission.",
        "operationId": "update_calendar_sharing_api_v1_calendars__calendar_id__sharing__sharing_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          },
          {
            "name": "sharing_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Sharing entry ID",
              "title": "Sharing Id"
            },
            "description": "Sharing entry ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarSharingUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sharing updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarSharingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Sharing entry not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Calendars",
          "Calendars"
        ],
        "summary": "Revoke calendar sharing",
        "description": "Revoke calendar access for a shared user.\n\n    The user must be the owner, have admin permission, or be the shared user\n    (to remove their own access).",
        "operationId": "revoke_calendar_sharing_api_v1_calendars__calendar_id__sharing__sharing_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Calendar ID",
              "title": "Calendar Id"
            },
            "description": "Calendar ID"
          },
          {
            "name": "sharing_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Sharing entry ID",
              "title": "Sharing Id"
            },
            "description": "Sharing entry ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Sharing revoked"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Sharing entry not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/meetings": {
      "get": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "List meetings",
        "description": "List meetings accessible to the current user.\n\n    Includes:\n    - Meetings organized by the user\n    - Meetings the user is invited to\n\n    Supports filtering by:\n    - Date range\n    - Calendar\n    - Location type\n    - Cancelled status",
        "operationId": "list_meetings_api_v1_meetings_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "calendar_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar",
              "title": "Calendar Id"
            },
            "description": "Filter by calendar"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter from date",
              "title": "Start Date"
            },
            "description": "Filter from date"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter to date",
              "title": "End Date"
            },
            "description": "Filter to date"
          },
          {
            "name": "location_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/LocationType"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by location type",
              "title": "Location Type"
            },
            "description": "Filter by location type"
          },
          {
            "name": "include_cancelled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include cancelled meetings",
              "default": false,
              "title": "Include Cancelled"
            },
            "description": "Include cancelled meetings"
          },
          {
            "name": "organized_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Only meetings organized by user",
              "default": false,
              "title": "Organized Only"
            },
            "description": "Only meetings organized by user"
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Field to sort by",
              "default": "start_time",
              "title": "Sort By"
            },
            "description": "Field to sort by"
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SortOrder",
              "description": "Sort order",
              "default": "asc"
            },
            "description": "Sort order"
          }
        ],
        "responses": {
          "200": {
            "description": "List of meetings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_MeetingResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Create meeting",
        "description": "Create a new meeting.\n\n    The current user becomes the organizer of the meeting.\n    Optionally add attendees during creation.",
        "operationId": "create_meeting_api_v1_meetings_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_create_meeting_api_v1_meetings_post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Meeting created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeetingWithAttendees"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "No access to calendar",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/meetings/{meeting_id}": {
      "get": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Get meeting",
        "description": "Get details of a specific meeting including all attendees.\n\n    The user must be the organizer or an attendee to view the meeting.",
        "operationId": "get_meeting_api_v1_meetings__meeting_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Meeting details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeetingWithAttendees"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Update meeting",
        "description": "Update an existing meeting.\n\n    Only the organizer can update meeting details.\n    Attendees will be notified of changes.",
        "operationId": "update_meeting_api_v1_meetings__meeting_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          },
          {
            "name": "notify_attendees",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Notify attendees of changes",
              "default": true,
              "title": "Notify Attendees"
            },
            "description": "Notify attendees of changes"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MeetingUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Meeting updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeetingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Only organizer can update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Cancel meeting",
        "description": "Cancel a meeting.\n\n    Only the organizer can cancel the meeting.\n    Attendees will be notified of the cancellation.",
        "operationId": "cancel_meeting_api_v1_meetings__meeting_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          },
          {
            "name": "notify_attendees",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Notify attendees of cancellation",
              "default": true,
              "title": "Notify Attendees"
            },
            "description": "Notify attendees of cancellation"
          }
        ],
        "responses": {
          "204": {
            "description": "Meeting cancelled"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Only organizer can cancel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/meetings/{meeting_id}/attendees": {
      "post": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Add attendees",
        "description": "Add one or more attendees to a meeting.\n\n    Only the organizer can add attendees.\n    New attendees will receive invitations.",
        "operationId": "add_attendees_api_v1_meetings__meeting_id__attendees_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MeetingAttendeeCreate"
                },
                "description": "Attendees to add",
                "title": "Attendees"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Attendees added",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MeetingAttendeeResponse"
                  },
                  "title": "Response 201 Add Attendees Api V1 Meetings  Meeting Id  Attendees Post"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Only organizer can add attendees",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "User already an attendee",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/meetings/{meeting_id}/attendees/{attendee_id}": {
      "patch": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Update attendee",
        "description": "Update an attendee's role or required status.\n\n    Only the organizer can update attendee properties.",
        "operationId": "update_attendee_api_v1_meetings__meeting_id__attendees__attendee_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          },
          {
            "name": "attendee_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Attendee ID",
              "title": "Attendee Id"
            },
            "description": "Attendee ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MeetingAttendeeUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attendee updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeetingAttendeeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Only organizer can update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Attendee not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Remove attendee",
        "description": "Remove an attendee from a meeting.\n\n    The organizer can remove any attendee.\n    An attendee can remove themselves.",
        "operationId": "remove_attendee_api_v1_meetings__meeting_id__attendees__attendee_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          },
          {
            "name": "attendee_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Attendee ID",
              "title": "Attendee Id"
            },
            "description": "Attendee ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Attendee removed"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Attendee not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/meetings/{meeting_id}/rsvp": {
      "post": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "RSVP to meeting",
        "description": "Respond to a meeting invitation.\n\n    The current user must be an attendee of the meeting.\n    Updates the RSVP status (accepted, declined, tentative).",
        "operationId": "rsvp_meeting_api_v1_meetings__meeting_id__rsvp_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_rsvp_meeting_api_v1_meetings__meeting_id__rsvp_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "RSVP recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeetingAttendeeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not an attendee of this meeting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/meetings/{meeting_id}/tasks": {
      "post": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Create linked task",
        "description": "Create a task linked to this meeting.\n\n    The task can be for:\n    - Preparation before the meeting\n    - Follow-up action items\n    - Related work",
        "operationId": "create_linked_task_api_v1_meetings__meeting_id__tasks_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          },
          {
            "name": "link_type",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/TaskLinkType",
              "description": "Type of task link",
              "default": "action_item"
            },
            "description": "Type of task link"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Task created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "No access to meeting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Meetings",
          "Meetings"
        ],
        "summary": "Get linked tasks",
        "description": "Get all tasks linked to this meeting.\n\n    Includes tasks of all link types (preparation, follow-up, action items).",
        "operationId": "get_linked_tasks_api_v1_meetings__meeting_id__tasks_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "meeting_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Meeting ID",
              "title": "Meeting Id"
            },
            "description": "Meeting ID"
          },
          {
            "name": "link_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TaskLinkType"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by link type",
              "title": "Link Type"
            },
            "description": "Filter by link type"
          }
        ],
        "responses": {
          "200": {
            "description": "Linked tasks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaskResponse"
                  },
                  "title": "Response 200 Get Linked Tasks Api V1 Meetings  Meeting Id  Tasks Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "No access to meeting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events": {
      "get": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "List events",
        "description": "List all events accessible to the current user.\n\n    Supports filtering by:\n    - Date range\n    - Calendar\n    - Event type\n    - Category",
        "operationId": "list_events_api_v1_events_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "calendar_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar",
              "title": "Calendar Id"
            },
            "description": "Filter by calendar"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter from date",
              "title": "Start Date"
            },
            "description": "Filter from date"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter to date",
              "title": "End Date"
            },
            "description": "Filter to date"
          },
          {
            "name": "event_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/EventType"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by event type",
              "title": "Event Type"
            },
            "description": "Filter by event type"
          },
          {
            "name": "category_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by category",
              "title": "Category Id"
            },
            "description": "Filter by category"
          },
          {
            "name": "is_all_day",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by all-day status",
              "title": "Is All Day"
            },
            "description": "Filter by all-day status"
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Field to sort by",
              "default": "start_date",
              "title": "Sort By"
            },
            "description": "Field to sort by"
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SortOrder",
              "description": "Sort order",
              "default": "asc"
            },
            "description": "Sort order"
          }
        ],
        "responses": {
          "200": {
            "description": "List of events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_EventResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Create event",
        "description": "Create a new event.\n\n    The current user becomes the owner of the event.",
        "operationId": "create_event_api_v1_events_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Event created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "No access to calendar",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events/{event_id}": {
      "get": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Get event",
        "description": "Get details of a specific event.\n\n    The user must have access to the calendar containing the event.",
        "operationId": "get_event_api_v1_events__event_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event ID",
              "title": "Event Id"
            },
            "description": "Event ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Event details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Event not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Update event",
        "description": "Update an existing event.\n\n    The user must be the owner or have edit permission on the calendar.",
        "operationId": "update_event_api_v1_events__event_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event ID",
              "title": "Event Id"
            },
            "description": "Event ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Event updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Event not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Delete event",
        "description": "Delete an event.\n\n    The user must be the owner or have edit permission on the calendar.",
        "operationId": "delete_event_api_v1_events__event_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event ID",
              "title": "Event Id"
            },
            "description": "Event ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Event deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Event not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events/{event_id}/tasks": {
      "post": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Create linked task",
        "description": "Create a task linked to this event.\n\n    Useful for creating preparation tasks or follow-up actions for events.",
        "operationId": "create_event_task_api_v1_events__event_id__tasks_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event ID",
              "title": "Event Id"
            },
            "description": "Event ID"
          },
          {
            "name": "link_type",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/TaskLinkType",
              "description": "Type of task link",
              "default": "related"
            },
            "description": "Type of task link"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Task created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "No access to event",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Event not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Get linked tasks",
        "description": "Get all tasks linked to this event.",
        "operationId": "get_event_tasks_api_v1_events__event_id__tasks_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event ID",
              "title": "Event Id"
            },
            "description": "Event ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Linked tasks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaskResponse"
                  },
                  "title": "Response 200 Get Event Tasks Api V1 Events  Event Id  Tasks Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "No access to event",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Event not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events/categories": {
      "get": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "List event categories",
        "description": "List all event categories for the current user.\n\n    Categories help organize events by type or purpose.",
        "operationId": "list_event_categories_api_v1_events_categories_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "include_inactive",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include inactive categories",
              "default": false,
              "title": "Include Inactive"
            },
            "description": "Include inactive categories"
          }
        ],
        "responses": {
          "200": {
            "description": "List of categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EventCategoryResponse"
                  },
                  "title": "Response 200 List Event Categories Api V1 Events Categories Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Create event category",
        "description": "Create a new event category.\n\n    Categories can have a custom color and icon for visual organization.",
        "operationId": "create_event_category_api_v1_events_categories_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventCategoryCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Category created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCategoryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Category with this name already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events/categories/{category_id}": {
      "patch": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Update event category",
        "description": "Update an existing event category.\n\n    Only the category owner can update it.",
        "operationId": "update_event_category_api_v1_events_categories__category_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "category_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Category ID",
              "title": "Category Id"
            },
            "description": "Category ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventCategoryUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Category updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCategoryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Category not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Events",
          "Events"
        ],
        "summary": "Delete event category",
        "description": "Delete an event category.\n\n    Events using this category will have their category set to null.",
        "operationId": "delete_event_category_api_v1_events_categories__category_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "category_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Category ID",
              "title": "Category Id"
            },
            "description": "Category ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Category deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Category not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks": {
      "get": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "List tasks",
        "description": "List all tasks accessible to the current user.\n\n    Supports comprehensive filtering by:\n    - Status (todo, in_progress, blocked, review, completed, cancelled)\n    - Priority (low, medium, high, urgent)\n    - Assignee\n    - Due date range\n    - Calendar\n    - Category\n    - Tags",
        "operationId": "list_tasks_api_v1_tasks_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "calendar_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar",
              "title": "Calendar Id"
            },
            "description": "Filter by calendar"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TaskStatus"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by status",
              "title": "Status"
            },
            "description": "Filter by status"
          },
          {
            "name": "priority",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TaskPriority"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by priority",
              "title": "Priority"
            },
            "description": "Filter by priority"
          },
          {
            "name": "assignee_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by assignee",
              "title": "Assignee Id"
            },
            "description": "Filter by assignee"
          },
          {
            "name": "due_date_from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Due date from",
              "title": "Due Date From"
            },
            "description": "Due date from"
          },
          {
            "name": "due_date_to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Due date to",
              "title": "Due Date To"
            },
            "description": "Due date to"
          },
          {
            "name": "category_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by category",
              "title": "Category Id"
            },
            "description": "Filter by category"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by tags",
              "title": "Tags"
            },
            "description": "Filter by tags"
          },
          {
            "name": "parent_task_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by parent task (subtasks)",
              "title": "Parent Task Id"
            },
            "description": "Filter by parent task (subtasks)"
          },
          {
            "name": "include_completed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include completed tasks",
              "default": true,
              "title": "Include Completed"
            },
            "description": "Include completed tasks"
          },
          {
            "name": "top_level_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Only return top-level tasks (no subtasks)",
              "default": false,
              "title": "Top Level Only"
            },
            "description": "Only return top-level tasks (no subtasks)"
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Field to sort by",
              "default": "due_date",
              "title": "Sort By"
            },
            "description": "Field to sort by"
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SortOrder",
              "description": "Sort order",
              "default": "asc"
            },
            "description": "Sort order"
          }
        ],
        "responses": {
          "200": {
            "description": "List of tasks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_TaskResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Create task",
        "description": "Create a new task.\n\n    The current user becomes the owner of the task.\n    Optionally specify a parent task to create a subtask.",
        "operationId": "create_task_api_v1_tasks_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Task created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "No access to calendar",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Parent task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks/{task_id}": {
      "get": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Get task",
        "description": "Get details of a specific task including its subtasks.\n\n    The user must have access to the calendar containing the task.",
        "operationId": "get_task_api_v1_tasks__task_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Task ID",
              "title": "Task Id"
            },
            "description": "Task ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Task details with subtasks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskWithSubtasks"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Update task",
        "description": "Update an existing task.\n\n    The user must be the owner or have edit permission on the calendar.",
        "operationId": "update_task_api_v1_tasks__task_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Task ID",
              "title": "Task Id"
            },
            "description": "Task ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Delete task",
        "description": "Delete a task.\n\n    The user must be the owner or have edit permission on the calendar.\n    Subtasks will also be deleted.",
        "operationId": "delete_task_api_v1_tasks__task_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Task ID",
              "title": "Task Id"
            },
            "description": "Task ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Task deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks/{task_id}/status": {
      "patch": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Update task status",
        "description": "Quick endpoint to update only the task status.\n\n    Automatically sets completed_at timestamp when status changes to completed.",
        "operationId": "update_task_status_api_v1_tasks__task_id__status_patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Task ID",
              "title": "Task Id"
            },
            "description": "Task ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_task_status_api_v1_tasks__task_id__status_patch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Status updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks/{task_id}/subtasks": {
      "post": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Create subtask",
        "description": "Create a subtask under the specified parent task.\n\n    The subtask inherits the calendar from the parent task.",
        "operationId": "create_subtask_api_v1_tasks__task_id__subtasks_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Parent task ID",
              "title": "Task Id"
            },
            "description": "Parent task ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Subtask created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Parent task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Get subtasks",
        "description": "Get all subtasks of a specific task.",
        "operationId": "get_subtasks_api_v1_tasks__task_id__subtasks_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Parent task ID",
              "title": "Task Id"
            },
            "description": "Parent task ID"
          },
          {
            "name": "include_completed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include completed subtasks",
              "default": true,
              "title": "Include Completed"
            },
            "description": "Include completed subtasks"
          }
        ],
        "responses": {
          "200": {
            "description": "List of subtasks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaskResponse"
                  },
                  "title": "Response 200 Get Subtasks Api V1 Tasks  Task Id  Subtasks Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks/{task_id}/dependencies": {
      "post": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Add task dependency",
        "description": "Add a dependency between tasks.\n\n    Dependency types:\n    - BLOCKS: This task blocks another task\n    - REQUIRES: This task requires another task to be completed first\n    - RELATED: Tasks are related but no blocking dependency",
        "operationId": "add_dependency_api_v1_tasks__task_id__dependencies_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Task ID",
              "title": "Task Id"
            },
            "description": "Task ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_add_dependency_api_v1_tasks__task_id__dependencies_post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Dependency created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskDependencyResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Dependency already exists or would create cycle",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Get task dependencies",
        "description": "Get all dependencies for a task (both depends-on and blocks).",
        "operationId": "get_dependencies_api_v1_tasks__task_id__dependencies_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Task ID",
              "title": "Task Id"
            },
            "description": "Task ID"
          }
        ],
        "responses": {
          "200": {
            "description": "List of dependencies",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaskDependencyResponse"
                  },
                  "title": "Response 200 Get Dependencies Api V1 Tasks  Task Id  Dependencies Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks/{task_id}/dependencies/{dependency_id}": {
      "delete": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Remove task dependency",
        "description": "Remove a dependency between tasks.",
        "operationId": "remove_dependency_api_v1_tasks__task_id__dependencies__dependency_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Task ID",
              "title": "Task Id"
            },
            "description": "Task ID"
          },
          {
            "name": "dependency_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Dependency ID",
              "title": "Dependency Id"
            },
            "description": "Dependency ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Dependency removed"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Dependency not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks/categories": {
      "get": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "List task categories",
        "description": "List all task categories for the current user.\n\n    Categories help organize tasks by project, type, or any custom grouping.",
        "operationId": "list_task_categories_api_v1_tasks_categories_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "include_inactive",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include inactive categories",
              "default": false,
              "title": "Include Inactive"
            },
            "description": "Include inactive categories"
          }
        ],
        "responses": {
          "200": {
            "description": "List of categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaskCategoryResponse"
                  },
                  "title": "Response 200 List Task Categories Api V1 Tasks Categories Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Create task category",
        "description": "Create a new task category.\n\n    Categories can have a custom color and icon for visual organization.",
        "operationId": "create_task_category_api_v1_tasks_categories_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskCategoryCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Category created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskCategoryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Category with this name already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks/categories/{category_id}": {
      "patch": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Update task category",
        "description": "Update an existing task category.\n\n    Only the category owner can update it.",
        "operationId": "update_task_category_api_v1_tasks_categories__category_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "category_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Category ID",
              "title": "Category Id"
            },
            "description": "Category ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskCategoryUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Category updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskCategoryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Category not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tasks",
          "Tasks"
        ],
        "summary": "Delete task category",
        "description": "Delete a task category.\n\n    Tasks using this category will have their category set to null.",
        "operationId": "delete_task_category_api_v1_tasks_categories__category_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "category_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Category ID",
              "title": "Category Id"
            },
            "description": "Category ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Category deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Category not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/time-entries": {
      "get": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "List time entries",
        "description": "List time entries for the current user.\n\n    Supports filtering by:\n    - Date range\n    - Task\n    - Meeting\n    - Billable status\n    - Tags\n    - Running status (active timers)",
        "operationId": "list_time_entries_api_v1_time_entries_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter from date",
              "title": "Start Date"
            },
            "description": "Filter from date"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter to date",
              "title": "End Date"
            },
            "description": "Filter to date"
          },
          {
            "name": "task_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by task",
              "title": "Task Id"
            },
            "description": "Filter by task"
          },
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by meeting",
              "title": "Meeting Id"
            },
            "description": "Filter by meeting"
          },
          {
            "name": "is_billable",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by billable status",
              "title": "Is Billable"
            },
            "description": "Filter by billable status"
          },
          {
            "name": "is_running",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by running status",
              "title": "Is Running"
            },
            "description": "Filter by running status"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by tags",
              "title": "Tags"
            },
            "description": "Filter by tags"
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Field to sort by",
              "default": "start_time",
              "title": "Sort By"
            },
            "description": "Field to sort by"
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SortOrder",
              "description": "Sort order",
              "default": "desc"
            },
            "description": "Sort order"
          }
        ],
        "responses": {
          "200": {
            "description": "List of time entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_TimeEntryResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Create manual time entry",
        "description": "Create a manual time entry with specified start and end times.\n\n    Use this for logging time retroactively or correcting entries.\n    For starting a live timer, use POST /time-entries/start instead.",
        "operationId": "create_time_entry_api_v1_time_entries_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeEntryCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Time entry created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task or meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/time-entries/start": {
      "post": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Start timer",
        "description": "Start a new time tracking timer.\n\n    Creates a time entry with start_time set to now and no end_time.\n    Only one timer can be running at a time per user.",
        "operationId": "start_timer_api_v1_time_entries_start_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeEntryStart"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Timer started",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task or meeting not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "A timer is already running",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/time-entries/{entry_id}/stop": {
      "post": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Stop timer",
        "description": "Stop a running timer.\n\n    Sets the end_time and calculates the duration.\n    Can optionally specify a custom end time.",
        "operationId": "stop_timer_api_v1_time_entries__entry_id__stop_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "entry_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Time entry ID",
              "title": "Entry Id"
            },
            "description": "Time entry ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeEntryStop"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Timer stopped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Time entry not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Timer is not running",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/time-entries/running": {
      "get": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Get running timer",
        "description": "Get the currently running timer for the authenticated user.\n\n    Returns null if no timer is running.",
        "operationId": "get_running_timer_api_v1_time_entries_running_get",
        "responses": {
          "200": {
            "description": "Running timer or null",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/TimeEntryResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get Running Timer Api V1 Time Entries Running Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/time-entries/report": {
      "get": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Get time report",
        "description": "Generate a time report with aggregations for the specified period.\n\n    The report includes:\n    - Total time tracked\n    - Billable vs non-billable breakdown\n    - Time grouped by task\n    - Time grouped by tag\n    - Time grouped by date\n    - Detailed entries (optional)",
        "operationId": "get_time_report_api_v1_time_entries_report_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Report start date",
              "title": "Start Date"
            },
            "description": "Report start date"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Report end date",
              "title": "End Date"
            },
            "description": "Report end date"
          },
          {
            "name": "task_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by task",
              "title": "Task Id"
            },
            "description": "Filter by task"
          },
          {
            "name": "include_entries",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include detailed entries",
              "default": false,
              "title": "Include Entries"
            },
            "description": "Include detailed entries"
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Primary grouping (date, task, tag)",
              "default": "date",
              "title": "Group By"
            },
            "description": "Primary grouping (date, task, tag)"
          }
        ],
        "responses": {
          "200": {
            "description": "Time report",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeReport"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Invalid date range",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/time-entries/summary/today": {
      "get": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Get today's time summary",
        "description": "Quick summary of time tracked today.\n\n    Returns:\n    - Total minutes tracked today\n    - Currently running timer (if any)\n    - Breakdown by task",
        "operationId": "get_today_summary_api_v1_time_entries_summary_today_get",
        "responses": {
          "200": {
            "description": "Today's time summary",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Get Today Summary Api V1 Time Entries Summary Today Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/time-entries/{entry_id}": {
      "get": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Get time entry",
        "description": "Get details of a specific time entry.",
        "operationId": "get_time_entry_api_v1_time_entries__entry_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "entry_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Time entry ID",
              "title": "Entry Id"
            },
            "description": "Time entry ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Time entry details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Time entry not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Update time entry",
        "description": "Update an existing time entry.\n\n    Can modify:\n    - Description and notes\n    - Start and end times\n    - Billable status and rate\n    - Associated task or meeting\n    - Tags",
        "operationId": "update_time_entry_api_v1_time_entries__entry_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "entry_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Time entry ID",
              "title": "Entry Id"
            },
            "description": "Time entry ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeEntryUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Time entry updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeEntryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Time entry not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Time Tracking",
          "Time Tracking"
        ],
        "summary": "Delete time entry",
        "description": "Delete a time entry.\n\n    If the entry has a running timer, it will be stopped first.",
        "operationId": "delete_time_entry_api_v1_time_entries__entry_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "entry_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Time entry ID",
              "title": "Entry Id"
            },
            "description": "Time entry ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Time entry deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Time entry not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reminders": {
      "get": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "List reminders",
        "description": "List reminders for the current user.\n\n    Supports filtering by:\n    - Associated item (meeting, event, task)\n    - Reminder type (notification, email, SMS)\n    - Active/inactive status\n    - Sent/unsent status\n    - Acknowledged status",
        "operationId": "list_reminders_api_v1_reminders_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by meeting",
              "title": "Meeting Id"
            },
            "description": "Filter by meeting"
          },
          {
            "name": "event_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by event",
              "title": "Event Id"
            },
            "description": "Filter by event"
          },
          {
            "name": "task_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by task",
              "title": "Task Id"
            },
            "description": "Filter by task"
          },
          {
            "name": "reminder_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/ReminderType"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by type",
              "title": "Reminder Type"
            },
            "description": "Filter by type"
          },
          {
            "name": "is_active",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by active status",
              "default": true,
              "title": "Is Active"
            },
            "description": "Filter by active status"
          },
          {
            "name": "is_sent",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by sent status",
              "title": "Is Sent"
            },
            "description": "Filter by sent status"
          },
          {
            "name": "is_acknowledged",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by acknowledged status",
              "title": "Is Acknowledged"
            },
            "description": "Filter by acknowledged status"
          },
          {
            "name": "upcoming_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Only future reminders",
              "default": false,
              "title": "Upcoming Only"
            },
            "description": "Only future reminders"
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Field to sort by",
              "default": "reminder_time",
              "title": "Sort By"
            },
            "description": "Field to sort by"
          },
          {
            "name": "sort_order",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SortOrder",
              "description": "Sort order",
              "default": "asc"
            },
            "description": "Sort order"
          }
        ],
        "responses": {
          "200": {
            "description": "List of reminders",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_ReminderResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "Create reminder",
        "description": "Create a new reminder.\n\n    A reminder must be associated with at least one of:\n    - Meeting\n    - Event\n    - Task\n\n    Supports different delivery types:\n    - Notification (in-app)\n    - Email\n    - SMS (if configured)",
        "operationId": "create_reminder_api_v1_reminders_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReminderCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Reminder created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReminderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Associated item not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reminders/upcoming": {
      "get": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "Get upcoming reminders",
        "description": "Get reminders that will fire within the specified time window.\n\n    Useful for displaying pending reminders in the UI.",
        "operationId": "get_upcoming_reminders_api_v1_reminders_upcoming_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "minutes_ahead",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1440,
              "minimum": 1,
              "description": "Minutes to look ahead",
              "default": 60,
              "title": "Minutes Ahead"
            },
            "description": "Minutes to look ahead"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "minimum": 1,
              "description": "Maximum reminders to return",
              "default": 10,
              "title": "Limit"
            },
            "description": "Maximum reminders to return"
          }
        ],
        "responses": {
          "200": {
            "description": "Upcoming reminders",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReminderResponse"
                  },
                  "title": "Response 200 Get Upcoming Reminders Api V1 Reminders Upcoming Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reminders/bulk/acknowledge": {
      "post": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "Bulk acknowledge reminders",
        "description": "Acknowledge multiple reminders at once.\n\n    Useful for clearing all pending reminders.",
        "operationId": "bulk_acknowledge_reminders_api_v1_reminders_bulk_acknowledge_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array",
                "title": "Reminder Ids",
                "description": "Reminder IDs to acknowledge"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Reminders acknowledged",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/reminders/{reminder_id}": {
      "get": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "Get reminder",
        "description": "Get details of a specific reminder.",
        "operationId": "get_reminder_api_v1_reminders__reminder_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "reminder_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Reminder ID",
              "title": "Reminder Id"
            },
            "description": "Reminder ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Reminder details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReminderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Reminder not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "Update reminder",
        "description": "Update an existing reminder.\n\n    Can modify:\n    - Reminder time\n    - Reminder type\n    - Message\n    - Recurrence settings\n    - Active status",
        "operationId": "update_reminder_api_v1_reminders__reminder_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "reminder_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Reminder ID",
              "title": "Reminder Id"
            },
            "description": "Reminder ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReminderUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reminder updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReminderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Reminder not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "Delete reminder",
        "description": "Delete a reminder.\n\n    Cancels any scheduled delivery for this reminder.",
        "operationId": "delete_reminder_api_v1_reminders__reminder_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "reminder_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Reminder ID",
              "title": "Reminder Id"
            },
            "description": "Reminder ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Reminder deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Reminder not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reminders/{reminder_id}/acknowledge": {
      "post": {
        "tags": [
          "Reminders",
          "Reminders"
        ],
        "summary": "Acknowledge reminder",
        "description": "Mark a reminder as acknowledged.\n\n    Optionally snooze the reminder to fire again after a specified interval.",
        "operationId": "acknowledge_reminder_api_v1_reminders__reminder_id__acknowledge_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "reminder_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Reminder ID",
              "title": "Reminder Id"
            },
            "description": "Reminder ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReminderAcknowledge"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reminder acknowledged",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReminderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Access denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Reminder not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/views/day/{view_date}": {
      "get": {
        "tags": [
          "Calendar Views",
          "Calendar Views"
        ],
        "summary": "Get day view",
        "description": "Get all calendar items for a specific day.\n\n    Returns:\n    - All-day items (events without specific times)\n    - Timed items (meetings, events with times, tasks with due times)\n    - Optional time slots breakdown\n    - Conflict detection\n\n    Items are sorted by time, with all-day items first.",
        "operationId": "get_day_view_api_v1_views_day__view_date__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "view_date",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Date to view (YYYY-MM-DD)",
              "title": "View Date"
            },
            "description": "Date to view (YYYY-MM-DD)"
          },
          {
            "name": "calendar_ids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar IDs (default: all accessible)",
              "title": "Calendar Ids"
            },
            "description": "Filter by calendar IDs (default: all accessible)"
          },
          {
            "name": "include_time_slots",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include hourly time slots breakdown",
              "default": false,
              "title": "Include Time Slots"
            },
            "description": "Include hourly time slots breakdown"
          },
          {
            "name": "slot_duration_minutes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 120,
              "minimum": 15,
              "description": "Time slot duration in minutes",
              "default": 60,
              "title": "Slot Duration Minutes"
            },
            "description": "Time slot duration in minutes"
          },
          {
            "name": "include_tasks",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include tasks",
              "default": true,
              "title": "Include Tasks"
            },
            "description": "Include tasks"
          },
          {
            "name": "include_cancelled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include cancelled items",
              "default": false,
              "title": "Include Cancelled"
            },
            "description": "Include cancelled items"
          }
        ],
        "responses": {
          "200": {
            "description": "Day view data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DayViewResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Invalid date format",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/views/week/{start_date}": {
      "get": {
        "tags": [
          "Calendar Views",
          "Calendar Views"
        ],
        "summary": "Get week view",
        "description": "Get all calendar items for a week starting from the specified date.\n\n    Returns:\n    - 7 days of data starting from the given date\n    - Items organized by day\n    - Week-spanning all-day items\n    - Summary statistics",
        "operationId": "get_week_view_api_v1_views_week__start_date__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start_date",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Week start date (YYYY-MM-DD)",
              "title": "Start Date"
            },
            "description": "Week start date (YYYY-MM-DD)"
          },
          {
            "name": "calendar_ids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar IDs",
              "title": "Calendar Ids"
            },
            "description": "Filter by calendar IDs"
          },
          {
            "name": "include_tasks",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include tasks",
              "default": true,
              "title": "Include Tasks"
            },
            "description": "Include tasks"
          },
          {
            "name": "include_cancelled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include cancelled items",
              "default": false,
              "title": "Include Cancelled"
            },
            "description": "Include cancelled items"
          },
          {
            "name": "week_starts_on_monday",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Week starts on Monday (vs Sunday)",
              "default": true,
              "title": "Week Starts On Monday"
            },
            "description": "Week starts on Monday (vs Sunday)"
          }
        ],
        "responses": {
          "200": {
            "description": "Week view data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeekViewResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Invalid date format",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/views/month/{year}/{month}": {
      "get": {
        "tags": [
          "Calendar Views",
          "Calendar Views"
        ],
        "summary": "Get month view",
        "description": "Get calendar data for an entire month.\n\n    Returns:\n    - Month organized by weeks\n    - Each week contains 7 days\n    - May include days from adjacent months to fill the calendar grid\n    - Limited items per day (use day view for full list)\n    - Summary statistics",
        "operationId": "get_month_view_api_v1_views_month__year___month__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "maximum": 2100,
              "minimum": 2000,
              "description": "Year",
              "title": "Year"
            },
            "description": "Year"
          },
          {
            "name": "month",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "maximum": 12,
              "minimum": 1,
              "description": "Month (1-12)",
              "title": "Month"
            },
            "description": "Month (1-12)"
          },
          {
            "name": "calendar_ids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar IDs",
              "title": "Calendar Ids"
            },
            "description": "Filter by calendar IDs"
          },
          {
            "name": "include_tasks",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include tasks",
              "default": true,
              "title": "Include Tasks"
            },
            "description": "Include tasks"
          },
          {
            "name": "include_cancelled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include cancelled items",
              "default": false,
              "title": "Include Cancelled"
            },
            "description": "Include cancelled items"
          },
          {
            "name": "max_items_per_day",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 10,
              "minimum": 1,
              "description": "Maximum items to show per day",
              "default": 3,
              "title": "Max Items Per Day"
            },
            "description": "Maximum items to show per day"
          },
          {
            "name": "week_starts_on_monday",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Week starts on Monday",
              "default": true,
              "title": "Week Starts On Monday"
            },
            "description": "Week starts on Monday"
          }
        ],
        "responses": {
          "200": {
            "description": "Month view data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonthViewResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Invalid year/month",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/views/agenda": {
      "get": {
        "tags": [
          "Calendar Views",
          "Calendar Views"
        ],
        "summary": "Get agenda view",
        "description": "Get a chronological list of upcoming items.\n\n    Agenda view presents items in a simple list format, sorted by date/time.\n    Items can be grouped by date for easier scanning.\n\n    Useful for:\n    - Quick overview of upcoming schedule\n    - Printing schedules\n    - Widget/summary displays",
        "operationId": "get_agenda_view_api_v1_views_agenda_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Agenda start date",
              "title": "Start Date"
            },
            "description": "Agenda start date"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Agenda end date",
              "title": "End Date"
            },
            "description": "Agenda end date"
          },
          {
            "name": "calendar_ids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar IDs",
              "title": "Calendar Ids"
            },
            "description": "Filter by calendar IDs"
          },
          {
            "name": "item_types",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarItemType"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by item types",
              "title": "Item Types"
            },
            "description": "Filter by item types"
          },
          {
            "name": "include_completed_tasks",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include completed tasks",
              "default": false,
              "title": "Include Completed Tasks"
            },
            "description": "Include completed tasks"
          },
          {
            "name": "include_cancelled",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include cancelled items",
              "default": false,
              "title": "Include Cancelled"
            },
            "description": "Include cancelled items"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "description": "Maximum items to return",
              "default": 50,
              "title": "Limit"
            },
            "description": "Maximum items to return"
          }
        ],
        "responses": {
          "200": {
            "description": "Agenda view data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgendaViewResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Invalid date range",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/views/upcoming": {
      "get": {
        "tags": [
          "Calendar Views",
          "Calendar Views"
        ],
        "summary": "Get upcoming items",
        "description": "Get upcoming items for the next 7 days.\n\n    Provides a quick summary including:\n    - Next upcoming meeting\n    - Next upcoming event\n    - Next task due\n    - List of upcoming items\n    - Overdue tasks\n    - Remaining items for today\n\n    Ideal for dashboard widgets and quick glance views.",
        "operationId": "get_upcoming_api_v1_views_upcoming_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "calendar_ids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar IDs",
              "title": "Calendar Ids"
            },
            "description": "Filter by calendar IDs"
          },
          {
            "name": "days_ahead",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 30,
              "minimum": 1,
              "description": "Days to look ahead",
              "default": 7,
              "title": "Days Ahead"
            },
            "description": "Days to look ahead"
          },
          {
            "name": "include_tasks",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include tasks",
              "default": true,
              "title": "Include Tasks"
            },
            "description": "Include tasks"
          },
          {
            "name": "include_overdue",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include overdue tasks",
              "default": true,
              "title": "Include Overdue"
            },
            "description": "Include overdue tasks"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "minimum": 1,
              "description": "Maximum items",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum items"
          }
        ],
        "responses": {
          "200": {
            "description": "Upcoming items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpcomingItemsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/views/free-busy": {
      "get": {
        "tags": [
          "Calendar Views",
          "Calendar Views"
        ],
        "summary": "Get free/busy times",
        "description": "Get free and busy time slots for a date range.\n\n    Useful for:\n    - Finding available meeting times\n    - Checking conflicts before scheduling\n    - Displaying availability to others\n\n    Returns time slots with their availability status.",
        "operationId": "get_free_busy_api_v1_views_free_busy_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Start date",
              "title": "Start Date"
            },
            "description": "Start date"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "End date",
              "title": "End Date"
            },
            "description": "End date"
          },
          {
            "name": "calendar_ids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar IDs",
              "title": "Calendar Ids"
            },
            "description": "Filter by calendar IDs"
          },
          {
            "name": "slot_duration_minutes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 120,
              "minimum": 15,
              "description": "Slot duration in minutes",
              "default": 30,
              "title": "Slot Duration Minutes"
            },
            "description": "Slot duration in minutes"
          },
          {
            "name": "working_hours_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Only include working hours (9-17)",
              "default": true,
              "title": "Working Hours Only"
            },
            "description": "Only include working hours (9-17)"
          }
        ],
        "responses": {
          "200": {
            "description": "Free/busy data",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Get Free Busy Api V1 Views Free Busy Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Invalid date range",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/views/search": {
      "get": {
        "tags": [
          "Calendar Views",
          "Calendar Views"
        ],
        "summary": "Search calendar items",
        "description": "Search across all calendar items (meetings, events, tasks).\n\n    Searches in:\n    - Titles\n    - Descriptions\n    - Notes\n    - Location\n\n    Supports date range filtering.",
        "operationId": "search_calendar_items_api_v1_views_search_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 100,
              "description": "Search query",
              "title": "Query"
            },
            "description": "Search query"
          },
          {
            "name": "calendar_ids",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by calendar IDs",
              "title": "Calendar Ids"
            },
            "description": "Filter by calendar IDs"
          },
          {
            "name": "item_types",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarItemType"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by item types",
              "title": "Item Types"
            },
            "description": "Filter by item types"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Search from date",
              "title": "Start Date"
            },
            "description": "Search from date"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Search until date",
              "title": "End Date"
            },
            "description": "Search until date"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Maximum results",
              "default": 20,
              "title": "Limit"
            },
            "description": "Maximum results"
          }
        ],
        "responses": {
          "200": {
            "description": "Search results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Search Calendar Items Api V1 Views Search Get"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/event-profiles/public/{slug}": {
      "get": {
        "tags": [
          "Event Profiles",
          "Event Profiles"
        ],
        "summary": "Get public event profile by slug",
        "description": "Get a published event profile by its URL slug.\n\n    This is a **public** endpoint — no authentication required.\n    Only returns published profiles. Used by the dynamic event profile\n    template to render event landing pages.",
        "operationId": "get_public_profile_api_v1_event_profiles_public__slug__get",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Event profile URL slug",
              "title": "Slug"
            },
            "description": "Event profile URL slug"
          }
        ],
        "responses": {
          "200": {
            "description": "Event profile data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventProfilePublicResponse"
                }
              }
            }
          },
          "404": {
            "description": "Profile not found or not published",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/event-profiles": {
      "get": {
        "tags": [
          "Event Profiles",
          "Event Profiles"
        ],
        "summary": "List event profiles",
        "description": "List all event profiles for the current tenant.\n\n    Supports filtering by published status and pagination.",
        "operationId": "list_profiles_api_v1_event_profiles_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "Page number",
              "default": 1,
              "title": "Page"
            },
            "description": "Page number"
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "description": "Items per page",
              "default": 20,
              "title": "Page Size"
            },
            "description": "Items per page"
          },
          {
            "name": "published_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Only show published profiles",
              "default": false,
              "title": "Published Only"
            },
            "description": "Only show published profiles"
          }
        ],
        "responses": {
          "200": {
            "description": "List of event profiles",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_EventProfileResponse_"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Event Profiles",
          "Event Profiles"
        ],
        "summary": "Create event profile",
        "description": "Create a new event profile (rich landing page for an event).\n\n    The event must exist and not already have a profile.",
        "operationId": "create_profile_api_v1_event_profiles_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventProfileCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Profile created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Event not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Slug or profile already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/event-profiles/{profile_id}": {
      "get": {
        "tags": [
          "Event Profiles",
          "Event Profiles"
        ],
        "summary": "Get event profile by ID",
        "description": "Get a specific event profile by its ID (admin).",
        "operationId": "get_profile_api_v1_event_profiles__profile_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event profile ID",
              "title": "Profile Id"
            },
            "description": "Event profile ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Event profile details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Event Profiles",
          "Event Profiles"
        ],
        "summary": "Update event profile",
        "description": "Update an existing event profile (partial update).",
        "operationId": "update_profile_api_v1_event_profiles__profile_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event profile ID",
              "title": "Profile Id"
            },
            "description": "Event profile ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventProfileUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Profile updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Slug conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Event Profiles",
          "Event Profiles"
        ],
        "summary": "Delete event profile",
        "description": "Soft-delete an event profile.",
        "operationId": "delete_profile_api_v1_event_profiles__profile_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Event profile ID",
              "title": "Profile Id"
            },
            "description": "Event profile ID"
          }
        ],
        "responses": {
          "204": {
            "description": "Profile deleted"
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/uploads/event-profile-image": {
      "post": {
        "tags": [
          "Uploads",
          "Uploads"
        ],
        "summary": "Upload an event profile image",
        "description": "Upload an image for use in event profile hero, gallery, or other sections. Returns the URL path to the uploaded image.",
        "operationId": "upload_event_profile_image_api_v1_uploads_event_profile_image_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "subfolder",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional subfolder (e.g., profile slug)",
              "default": "",
              "title": "Subfolder"
            },
            "description": "Optional subfolder (e.g., profile slug)"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_event_profile_image_api_v1_uploads_event_profile_image_post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Upload Event Profile Image Api V1 Uploads Event Profile Image Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/uploads/event-profile-images": {
      "get": {
        "tags": [
          "Uploads",
          "Uploads"
        ],
        "summary": "List uploaded event profile images",
        "description": "List all uploaded images for event profiles, optionally filtered by subfolder.",
        "operationId": "list_event_profile_images_api_v1_uploads_event_profile_images_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "subfolder",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional subfolder filter",
              "default": "",
              "title": "Subfolder"
            },
            "description": "Optional subfolder filter"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response List Event Profile Images Api V1 Uploads Event Profile Images Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/uploads/event-profile-image/{filename}": {
      "delete": {
        "tags": [
          "Uploads",
          "Uploads"
        ],
        "summary": "Delete an uploaded event profile image",
        "description": "Delete an uploaded image.\n\nArgs:\n    filename: Name of the file to delete\n    current_user: Authenticated user\n    subfolder: Subfolder the image is in\n\nReturns:\n    dict with status",
        "operationId": "delete_event_profile_image_api_v1_uploads_event_profile_image__filename__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "filename",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Filename"
            }
          },
          {
            "name": "subfolder",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Subfolder the image is in",
              "default": "",
              "title": "Subfolder"
            },
            "description": "Subfolder the image is in"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Delete Event Profile Image Api V1 Uploads Event Profile Image  Filename  Delete"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/dashboard/navigation": {
      "get": {
        "tags": [
          "Dashboard Console"
        ],
        "summary": "Get Navigation",
        "description": "Get full navigation payload: sidebar tree, menus, icons, user config.",
        "operationId": "get_navigation_api_v1_dashboard_navigation_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/dashboard/config": {
      "get": {
        "tags": [
          "Dashboard Console"
        ],
        "summary": "Get Config",
        "description": "Get user dashboard configuration.",
        "operationId": "get_config_api_v1_dashboard_config_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Dashboard Console"
        ],
        "summary": "Update Config",
        "description": "Update user dashboard configuration (partial update).",
        "operationId": "update_config_api_v1_dashboard_config_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/dashboard/app-access": {
      "post": {
        "tags": [
          "Dashboard Console"
        ],
        "summary": "Record App Access",
        "description": "Record that a user accessed an app (for recents / analytics).",
        "operationId": "record_app_access_api_v1_dashboard_app_access_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppAccessRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/dashboard/": {
      "get": {
        "tags": [
          "Dashboard Console"
        ],
        "summary": "Get Dashboard",
        "description": "Legacy endpoint -- returns basic dashboard info.",
        "operationId": "get_dashboard_api_v1_dashboard__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/tasks": {
      "post": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Create one routine task",
        "operationId": "create_task_api_v1_mykal_tasks_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutineTaskCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutineTaskRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "List routine tasks (flat or tree-aware)",
        "operationId": "list_tasks_api_v1_mykal_tasks_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by status",
              "title": "Status"
            },
            "description": "Filter by status"
          },
          {
            "name": "parent_task_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 36
                },
                {
                  "type": "null"
                }
              ],
              "title": "Parent Task Id"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ],
              "title": "Tag"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutineTaskRead"
                  },
                  "title": "Response List Tasks Api V1 Mykal Tasks Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/tasks/{task_id}": {
      "get": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Get a task by id",
        "operationId": "get_task_api_v1_mykal_tasks__task_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Task Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutineTaskRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Update a routine task",
        "operationId": "update_task_api_v1_mykal_tasks__task_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Task Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutineTaskUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutineTaskRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Delete a routine task (cascades to children at DB level)",
        "operationId": "delete_task_api_v1_mykal_tasks__task_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Task Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/tasks/{task_id}/tree": {
      "get": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Get a task and its full subtree",
        "operationId": "get_task_tree_api_v1_mykal_tasks__task_id__tree_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Task Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutineTaskTreeRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/tasks/{task_id}/move": {
      "post": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Re-parent a task",
        "operationId": "move_task_api_v1_mykal_tasks__task_id__move_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Task Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoveTaskBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutineTaskRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/tasks/{task_id}/reorder": {
      "post": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Set sort_order among siblings",
        "operationId": "reorder_task_api_v1_mykal_tasks__task_id__reorder_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Task Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutineTaskRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/tasks/dependencies": {
      "post": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Create a task dependency edge",
        "operationId": "create_dependency_api_v1_mykal_tasks_dependencies_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskDependencyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskDependencyRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/tasks/dependencies/{dep_id}": {
      "delete": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Remove a task dependency edge",
        "operationId": "remove_dependency_api_v1_mykal_tasks_dependencies__dep_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "dep_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Dep Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/tasks/bulk-import": {
      "post": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Synchronous bulk import + optional commit (<=100 tasks)",
        "operationId": "bulk_import_sync_api_v1_mykal_tasks_bulk_import_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkImportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkImportPreview"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/tasks/bulk-import/jobs": {
      "post": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Async bulk import (>100 tasks).",
        "operationId": "bulk_import_async_api_v1_mykal_tasks_bulk_import_jobs_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkImportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkJobRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/tasks/bulk-import/jobs/{job_id}": {
      "get": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Poll an async bulk import job",
        "operationId": "bulk_job_status_api_v1_mykal_tasks_bulk_import_jobs__job_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Job Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkJobRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Cancel a bulk-import job",
        "operationId": "bulk_job_cancel_api_v1_mykal_tasks_bulk_import_jobs__job_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Job Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/tasks/bulk-import/jobs/{job_id}/commit": {
      "post": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Commit a parsed bulk-import job into routine_tasks",
        "operationId": "bulk_job_commit_api_v1_mykal_tasks_bulk_import_jobs__job_id__commit_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Job Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkCommitBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkCommitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/routine-tasks/tree": {
      "get": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Alias → GET tasks (tree-style). Returns all user tasks ordered for tree rendering.",
        "description": "Return flat task list ordered by (depth, sort_order) for tree UI.",
        "operationId": "routine_tasks_tree_alias_api_v1_mykal_routine_tasks_tree_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 2000,
              "minimum": 1,
              "default": 500,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutineTaskRead"
                  },
                  "title": "Response Routine Tasks Tree Alias Api V1 Mykal Routine Tasks Tree Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/routine-tasks/{task_id}/parent": {
      "patch": {
        "tags": [
          "mykal-tasks",
          "mykal-tasks"
        ],
        "summary": "Alias → POST tasks/{id}/move. Re-parent a task.",
        "operationId": "routine_tasks_parent_alias_api_v1_mykal_routine_tasks__task_id__parent_patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Task Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoveTaskBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutineTaskRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/schedule": {
      "post": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "Run the scheduling agent for one or more tasks",
        "operationId": "schedule_tasks_api_v1_mykal_schedule_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRequestBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRunRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/schedule/runs/{run_id}": {
      "get": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "All decisions for a scheduling run",
        "operationId": "get_run_decisions_api_v1_mykal_schedule_runs__run_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ScheduleDecisionRead"
                  },
                  "title": "Response Get Run Decisions Api V1 Mykal Schedule Runs  Run Id  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/schedule/reflow": {
      "post": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "Re-schedule a subtree after a parent block moves",
        "operationId": "reflow_subtree_api_v1_mykal_schedule_reflow_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReflowBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRunRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/schedule/decisions/{decision_id}": {
      "get": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "Single scheduling decision detail",
        "operationId": "get_decision_api_v1_mykal_schedule_decisions__decision_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "decision_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Decision Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleDecisionRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/schedule/decisions/{decision_id}/override": {
      "post": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "User manually overrides the scheduled slot",
        "operationId": "override_decision_api_v1_mykal_schedule_decisions__decision_id__override_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "decision_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 36,
              "maxLength": 36,
              "title": "Decision Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OverrideBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleDecisionRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/schedule/cost/me": {
      "get": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "Current-day LLM $ usage + quota status",
        "operationId": "cost_me_api_v1_mykal_schedule_cost_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostMeRead"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/schedule/override": {
      "post": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "Alias → POST schedule/decisions/{id}/override",
        "description": "Legacy entrypoint used by the 2e frontend. Forwards to the\ncanonical per-decision override handler.",
        "operationId": "override_decision_alias_api_v1_mykal_schedule_override_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OverrideAliasBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleDecisionRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/schedule/runs/latest": {
      "get": {
        "tags": [
          "mykal-schedule",
          "mykal-schedule"
        ],
        "summary": "Most recent schedule_decisions run for the current user",
        "operationId": "get_latest_run_api_v1_mykal_schedule_runs_latest_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleRunLatestRead"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/integrations": {
      "get": {
        "tags": [
          "mykal-integrations",
          "mykal-integrations"
        ],
        "summary": "List Integrations",
        "operationId": "list_integrations_api_v1_mykal_integrations_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/IntegrationRead"
                  },
                  "type": "array",
                  "title": "Response List Integrations Api V1 Mykal Integrations Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/integrations/{provider}/oauth/start": {
      "post": {
        "tags": [
          "mykal-integrations",
          "mykal-integrations"
        ],
        "summary": "Oauth Start",
        "operationId": "oauth_start_api_v1_mykal_integrations__provider__oauth_start_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "google",
                "microsoft",
                "outlook"
              ],
              "type": "string",
              "title": "Provider"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthStartRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthStartResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/integrations/{integration_id}/sync": {
      "post": {
        "tags": [
          "mykal-integrations",
          "mykal-integrations"
        ],
        "summary": "Trigger Sync",
        "operationId": "trigger_sync_api_v1_mykal_integrations__integration_id__sync_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "integration_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Integration Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SyncResultResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/integrations/{integration_id}/reconnect": {
      "post": {
        "tags": [
          "mykal-integrations",
          "mykal-integrations"
        ],
        "summary": "Reconnect",
        "operationId": "reconnect_api_v1_mykal_integrations__integration_id__reconnect_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "integration_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Integration Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OAuthStartResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/integrations/{integration_id}": {
      "delete": {
        "tags": [
          "mykal-integrations",
          "mykal-integrations"
        ],
        "summary": "Disconnect",
        "operationId": "disconnect_api_v1_mykal_integrations__integration_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "integration_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Integration Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisconnectResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/webhooks": {
      "get": {
        "tags": [
          "mykal-webhooks",
          "mykal-webhooks"
        ],
        "summary": "List Webhooks",
        "operationId": "list_webhooks_api_v1_mykal_webhooks_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/WebhookEndpointRead"
                  },
                  "type": "array",
                  "title": "Response List Webhooks Api V1 Mykal Webhooks Get"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "mykal-webhooks",
          "mykal-webhooks"
        ],
        "summary": "Create Webhook",
        "operationId": "create_webhook_api_v1_mykal_webhooks_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointCreatedResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/webhooks/{endpoint_id}": {
      "get": {
        "tags": [
          "mykal-webhooks",
          "mykal-webhooks"
        ],
        "summary": "Get Webhook",
        "operationId": "get_webhook_api_v1_mykal_webhooks__endpoint_id__get",
        "parameters": [
          {
            "name": "endpoint_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "title": "Endpoint Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "mykal-webhooks",
          "mykal-webhooks"
        ],
        "summary": "Update Webhook",
        "operationId": "update_webhook_api_v1_mykal_webhooks__endpoint_id__patch",
        "parameters": [
          {
            "name": "endpoint_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Endpoint Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mykal-webhooks",
          "mykal-webhooks"
        ],
        "summary": "Delete Webhook",
        "operationId": "delete_webhook_api_v1_mykal_webhooks__endpoint_id__delete",
        "parameters": [
          {
            "name": "endpoint_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Endpoint Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/webhooks/{endpoint_id}/rotate-secret": {
      "post": {
        "tags": [
          "mykal-webhooks",
          "mykal-webhooks"
        ],
        "summary": "Rotate Secret",
        "operationId": "rotate_secret_api_v1_mykal_webhooks__endpoint_id__rotate_secret_post",
        "parameters": [
          {
            "name": "endpoint_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Endpoint Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointCreatedResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/webhooks/{endpoint_id}/test": {
      "post": {
        "tags": [
          "mykal-webhooks",
          "mykal-webhooks"
        ],
        "summary": "Test Webhook",
        "description": "Fire a synthetic signed payload at the endpoint.\n\nDoes NOT count against the endpoint's retry budget and does NOT create\na reminder_deliveries row. Returns the HTTP status, latency, and a\nbounded response-body preview.",
        "operationId": "test_webhook_api_v1_mykal_webhooks__endpoint_id__test_post",
        "parameters": [
          {
            "name": "endpoint_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Endpoint Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/reminders/upcoming": {
      "get": {
        "tags": [
          "mykal-reminders",
          "mykal-reminders"
        ],
        "summary": "Upcoming",
        "operationId": "upcoming_api_v1_mykal_reminders_upcoming_get",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 90,
              "minimum": 1,
              "default": 7,
              "title": "Days"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UpcomingReminderItem"
                  },
                  "title": "Response Upcoming Api V1 Mykal Reminders Upcoming Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/reminders/deliveries": {
      "get": {
        "tags": [
          "mykal-reminders",
          "mykal-reminders"
        ],
        "summary": "List Deliveries",
        "operationId": "list_deliveries_api_v1_mykal_reminders_deliveries_get",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "pending",
                    "sent",
                    "failed",
                    "dead"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "channel",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "email",
                    "inapp",
                    "webhook"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Channel"
            }
          },
          {
            "name": "reminder_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Reminder Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/reminders/deliveries/{delivery_id}": {
      "get": {
        "tags": [
          "mykal-reminders",
          "mykal-reminders"
        ],
        "summary": "Get Delivery",
        "operationId": "get_delivery_api_v1_mykal_reminders_deliveries__delivery_id__get",
        "parameters": [
          {
            "name": "delivery_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "title": "Delivery Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReminderDeliveryRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/reminders/deliveries/{delivery_id}/redeliver": {
      "post": {
        "tags": [
          "mykal-reminders",
          "mykal-reminders"
        ],
        "summary": "Redeliver",
        "operationId": "redeliver_api_v1_mykal_reminders_deliveries__delivery_id__redeliver_post",
        "parameters": [
          {
            "name": "delivery_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Delivery Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReminderDeliveryRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/reminders/dlq": {
      "get": {
        "tags": [
          "mykal-reminders",
          "mykal-reminders"
        ],
        "summary": "List Dlq",
        "operationId": "list_dlq_api_v1_mykal_reminders_dlq_get",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/reminders/dlq/{dlq_id}/requeue": {
      "post": {
        "tags": [
          "mykal-reminders",
          "mykal-reminders"
        ],
        "summary": "Requeue Dlq",
        "operationId": "requeue_dlq_api_v1_mykal_reminders_dlq__dlq_id__requeue_post",
        "parameters": [
          {
            "name": "dlq_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Dlq Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReminderDeliveryRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/notifications": {
      "get": {
        "tags": [
          "mykal-notifications",
          "mykal-notifications"
        ],
        "summary": "List Notifications",
        "operationId": "list_notifications_api_v1_mykal_notifications_get",
        "parameters": [
          {
            "name": "unread_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Unread Only"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/notifications/{notif_id}/read": {
      "patch": {
        "tags": [
          "mykal-notifications",
          "mykal-notifications"
        ],
        "summary": "Mark Notification Read",
        "operationId": "mark_notification_read_api_v1_mykal_notifications__notif_id__read_patch",
        "parameters": [
          {
            "name": "notif_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Notif Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InAppNotificationRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/calendar/events": {
      "get": {
        "tags": [
          "mykal-calendar",
          "mykal-calendar"
        ],
        "summary": "List Events",
        "operationId": "list_events_api_v1_mykal_calendar_events_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "name": "view",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "day",
                "week",
                "month",
                "agenda"
              ],
              "type": "string",
              "default": "week",
              "title": "View"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 2000,
              "minimum": 1,
              "default": 500,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CalendarEventRead"
                  },
                  "title": "Response List Events Api V1 Mykal Calendar Events Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/calendar/events/{event_id}": {
      "get": {
        "tags": [
          "mykal-calendar",
          "mykal-calendar"
        ],
        "summary": "Get Event",
        "operationId": "get_event_api_v1_mykal_calendar_events__event_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Event Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarEventRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mykal-calendar",
          "mykal-calendar"
        ],
        "summary": "Unschedule",
        "operationId": "unschedule_api_v1_mykal_calendar_events__event_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Event Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleOk"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/calendar/events/{event_id}/done": {
      "post": {
        "tags": [
          "mykal-calendar",
          "mykal-calendar"
        ],
        "summary": "Mark Done",
        "operationId": "mark_done_api_v1_mykal_calendar_events__event_id__done_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Event Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleOk"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/calendar/events/{event_id}/skip": {
      "post": {
        "tags": [
          "mykal-calendar",
          "mykal-calendar"
        ],
        "summary": "Mark Skipped",
        "operationId": "mark_skipped_api_v1_mykal_calendar_events__event_id__skip_post",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Event Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleOk"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/calendar/free-busy": {
      "get": {
        "tags": [
          "mykal-calendar",
          "mykal-calendar"
        ],
        "summary": "Free Busy",
        "operationId": "free_busy_api_v1_mykal_calendar_free_busy_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "title": "From"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "title": "To"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarFreeBusyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/settings/me": {
      "get": {
        "tags": [
          "mykal-settings",
          "mykal-settings"
        ],
        "summary": "Get Me",
        "operationId": "get_me_api_v1_mykal_settings_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSettingRead"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "mykal-settings",
          "mykal-settings"
        ],
        "summary": "Patch Me",
        "operationId": "patch_me_api_v1_mykal_settings_me_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserSettingUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSettingRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/settings/working-hours": {
      "get": {
        "tags": [
          "mykal-settings",
          "mykal-settings"
        ],
        "summary": "Get Working Hours",
        "operationId": "get_working_hours_api_v1_mykal_settings_working_hours_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkingHoursEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "mykal-settings",
          "mykal-settings"
        ],
        "summary": "Put Working Hours",
        "operationId": "put_working_hours_api_v1_mykal_settings_working_hours_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkingHoursEnvelope"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkingHoursEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/settings/no-go-windows": {
      "get": {
        "tags": [
          "mykal-settings",
          "mykal-settings"
        ],
        "summary": "Get No Go",
        "operationId": "get_no_go_api_v1_mykal_settings_no_go_windows_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoGoWindowList"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "mykal-settings",
          "mykal-settings"
        ],
        "summary": "Add No Go",
        "operationId": "add_no_go_api_v1_mykal_settings_no_go_windows_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoGoWindow"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoGoWindow"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/settings/no-go-windows/{window_id}": {
      "delete": {
        "tags": [
          "mykal-settings",
          "mykal-settings"
        ],
        "summary": "Remove No Go",
        "operationId": "remove_no_go_api_v1_mykal_settings_no_go_windows__window_id__delete",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "window_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Window Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/admin/health": {
      "get": {
        "tags": [
          "mykal-admin",
          "mykal-admin"
        ],
        "summary": "Admin Health",
        "operationId": "admin_health_api_v1_mykal_admin_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdminHealth"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/admin/quotas": {
      "get": {
        "tags": [
          "mykal-admin",
          "mykal-admin"
        ],
        "summary": "List Quotas",
        "operationId": "list_quotas_api_v1_mykal_admin_quotas_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/UserQuotaRead"
                  },
                  "type": "array",
                  "title": "Response List Quotas Api V1 Mykal Admin Quotas Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/admin/quotas/{user_id}": {
      "get": {
        "tags": [
          "mykal-admin",
          "mykal-admin"
        ],
        "summary": "Get Quota",
        "operationId": "get_quota_api_v1_mykal_admin_quotas__user_id__get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserQuotaRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "mykal-admin",
          "mykal-admin"
        ],
        "summary": "Update Quota",
        "operationId": "update_quota_api_v1_mykal_admin_quotas__user_id__patch",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "User Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserQuotaUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserQuotaRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/admin/tenant/settings": {
      "get": {
        "tags": [
          "mykal-admin",
          "mykal-admin"
        ],
        "summary": "Get Tenant Settings",
        "operationId": "get_tenant_settings_api_v1_mykal_admin_tenant_settings_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSettingsRead"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "mykal-admin",
          "mykal-admin"
        ],
        "summary": "Patch Tenant Settings",
        "operationId": "patch_tenant_settings_api_v1_mykal_admin_tenant_settings_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantSettingsRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/llm/usage/today": {
      "get": {
        "tags": [
          "mykal-llm",
          "mykal-llm"
        ],
        "summary": "Usage Today",
        "operationId": "usage_today_api_v1_mykal_llm_usage_today_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMUsageTodayRead"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/llm/usage/monthly": {
      "get": {
        "tags": [
          "mykal-llm",
          "mykal-llm"
        ],
        "summary": "Usage Monthly",
        "operationId": "usage_monthly_api_v1_mykal_llm_usage_monthly_get",
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ],
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}$"
                },
                {
                  "type": "null"
                }
              ],
              "description": "YYYY-MM; defaults to current month",
              "title": "Month"
            },
            "description": "YYYY-MM; defaults to current month"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LLMUsageMonthlyRead"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mykal/quota/me": {
      "get": {
        "tags": [
          "mykal-llm",
          "mykal-llm"
        ],
        "summary": "Quota Me",
        "operationId": "quota_me_api_v1_mykal_quota_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaMeRead"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/dashboard/summary": {
      "get": {
        "tags": [
          "mykal-dashboard",
          "mykal-dashboard"
        ],
        "summary": "Get Summary",
        "description": "Return the per-user mykal rollup SHARED_DASHBOARD renders on its home\nconsole.\n\nShape (stable contract):\n\n.. code-block:: json\n\n    {\n      \"site_id\": \"mykal\",\n      \"display_name\": \"mykal\",\n      \"brand_icon\": \"fa-solid fa-hourglass-half\",\n      \"accent_color\": \"#4f46e5\",\n      \"href\": \"pages/dashboard.html\",\n      \"metrics\": {\n        \"tasks_due_today\": 0,\n        \"tasks_overdue\": 0,\n        \"upcoming_reminders_24h\": 0,\n        \"integrations_connected\": 0,\n        \"llm_usage_today_usd\": 0.0,\n        \"unread_notifications\": 0\n      },\n      \"status\": {\n        \"healthy\": true,\n        \"last_sync\": null,\n        \"reminder_worker\": \"ok\"\n      }\n    }",
        "operationId": "get_summary_api_v1_mykal_dashboard_summary_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Get Summary Api V1 Mykal Dashboard Summary Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/api/v1/mykal/dashboard/tiles": {
      "get": {
        "tags": [
          "mykal-dashboard",
          "mykal-dashboard"
        ],
        "summary": "Get Tiles",
        "description": "Return the mykal tile tree for the current user.\n\nTries ``dashboard.menu_items`` first (seeded by V330); falls back to\nthe static catalog in ``mykal_dashboard_service`` when the dashboard\nschema isn't deployed. Either path intersects the tree with the\nprincipal's permissions so tiles they can't use are hidden.",
        "operationId": "get_tiles_api_v1_mykal_dashboard_tiles_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Get Tiles Api V1 Mykal Dashboard Tiles Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2PasswordBearer": []
          }
        ]
      }
    },
    "/health": {
      "get": {
        "tags": [
          "Health"
        ],
        "summary": "Health Check",
        "description": "Health check endpoint.\n\nReturns basic application health status.\nUsed by load balancers and monitoring systems.",
        "operationId": "health_check_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Health Check Health Get"
                }
              }
            }
          }
        }
      }
    },
    "/health/detailed": {
      "get": {
        "tags": [
          "Health"
        ],
        "summary": "Detailed Health Check",
        "description": "Detailed health check endpoint (ARCHITECTURE.md §12).\n\nReturns comprehensive health status including:\n- Application info\n- Database connectivity\n- Redis reachability\n- LLM provider reachability (Anthropic + OpenAI)\n- Google + Microsoft Graph reachability\n- Reminder scheduler lag (count of overdue pending deliveries)\n- OTROTL SSO status\n\nOverall ``status`` is ``healthy`` iff DB and Redis are ok; all other\nsubchecks are informational only so a missing API key or downstream\noutage does not trip pager noise.",
        "operationId": "detailed_health_check_health_detailed_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Detailed Health Check Health Detailed Get"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AdminHealth": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "database": {
            "$ref": "#/components/schemas/HealthSection"
          },
          "redis": {
            "$ref": "#/components/schemas/HealthSection"
          },
          "llm": {
            "$ref": "#/components/schemas/HealthSection"
          },
          "integrations": {
            "$ref": "#/components/schemas/HealthSection"
          },
          "reminder_worker": {
            "$ref": "#/components/schemas/HealthSection"
          },
          "calendar_worker": {
            "$ref": "#/components/schemas/HealthSection"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status",
          "generated_at",
          "database",
          "redis",
          "llm",
          "integrations",
          "reminder_worker",
          "calendar_worker"
        ],
        "title": "AdminHealth"
      },
      "AgendaItem": {
        "properties": {
          "item_date": {
            "type": "string",
            "format": "date",
            "title": "Item Date",
            "description": "Date of the item"
          },
          "time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time",
            "description": "Time if applicable"
          },
          "item": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MeetingItem"
              },
              {
                "$ref": "#/components/schemas/EventItem"
              },
              {
                "$ref": "#/components/schemas/TaskItem"
              }
            ],
            "title": "Item",
            "description": "The calendar item",
            "discriminator": {
              "propertyName": "item_type",
              "mapping": {
                "event": "#/components/schemas/EventItem",
                "meeting": "#/components/schemas/MeetingItem",
                "task": "#/components/schemas/TaskItem"
              }
            }
          },
          "is_first_of_day": {
            "type": "boolean",
            "title": "Is First Of Day",
            "description": "Whether this is first item of the day",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "item_date",
          "item"
        ],
        "title": "AgendaItem",
        "description": "Schema for an item in agenda view."
      },
      "AgendaViewResponse": {
        "properties": {
          "start_date": {
            "type": "string",
            "format": "date",
            "title": "Start Date",
            "description": "Agenda start date"
          },
          "end_date": {
            "type": "string",
            "format": "date",
            "title": "End Date",
            "description": "Agenda end date"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/AgendaItem"
            },
            "type": "array",
            "title": "Items",
            "description": "Items in chronological order"
          },
          "grouped_by_date": {
            "additionalProperties": {
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MeetingItem"
                  },
                  {
                    "$ref": "#/components/schemas/EventItem"
                  },
                  {
                    "$ref": "#/components/schemas/TaskItem"
                  }
                ],
                "discriminator": {
                  "propertyName": "item_type",
                  "mapping": {
                    "event": "#/components/schemas/EventItem",
                    "meeting": "#/components/schemas/MeetingItem",
                    "task": "#/components/schemas/TaskItem"
                  }
                }
              },
              "type": "array"
            },
            "type": "object",
            "title": "Grouped By Date",
            "description": "Items grouped by date"
          },
          "total_items": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Items",
            "description": "Total items"
          },
          "dates_with_items": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Dates With Items",
            "description": "Number of dates with items",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "start_date",
          "end_date",
          "total_items"
        ],
        "title": "AgendaViewResponse",
        "description": "Schema for agenda view response.\n\nExample:\n    {\n        \"start_date\": \"2024-01-15\",\n        \"end_date\": \"2024-01-31\",\n        \"items\": [...],\n        \"grouped_by_date\": {...},\n        \"total_items\": 30\n    }",
        "examples": [
          {
            "dates_with_items": 12,
            "end_date": "2024-01-31",
            "grouped_by_date": {},
            "items": [],
            "start_date": "2024-01-15",
            "total_items": 30
          }
        ]
      },
      "AppAccessRequest": {
        "properties": {
          "app_id": {
            "type": "string",
            "maxLength": 36,
            "minLength": 1,
            "title": "App Id"
          }
        },
        "type": "object",
        "required": [
          "app_id"
        ],
        "title": "AppAccessRequest",
        "description": "Pydantic schema for POST /app-access."
      },
      "AttendeeRole": {
        "type": "string",
        "enum": [
          "organizer",
          "attendee",
          "optional"
        ],
        "title": "AttendeeRole",
        "description": "Meeting attendee role enumeration."
      },
      "AuthConfig": {
        "properties": {
          "api_base_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Base Url",
            "description": "API base URL"
          },
          "sso_login_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Sso Login Url",
            "description": "SSO login URL"
          },
          "sso_register_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Sso Register Url",
            "description": "SSO register URL"
          },
          "external_sso_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "External Sso Url",
            "description": "External SSO provider URL"
          },
          "dashboard_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Dashboard Url",
            "description": "Post-login dashboard redirect URL"
          }
        },
        "type": "object",
        "title": "AuthConfig",
        "description": "Auth configuration for the event profile page."
      },
      "AuthHealthResponse": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "description": "Overall status: 'healthy', 'degraded', 'unhealthy'"
          },
          "sso_available": {
            "type": "boolean",
            "title": "Sso Available",
            "description": "Whether SSO hub is reachable"
          },
          "sso_response_time_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sso Response Time Ms",
            "description": "SSO hub response time in milliseconds"
          },
          "circuit_breaker_state": {
            "type": "string",
            "title": "Circuit Breaker State",
            "description": "Circuit breaker state: CLOSED, OPEN, HALF_OPEN"
          },
          "circuit_breaker_failures": {
            "type": "integer",
            "title": "Circuit Breaker Failures",
            "description": "Current consecutive failure count"
          },
          "local_auth_enabled": {
            "type": "boolean",
            "title": "Local Auth Enabled",
            "description": "Whether local password auth is available"
          },
          "auth_method": {
            "type": "string",
            "title": "Auth Method",
            "description": "Current active auth method based on circuit state"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "title": "Timestamp",
            "description": "Health check timestamp"
          }
        },
        "type": "object",
        "required": [
          "status",
          "sso_available",
          "circuit_breaker_state",
          "circuit_breaker_failures",
          "local_auth_enabled",
          "auth_method"
        ],
        "title": "AuthHealthResponse",
        "description": "Health check response for the auth subsystem."
      },
      "AuthMethod": {
        "type": "string",
        "enum": [
          "sso",
          "local"
        ],
        "title": "AuthMethod",
        "description": "Authentication method enumeration."
      },
      "Body_add_dependency_api_v1_tasks__task_id__dependencies_post": {
        "properties": {
          "depends_on_task_id": {
            "type": "string",
            "format": "uuid",
            "title": "Depends On Task Id",
            "description": "ID of task this depends on"
          },
          "dependency_type": {
            "$ref": "#/components/schemas/DependencyType",
            "description": "Type of dependency",
            "default": "requires"
          }
        },
        "type": "object",
        "required": [
          "depends_on_task_id"
        ],
        "title": "Body_add_dependency_api_v1_tasks__task_id__dependencies_post"
      },
      "Body_create_meeting_api_v1_meetings_post": {
        "properties": {
          "meeting_data": {
            "$ref": "#/components/schemas/MeetingCreate"
          },
          "attendee_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attendee Ids",
            "description": "User IDs to invite as attendees"
          }
        },
        "type": "object",
        "required": [
          "meeting_data"
        ],
        "title": "Body_create_meeting_api_v1_meetings_post"
      },
      "Body_login_form_api_v1_auth_login_form_post": {
        "properties": {
          "grant_type": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^password$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Grant Type"
          },
          "username": {
            "type": "string",
            "title": "Username"
          },
          "password": {
            "type": "string",
            "format": "password",
            "title": "Password"
          },
          "scope": {
            "type": "string",
            "title": "Scope",
            "default": ""
          },
          "client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Id"
          },
          "client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "format": "password",
            "title": "Client Secret"
          }
        },
        "type": "object",
        "required": [
          "username",
          "password"
        ],
        "title": "Body_login_form_api_v1_auth_login_form_post"
      },
      "Body_rsvp_meeting_api_v1_meetings__meeting_id__rsvp_post": {
        "properties": {
          "rsvp_status": {
            "$ref": "#/components/schemas/RSVPStatus",
            "description": "RSVP response"
          },
          "response_note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Response Note",
            "description": "Optional response note"
          }
        },
        "type": "object",
        "required": [
          "rsvp_status"
        ],
        "title": "Body_rsvp_meeting_api_v1_meetings__meeting_id__rsvp_post"
      },
      "Body_update_task_status_api_v1_tasks__task_id__status_patch": {
        "properties": {
          "new_status": {
            "$ref": "#/components/schemas/TaskStatus",
            "description": "New task status"
          },
          "completion_percentage": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completion Percentage",
            "description": "Optional completion percentage"
          }
        },
        "type": "object",
        "required": [
          "new_status"
        ],
        "title": "Body_update_task_status_api_v1_tasks__task_id__status_patch"
      },
      "Body_upload_event_profile_image_api_v1_uploads_event_profile_image_post": {
        "properties": {
          "file": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "File",
            "description": "Image file to upload"
          }
        },
        "type": "object",
        "required": [
          "file"
        ],
        "title": "Body_upload_event_profile_image_api_v1_uploads_event_profile_image_post"
      },
      "BrandingConfig": {
        "properties": {
          "primary_color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color",
            "description": "Primary color hex"
          },
          "accent_color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accent Color",
            "description": "Accent color hex"
          },
          "gold_color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gold Color",
            "description": "Gold/secondary color hex"
          },
          "dark_color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dark Color",
            "description": "Dark color hex"
          },
          "font_display": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Display",
            "description": "Display font family"
          },
          "font_body": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Font Body",
            "description": "Body font family"
          }
        },
        "type": "object",
        "title": "BrandingConfig",
        "description": "Branding configuration (colors, fonts)."
      },
      "BulkCommitBody": {
        "properties": {
          "auto_schedule": {
            "type": "boolean",
            "title": "Auto Schedule",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "BulkCommitBody"
      },
      "BulkCommitResponse": {
        "properties": {
          "job_id": {
            "type": "string",
            "title": "Job Id"
          },
          "inserted_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Inserted Ids"
          },
          "auto_schedule_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Schedule Run Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "job_id",
          "inserted_ids"
        ],
        "title": "BulkCommitResponse"
      },
      "BulkImportBody": {
        "properties": {
          "source": {
            "type": "string",
            "maxLength": 5242880,
            "minLength": 1,
            "title": "Source"
          },
          "format": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ],
            "title": "Format"
          },
          "commit": {
            "type": "boolean",
            "title": "Commit",
            "default": false
          },
          "auto_schedule": {
            "type": "boolean",
            "title": "Auto Schedule",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "source"
        ],
        "title": "BulkImportBody"
      },
      "BulkImportPreview": {
        "properties": {
          "job_id": {
            "type": "string",
            "title": "Job Id"
          },
          "source_format": {
            "type": "string",
            "enum": [
              "text",
              "csv",
              "tsv",
              "json",
              "ics",
              "xlsx",
              "markdown",
              "indented"
            ],
            "title": "Source Format"
          },
          "parsed_count": {
            "type": "integer",
            "title": "Parsed Count",
            "default": 0
          },
          "error_count": {
            "type": "integer",
            "title": "Error Count",
            "default": 0
          },
          "warn_count": {
            "type": "integer",
            "title": "Warn Count",
            "default": 0
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/BulkImportPreviewRow"
            },
            "type": "array",
            "title": "Rows"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "job_id",
          "source_format"
        ],
        "title": "BulkImportPreview",
        "description": "Response shape for the preview step - full parsed tree + counts."
      },
      "BulkImportPreviewRow": {
        "properties": {
          "row_index": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Row Index"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "parent_row_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Row Index"
          },
          "depth": {
            "type": "integer",
            "maximum": 5.0,
            "minimum": 0.0,
            "title": "Depth",
            "default": 0
          },
          "duration_min": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Min"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 5.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags"
          },
          "raw_input": {
            "type": "string",
            "title": "Raw Input"
          },
          "status": {
            "type": "string",
            "enum": [
              "OK",
              "WARN_DUPLICATE",
              "WARN_TOO_LONG",
              "ERROR_PARENT_NOT_FOUND",
              "ERROR_CYCLE",
              "ERROR_INVALID"
            ],
            "title": "Status",
            "default": "OK"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Warnings"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Errors"
          },
          "extracted_hints": {
            "additionalProperties": true,
            "type": "object",
            "title": "Extracted Hints"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "row_index",
          "title",
          "raw_input"
        ],
        "title": "BulkImportPreviewRow",
        "description": "Single parsed row in a bulk-import preview."
      },
      "BulkJobRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "source_format": {
            "type": "string",
            "enum": [
              "text",
              "csv",
              "tsv",
              "json",
              "ics",
              "xlsx",
              "markdown",
              "indented"
            ],
            "title": "Source Format"
          },
          "source_hash": {
            "type": "string",
            "title": "Source Hash"
          },
          "raw_size_bytes": {
            "type": "integer",
            "title": "Raw Size Bytes"
          },
          "parsed_count": {
            "type": "integer",
            "title": "Parsed Count"
          },
          "error_count": {
            "type": "integer",
            "title": "Error Count"
          },
          "warn_count": {
            "type": "integer",
            "title": "Warn Count"
          },
          "status": {
            "type": "string",
            "enum": [
              "parsing",
              "parsed",
              "committing",
              "committed",
              "cancelled",
              "failed"
            ],
            "title": "Status"
          },
          "preview_json": {
            "additionalProperties": true,
            "type": "object",
            "title": "Preview Json"
          },
          "committed_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Committed Ids"
          },
          "last_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Error"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "committed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Committed At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "user_id",
          "source_format",
          "source_hash",
          "raw_size_bytes",
          "parsed_count",
          "error_count",
          "warn_count",
          "status",
          "preview_json",
          "created_at",
          "expires_at"
        ],
        "title": "BulkJobRead"
      },
      "CTAConfig": {
        "properties": {
          "heading": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Heading",
            "description": "CTA heading"
          },
          "subtitle": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtitle",
            "description": "CTA subtitle"
          },
          "primary_button_text": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Button Text",
            "description": "Primary button text"
          },
          "primary_button_link": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Button Link",
            "description": "Primary button link/action"
          },
          "secondary_button_text": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Secondary Button Text",
            "description": "Secondary button text"
          },
          "secondary_button_link": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Secondary Button Link",
            "description": "Secondary button link/action"
          }
        },
        "type": "object",
        "title": "CTAConfig",
        "description": "Call-to-action section configuration."
      },
      "CalendarCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "description": "Calendar name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Calendar description"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Calendar color in hex format",
            "default": "#3B82F6"
          },
          "visibility": {
            "$ref": "#/components/schemas/CalendarVisibility",
            "description": "Calendar visibility level",
            "default": "private"
          },
          "timezone": {
            "type": "string",
            "maxLength": 50,
            "title": "Timezone",
            "description": "Calendar timezone",
            "default": "UTC"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CalendarCreate",
        "description": "Schema for creating a new calendar.\n\nExample:\n    {\n        \"name\": \"Work Calendar\",\n        \"description\": \"My work-related events\",\n        \"color\": \"#3B82F6\",\n        \"visibility\": \"private\",\n        \"timezone\": \"America/New_York\"\n    }",
        "examples": [
          {
            "color": "#3B82F6",
            "description": "My work-related events and meetings",
            "name": "Work Calendar",
            "timezone": "America/New_York",
            "visibility": "private"
          }
        ]
      },
      "CalendarEventRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "task",
              "external"
            ],
            "title": "Kind"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "start": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start"
          },
          "end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End"
          },
          "all_day": {
            "type": "boolean",
            "title": "All Day",
            "default": false
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "routine_task_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routine Task Id"
          },
          "decision_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decision Id"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider"
          },
          "source": {
            "type": "string",
            "title": "Source",
            "default": "mykal"
          },
          "meta": {
            "additionalProperties": true,
            "type": "object",
            "title": "Meta"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "kind",
          "title"
        ],
        "title": "CalendarEventRead"
      },
      "CalendarFreeBusyBlock": {
        "properties": {
          "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "title": "End"
          },
          "source": {
            "type": "string",
            "title": "Source",
            "default": "mykal"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "start",
          "end"
        ],
        "title": "CalendarFreeBusyBlock"
      },
      "CalendarFreeBusyResponse": {
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time",
            "title": "From"
          },
          "to": {
            "type": "string",
            "format": "date-time",
            "title": "To"
          },
          "blocks": {
            "items": {
              "$ref": "#/components/schemas/CalendarFreeBusyBlock"
            },
            "type": "array",
            "title": "Blocks"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "from",
          "to",
          "blocks"
        ],
        "title": "CalendarFreeBusyResponse"
      },
      "CalendarItemType": {
        "type": "string",
        "enum": [
          "meeting",
          "event",
          "task"
        ],
        "title": "CalendarItemType",
        "description": "Calendar item type enumeration."
      },
      "CalendarPermission": {
        "type": "string",
        "enum": [
          "view",
          "edit",
          "admin"
        ],
        "title": "CalendarPermission",
        "description": "Calendar permission level enumeration."
      },
      "CalendarResponse": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "description": "Calendar name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Calendar description"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Calendar color in hex format",
            "default": "#3B82F6"
          },
          "visibility": {
            "$ref": "#/components/schemas/CalendarVisibility",
            "description": "Calendar visibility level",
            "default": "private"
          },
          "timezone": {
            "type": "string",
            "maxLength": 50,
            "title": "Timezone",
            "description": "Calendar timezone",
            "default": "UTC"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique calendar identifier"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the calendar owner"
          },
          "is_default": {
            "type": "boolean",
            "title": "Is Default",
            "description": "Whether this is the user's default calendar",
            "default": false
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the calendar is active",
            "default": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Calendar creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Calendar last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "name",
          "id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "CalendarResponse",
        "description": "Schema for calendar response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n        \"name\": \"Work Calendar\",\n        \"description\": \"My work-related events\",\n        \"color\": \"#3B82F6\",\n        \"visibility\": \"private\",\n        \"timezone\": \"America/New_York\",\n        \"owner_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"is_default\": false,\n        \"is_active\": true,\n        \"created_at\": \"2024-01-15T10:30:00Z\",\n        \"updated_at\": \"2024-01-15T10:30:00Z\"\n    }",
        "examples": [
          {
            "color": "#3B82F6",
            "created_at": "2024-01-15T10:30:00Z",
            "description": "My work-related events",
            "id": "550e8400-e29b-41d4-a716-446655440000",
            "is_active": true,
            "is_default": false,
            "name": "Work Calendar",
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "timezone": "America/New_York",
            "updated_at": "2024-01-15T10:30:00Z",
            "visibility": "private"
          }
        ]
      },
      "CalendarSharingCreate": {
        "properties": {
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar to share"
          },
          "shared_with_user_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shared With User Id",
            "description": "ID of the user to share with"
          },
          "permission": {
            "$ref": "#/components/schemas/CalendarPermission",
            "description": "Permission level for the shared user",
            "default": "view"
          }
        },
        "type": "object",
        "required": [
          "calendar_id",
          "shared_with_user_id"
        ],
        "title": "CalendarSharingCreate",
        "description": "Schema for creating a calendar sharing entry.\n\nExample:\n    {\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n        \"shared_with_user_id\": \"550e8400-e29b-41d4-a716-446655440002\",\n        \"permission\": \"view\"\n    }",
        "examples": [
          {
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "permission": "view",
            "shared_with_user_id": "550e8400-e29b-41d4-a716-446655440002"
          }
        ]
      },
      "CalendarSharingResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique sharing entry identifier"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the shared calendar"
          },
          "shared_with_user_id": {
            "type": "string",
            "format": "uuid",
            "title": "Shared With User Id",
            "description": "ID of the user the calendar is shared with"
          },
          "permission": {
            "$ref": "#/components/schemas/CalendarPermission",
            "description": "Permission level for the shared user"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Sharing entry creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Sharing entry last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "id",
          "calendar_id",
          "shared_with_user_id",
          "permission",
          "created_at",
          "updated_at"
        ],
        "title": "CalendarSharingResponse",
        "description": "Schema for calendar sharing response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440003\",\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n        \"shared_with_user_id\": \"550e8400-e29b-41d4-a716-446655440002\",\n        \"permission\": \"view\",\n        \"created_at\": \"2024-01-15T10:30:00Z\",\n        \"updated_at\": \"2024-01-15T10:30:00Z\"\n    }",
        "examples": [
          {
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "created_at": "2024-01-15T10:30:00Z",
            "id": "550e8400-e29b-41d4-a716-446655440003",
            "permission": "view",
            "shared_with_user_id": "550e8400-e29b-41d4-a716-446655440002",
            "updated_at": "2024-01-15T10:30:00Z"
          }
        ]
      },
      "CalendarSharingUpdate": {
        "properties": {
          "permission": {
            "$ref": "#/components/schemas/CalendarPermission",
            "description": "New permission level for the shared user"
          }
        },
        "type": "object",
        "required": [
          "permission"
        ],
        "title": "CalendarSharingUpdate",
        "description": "Schema for updating a calendar sharing entry.\n\nExample:\n    {\n        \"permission\": \"edit\"\n    }",
        "examples": [
          {
            "permission": "edit"
          }
        ]
      },
      "CalendarUpdate": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Calendar name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Calendar description"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Calendar color in hex format"
          },
          "visibility": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CalendarVisibility"
              },
              {
                "type": "null"
              }
            ],
            "description": "Calendar visibility level"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone",
            "description": "Calendar timezone"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Whether the calendar is active"
          }
        },
        "type": "object",
        "title": "CalendarUpdate",
        "description": "Schema for updating an existing calendar.\n\nAll fields are optional for partial updates.\n\nExample:\n    {\n        \"name\": \"Updated Calendar Name\",\n        \"visibility\": \"shared\"\n    }",
        "examples": [
          {
            "name": "Updated Calendar Name",
            "visibility": "shared"
          }
        ]
      },
      "CalendarVisibility": {
        "type": "string",
        "enum": [
          "private",
          "shared",
          "public"
        ],
        "title": "CalendarVisibility",
        "description": "Calendar visibility enumeration."
      },
      "ConfigUpdate": {
        "properties": {
          "preferred_theme": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(dark|light|auto)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preferred Theme"
          },
          "sidebar_collapsed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sidebar Collapsed"
          },
          "default_app": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Default App"
          },
          "last_active_app": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Active App"
          }
        },
        "type": "object",
        "title": "ConfigUpdate",
        "description": "Pydantic schema for PATCH /config."
      },
      "CostMeRead": {
        "properties": {
          "day": {
            "type": "string",
            "title": "Day"
          },
          "daily_usd": {
            "type": "string",
            "title": "Daily Usd"
          },
          "daily_soft_usd": {
            "type": "string",
            "title": "Daily Soft Usd"
          },
          "daily_hard_usd": {
            "type": "string",
            "title": "Daily Hard Usd"
          },
          "allowed": {
            "type": "boolean",
            "title": "Allowed"
          },
          "soft_breached": {
            "type": "boolean",
            "title": "Soft Breached"
          },
          "hard_breached": {
            "type": "boolean",
            "title": "Hard Breached"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "day",
          "daily_usd",
          "daily_soft_usd",
          "daily_hard_usd",
          "allowed",
          "soft_breached",
          "hard_breached"
        ],
        "title": "CostMeRead"
      },
      "DaySlot": {
        "properties": {
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "description": "Slot start time"
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "description": "Slot end time"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "Items",
            "description": "Items in this slot"
          },
          "is_available": {
            "type": "boolean",
            "title": "Is Available",
            "description": "Whether slot is free",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "start_time",
          "end_time"
        ],
        "title": "DaySlot",
        "description": "Schema for a time slot within a day."
      },
      "DayViewResponse": {
        "properties": {
          "view_date": {
            "type": "string",
            "format": "date",
            "title": "View Date",
            "description": "The date being viewed"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "Items",
            "description": "All items for this day"
          },
          "all_day_items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "All Day Items",
            "description": "All-day items"
          },
          "timed_items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "Timed Items",
            "description": "Timed items"
          },
          "time_slots": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DaySlot"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time Slots",
            "description": "Time slots (if requested)"
          },
          "total_items": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Items",
            "description": "Total number of items"
          },
          "total_meetings": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Meetings",
            "description": "Number of meetings",
            "default": 0
          },
          "total_events": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Events",
            "description": "Number of events",
            "default": 0
          },
          "total_tasks": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Tasks",
            "description": "Number of tasks",
            "default": 0
          },
          "has_conflicts": {
            "type": "boolean",
            "title": "Has Conflicts",
            "description": "Whether there are time conflicts",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "view_date",
          "total_items"
        ],
        "title": "DayViewResponse",
        "description": "Schema for day view response.\n\nExample:\n    {\n        \"date\": \"2024-01-15\",\n        \"items\": [...],\n        \"total_items\": 5,\n        \"has_conflicts\": false\n    }",
        "examples": [
          {
            "all_day_items": [],
            "date": "2024-01-15",
            "has_conflicts": false,
            "items": [],
            "timed_items": [],
            "total_events": 1,
            "total_items": 5,
            "total_meetings": 3,
            "total_tasks": 1
          }
        ]
      },
      "DependencyType": {
        "type": "string",
        "enum": [
          "blocks",
          "requires",
          "related"
        ],
        "title": "DependencyType",
        "description": "Task dependency type enumeration."
      },
      "DisconnectResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "title": "Status",
            "default": "revoked"
          }
        },
        "type": "object",
        "required": [
          "id"
        ],
        "title": "DisconnectResponse"
      },
      "ErrorResponse": {
        "properties": {
          "error": {
            "type": "string",
            "title": "Error",
            "description": "Error code or type"
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable error message"
          },
          "details": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Details",
            "description": "Additional error details if available"
          }
        },
        "type": "object",
        "required": [
          "error",
          "message"
        ],
        "title": "ErrorResponse",
        "description": "Error response schema.\n\nExample:\n    {\n        \"error\": \"validation_error\",\n        \"message\": \"Invalid input data\",\n        \"details\": {\"field\": \"email\", \"issue\": \"Invalid format\"}\n    }",
        "examples": [
          {
            "details": {
              "field": "email",
              "issue": "Invalid email format"
            },
            "error": "validation_error",
            "message": "Invalid input data"
          }
        ]
      },
      "EventCategoryCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1,
            "title": "Name",
            "description": "Category name"
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Color",
            "description": "Category color in hex format",
            "default": "#6B7280"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Category icon identifier"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Category description"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "EventCategoryCreate",
        "description": "Schema for creating a new event category.\n\nExample:\n    {\n        \"name\": \"Work Events\",\n        \"color\": \"#3B82F6\",\n        \"icon\": \"briefcase\",\n        \"description\": \"Work-related events and deadlines\"\n    }",
        "examples": [
          {
            "color": "#3B82F6",
            "description": "Work-related events and deadlines",
            "icon": "briefcase",
            "name": "Work Events"
          }
        ]
      },
      "EventCategoryResponse": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1,
            "title": "Name",
            "description": "Category name"
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Color",
            "description": "Category color in hex format",
            "default": "#6B7280"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Category icon identifier"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Category description"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique category identifier"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the category owner"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the category is active",
            "default": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Category creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Category last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "name",
          "id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "EventCategoryResponse",
        "description": "Schema for event category response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440040\",\n        \"name\": \"Work Events\",\n        \"color\": \"#3B82F6\",\n        \"icon\": \"briefcase\",\n        \"description\": \"Work-related events and deadlines\",\n        \"owner_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"is_active\": true,\n        \"created_at\": \"2024-01-10T10:30:00Z\",\n        \"updated_at\": \"2024-01-10T10:30:00Z\"\n    }",
        "examples": [
          {
            "color": "#3B82F6",
            "created_at": "2024-01-10T10:30:00Z",
            "description": "Work-related events and deadlines",
            "icon": "briefcase",
            "id": "550e8400-e29b-41d4-a716-446655440040",
            "is_active": true,
            "name": "Work Events",
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "updated_at": "2024-01-10T10:30:00Z"
          }
        ]
      },
      "EventCategoryUpdate": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Category name"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Category color in hex format"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Category icon identifier"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Category description"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Whether the category is active"
          }
        },
        "type": "object",
        "title": "EventCategoryUpdate",
        "description": "Schema for updating an event category.\n\nExample:\n    {\n        \"name\": \"Updated Category Name\",\n        \"color\": \"#EF4444\"\n    }",
        "examples": [
          {
            "color": "#EF4444",
            "name": "Updated Category Name"
          }
        ]
      },
      "EventCreate": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Event title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Event description"
          },
          "event_type": {
            "$ref": "#/components/schemas/EventType",
            "description": "Type of event",
            "default": "general"
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "title": "Start Date",
            "description": "Event start date"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date",
            "description": "Event end date (for multi-day events)"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Event start time (for timed events)"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Event end time (for timed events)"
          },
          "is_all_day": {
            "type": "boolean",
            "title": "Is All Day",
            "description": "Whether this is an all-day event",
            "default": true
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Location",
            "description": "Event location"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Event color in hex format (overrides category color)"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar to add the event to"
          },
          "category_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category Id",
            "description": "ID of the event category"
          },
          "recurrence_rule_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Rule Id",
            "description": "ID of the recurrence rule if recurring"
          }
        },
        "type": "object",
        "required": [
          "title",
          "start_date",
          "calendar_id"
        ],
        "title": "EventCreate",
        "description": "Schema for creating a new event.\n\nExample:\n    {\n        \"title\": \"Company Holiday Party\",\n        \"description\": \"Annual end of year celebration\",\n        \"event_type\": \"general\",\n        \"start_date\": \"2024-12-20\",\n        \"is_all_day\": false,\n        \"start_time\": \"2024-12-20T18:00:00Z\",\n        \"end_time\": \"2024-12-20T22:00:00Z\",\n        \"location\": \"Main Office Building\",\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n    }",
        "examples": [
          {
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "description": "Annual end of year celebration",
            "end_time": "2024-12-20T22:00:00Z",
            "event_type": "general",
            "is_all_day": false,
            "location": "Main Office Building",
            "start_date": "2024-12-20",
            "start_time": "2024-12-20T18:00:00Z",
            "title": "Company Holiday Party"
          }
        ]
      },
      "EventItem": {
        "properties": {
          "item_type": {
            "type": "string",
            "const": "event",
            "title": "Item Type",
            "default": "event"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique identifier of the item"
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "Item title"
          },
          "start_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Datetime",
            "description": "Start datetime for timed items"
          },
          "end_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Datetime",
            "description": "End datetime for timed items"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Start date for all-day items"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date",
            "description": "End date for multi-day items"
          },
          "is_all_day": {
            "type": "boolean",
            "title": "Is All Day",
            "description": "Whether this is an all-day item",
            "default": false
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Display color"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "Calendar containing this item"
          },
          "event": {
            "$ref": "#/components/schemas/EventResponse",
            "description": "Full event details"
          }
        },
        "type": "object",
        "required": [
          "id",
          "title",
          "calendar_id",
          "event"
        ],
        "title": "EventItem",
        "description": "Calendar item representing an event."
      },
      "EventProfileCreate": {
        "properties": {
          "event_id": {
            "type": "string",
            "format": "uuid",
            "title": "Event Id",
            "description": "ID of the associated event"
          },
          "slug": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "title": "Slug",
            "description": "URL-safe slug"
          },
          "is_published": {
            "type": "boolean",
            "title": "Is Published",
            "description": "Whether profile is publicly visible",
            "default": false
          },
          "custom_html_path": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Html Path",
            "description": "Custom HTML override path"
          },
          "countdown_target_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Target Date",
            "description": "Countdown target date"
          },
          "countdown_label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Label",
            "description": "Countdown label"
          },
          "hero_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HeroConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hero section config"
          },
          "highlights": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/HighlightItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlights",
            "description": "Highlight cards"
          },
          "stats": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/StatItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stats",
            "description": "Stats bar items"
          },
          "schedule": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ScheduleItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Schedule",
            "description": "Schedule timeline"
          },
          "gallery": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/GalleryItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gallery",
            "description": "Gallery images"
          },
          "cta_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CTAConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "CTA section config"
          },
          "nav_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NavConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Navbar config"
          },
          "branding": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BrandingConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Branding config"
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MetaConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "SEO/meta config"
          },
          "auth_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AuthConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Auth config"
          },
          "footer_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FooterConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Footer config"
          }
        },
        "type": "object",
        "required": [
          "event_id",
          "slug"
        ],
        "title": "EventProfileCreate",
        "description": "Schema for creating a new event profile.\n\nExample:\n    {\n        \"event_id\": \"550e8400-e29b-41d4-a716-446655440030\",\n        \"slug\": \"40th-reunion-1986\",\n        \"is_published\": false,\n        \"hero_config\": {\"title\": \"40th Reunion\", \"subtitle\": \"Class of 1986\"}\n    }",
        "examples": [
          {
            "event_id": "550e8400-e29b-41d4-a716-446655440030",
            "hero_config": {
              "badge_text": "Class of 1986",
              "subtitle": "Where Memories Come Home",
              "title": "40th Reunion Celebration"
            },
            "is_published": false,
            "slug": "40th-reunion-1986"
          }
        ]
      },
      "EventProfilePublicResponse": {
        "properties": {
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "URL slug"
          },
          "custom_html_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Html Path",
            "description": "Custom HTML override path"
          },
          "countdown_target_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Target Date",
            "description": "Countdown target date"
          },
          "countdown_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Label",
            "description": "Countdown label"
          },
          "hero_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hero Config",
            "description": "Hero section config"
          },
          "highlights": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlights",
            "description": "Highlight cards"
          },
          "stats": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stats",
            "description": "Stats bar items"
          },
          "schedule": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Schedule",
            "description": "Schedule timeline"
          },
          "gallery": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gallery",
            "description": "Gallery images"
          },
          "cta_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cta Config",
            "description": "CTA section config"
          },
          "nav_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nav Config",
            "description": "Navbar config"
          },
          "branding": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branding",
            "description": "Branding config"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta",
            "description": "SEO/meta config"
          },
          "auth_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auth Config",
            "description": "Auth config"
          },
          "footer_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Footer Config",
            "description": "Footer config"
          }
        },
        "type": "object",
        "required": [
          "slug"
        ],
        "title": "EventProfilePublicResponse",
        "description": "Schema for public event profile response (no auth required).\nReturns everything needed to render the event profile page."
      },
      "EventProfileResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique event profile identifier"
          },
          "event_id": {
            "type": "string",
            "format": "uuid",
            "title": "Event Id",
            "description": "Associated event ID"
          },
          "slug": {
            "type": "string",
            "title": "Slug",
            "description": "URL slug"
          },
          "is_published": {
            "type": "boolean",
            "title": "Is Published",
            "description": "Whether profile is publicly visible"
          },
          "custom_html_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Html Path",
            "description": "Custom HTML override path"
          },
          "countdown_target_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Target Date",
            "description": "Countdown target date"
          },
          "countdown_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Label",
            "description": "Countdown label"
          },
          "hero_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hero Config",
            "description": "Hero section config"
          },
          "highlights": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlights",
            "description": "Highlight cards"
          },
          "stats": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stats",
            "description": "Stats bar items"
          },
          "schedule": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Schedule",
            "description": "Schedule timeline"
          },
          "gallery": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gallery",
            "description": "Gallery images"
          },
          "cta_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cta Config",
            "description": "CTA section config"
          },
          "nav_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nav Config",
            "description": "Navbar config"
          },
          "branding": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Branding",
            "description": "Branding config"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meta",
            "description": "SEO/meta config"
          },
          "auth_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auth Config",
            "description": "Auth config"
          },
          "footer_config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Footer Config",
            "description": "Footer config"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "id",
          "event_id",
          "slug",
          "is_published",
          "created_at",
          "updated_at"
        ],
        "title": "EventProfileResponse",
        "description": "Schema for event profile response."
      },
      "EventProfileUpdate": {
        "properties": {
          "slug": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1,
                "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug",
            "description": "URL-safe slug"
          },
          "is_published": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Published",
            "description": "Whether profile is publicly visible"
          },
          "custom_html_path": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Custom Html Path",
            "description": "Custom HTML override path"
          },
          "countdown_target_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Target Date",
            "description": "Countdown target date"
          },
          "countdown_label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Countdown Label",
            "description": "Countdown label"
          },
          "hero_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HeroConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Hero section config"
          },
          "highlights": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/HighlightItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlights",
            "description": "Highlight cards"
          },
          "stats": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/StatItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stats",
            "description": "Stats bar items"
          },
          "schedule": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ScheduleItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Schedule",
            "description": "Schedule timeline"
          },
          "gallery": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/GalleryItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gallery",
            "description": "Gallery images"
          },
          "cta_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CTAConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "CTA section config"
          },
          "nav_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NavConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Navbar config"
          },
          "branding": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BrandingConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Branding config"
          },
          "meta": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MetaConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "SEO/meta config"
          },
          "auth_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AuthConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Auth config"
          },
          "footer_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FooterConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Footer config"
          }
        },
        "type": "object",
        "title": "EventProfileUpdate",
        "description": "Schema for updating an event profile. All fields optional for partial updates.",
        "examples": [
          {
            "hero_config": {
              "subtitle": "Updated Subtitle",
              "title": "Updated Title"
            },
            "is_published": true
          }
        ]
      },
      "EventResponse": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Event title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Event description"
          },
          "event_type": {
            "$ref": "#/components/schemas/EventType",
            "description": "Type of event",
            "default": "general"
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "title": "Start Date",
            "description": "Event start date"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date",
            "description": "Event end date (for multi-day events)"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Event start time (for timed events)"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Event end time (for timed events)"
          },
          "is_all_day": {
            "type": "boolean",
            "title": "Is All Day",
            "description": "Whether this is an all-day event",
            "default": true
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Location",
            "description": "Event location"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Event color in hex format (overrides category color)"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique event identifier"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar containing the event"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the event owner"
          },
          "category_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category Id",
            "description": "ID of the event category"
          },
          "recurrence_rule_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Rule Id",
            "description": "ID of the recurrence rule if recurring"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the event is active",
            "default": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Event creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Event last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "title",
          "start_date",
          "id",
          "calendar_id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "EventResponse",
        "description": "Schema for event response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440030\",\n        \"title\": \"Company Holiday Party\",\n        \"description\": \"Annual end of year celebration\",\n        \"event_type\": \"general\",\n        \"start_date\": \"2024-12-20\",\n        \"is_all_day\": false,\n        \"start_time\": \"2024-12-20T18:00:00Z\",\n        \"end_time\": \"2024-12-20T22:00:00Z\",\n        \"location\": \"Main Office Building\",\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n        \"owner_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"is_active\": true,\n        \"created_at\": \"2024-01-10T10:30:00Z\",\n        \"updated_at\": \"2024-01-10T10:30:00Z\"\n    }",
        "examples": [
          {
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "created_at": "2024-01-10T10:30:00Z",
            "description": "Annual end of year celebration",
            "end_time": "2024-12-20T22:00:00Z",
            "event_type": "general",
            "id": "550e8400-e29b-41d4-a716-446655440030",
            "is_active": true,
            "is_all_day": false,
            "location": "Main Office Building",
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "start_date": "2024-12-20",
            "start_time": "2024-12-20T18:00:00Z",
            "title": "Company Holiday Party",
            "updated_at": "2024-01-10T10:30:00Z"
          }
        ]
      },
      "EventType": {
        "type": "string",
        "enum": [
          "general",
          "holiday",
          "birthday",
          "reminder",
          "deadline",
          "milestone",
          "anniversary"
        ],
        "title": "EventType",
        "description": "Event type enumeration."
      },
      "EventUpdate": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Title",
            "description": "Event title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Event description"
          },
          "event_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EventType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type of event"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Event start date"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date",
            "description": "Event end date"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Event start time"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Event end time"
          },
          "is_all_day": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is All Day",
            "description": "Whether this is an all-day event"
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Location",
            "description": "Event location"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Event color in hex format"
          },
          "category_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category Id",
            "description": "ID of the event category"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Whether the event is active"
          }
        },
        "type": "object",
        "title": "EventUpdate",
        "description": "Schema for updating an existing event.\n\nAll fields are optional for partial updates.\n\nExample:\n    {\n        \"title\": \"Updated Event Title\",\n        \"location\": \"New Location\"\n    }",
        "examples": [
          {
            "location": "New Location",
            "title": "Updated Event Title"
          }
        ]
      },
      "FooterConfig": {
        "properties": {
          "copyright_text": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Copyright Text",
            "description": "Copyright text"
          },
          "links": {
            "items": {
              "$ref": "#/components/schemas/FooterLink"
            },
            "type": "array",
            "title": "Links",
            "description": "Footer links"
          }
        },
        "type": "object",
        "title": "FooterConfig",
        "description": "Footer configuration."
      },
      "FooterLink": {
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 100,
            "title": "Label",
            "description": "Link label"
          },
          "href": {
            "type": "string",
            "maxLength": 500,
            "title": "Href",
            "description": "Link URL"
          }
        },
        "type": "object",
        "required": [
          "label",
          "href"
        ],
        "title": "FooterLink",
        "description": "A footer link."
      },
      "GalleryItem": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 500,
            "title": "Url",
            "description": "Image URL"
          },
          "caption": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Caption",
            "description": "Image caption"
          },
          "is_featured": {
            "type": "boolean",
            "title": "Is Featured",
            "description": "Whether this is a featured image",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "GalleryItem",
        "description": "A gallery image item."
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "HealthSection": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status"
          },
          "detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Detail"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "status"
        ],
        "title": "HealthSection"
      },
      "HeroConfig": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "title": "Title",
            "description": "Hero title"
          },
          "subtitle": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtitle",
            "description": "Hero subtitle"
          },
          "badge_text": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Badge Text",
            "description": "Badge text (e.g., 'Class of 1986')"
          },
          "background_image": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Background Image",
            "description": "Background image URL"
          },
          "year_start": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Year Start",
            "description": "Start year (e.g., 1986)"
          },
          "year_end": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Year End",
            "description": "End year (e.g., 2026)"
          },
          "overlay_gradient": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Overlay Gradient",
            "description": "CSS gradient for overlay"
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "HeroConfig",
        "description": "Hero section configuration."
      },
      "HighlightItem": {
        "properties": {
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Lucide icon name"
          },
          "title": {
            "type": "string",
            "maxLength": 200,
            "title": "Title",
            "description": "Highlight title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Highlight description"
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "HighlightItem",
        "description": "A highlight card item."
      },
      "InAppNotificationRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "body": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "action_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action Url"
          },
          "read_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Read At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "user_id",
          "type",
          "title",
          "created_at"
        ],
        "title": "InAppNotificationRead"
      },
      "IntegrationRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "provider": {
            "type": "string",
            "enum": [
              "google",
              "outlook"
            ],
            "title": "Provider"
          },
          "status": {
            "type": "string",
            "enum": [
              "connected",
              "expired",
              "revoked",
              "error"
            ],
            "title": "Status"
          },
          "account_email": {
            "type": "string",
            "title": "Account Email"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes"
          },
          "token_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Token Expires At"
          },
          "subscription_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subscription Id"
          },
          "subscription_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subscription Expires At"
          },
          "last_sync_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Sync At"
          },
          "last_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Error"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "user_id",
          "provider",
          "status",
          "account_email",
          "created_at",
          "updated_at"
        ],
        "title": "IntegrationRead",
        "description": "Read schema - NOTE intentionally omits oauth_access_token_enc /\noauth_refresh_token_enc so they cannot leak over the API."
      },
      "LLMUsageByProvider": {
        "properties": {
          "provider": {
            "type": "string",
            "title": "Provider"
          },
          "model": {
            "type": "string",
            "title": "Model"
          },
          "calls": {
            "type": "integer",
            "title": "Calls"
          },
          "input_tokens": {
            "type": "integer",
            "title": "Input Tokens"
          },
          "output_tokens": {
            "type": "integer",
            "title": "Output Tokens"
          },
          "cost_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Cost Usd"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "provider",
          "model",
          "calls",
          "input_tokens",
          "output_tokens",
          "cost_usd"
        ],
        "title": "LLMUsageByProvider"
      },
      "LLMUsageMonthlyRead": {
        "properties": {
          "month": {
            "type": "string",
            "title": "Month"
          },
          "total_cost_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Total Cost Usd"
          },
          "total_calls": {
            "type": "integer",
            "title": "Total Calls"
          },
          "days": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Days"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "month",
          "total_cost_usd",
          "total_calls",
          "days"
        ],
        "title": "LLMUsageMonthlyRead"
      },
      "LLMUsageTodayRead": {
        "properties": {
          "day": {
            "type": "string",
            "title": "Day"
          },
          "total_cost_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Total Cost Usd"
          },
          "total_calls": {
            "type": "integer",
            "title": "Total Calls"
          },
          "total_input_tokens": {
            "type": "integer",
            "title": "Total Input Tokens"
          },
          "total_output_tokens": {
            "type": "integer",
            "title": "Total Output Tokens"
          },
          "by_provider": {
            "items": {
              "$ref": "#/components/schemas/LLMUsageByProvider"
            },
            "type": "array",
            "title": "By Provider"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "day",
          "total_cost_usd",
          "total_calls",
          "total_input_tokens",
          "total_output_tokens",
          "by_provider"
        ],
        "title": "LLMUsageTodayRead"
      },
      "LocalPasswordSetupRequest": {
        "properties": {
          "password": {
            "type": "string",
            "minLength": 8,
            "title": "Password",
            "description": "New local password (8+ characters)"
          },
          "current_password": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Password",
            "description": "Current password if already set"
          }
        },
        "type": "object",
        "required": [
          "password"
        ],
        "title": "LocalPasswordSetupRequest",
        "description": "Request to set up a local password after first SSO login."
      },
      "LocationType": {
        "type": "string",
        "enum": [
          "physical",
          "virtual",
          "hybrid"
        ],
        "title": "LocationType",
        "description": "Meeting location type enumeration."
      },
      "LoginResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success",
            "description": "Whether login was successful"
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Response message"
          },
          "user": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UserResponse"
              },
              {
                "type": "null"
              }
            ],
            "description": "User information if login successful"
          },
          "tokens": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/app__schemas__auth__TokenResponse"
              },
              {
                "type": "null"
              }
            ],
            "description": "Authentication tokens if login successful"
          },
          "requires_mfa": {
            "type": "boolean",
            "title": "Requires Mfa",
            "description": "Whether MFA verification is required",
            "default": false
          },
          "mfa_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mfa Token",
            "description": "Temporary token for MFA verification"
          }
        },
        "type": "object",
        "required": [
          "success",
          "message"
        ],
        "title": "LoginResponse",
        "description": "Schema for login response.\n\nExample:\n    {\n        \"success\": true,\n        \"message\": \"Login successful\",\n        \"user\": {...},\n        \"tokens\": {...}\n    }",
        "examples": [
          {
            "message": "Login successful",
            "requires_mfa": false,
            "success": true,
            "tokens": {
              "access_token": "eyJhbGciOiJIUzI1NiIs...",
              "expires_in": 3600,
              "refresh_token": "dGhpcyBpcyBhIHJlZnJl...",
              "token_type": "bearer"
            },
            "user": {
              "display_name": "John Doe",
              "email": "user@example.com",
              "id": "550e8400-e29b-41d4-a716-446655440001"
            }
          }
        ]
      },
      "LogoutRequest": {
        "properties": {
          "logout_all": {
            "type": "boolean",
            "title": "Logout All",
            "description": "If true, invalidate all sessions for this user",
            "default": false
          }
        },
        "type": "object",
        "title": "LogoutRequest",
        "description": "Logout request."
      },
      "MFASetupResponse": {
        "properties": {
          "secret": {
            "type": "string",
            "title": "Secret",
            "description": "TOTP secret key"
          },
          "qr_code_url": {
            "type": "string",
            "title": "Qr Code Url",
            "description": "URL for QR code generation"
          },
          "backup_codes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Backup Codes",
            "description": "Backup codes for account recovery"
          }
        },
        "type": "object",
        "required": [
          "secret",
          "qr_code_url",
          "backup_codes"
        ],
        "title": "MFASetupResponse",
        "description": "Schema for MFA setup response.\n\nExample:\n    {\n        \"secret\": \"JBSWY3DPEHPK3PXP\",\n        \"qr_code_url\": \"otpauth://totp/TimeManager:user@example.com?...\",\n        \"backup_codes\": [\"12345678\", \"87654321\", ...]\n    }",
        "examples": [
          {
            "backup_codes": [
              "12345678",
              "87654321",
              "11223344",
              "55667788",
              "99001122"
            ],
            "qr_code_url": "otpauth://totp/TimeManager:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=TimeManager",
            "secret": "JBSWY3DPEHPK3PXP"
          }
        ]
      },
      "MFAVerifyRequest": {
        "properties": {
          "code": {
            "type": "string",
            "maxLength": 8,
            "minLength": 6,
            "title": "Code",
            "description": "MFA code from authenticator"
          },
          "mfa_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mfa Token",
            "description": "Temporary MFA token from login"
          }
        },
        "type": "object",
        "required": [
          "code"
        ],
        "title": "MFAVerifyRequest",
        "description": "Schema for MFA verification request.\n\nExample:\n    {\n        \"code\": \"123456\",\n        \"mfa_token\": \"temp_token_123\"\n    }",
        "examples": [
          {
            "code": "123456",
            "mfa_token": "temp_mfa_token_abc123"
          }
        ]
      },
      "MeetingAttendeeCreate": {
        "properties": {
          "role": {
            "$ref": "#/components/schemas/AttendeeRole",
            "description": "Attendee role in the meeting",
            "default": "attendee"
          },
          "is_required": {
            "type": "boolean",
            "title": "Is Required",
            "description": "Whether the attendee is required",
            "default": true
          },
          "meeting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Meeting Id",
            "description": "ID of the meeting"
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id",
            "description": "ID of the user to add as attendee"
          }
        },
        "type": "object",
        "required": [
          "meeting_id",
          "user_id"
        ],
        "title": "MeetingAttendeeCreate",
        "description": "Schema for adding an attendee to a meeting.\n\nExample:\n    {\n        \"meeting_id\": \"550e8400-e29b-41d4-a716-446655440010\",\n        \"user_id\": \"550e8400-e29b-41d4-a716-446655440002\",\n        \"role\": \"attendee\",\n        \"is_required\": true\n    }",
        "examples": [
          {
            "is_required": true,
            "meeting_id": "550e8400-e29b-41d4-a716-446655440010",
            "role": "attendee",
            "user_id": "550e8400-e29b-41d4-a716-446655440002"
          }
        ]
      },
      "MeetingAttendeeResponse": {
        "properties": {
          "role": {
            "$ref": "#/components/schemas/AttendeeRole",
            "description": "Attendee role in the meeting",
            "default": "attendee"
          },
          "is_required": {
            "type": "boolean",
            "title": "Is Required",
            "description": "Whether the attendee is required",
            "default": true
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique attendee entry identifier"
          },
          "meeting_id": {
            "type": "string",
            "format": "uuid",
            "title": "Meeting Id",
            "description": "ID of the meeting"
          },
          "user_id": {
            "type": "string",
            "format": "uuid",
            "title": "User Id",
            "description": "ID of the attendee user"
          },
          "rsvp_status": {
            "$ref": "#/components/schemas/RSVPStatus",
            "description": "RSVP status for the meeting",
            "default": "pending"
          },
          "response_note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Response Note",
            "description": "Note with RSVP response"
          },
          "responded_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Responded At",
            "description": "Timestamp when attendee responded"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Attendee entry creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Attendee entry last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "id",
          "meeting_id",
          "user_id",
          "created_at",
          "updated_at"
        ],
        "title": "MeetingAttendeeResponse",
        "description": "Schema for meeting attendee response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440020\",\n        \"meeting_id\": \"550e8400-e29b-41d4-a716-446655440010\",\n        \"user_id\": \"550e8400-e29b-41d4-a716-446655440002\",\n        \"role\": \"attendee\",\n        \"rsvp_status\": \"accepted\",\n        \"is_required\": true,\n        \"responded_at\": \"2024-01-11T08:00:00Z\",\n        \"created_at\": \"2024-01-10T10:30:00Z\",\n        \"updated_at\": \"2024-01-11T08:00:00Z\"\n    }",
        "examples": [
          {
            "created_at": "2024-01-10T10:30:00Z",
            "id": "550e8400-e29b-41d4-a716-446655440020",
            "is_required": true,
            "meeting_id": "550e8400-e29b-41d4-a716-446655440010",
            "responded_at": "2024-01-11T08:00:00Z",
            "role": "attendee",
            "rsvp_status": "accepted",
            "updated_at": "2024-01-11T08:00:00Z",
            "user_id": "550e8400-e29b-41d4-a716-446655440002"
          }
        ]
      },
      "MeetingAttendeeUpdate": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AttendeeRole"
              },
              {
                "type": "null"
              }
            ],
            "description": "Attendee role in the meeting"
          },
          "rsvp_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RSVPStatus"
              },
              {
                "type": "null"
              }
            ],
            "description": "RSVP status for the meeting"
          },
          "is_required": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Required",
            "description": "Whether the attendee is required"
          },
          "response_note": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Response Note",
            "description": "Note with RSVP response"
          }
        },
        "type": "object",
        "title": "MeetingAttendeeUpdate",
        "description": "Schema for updating a meeting attendee.\n\nExample:\n    {\n        \"rsvp_status\": \"accepted\",\n        \"role\": \"optional\"\n    }",
        "examples": [
          {
            "role": "optional",
            "rsvp_status": "accepted"
          }
        ]
      },
      "MeetingCreate": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Meeting title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Meeting description"
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "description": "Meeting start time"
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "description": "Meeting end time"
          },
          "location_type": {
            "$ref": "#/components/schemas/LocationType",
            "description": "Type of meeting location",
            "default": "virtual"
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Location",
            "description": "Physical location address"
          },
          "meeting_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Url",
            "description": "Virtual meeting URL"
          },
          "agenda": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Agenda",
            "description": "Meeting agenda"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Meeting notes"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar to add the meeting to"
          },
          "recurrence_rule_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Rule Id",
            "description": "ID of the recurrence rule if this is a recurring meeting"
          }
        },
        "type": "object",
        "required": [
          "title",
          "start_time",
          "end_time",
          "calendar_id"
        ],
        "title": "MeetingCreate",
        "description": "Schema for creating a new meeting.\n\nExample:\n    {\n        \"title\": \"Weekly Team Standup\",\n        \"description\": \"Weekly sync meeting for the development team\",\n        \"start_time\": \"2024-01-15T09:00:00Z\",\n        \"end_time\": \"2024-01-15T09:30:00Z\",\n        \"location_type\": \"virtual\",\n        \"meeting_url\": \"https://zoom.us/j/123456789\",\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n    }",
        "examples": [
          {
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "description": "Weekly sync meeting for the development team",
            "end_time": "2024-01-15T09:30:00Z",
            "location_type": "virtual",
            "meeting_url": "https://zoom.us/j/123456789",
            "start_time": "2024-01-15T09:00:00Z",
            "title": "Weekly Team Standup"
          }
        ]
      },
      "MeetingItem": {
        "properties": {
          "item_type": {
            "type": "string",
            "const": "meeting",
            "title": "Item Type",
            "default": "meeting"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique identifier of the item"
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "Item title"
          },
          "start_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Datetime",
            "description": "Start datetime for timed items"
          },
          "end_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Datetime",
            "description": "End datetime for timed items"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Start date for all-day items"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date",
            "description": "End date for multi-day items"
          },
          "is_all_day": {
            "type": "boolean",
            "title": "Is All Day",
            "description": "Whether this is an all-day item",
            "default": false
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Display color"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "Calendar containing this item"
          },
          "meeting": {
            "$ref": "#/components/schemas/MeetingResponse",
            "description": "Full meeting details"
          },
          "attendee_count": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Attendee Count",
            "description": "Number of attendees",
            "default": 0
          },
          "has_accepted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has Accepted",
            "description": "Whether current user has accepted"
          }
        },
        "type": "object",
        "required": [
          "id",
          "title",
          "calendar_id",
          "meeting"
        ],
        "title": "MeetingItem",
        "description": "Calendar item representing a meeting."
      },
      "MeetingResponse": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Meeting title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Meeting description"
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "description": "Meeting start time"
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "description": "Meeting end time"
          },
          "location_type": {
            "$ref": "#/components/schemas/LocationType",
            "description": "Type of meeting location",
            "default": "virtual"
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Location",
            "description": "Physical location address"
          },
          "meeting_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Url",
            "description": "Virtual meeting URL"
          },
          "agenda": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Agenda",
            "description": "Meeting agenda"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Meeting notes"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique meeting identifier"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar containing the meeting"
          },
          "organizer_id": {
            "type": "string",
            "format": "uuid",
            "title": "Organizer Id",
            "description": "ID of the meeting organizer"
          },
          "recurrence_rule_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Rule Id",
            "description": "ID of the recurrence rule if recurring"
          },
          "is_cancelled": {
            "type": "boolean",
            "title": "Is Cancelled",
            "description": "Whether the meeting is cancelled",
            "default": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Meeting creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Meeting last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "title",
          "start_time",
          "end_time",
          "id",
          "calendar_id",
          "organizer_id",
          "created_at",
          "updated_at"
        ],
        "title": "MeetingResponse",
        "description": "Schema for meeting response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n        \"title\": \"Weekly Team Standup\",\n        \"description\": \"Weekly sync meeting for the development team\",\n        \"start_time\": \"2024-01-15T09:00:00Z\",\n        \"end_time\": \"2024-01-15T09:30:00Z\",\n        \"location_type\": \"virtual\",\n        \"meeting_url\": \"https://zoom.us/j/123456789\",\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n        \"organizer_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"is_cancelled\": false,\n        \"created_at\": \"2024-01-10T10:30:00Z\",\n        \"updated_at\": \"2024-01-10T10:30:00Z\"\n    }",
        "examples": [
          {
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "created_at": "2024-01-10T10:30:00Z",
            "description": "Weekly sync meeting for the development team",
            "end_time": "2024-01-15T09:30:00Z",
            "id": "550e8400-e29b-41d4-a716-446655440010",
            "is_cancelled": false,
            "location_type": "virtual",
            "meeting_url": "https://zoom.us/j/123456789",
            "organizer_id": "550e8400-e29b-41d4-a716-446655440001",
            "start_time": "2024-01-15T09:00:00Z",
            "title": "Weekly Team Standup",
            "updated_at": "2024-01-10T10:30:00Z"
          }
        ]
      },
      "MeetingUpdate": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Title",
            "description": "Meeting title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Meeting description"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Meeting start time"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Meeting end time"
          },
          "location_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LocationType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type of meeting location"
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Location",
            "description": "Physical location address"
          },
          "meeting_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Url",
            "description": "Virtual meeting URL"
          },
          "agenda": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Agenda",
            "description": "Meeting agenda"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Meeting notes"
          },
          "is_cancelled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Cancelled",
            "description": "Whether the meeting is cancelled"
          }
        },
        "type": "object",
        "title": "MeetingUpdate",
        "description": "Schema for updating an existing meeting.\n\nAll fields are optional for partial updates.\n\nExample:\n    {\n        \"title\": \"Updated Meeting Title\",\n        \"end_time\": \"2024-01-15T10:00:00Z\"\n    }",
        "examples": [
          {
            "end_time": "2024-01-15T10:00:00Z",
            "title": "Updated Meeting Title"
          }
        ]
      },
      "MeetingWithAttendees": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Meeting title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Meeting description"
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "description": "Meeting start time"
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "description": "Meeting end time"
          },
          "location_type": {
            "$ref": "#/components/schemas/LocationType",
            "description": "Type of meeting location",
            "default": "virtual"
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Location",
            "description": "Physical location address"
          },
          "meeting_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Url",
            "description": "Virtual meeting URL"
          },
          "agenda": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Agenda",
            "description": "Meeting agenda"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Meeting notes"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique meeting identifier"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar containing the meeting"
          },
          "organizer_id": {
            "type": "string",
            "format": "uuid",
            "title": "Organizer Id",
            "description": "ID of the meeting organizer"
          },
          "recurrence_rule_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Rule Id",
            "description": "ID of the recurrence rule if recurring"
          },
          "is_cancelled": {
            "type": "boolean",
            "title": "Is Cancelled",
            "description": "Whether the meeting is cancelled",
            "default": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Meeting creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Meeting last update timestamp"
          },
          "attendees": {
            "items": {
              "$ref": "#/components/schemas/MeetingAttendeeResponse"
            },
            "type": "array",
            "title": "Attendees",
            "description": "List of meeting attendees"
          }
        },
        "type": "object",
        "required": [
          "title",
          "start_time",
          "end_time",
          "id",
          "calendar_id",
          "organizer_id",
          "created_at",
          "updated_at"
        ],
        "title": "MeetingWithAttendees",
        "description": "Schema for meeting response with attendees list.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440010\",\n        \"title\": \"Weekly Team Standup\",\n        \"attendees\": [\n            {\n                \"id\": \"550e8400-e29b-41d4-a716-446655440020\",\n                \"user_id\": \"550e8400-e29b-41d4-a716-446655440002\",\n                \"role\": \"attendee\",\n                \"rsvp_status\": \"accepted\"\n            }\n        ]\n    }",
        "examples": [
          {
            "attendees": [
              {
                "created_at": "2024-01-10T10:30:00Z",
                "id": "550e8400-e29b-41d4-a716-446655440020",
                "is_required": true,
                "meeting_id": "550e8400-e29b-41d4-a716-446655440010",
                "responded_at": "2024-01-11T08:00:00Z",
                "role": "attendee",
                "rsvp_status": "accepted",
                "updated_at": "2024-01-11T08:00:00Z",
                "user_id": "550e8400-e29b-41d4-a716-446655440002"
              }
            ],
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "created_at": "2024-01-10T10:30:00Z",
            "description": "Weekly sync meeting for the development team",
            "end_time": "2024-01-15T09:30:00Z",
            "id": "550e8400-e29b-41d4-a716-446655440010",
            "is_cancelled": false,
            "location_type": "virtual",
            "meeting_url": "https://zoom.us/j/123456789",
            "organizer_id": "550e8400-e29b-41d4-a716-446655440001",
            "start_time": "2024-01-15T09:00:00Z",
            "title": "Weekly Team Standup",
            "updated_at": "2024-01-10T10:30:00Z"
          }
        ]
      },
      "MetaConfig": {
        "properties": {
          "seo_title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Seo Title",
            "description": "SEO title"
          },
          "seo_description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Seo Description",
            "description": "SEO description"
          },
          "keywords": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Keywords",
            "description": "SEO keywords"
          },
          "og_image": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Og Image",
            "description": "Open Graph image URL"
          }
        },
        "type": "object",
        "title": "MetaConfig",
        "description": "SEO/meta configuration."
      },
      "MonthDay": {
        "properties": {
          "day_date": {
            "type": "string",
            "format": "date",
            "title": "Day Date",
            "description": "Date of this day"
          },
          "day_number": {
            "type": "integer",
            "maximum": 31.0,
            "minimum": 1.0,
            "title": "Day Number",
            "description": "Day of month"
          },
          "is_current_month": {
            "type": "boolean",
            "title": "Is Current Month",
            "description": "Whether day is in current month",
            "default": true
          },
          "is_today": {
            "type": "boolean",
            "title": "Is Today",
            "description": "Whether this is today",
            "default": false
          },
          "is_weekend": {
            "type": "boolean",
            "title": "Is Weekend",
            "description": "Whether this is a weekend day",
            "default": false
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "Items",
            "description": "Items for this day (limited)"
          },
          "item_count": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Item Count",
            "description": "Total items",
            "default": 0
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "description": "Whether there are more items than displayed",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "day_date",
          "day_number"
        ],
        "title": "MonthDay",
        "description": "Schema for a single day in month view."
      },
      "MonthViewResponse": {
        "properties": {
          "year": {
            "type": "integer",
            "title": "Year",
            "description": "Year"
          },
          "month": {
            "type": "integer",
            "maximum": 12.0,
            "minimum": 1.0,
            "title": "Month",
            "description": "Month number"
          },
          "month_name": {
            "type": "string",
            "title": "Month Name",
            "description": "Month name"
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "title": "Start Date",
            "description": "First day displayed"
          },
          "end_date": {
            "type": "string",
            "format": "date",
            "title": "End Date",
            "description": "Last day displayed"
          },
          "weeks": {
            "items": {
              "$ref": "#/components/schemas/MonthWeek"
            },
            "type": "array",
            "maxItems": 6,
            "minItems": 4,
            "title": "Weeks",
            "description": "Weeks in the month"
          },
          "total_items": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Items",
            "description": "Total items in the month"
          },
          "total_meetings": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Meetings",
            "description": "Total meetings",
            "default": 0
          },
          "total_events": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Events",
            "description": "Total events",
            "default": 0
          },
          "total_tasks": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Tasks",
            "description": "Total tasks",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "year",
          "month",
          "month_name",
          "start_date",
          "end_date",
          "weeks",
          "total_items"
        ],
        "title": "MonthViewResponse",
        "description": "Schema for month view response.\n\nExample:\n    {\n        \"year\": 2024,\n        \"month\": 1,\n        \"month_name\": \"January\",\n        \"weeks\": [...],\n        \"total_items\": 45\n    }",
        "examples": [
          {
            "end_date": "2024-02-03",
            "month": 1,
            "month_name": "January",
            "start_date": "2023-12-31",
            "total_events": 10,
            "total_items": 45,
            "total_meetings": 25,
            "total_tasks": 10,
            "weeks": [],
            "year": 2024
          }
        ]
      },
      "MonthWeek": {
        "properties": {
          "week_number": {
            "type": "integer",
            "maximum": 53.0,
            "minimum": 1.0,
            "title": "Week Number",
            "description": "ISO week number"
          },
          "days": {
            "items": {
              "$ref": "#/components/schemas/MonthDay"
            },
            "type": "array",
            "maxItems": 7,
            "minItems": 7,
            "title": "Days",
            "description": "Days in the week"
          }
        },
        "type": "object",
        "required": [
          "week_number",
          "days"
        ],
        "title": "MonthWeek",
        "description": "Schema for a week row in month view."
      },
      "MoveTaskBody": {
        "properties": {
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "MoveTaskBody"
      },
      "NavConfig": {
        "properties": {
          "logo_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Url",
            "description": "Logo image URL"
          },
          "school_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "School Name",
            "description": "School/org name"
          },
          "subtitle": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtitle",
            "description": "Navbar subtitle"
          },
          "links": {
            "items": {
              "$ref": "#/components/schemas/NavLink"
            },
            "type": "array",
            "title": "Links",
            "description": "Navigation links"
          }
        },
        "type": "object",
        "title": "NavConfig",
        "description": "Navbar configuration."
      },
      "NavLink": {
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 100,
            "title": "Label",
            "description": "Link label"
          },
          "href": {
            "type": "string",
            "maxLength": 500,
            "title": "Href",
            "description": "Link URL or anchor"
          }
        },
        "type": "object",
        "required": [
          "label",
          "href"
        ],
        "title": "NavLink",
        "description": "A navigation link."
      },
      "NoGoWindow": {
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 120
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "title": "End"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "start",
          "end"
        ],
        "title": "NoGoWindow"
      },
      "NoGoWindowList": {
        "properties": {
          "no_go_windows": {
            "items": {
              "$ref": "#/components/schemas/NoGoWindow"
            },
            "type": "array",
            "title": "No Go Windows"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "NoGoWindowList"
      },
      "OAuthStartRequest": {
        "properties": {
          "return_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1024
              },
              {
                "type": "null"
              }
            ],
            "title": "Return Url"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "OAuthStartRequest"
      },
      "OAuthStartResponse": {
        "properties": {
          "auth_url": {
            "type": "string",
            "title": "Auth Url"
          },
          "state": {
            "type": "string",
            "title": "State"
          }
        },
        "type": "object",
        "required": [
          "auth_url",
          "state"
        ],
        "title": "OAuthStartResponse"
      },
      "OverrideAliasBody": {
        "properties": {
          "decision_id": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Decision Id"
          },
          "chosen_slot_start": {
            "type": "string",
            "format": "date-time",
            "title": "Chosen Slot Start"
          },
          "chosen_slot_end": {
            "type": "string",
            "format": "date-time",
            "title": "Chosen Slot End"
          },
          "rationale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Rationale"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "decision_id",
          "chosen_slot_start",
          "chosen_slot_end"
        ],
        "title": "OverrideAliasBody"
      },
      "OverrideBody": {
        "properties": {
          "chosen_slot_start": {
            "type": "string",
            "format": "date-time",
            "title": "Chosen Slot Start"
          },
          "chosen_slot_end": {
            "type": "string",
            "format": "date-time",
            "title": "Chosen Slot End"
          },
          "rationale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Rationale"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "chosen_slot_start",
          "chosen_slot_end"
        ],
        "title": "OverrideBody"
      },
      "Page": {
        "properties": {
          "items": {
            "items": {},
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "limit",
          "offset"
        ],
        "title": "Page"
      },
      "PaginatedResponse_CalendarResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CalendarResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items in the current page"
          },
          "total": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total",
            "description": "Total number of items across all pages"
          },
          "page": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Page",
            "description": "Current page number (1-indexed)"
          },
          "page_size": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Page Size",
            "description": "Number of items per page"
          },
          "total_pages": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Pages",
            "description": "Total number of pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "total_pages"
        ],
        "title": "PaginatedResponse[CalendarResponse]",
        "examples": [
          {
            "items": [],
            "page": 1,
            "page_size": 20,
            "total": 100,
            "total_pages": 5
          }
        ]
      },
      "PaginatedResponse_EventProfileResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/EventProfileResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items in the current page"
          },
          "total": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total",
            "description": "Total number of items across all pages"
          },
          "page": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Page",
            "description": "Current page number (1-indexed)"
          },
          "page_size": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Page Size",
            "description": "Number of items per page"
          },
          "total_pages": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Pages",
            "description": "Total number of pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "total_pages"
        ],
        "title": "PaginatedResponse[EventProfileResponse]",
        "examples": [
          {
            "items": [],
            "page": 1,
            "page_size": 20,
            "total": 100,
            "total_pages": 5
          }
        ]
      },
      "PaginatedResponse_EventResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/EventResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items in the current page"
          },
          "total": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total",
            "description": "Total number of items across all pages"
          },
          "page": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Page",
            "description": "Current page number (1-indexed)"
          },
          "page_size": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Page Size",
            "description": "Number of items per page"
          },
          "total_pages": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Pages",
            "description": "Total number of pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "total_pages"
        ],
        "title": "PaginatedResponse[EventResponse]",
        "examples": [
          {
            "items": [],
            "page": 1,
            "page_size": 20,
            "total": 100,
            "total_pages": 5
          }
        ]
      },
      "PaginatedResponse_MeetingResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MeetingResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items in the current page"
          },
          "total": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total",
            "description": "Total number of items across all pages"
          },
          "page": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Page",
            "description": "Current page number (1-indexed)"
          },
          "page_size": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Page Size",
            "description": "Number of items per page"
          },
          "total_pages": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Pages",
            "description": "Total number of pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "total_pages"
        ],
        "title": "PaginatedResponse[MeetingResponse]",
        "examples": [
          {
            "items": [],
            "page": 1,
            "page_size": 20,
            "total": 100,
            "total_pages": 5
          }
        ]
      },
      "PaginatedResponse_ReminderResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ReminderResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items in the current page"
          },
          "total": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total",
            "description": "Total number of items across all pages"
          },
          "page": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Page",
            "description": "Current page number (1-indexed)"
          },
          "page_size": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Page Size",
            "description": "Number of items per page"
          },
          "total_pages": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Pages",
            "description": "Total number of pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "total_pages"
        ],
        "title": "PaginatedResponse[ReminderResponse]",
        "examples": [
          {
            "items": [],
            "page": 1,
            "page_size": 20,
            "total": 100,
            "total_pages": 5
          }
        ]
      },
      "PaginatedResponse_TaskResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/TaskResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items in the current page"
          },
          "total": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total",
            "description": "Total number of items across all pages"
          },
          "page": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Page",
            "description": "Current page number (1-indexed)"
          },
          "page_size": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Page Size",
            "description": "Number of items per page"
          },
          "total_pages": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Pages",
            "description": "Total number of pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "total_pages"
        ],
        "title": "PaginatedResponse[TaskResponse]",
        "examples": [
          {
            "items": [],
            "page": 1,
            "page_size": 20,
            "total": 100,
            "total_pages": 5
          }
        ]
      },
      "PaginatedResponse_TimeEntryResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/TimeEntryResponse"
            },
            "type": "array",
            "title": "Items",
            "description": "List of items in the current page"
          },
          "total": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total",
            "description": "Total number of items across all pages"
          },
          "page": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Page",
            "description": "Current page number (1-indexed)"
          },
          "page_size": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Page Size",
            "description": "Number of items per page"
          },
          "total_pages": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Pages",
            "description": "Total number of pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "total_pages"
        ],
        "title": "PaginatedResponse[TimeEntryResponse]",
        "examples": [
          {
            "items": [],
            "page": 1,
            "page_size": 20,
            "total": 100,
            "total_pages": 5
          }
        ]
      },
      "PasswordChangeRequest": {
        "properties": {
          "current_password": {
            "type": "string",
            "title": "Current Password",
            "description": "Current password"
          },
          "new_password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 8,
            "title": "New Password",
            "description": "New password"
          }
        },
        "type": "object",
        "required": [
          "current_password",
          "new_password"
        ],
        "title": "PasswordChangeRequest",
        "description": "Schema for password change request.\n\nExample:\n    {\n        \"current_password\": \"oldpassword123\",\n        \"new_password\": \"newSecurePass456\"\n    }",
        "examples": [
          {
            "current_password": "OldPass123",
            "new_password": "NewSecurePass456"
          }
        ]
      },
      "QuotaMeRead": {
        "properties": {
          "day": {
            "type": "string",
            "title": "Day"
          },
          "daily_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Daily Usd"
          },
          "daily_soft_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Daily Soft Usd"
          },
          "daily_hard_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Daily Hard Usd"
          },
          "allowed": {
            "type": "boolean",
            "title": "Allowed"
          },
          "soft_breached": {
            "type": "boolean",
            "title": "Soft Breached"
          },
          "hard_breached": {
            "type": "boolean",
            "title": "Hard Breached"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "day",
          "daily_usd",
          "daily_soft_usd",
          "daily_hard_usd",
          "allowed",
          "soft_breached",
          "hard_breached"
        ],
        "title": "QuotaMeRead"
      },
      "RSVPStatus": {
        "type": "string",
        "enum": [
          "pending",
          "accepted",
          "declined",
          "tentative"
        ],
        "title": "RSVPStatus",
        "description": "Meeting RSVP status enumeration."
      },
      "ReflowBody": {
        "properties": {
          "root_task_id": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Root Task Id"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "anthropic",
                  "openai"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "root_task_id"
        ],
        "title": "ReflowBody"
      },
      "RefreshTokenRequest": {
        "properties": {
          "refresh_token": {
            "type": "string",
            "title": "Refresh Token",
            "description": "Current refresh token"
          }
        },
        "type": "object",
        "required": [
          "refresh_token"
        ],
        "title": "RefreshTokenRequest",
        "description": "Request to refresh an access token."
      },
      "RegisterRequest": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email",
            "description": "User email address"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "title": "Password",
            "description": "User password (8+ characters)"
          },
          "first_name": {
            "type": "string",
            "maxLength": 100,
            "title": "First Name",
            "description": "First name",
            "default": ""
          },
          "last_name": {
            "type": "string",
            "maxLength": 100,
            "title": "Last Name",
            "description": "Last name",
            "default": ""
          },
          "full_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Full Name",
            "description": "Full name (split into first/last if provided)"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone",
            "description": "Phone number"
          },
          "extra_fields": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Extra Fields",
            "description": "Domain-specific registration fields (role, grade, state, etc.). Stored locally only."
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "email",
          "password"
        ],
        "title": "RegisterRequest",
        "description": "Registration request.\nSSO fields (email, password, first_name, last_name, phone) are forwarded to OTROTL.\nALL fields including domain-specific extras are stored in the local website DB."
      },
      "ReminderAcknowledge": {
        "properties": {
          "snooze_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1440.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Snooze Minutes",
            "description": "Minutes to snooze before re-reminding (if provided)"
          }
        },
        "type": "object",
        "title": "ReminderAcknowledge",
        "description": "Schema for acknowledging a reminder.\n\nExample:\n    {\n        \"snooze_minutes\": 10\n    }",
        "examples": [
          {
            "snooze_minutes": 10
          }
        ]
      },
      "ReminderCreate": {
        "properties": {
          "reminder_type": {
            "$ref": "#/components/schemas/ReminderType",
            "description": "Type of reminder delivery",
            "default": "notification"
          },
          "reminder_time": {
            "type": "string",
            "format": "date-time",
            "title": "Reminder Time",
            "description": "When to send the reminder"
          },
          "message": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Message",
            "description": "Custom reminder message"
          },
          "minutes_before": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10080.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Minutes Before",
            "description": "Minutes before the event/task to send reminder"
          },
          "is_recurring": {
            "type": "boolean",
            "title": "Is Recurring",
            "description": "Whether the reminder repeats",
            "default": false
          },
          "recurrence_interval_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1440.0,
                "minimum": 5.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Interval Minutes",
            "description": "Interval between recurring reminders in minutes"
          },
          "meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Id",
            "description": "ID of the associated meeting"
          },
          "event_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Id",
            "description": "ID of the associated event"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id",
            "description": "ID of the associated task"
          }
        },
        "type": "object",
        "required": [
          "reminder_time"
        ],
        "title": "ReminderCreate",
        "description": "Schema for creating a new reminder.\n\nExample:\n    {\n        \"reminder_type\": \"notification\",\n        \"reminder_time\": \"2024-01-15T08:45:00Z\",\n        \"message\": \"Team standup in 15 minutes\",\n        \"minutes_before\": 15,\n        \"meeting_id\": \"550e8400-e29b-41d4-a716-446655440010\"\n    }",
        "examples": [
          {
            "meeting_id": "550e8400-e29b-41d4-a716-446655440010",
            "message": "Team standup in 15 minutes",
            "minutes_before": 15,
            "reminder_time": "2024-01-15T08:45:00Z",
            "reminder_type": "notification"
          }
        ]
      },
      "ReminderDeliveryRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "reminder_id": {
            "type": "string",
            "title": "Reminder Id"
          },
          "channel": {
            "type": "string",
            "enum": [
              "email",
              "inapp",
              "webhook"
            ],
            "title": "Channel"
          },
          "target": {
            "type": "string",
            "title": "Target"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "sent",
              "failed",
              "dead"
            ],
            "title": "Status"
          },
          "attempts": {
            "type": "integer",
            "title": "Attempts"
          },
          "next_attempt_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Attempt At"
          },
          "last_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Error"
          },
          "payload_hash": {
            "type": "string",
            "title": "Payload Hash"
          },
          "signature": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Signature"
          },
          "delivery_id": {
            "type": "string",
            "title": "Delivery Id"
          },
          "fired_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fired At"
          },
          "delivered_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delivered At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "user_id",
          "reminder_id",
          "channel",
          "target",
          "status",
          "attempts",
          "payload_hash",
          "delivery_id",
          "created_at"
        ],
        "title": "ReminderDeliveryRead"
      },
      "ReminderResponse": {
        "properties": {
          "reminder_type": {
            "$ref": "#/components/schemas/ReminderType",
            "description": "Type of reminder delivery",
            "default": "notification"
          },
          "reminder_time": {
            "type": "string",
            "format": "date-time",
            "title": "Reminder Time",
            "description": "When to send the reminder"
          },
          "message": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Message",
            "description": "Custom reminder message"
          },
          "minutes_before": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10080.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Minutes Before",
            "description": "Minutes before the event/task to send reminder"
          },
          "is_recurring": {
            "type": "boolean",
            "title": "Is Recurring",
            "description": "Whether the reminder repeats",
            "default": false
          },
          "recurrence_interval_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1440.0,
                "minimum": 5.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Interval Minutes",
            "description": "Interval between recurring reminders in minutes"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique reminder identifier"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the reminder owner"
          },
          "meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Id",
            "description": "ID of the associated meeting"
          },
          "event_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Id",
            "description": "ID of the associated event"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id",
            "description": "ID of the associated task"
          },
          "is_sent": {
            "type": "boolean",
            "title": "Is Sent",
            "description": "Whether the reminder has been sent",
            "default": false
          },
          "sent_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sent At",
            "description": "When the reminder was sent"
          },
          "is_acknowledged": {
            "type": "boolean",
            "title": "Is Acknowledged",
            "description": "Whether the reminder was acknowledged",
            "default": false
          },
          "acknowledged_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged At",
            "description": "When the reminder was acknowledged"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the reminder is active",
            "default": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Reminder creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Reminder last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "reminder_time",
          "id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "ReminderResponse",
        "description": "Schema for reminder response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440090\",\n        \"reminder_type\": \"notification\",\n        \"reminder_time\": \"2024-01-15T08:45:00Z\",\n        \"message\": \"Team standup in 15 minutes\",\n        \"minutes_before\": 15,\n        \"meeting_id\": \"550e8400-e29b-41d4-a716-446655440010\",\n        \"owner_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"is_sent\": false,\n        \"is_active\": true,\n        \"created_at\": \"2024-01-10T10:30:00Z\"\n    }",
        "examples": [
          {
            "created_at": "2024-01-10T10:30:00Z",
            "id": "550e8400-e29b-41d4-a716-446655440090",
            "is_acknowledged": false,
            "is_active": true,
            "is_recurring": false,
            "is_sent": false,
            "meeting_id": "550e8400-e29b-41d4-a716-446655440010",
            "message": "Team standup in 15 minutes",
            "minutes_before": 15,
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "reminder_time": "2024-01-15T08:45:00Z",
            "reminder_type": "notification",
            "updated_at": "2024-01-10T10:30:00Z"
          }
        ]
      },
      "ReminderType": {
        "type": "string",
        "enum": [
          "notification",
          "email",
          "sms"
        ],
        "title": "ReminderType",
        "description": "Reminder delivery type enumeration."
      },
      "ReminderUpdate": {
        "properties": {
          "reminder_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReminderType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type of reminder delivery"
          },
          "reminder_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reminder Time",
            "description": "When to send the reminder"
          },
          "message": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Message",
            "description": "Custom reminder message"
          },
          "minutes_before": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10080.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Minutes Before",
            "description": "Minutes before the event/task"
          },
          "is_recurring": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Recurring",
            "description": "Whether the reminder repeats"
          },
          "recurrence_interval_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1440.0,
                "minimum": 5.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Recurrence Interval Minutes",
            "description": "Interval between recurring reminders"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Whether the reminder is active"
          }
        },
        "type": "object",
        "title": "ReminderUpdate",
        "description": "Schema for updating an existing reminder.\n\nAll fields are optional for partial updates.\n\nExample:\n    {\n        \"reminder_time\": \"2024-01-15T08:30:00Z\",\n        \"minutes_before\": 30\n    }",
        "examples": [
          {
            "minutes_before": 30,
            "reminder_time": "2024-01-15T08:30:00Z"
          }
        ]
      },
      "ReorderBody": {
        "properties": {
          "sort_order": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Sort Order"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sort_order"
        ],
        "title": "ReorderBody"
      },
      "RoutineTaskCreate": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 32,
            "title": "Tags"
          },
          "priority": {
            "type": "integer",
            "maximum": 5.0,
            "minimum": 1.0,
            "title": "Priority",
            "default": 3
          },
          "duration_min": {
            "type": "integer",
            "maximum": 10080.0,
            "minimum": 1.0,
            "title": "Duration Min",
            "default": 30
          },
          "preferred_window": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preferred Window"
          },
          "repeat_rule": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Repeat Rule"
          },
          "deadline_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deadline At"
          },
          "reminder_channels": {
            "items": {
              "type": "string",
              "enum": [
                "email",
                "inapp",
                "webhook"
              ]
            },
            "type": "array",
            "maxItems": 3,
            "title": "Reminder Channels"
          },
          "rollup_mode": {
            "type": "string",
            "enum": [
              "sum",
              "max",
              "manual"
            ],
            "title": "Rollup Mode",
            "default": "sum"
          },
          "parent_block": {
            "type": "boolean",
            "title": "Parent Block",
            "default": false
          },
          "llm_provider": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "anthropic",
                  "openai"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider"
          },
          "raw_input": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1,
            "title": "Raw Input"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id"
          },
          "sort_order": {
            "type": "integer",
            "title": "Sort Order",
            "default": 0
          },
          "source": {
            "type": "string",
            "enum": [
              "manual",
              "bulk_import",
              "api",
              "ics"
            ],
            "title": "Source",
            "default": "manual"
          },
          "bulk_job_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Bulk Job Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "title",
          "raw_input"
        ],
        "title": "RoutineTaskCreate",
        "description": "Create schema - requires raw_input; parent/sort optional."
      },
      "RoutineTaskRead": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 32,
            "title": "Tags"
          },
          "priority": {
            "type": "integer",
            "maximum": 5.0,
            "minimum": 1.0,
            "title": "Priority",
            "default": 3
          },
          "duration_min": {
            "type": "integer",
            "maximum": 10080.0,
            "minimum": 1.0,
            "title": "Duration Min",
            "default": 30
          },
          "preferred_window": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preferred Window"
          },
          "repeat_rule": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Repeat Rule"
          },
          "deadline_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deadline At"
          },
          "reminder_channels": {
            "items": {
              "type": "string",
              "enum": [
                "email",
                "inapp",
                "webhook"
              ]
            },
            "type": "array",
            "maxItems": 3,
            "title": "Reminder Channels"
          },
          "rollup_mode": {
            "type": "string",
            "enum": [
              "sum",
              "max",
              "manual"
            ],
            "title": "Rollup Mode",
            "default": "sum"
          },
          "parent_block": {
            "type": "boolean",
            "title": "Parent Block",
            "default": false
          },
          "llm_provider": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "anthropic",
                  "openai"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "raw_input": {
            "type": "string",
            "title": "Raw Input"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id"
          },
          "depth": {
            "type": "integer",
            "title": "Depth",
            "default": 0
          },
          "sort_order": {
            "type": "integer",
            "title": "Sort Order",
            "default": 0
          },
          "path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Path"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "scheduled",
              "needs_review",
              "done",
              "cancelled",
              "failed"
            ],
            "title": "Status",
            "default": "pending"
          },
          "source": {
            "type": "string",
            "enum": [
              "manual",
              "bulk_import",
              "api",
              "ics"
            ],
            "title": "Source",
            "default": "manual"
          },
          "bulk_job_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bulk Job Id"
          },
          "calendar_item_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Calendar Item Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "title",
          "id",
          "tenant_id",
          "user_id",
          "raw_input",
          "created_at",
          "updated_at"
        ],
        "title": "RoutineTaskRead",
        "description": "Read schema - fields populated from ORM."
      },
      "RoutineTaskTreeRead": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 32,
            "title": "Tags"
          },
          "priority": {
            "type": "integer",
            "maximum": 5.0,
            "minimum": 1.0,
            "title": "Priority",
            "default": 3
          },
          "duration_min": {
            "type": "integer",
            "maximum": 10080.0,
            "minimum": 1.0,
            "title": "Duration Min",
            "default": 30
          },
          "preferred_window": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preferred Window"
          },
          "repeat_rule": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Repeat Rule"
          },
          "deadline_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deadline At"
          },
          "reminder_channels": {
            "items": {
              "type": "string",
              "enum": [
                "email",
                "inapp",
                "webhook"
              ]
            },
            "type": "array",
            "maxItems": 3,
            "title": "Reminder Channels"
          },
          "rollup_mode": {
            "type": "string",
            "enum": [
              "sum",
              "max",
              "manual"
            ],
            "title": "Rollup Mode",
            "default": "sum"
          },
          "parent_block": {
            "type": "boolean",
            "title": "Parent Block",
            "default": false
          },
          "llm_provider": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "anthropic",
                  "openai"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "raw_input": {
            "type": "string",
            "title": "Raw Input"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id"
          },
          "depth": {
            "type": "integer",
            "title": "Depth",
            "default": 0
          },
          "sort_order": {
            "type": "integer",
            "title": "Sort Order",
            "default": 0
          },
          "path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Path"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "scheduled",
              "needs_review",
              "done",
              "cancelled",
              "failed"
            ],
            "title": "Status",
            "default": "pending"
          },
          "source": {
            "type": "string",
            "enum": [
              "manual",
              "bulk_import",
              "api",
              "ics"
            ],
            "title": "Source",
            "default": "manual"
          },
          "bulk_job_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bulk Job Id"
          },
          "calendar_item_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Calendar Item Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "children": {
            "items": {
              "$ref": "#/components/schemas/RoutineTaskTreeRead"
            },
            "type": "array",
            "title": "Children"
          },
          "rollup_duration_min": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rollup Duration Min"
          }
        },
        "type": "object",
        "required": [
          "title",
          "id",
          "tenant_id",
          "user_id",
          "raw_input",
          "created_at",
          "updated_at"
        ],
        "title": "RoutineTaskTreeRead",
        "description": "Read schema including nested children. Recursive."
      },
      "RoutineTaskUpdate": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tags"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 5.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "duration_min": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10080.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Min"
          },
          "preferred_window": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preferred Window"
          },
          "repeat_rule": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Repeat Rule"
          },
          "deadline_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deadline At"
          },
          "reminder_channels": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "enum": [
                    "email",
                    "inapp",
                    "webhook"
                  ]
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reminder Channels"
          },
          "rollup_mode": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "sum",
                  "max",
                  "manual"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Rollup Mode"
          },
          "parent_block": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Block"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id"
          },
          "sort_order": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort Order"
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "pending",
                  "scheduled",
                  "needs_review",
                  "done",
                  "cancelled",
                  "failed"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "llm_provider": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "anthropic",
                  "openai"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "RoutineTaskUpdate",
        "description": "Partial update. All fields optional; unset fields not modified."
      },
      "SHARED_AUTH__auth_schemas__LoginRequest": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email",
            "description": "User email address"
          },
          "password": {
            "type": "string",
            "minLength": 1,
            "title": "Password",
            "description": "User password"
          },
          "method": {
            "type": "string",
            "enum": [
              "sso",
              "local",
              "auto"
            ],
            "title": "Method",
            "description": "Authentication method: 'sso' forces SSO only, 'local' forces local only, 'auto' tries SSO first then falls back to local",
            "default": "auto"
          },
          "remember_me": {
            "type": "boolean",
            "title": "Remember Me",
            "description": "Extend session duration",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "email",
          "password"
        ],
        "title": "LoginRequest",
        "description": "Login request supporting both SSO and local auth methods."
      },
      "SHARED_AUTH__auth_schemas__TokenResponse": {
        "properties": {
          "access_token": {
            "type": "string",
            "title": "Access Token",
            "description": "JWT access token"
          },
          "refresh_token": {
            "type": "string",
            "title": "Refresh Token",
            "description": "JWT refresh token",
            "default": ""
          },
          "token_type": {
            "type": "string",
            "title": "Token Type",
            "description": "Token type (always 'bearer')",
            "default": "bearer"
          },
          "expires_in": {
            "type": "integer",
            "title": "Expires In",
            "description": "Access token lifetime in seconds"
          },
          "auth_method": {
            "type": "string",
            "title": "Auth Method",
            "description": "Method used: 'sso', 'local', or 'auto'",
            "default": "auto"
          },
          "user": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "User",
            "description": "Basic user info (id, email, name)"
          },
          "requires_role_selection": {
            "type": "boolean",
            "title": "Requires Role Selection",
            "description": "True when user has no roles assigned and should pick one",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "access_token",
          "expires_in"
        ],
        "title": "TokenResponse",
        "description": "JWT token response issued after successful authentication."
      },
      "SSOCallbackRequest": {
        "properties": {
          "token": {
            "type": "string",
            "title": "Token",
            "description": "SSO JWT token from ONETIMELOGIN redirect"
          },
          "return_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Return Url",
            "description": "URL to redirect after callback"
          }
        },
        "type": "object",
        "required": [
          "token"
        ],
        "title": "SSOCallbackRequest",
        "description": "Request body for SSO callback endpoint."
      },
      "ScheduleDecisionRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "routine_task_id": {
            "type": "string",
            "title": "Routine Task Id"
          },
          "run_id": {
            "type": "string",
            "title": "Run Id"
          },
          "llm_provider": {
            "type": "string",
            "enum": [
              "anthropic",
              "openai",
              "none"
            ],
            "title": "Llm Provider"
          },
          "llm_model": {
            "type": "string",
            "title": "Llm Model"
          },
          "input_snapshot": {
            "additionalProperties": true,
            "type": "object",
            "title": "Input Snapshot"
          },
          "decision_json": {
            "additionalProperties": true,
            "type": "object",
            "title": "Decision Json"
          },
          "chosen_slot_start": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chosen Slot Start"
          },
          "chosen_slot_end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chosen Slot End"
          },
          "alternates_json": {
            "items": {},
            "type": "array",
            "title": "Alternates Json"
          },
          "confidence": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confidence"
          },
          "rationale": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rationale"
          },
          "fallback_used": {
            "type": "boolean",
            "title": "Fallback Used",
            "default": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "user_id",
          "routine_task_id",
          "run_id",
          "llm_provider",
          "llm_model",
          "input_snapshot",
          "decision_json",
          "created_at"
        ],
        "title": "ScheduleDecisionRead"
      },
      "ScheduleItem": {
        "properties": {
          "day": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Day",
            "description": "Day label (e.g., 'Day 1')"
          },
          "time": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Time",
            "description": "Time (e.g., '10:00 AM')"
          },
          "title": {
            "type": "string",
            "maxLength": 200,
            "title": "Title",
            "description": "Schedule item title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Schedule item description"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Lucide icon name"
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "ScheduleItem",
        "description": "A schedule/timeline item."
      },
      "ScheduleRequestBody": {
        "properties": {
          "task_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 500,
            "minItems": 1,
            "title": "Task Ids"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "anthropic",
                  "openai"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "task_ids"
        ],
        "title": "ScheduleRequestBody"
      },
      "ScheduleRunDecisionRead": {
        "properties": {
          "decision_id": {
            "type": "string",
            "title": "Decision Id"
          },
          "routine_task_id": {
            "type": "string",
            "title": "Routine Task Id"
          },
          "chosen_slot_start": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chosen Slot Start"
          },
          "chosen_slot_end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chosen Slot End"
          },
          "confidence": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confidence"
          },
          "rationale": {
            "type": "string",
            "title": "Rationale"
          },
          "fallback_used": {
            "type": "boolean",
            "title": "Fallback Used"
          },
          "provider": {
            "type": "string",
            "title": "Provider"
          },
          "model": {
            "type": "string",
            "title": "Model"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "decision_id",
          "routine_task_id",
          "rationale",
          "fallback_used",
          "provider",
          "model"
        ],
        "title": "ScheduleRunDecisionRead"
      },
      "ScheduleRunLatestRead": {
        "properties": {
          "run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Run Id"
          },
          "decision_count": {
            "type": "integer",
            "title": "Decision Count",
            "default": 0
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "ScheduleRunLatestRead"
      },
      "ScheduleRunRead": {
        "properties": {
          "run_id": {
            "type": "string",
            "title": "Run Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "provider_requested": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Requested"
          },
          "decisions": {
            "items": {
              "$ref": "#/components/schemas/ScheduleRunDecisionRead"
            },
            "type": "array",
            "title": "Decisions"
          },
          "fallback_used": {
            "type": "boolean",
            "title": "Fallback Used"
          },
          "quota_hard_breached": {
            "type": "boolean",
            "title": "Quota Hard Breached"
          },
          "quota_soft_breached": {
            "type": "boolean",
            "title": "Quota Soft Breached"
          },
          "total_cost_usd": {
            "type": "string",
            "title": "Total Cost Usd"
          },
          "total_latency_ms": {
            "type": "integer",
            "title": "Total Latency Ms"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Warnings"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Errors"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "run_id",
          "user_id",
          "tenant_id",
          "decisions",
          "fallback_used",
          "quota_hard_breached",
          "quota_soft_breached",
          "total_cost_usd",
          "total_latency_ms"
        ],
        "title": "ScheduleRunRead"
      },
      "SimpleOk": {
        "properties": {
          "ok": {
            "type": "boolean",
            "title": "Ok",
            "default": true
          },
          "event_id": {
            "type": "string",
            "title": "Event Id"
          },
          "task_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "event_id"
        ],
        "title": "SimpleOk"
      },
      "SortOrder": {
        "type": "string",
        "enum": [
          "asc",
          "desc"
        ],
        "title": "SortOrder",
        "description": "Sort order enumeration."
      },
      "StatItem": {
        "properties": {
          "value": {
            "type": "string",
            "maxLength": 50,
            "title": "Value",
            "description": "Stat value (e.g., '40')"
          },
          "label": {
            "type": "string",
            "maxLength": 100,
            "title": "Label",
            "description": "Stat label (e.g., 'Years of Memories')"
          }
        },
        "type": "object",
        "required": [
          "value",
          "label"
        ],
        "title": "StatItem",
        "description": "A stat bar item."
      },
      "SuccessResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success",
            "description": "Indicates operation success",
            "default": true
          },
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable success message"
          },
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data",
            "description": "Additional data returned with the response"
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "SuccessResponse",
        "description": "Success response schema.\n\nExample:\n    {\n        \"success\": true,\n        \"message\": \"Operation completed successfully\",\n        \"data\": {\"id\": \"123\"}\n    }",
        "examples": [
          {
            "data": {
              "id": "cal_123"
            },
            "message": "Calendar created successfully",
            "success": true
          }
        ]
      },
      "SyncResultResponse": {
        "properties": {
          "integration_id": {
            "type": "string",
            "title": "Integration Id"
          },
          "provider": {
            "type": "string",
            "title": "Provider"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "fetched": {
            "type": "integer",
            "title": "Fetched"
          },
          "created_local": {
            "type": "integer",
            "title": "Created Local"
          },
          "updated_local": {
            "type": "integer",
            "title": "Updated Local"
          },
          "deleted_local": {
            "type": "integer",
            "title": "Deleted Local"
          },
          "last_sync_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Sync At"
          },
          "last_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Error"
          }
        },
        "type": "object",
        "required": [
          "integration_id",
          "provider",
          "status",
          "fetched",
          "created_local",
          "updated_local",
          "deleted_local"
        ],
        "title": "SyncResultResponse"
      },
      "TaskCategoryCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1,
            "title": "Name",
            "description": "Category name"
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Color",
            "description": "Category color in hex format",
            "default": "#6B7280"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Category icon identifier"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Category description"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "TaskCategoryCreate",
        "description": "Schema for creating a new task category.\n\nExample:\n    {\n        \"name\": \"Development\",\n        \"color\": \"#10B981\",\n        \"icon\": \"code\",\n        \"description\": \"Software development tasks\"\n    }",
        "examples": [
          {
            "color": "#10B981",
            "description": "Software development tasks",
            "icon": "code",
            "name": "Development"
          }
        ]
      },
      "TaskCategoryResponse": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1,
            "title": "Name",
            "description": "Category name"
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Color",
            "description": "Category color in hex format",
            "default": "#6B7280"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Category icon identifier"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Category description"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique category identifier"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the category owner"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the category is active",
            "default": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Category creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Category last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "name",
          "id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "TaskCategoryResponse",
        "description": "Schema for task category response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440060\",\n        \"name\": \"Development\",\n        \"color\": \"#10B981\",\n        \"icon\": \"code\",\n        \"description\": \"Software development tasks\",\n        \"owner_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"is_active\": true,\n        \"created_at\": \"2024-01-10T10:30:00Z\"\n    }",
        "examples": [
          {
            "color": "#10B981",
            "created_at": "2024-01-10T10:30:00Z",
            "description": "Software development tasks",
            "icon": "code",
            "id": "550e8400-e29b-41d4-a716-446655440060",
            "is_active": true,
            "name": "Development",
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "updated_at": "2024-01-10T10:30:00Z"
          }
        ]
      },
      "TaskCategoryUpdate": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Category name"
          },
          "color": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^#[0-9A-Fa-f]{6}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Category color in hex format"
          },
          "icon": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Icon",
            "description": "Category icon identifier"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Category description"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Whether the category is active"
          }
        },
        "type": "object",
        "title": "TaskCategoryUpdate",
        "description": "Schema for updating a task category.\n\nExample:\n    {\n        \"name\": \"Updated Category\",\n        \"color\": \"#8B5CF6\"\n    }",
        "examples": [
          {
            "color": "#8B5CF6",
            "name": "Updated Category"
          }
        ]
      },
      "TaskCreate": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Task title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Task description"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatus",
            "description": "Current task status",
            "default": "todo"
          },
          "priority": {
            "$ref": "#/components/schemas/TaskPriority",
            "description": "Task priority level",
            "default": "medium"
          },
          "due_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Date",
            "description": "Task due date"
          },
          "due_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Time",
            "description": "Task due time (specific deadline)"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Planned start date"
          },
          "estimated_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Duration Minutes",
            "description": "Estimated duration in minutes"
          },
          "actual_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Duration Minutes",
            "description": "Actual duration in minutes"
          },
          "completion_percentage": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Completion Percentage",
            "description": "Task completion percentage",
            "default": 0
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Task tags for organization"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar to add the task to"
          },
          "category_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category Id",
            "description": "ID of the task category"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id",
            "description": "ID of the parent task (for subtasks)"
          },
          "linked_meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Linked Meeting Id",
            "description": "ID of a linked meeting"
          },
          "link_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskLinkType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type of link to the meeting"
          }
        },
        "type": "object",
        "required": [
          "title",
          "calendar_id"
        ],
        "title": "TaskCreate",
        "description": "Schema for creating a new task.\n\nExample:\n    {\n        \"title\": \"Prepare quarterly report\",\n        \"description\": \"Compile Q4 metrics and create presentation\",\n        \"priority\": \"high\",\n        \"due_date\": \"2024-01-20\",\n        \"estimated_duration_minutes\": 240,\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n        \"tags\": [\"report\", \"quarterly\", \"finance\"]\n    }",
        "examples": [
          {
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "description": "Compile Q4 metrics and create presentation",
            "due_date": "2024-01-20",
            "estimated_duration_minutes": 240,
            "priority": "high",
            "tags": [
              "report",
              "quarterly",
              "finance"
            ],
            "title": "Prepare quarterly report"
          }
        ]
      },
      "TaskDependencyCreate": {
        "properties": {
          "task_id": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Task Id"
          },
          "depends_on_id": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Depends On Id"
          },
          "dep_type": {
            "type": "string",
            "enum": [
              "finish_to_start",
              "start_to_start",
              "finish_to_finish"
            ],
            "title": "Dep Type",
            "default": "finish_to_start"
          },
          "lag_min": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Lag Min",
            "default": 0
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "task_id",
          "depends_on_id"
        ],
        "title": "TaskDependencyCreate"
      },
      "TaskDependencyRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "task_id": {
            "type": "string",
            "title": "Task Id"
          },
          "depends_on_id": {
            "type": "string",
            "title": "Depends On Id"
          },
          "dep_type": {
            "type": "string",
            "enum": [
              "finish_to_start",
              "start_to_start",
              "finish_to_finish"
            ],
            "title": "Dep Type"
          },
          "lag_min": {
            "type": "integer",
            "title": "Lag Min"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "task_id",
          "depends_on_id",
          "dep_type",
          "lag_min",
          "created_at"
        ],
        "title": "TaskDependencyRead"
      },
      "TaskDependencyResponse": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique dependency identifier"
          },
          "task_id": {
            "type": "string",
            "format": "uuid",
            "title": "Task Id",
            "description": "ID of the dependent task"
          },
          "depends_on_task_id": {
            "type": "string",
            "format": "uuid",
            "title": "Depends On Task Id",
            "description": "ID of the task this one depends on"
          },
          "dependency_type": {
            "$ref": "#/components/schemas/DependencyType",
            "description": "Type of dependency"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Dependency creation timestamp"
          }
        },
        "type": "object",
        "required": [
          "id",
          "task_id",
          "depends_on_task_id",
          "dependency_type",
          "created_at"
        ],
        "title": "TaskDependencyResponse",
        "description": "Schema for task dependency response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440070\",\n        \"task_id\": \"550e8400-e29b-41d4-a716-446655440050\",\n        \"depends_on_task_id\": \"550e8400-e29b-41d4-a716-446655440051\",\n        \"dependency_type\": \"requires\",\n        \"created_at\": \"2024-01-10T10:30:00Z\"\n    }",
        "examples": [
          {
            "created_at": "2024-01-10T10:30:00Z",
            "dependency_type": "requires",
            "depends_on_task_id": "550e8400-e29b-41d4-a716-446655440051",
            "id": "550e8400-e29b-41d4-a716-446655440070",
            "task_id": "550e8400-e29b-41d4-a716-446655440050"
          }
        ]
      },
      "TaskItem": {
        "properties": {
          "item_type": {
            "type": "string",
            "const": "task",
            "title": "Item Type",
            "default": "task"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique identifier of the item"
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "Item title"
          },
          "start_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Datetime",
            "description": "Start datetime for timed items"
          },
          "end_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Datetime",
            "description": "End datetime for timed items"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Start date for all-day items"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date",
            "description": "End date for multi-day items"
          },
          "is_all_day": {
            "type": "boolean",
            "title": "Is All Day",
            "description": "Whether this is an all-day item",
            "default": false
          },
          "color": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Color",
            "description": "Display color"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "Calendar containing this item"
          },
          "task": {
            "$ref": "#/components/schemas/TaskResponse",
            "description": "Full task details"
          },
          "is_overdue": {
            "type": "boolean",
            "title": "Is Overdue",
            "description": "Whether the task is overdue",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "title",
          "calendar_id",
          "task"
        ],
        "title": "TaskItem",
        "description": "Calendar item representing a task."
      },
      "TaskLinkType": {
        "type": "string",
        "enum": [
          "preparation",
          "followup",
          "action_item",
          "related"
        ],
        "title": "TaskLinkType",
        "description": "Task-to-meeting link type enumeration."
      },
      "TaskPriority": {
        "type": "string",
        "enum": [
          "low",
          "medium",
          "high",
          "urgent"
        ],
        "title": "TaskPriority",
        "description": "Task priority enumeration."
      },
      "TaskResponse": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Task title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Task description"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatus",
            "description": "Current task status",
            "default": "todo"
          },
          "priority": {
            "$ref": "#/components/schemas/TaskPriority",
            "description": "Task priority level",
            "default": "medium"
          },
          "due_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Date",
            "description": "Task due date"
          },
          "due_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Time",
            "description": "Task due time (specific deadline)"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Planned start date"
          },
          "estimated_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Duration Minutes",
            "description": "Estimated duration in minutes"
          },
          "actual_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Duration Minutes",
            "description": "Actual duration in minutes"
          },
          "completion_percentage": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Completion Percentage",
            "description": "Task completion percentage",
            "default": 0
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Task tags for organization"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique task identifier"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar containing the task"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the task owner"
          },
          "category_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category Id",
            "description": "ID of the task category"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id",
            "description": "ID of the parent task"
          },
          "linked_meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Linked Meeting Id",
            "description": "ID of a linked meeting"
          },
          "link_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskLinkType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type of link to the meeting"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "When the task was completed"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the task is active",
            "default": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Task creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Task last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "title",
          "id",
          "calendar_id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "TaskResponse",
        "description": "Schema for task response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440050\",\n        \"title\": \"Prepare quarterly report\",\n        \"status\": \"in_progress\",\n        \"priority\": \"high\",\n        \"due_date\": \"2024-01-20\",\n        \"calendar_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n        \"owner_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"completion_percentage\": 50,\n        \"is_active\": true,\n        \"created_at\": \"2024-01-10T10:30:00Z\"\n    }",
        "examples": [
          {
            "actual_duration_minutes": 120,
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "completion_percentage": 50,
            "created_at": "2024-01-10T10:30:00Z",
            "description": "Compile Q4 metrics and create presentation",
            "due_date": "2024-01-20",
            "estimated_duration_minutes": 240,
            "id": "550e8400-e29b-41d4-a716-446655440050",
            "is_active": true,
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "priority": "high",
            "start_date": "2024-01-15",
            "status": "in_progress",
            "tags": [
              "report",
              "quarterly",
              "finance"
            ],
            "title": "Prepare quarterly report",
            "updated_at": "2024-01-15T14:00:00Z"
          }
        ]
      },
      "TaskStatus": {
        "type": "string",
        "enum": [
          "todo",
          "in_progress",
          "blocked",
          "review",
          "completed",
          "cancelled"
        ],
        "title": "TaskStatus",
        "description": "Task status enumeration."
      },
      "TaskUpdate": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Title",
            "description": "Task title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Task description"
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskStatus"
              },
              {
                "type": "null"
              }
            ],
            "description": "Current task status"
          },
          "priority": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskPriority"
              },
              {
                "type": "null"
              }
            ],
            "description": "Task priority level"
          },
          "due_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Date",
            "description": "Task due date"
          },
          "due_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Time",
            "description": "Task due time"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Planned start date"
          },
          "estimated_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Duration Minutes",
            "description": "Estimated duration in minutes"
          },
          "actual_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Duration Minutes",
            "description": "Actual duration in minutes"
          },
          "completion_percentage": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 100.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Completion Percentage",
            "description": "Task completion percentage"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tags",
            "description": "Task tags"
          },
          "category_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category Id",
            "description": "ID of the task category"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id",
            "description": "ID of the parent task"
          },
          "linked_meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Linked Meeting Id",
            "description": "ID of a linked meeting"
          },
          "link_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskLinkType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type of link to the meeting"
          },
          "is_active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Active",
            "description": "Whether the task is active"
          }
        },
        "type": "object",
        "title": "TaskUpdate",
        "description": "Schema for updating an existing task.\n\nAll fields are optional for partial updates.\n\nExample:\n    {\n        \"status\": \"in_progress\",\n        \"completion_percentage\": 50,\n        \"actual_duration_minutes\": 120\n    }",
        "examples": [
          {
            "actual_duration_minutes": 120,
            "completion_percentage": 50,
            "status": "in_progress"
          }
        ]
      },
      "TaskWithSubtasks": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "description": "Task title"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Task description"
          },
          "status": {
            "$ref": "#/components/schemas/TaskStatus",
            "description": "Current task status",
            "default": "todo"
          },
          "priority": {
            "$ref": "#/components/schemas/TaskPriority",
            "description": "Task priority level",
            "default": "medium"
          },
          "due_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Date",
            "description": "Task due date"
          },
          "due_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due Time",
            "description": "Task due time (specific deadline)"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date",
            "description": "Planned start date"
          },
          "estimated_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Duration Minutes",
            "description": "Estimated duration in minutes"
          },
          "actual_duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Duration Minutes",
            "description": "Actual duration in minutes"
          },
          "completion_percentage": {
            "type": "integer",
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Completion Percentage",
            "description": "Task completion percentage",
            "default": 0
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Task tags for organization"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique task identifier"
          },
          "calendar_id": {
            "type": "string",
            "format": "uuid",
            "title": "Calendar Id",
            "description": "ID of the calendar containing the task"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the task owner"
          },
          "category_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category Id",
            "description": "ID of the task category"
          },
          "parent_task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent Task Id",
            "description": "ID of the parent task"
          },
          "linked_meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Linked Meeting Id",
            "description": "ID of a linked meeting"
          },
          "link_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskLinkType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type of link to the meeting"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "When the task was completed"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether the task is active",
            "default": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Task creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Task last update timestamp"
          },
          "subtasks": {
            "items": {
              "$ref": "#/components/schemas/TaskResponse"
            },
            "type": "array",
            "title": "Subtasks",
            "description": "List of subtasks"
          }
        },
        "type": "object",
        "required": [
          "title",
          "id",
          "calendar_id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "TaskWithSubtasks",
        "description": "Schema for task response with subtasks.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440050\",\n        \"title\": \"Prepare quarterly report\",\n        \"subtasks\": [\n            {\n                \"id\": \"550e8400-e29b-41d4-a716-446655440051\",\n                \"title\": \"Gather metrics data\",\n                \"status\": \"completed\"\n            }\n        ]\n    }",
        "examples": [
          {
            "actual_duration_minutes": 120,
            "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
            "completion_percentage": 50,
            "created_at": "2024-01-10T10:30:00Z",
            "description": "Compile Q4 metrics and create presentation",
            "due_date": "2024-01-20",
            "estimated_duration_minutes": 240,
            "id": "550e8400-e29b-41d4-a716-446655440050",
            "is_active": true,
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "priority": "high",
            "start_date": "2024-01-15",
            "status": "in_progress",
            "subtasks": [
              {
                "actual_duration_minutes": 45,
                "calendar_id": "550e8400-e29b-41d4-a716-446655440000",
                "completed_at": "2024-01-16T16:00:00Z",
                "completion_percentage": 100,
                "created_at": "2024-01-10T10:35:00Z",
                "description": "Export data from analytics dashboard",
                "due_date": "2024-01-17",
                "estimated_duration_minutes": 60,
                "id": "550e8400-e29b-41d4-a716-446655440051",
                "is_active": true,
                "owner_id": "550e8400-e29b-41d4-a716-446655440001",
                "parent_task_id": "550e8400-e29b-41d4-a716-446655440050",
                "priority": "medium",
                "status": "completed",
                "tags": [],
                "title": "Gather metrics data",
                "updated_at": "2024-01-16T16:00:00Z"
              }
            ],
            "tags": [
              "report",
              "quarterly",
              "finance"
            ],
            "title": "Prepare quarterly report",
            "updated_at": "2024-01-15T14:00:00Z"
          }
        ]
      },
      "TenantSettingsRead": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "llm_provider_tenant_default": {
            "type": "string",
            "title": "Llm Provider Tenant Default",
            "default": "anthropic"
          },
          "llm_provider_locked": {
            "type": "boolean",
            "title": "Llm Provider Locked",
            "default": false
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "tenant_id"
        ],
        "title": "TenantSettingsRead"
      },
      "TenantSettingsUpdate": {
        "properties": {
          "llm_provider_tenant_default": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider Tenant Default"
          },
          "llm_provider_locked": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider Locked"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "TenantSettingsUpdate"
      },
      "TimeEntryCreate": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Description of work performed"
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "description": "Time entry start timestamp"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Time entry end timestamp (null if timer is running)"
          },
          "is_billable": {
            "type": "boolean",
            "title": "Is Billable",
            "description": "Whether this time is billable",
            "default": false
          },
          "hourly_rate": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Hourly Rate",
            "description": "Hourly rate for billable time"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Tags for categorization"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Additional notes"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id",
            "description": "ID of the associated task"
          },
          "meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Id",
            "description": "ID of the associated meeting"
          }
        },
        "type": "object",
        "required": [
          "start_time"
        ],
        "title": "TimeEntryCreate",
        "description": "Schema for creating a new time entry.\n\nExample:\n    {\n        \"description\": \"Working on API implementation\",\n        \"start_time\": \"2024-01-15T09:00:00Z\",\n        \"end_time\": \"2024-01-15T12:00:00Z\",\n        \"task_id\": \"550e8400-e29b-41d4-a716-446655440050\",\n        \"is_billable\": true,\n        \"hourly_rate\": 75.00,\n        \"tags\": [\"development\", \"api\"]\n    }",
        "examples": [
          {
            "description": "Working on API implementation",
            "end_time": "2024-01-15T12:00:00Z",
            "hourly_rate": 75.0,
            "is_billable": true,
            "start_time": "2024-01-15T09:00:00Z",
            "tags": [
              "development",
              "api"
            ],
            "task_id": "550e8400-e29b-41d4-a716-446655440050"
          }
        ]
      },
      "TimeEntryResponse": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Description of work performed"
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "title": "Start Time",
            "description": "Time entry start timestamp"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Time entry end timestamp (null if timer is running)"
          },
          "is_billable": {
            "type": "boolean",
            "title": "Is Billable",
            "description": "Whether this time is billable",
            "default": false
          },
          "hourly_rate": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Hourly Rate",
            "description": "Hourly rate for billable time"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Tags for categorization"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Additional notes"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique time entry identifier"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "title": "Owner Id",
            "description": "ID of the time entry owner"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id",
            "description": "ID of the associated task"
          },
          "meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Id",
            "description": "ID of the associated meeting"
          },
          "duration_minutes": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Minutes",
            "description": "Duration in minutes (calculated from start/end)"
          },
          "is_running": {
            "type": "boolean",
            "title": "Is Running",
            "description": "Whether the timer is currently running",
            "default": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Time entry creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Time entry last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "start_time",
          "id",
          "owner_id",
          "created_at",
          "updated_at"
        ],
        "title": "TimeEntryResponse",
        "description": "Schema for time entry response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440080\",\n        \"description\": \"Working on API implementation\",\n        \"start_time\": \"2024-01-15T09:00:00Z\",\n        \"end_time\": \"2024-01-15T12:00:00Z\",\n        \"duration_minutes\": 180,\n        \"task_id\": \"550e8400-e29b-41d4-a716-446655440050\",\n        \"owner_id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"is_billable\": true,\n        \"created_at\": \"2024-01-15T09:00:00Z\"\n    }",
        "examples": [
          {
            "created_at": "2024-01-15T09:00:00Z",
            "description": "Working on API implementation",
            "duration_minutes": 180,
            "end_time": "2024-01-15T12:00:00Z",
            "hourly_rate": 75.0,
            "id": "550e8400-e29b-41d4-a716-446655440080",
            "is_billable": true,
            "is_running": false,
            "owner_id": "550e8400-e29b-41d4-a716-446655440001",
            "start_time": "2024-01-15T09:00:00Z",
            "tags": [
              "development",
              "api"
            ],
            "task_id": "550e8400-e29b-41d4-a716-446655440050",
            "updated_at": "2024-01-15T12:00:00Z"
          }
        ]
      },
      "TimeEntryStart": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Description of work"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id",
            "description": "ID of the associated task"
          },
          "meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Id",
            "description": "ID of the associated meeting"
          },
          "is_billable": {
            "type": "boolean",
            "title": "Is Billable",
            "description": "Whether this time is billable",
            "default": false
          },
          "hourly_rate": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Hourly Rate",
            "description": "Hourly rate"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Tags for categorization"
          }
        },
        "type": "object",
        "title": "TimeEntryStart",
        "description": "Schema for starting a new timer.\n\nExample:\n    {\n        \"description\": \"Starting work on feature X\",\n        \"task_id\": \"550e8400-e29b-41d4-a716-446655440050\",\n        \"is_billable\": true,\n        \"tags\": [\"development\"]\n    }",
        "examples": [
          {
            "description": "Starting work on feature X",
            "is_billable": true,
            "tags": [
              "development"
            ],
            "task_id": "550e8400-e29b-41d4-a716-446655440050"
          }
        ]
      },
      "TimeEntryStop": {
        "properties": {
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Notes to add when stopping"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Custom end time (defaults to current time)"
          }
        },
        "type": "object",
        "title": "TimeEntryStop",
        "description": "Schema for stopping a running timer.\n\nExample:\n    {\n        \"notes\": \"Completed initial implementation\",\n        \"end_time\": \"2024-01-15T12:00:00Z\"\n    }",
        "examples": [
          {
            "end_time": "2024-01-15T12:00:00Z",
            "notes": "Completed initial implementation"
          }
        ]
      },
      "TimeEntryUpdate": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Description of work"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Time entry start timestamp"
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "Time entry end timestamp"
          },
          "is_billable": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Billable",
            "description": "Whether this time is billable"
          },
          "hourly_rate": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Hourly Rate",
            "description": "Hourly rate"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tags",
            "description": "Tags for categorization"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Additional notes"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id",
            "description": "ID of the associated task"
          },
          "meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Id",
            "description": "ID of the associated meeting"
          }
        },
        "type": "object",
        "title": "TimeEntryUpdate",
        "description": "Schema for updating an existing time entry.\n\nAll fields are optional for partial updates.\n\nExample:\n    {\n        \"end_time\": \"2024-01-15T13:00:00Z\",\n        \"description\": \"Updated description\"\n    }",
        "examples": [
          {
            "description": "Updated description",
            "end_time": "2024-01-15T13:00:00Z"
          }
        ]
      },
      "TimeReport": {
        "properties": {
          "start_date": {
            "type": "string",
            "format": "date",
            "title": "Start Date",
            "description": "Report start date"
          },
          "end_date": {
            "type": "string",
            "format": "date",
            "title": "End Date",
            "description": "Report end date"
          },
          "total_minutes": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Minutes",
            "description": "Total minutes in the report period"
          },
          "billable_minutes": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Billable Minutes",
            "description": "Total billable minutes",
            "default": 0
          },
          "non_billable_minutes": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Non Billable Minutes",
            "description": "Total non-billable minutes",
            "default": 0
          },
          "total_billable_amount": {
            "type": "number",
            "minimum": 0.0,
            "title": "Total Billable Amount",
            "description": "Total billable amount",
            "default": 0.0
          },
          "entries": {
            "items": {
              "$ref": "#/components/schemas/TimeReportEntry"
            },
            "type": "array",
            "title": "Entries",
            "description": "Detailed time entries"
          },
          "by_task": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "By Task",
            "description": "Minutes grouped by task ID"
          },
          "by_tag": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "By Tag",
            "description": "Minutes grouped by tag"
          },
          "by_date": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "By Date",
            "description": "Minutes grouped by date"
          }
        },
        "type": "object",
        "required": [
          "start_date",
          "end_date",
          "total_minutes"
        ],
        "title": "TimeReport",
        "description": "Schema for time report aggregation.\n\nExample:\n    {\n        \"start_date\": \"2024-01-01\",\n        \"end_date\": \"2024-01-31\",\n        \"total_minutes\": 9600,\n        \"billable_minutes\": 7200,\n        \"total_billable_amount\": 9000.00,\n        \"entries\": [...]\n    }",
        "examples": [
          {
            "billable_minutes": 7200,
            "by_date": {
              "2024-01-15": 480,
              "2024-01-16": 420
            },
            "by_tag": {
              "development": 6000,
              "meetings": 3600
            },
            "by_task": {
              "550e8400-e29b-41d4-a716-446655440050": 4800,
              "550e8400-e29b-41d4-a716-446655440051": 4800
            },
            "end_date": "2024-01-31",
            "entries": [],
            "non_billable_minutes": 2400,
            "start_date": "2024-01-01",
            "total_billable_amount": 9000.0,
            "total_minutes": 9600
          }
        ]
      },
      "TimeReportEntry": {
        "properties": {
          "entry_date": {
            "type": "string",
            "format": "date",
            "title": "Entry Date",
            "description": "Date of the time entry"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id",
            "description": "Associated task ID"
          },
          "task_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Title",
            "description": "Associated task title"
          },
          "meeting_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Id",
            "description": "Associated meeting ID"
          },
          "meeting_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Meeting Title",
            "description": "Associated meeting title"
          },
          "total_minutes": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Minutes",
            "description": "Total minutes logged"
          },
          "billable_minutes": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Billable Minutes",
            "description": "Billable minutes",
            "default": 0
          },
          "billable_amount": {
            "type": "number",
            "minimum": 0.0,
            "title": "Billable Amount",
            "description": "Total billable amount",
            "default": 0.0
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags",
            "description": "Tags used"
          }
        },
        "type": "object",
        "required": [
          "entry_date",
          "total_minutes"
        ],
        "title": "TimeReportEntry",
        "description": "Schema for a single entry in a time report."
      },
      "TokenRefreshRequest": {
        "properties": {
          "refresh_token": {
            "type": "string",
            "title": "Refresh Token",
            "description": "Refresh token"
          }
        },
        "type": "object",
        "required": [
          "refresh_token"
        ],
        "title": "TokenRefreshRequest",
        "description": "Schema for token refresh request.\n\nExample:\n    {\n        \"refresh_token\": \"dGhpcyBpcyBhIHJlZnJl...\"\n    }",
        "examples": [
          {
            "refresh_token": "dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4..."
          }
        ]
      },
      "UpcomingItemsResponse": {
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "title": "As Of",
            "description": "Timestamp of the query"
          },
          "next_meeting": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MeetingItem"
              },
              {
                "type": "null"
              }
            ],
            "description": "Next upcoming meeting"
          },
          "next_event": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EventItem"
              },
              {
                "type": "null"
              }
            ],
            "description": "Next upcoming event"
          },
          "next_task_due": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskItem"
              },
              {
                "type": "null"
              }
            ],
            "description": "Next task due"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "Items",
            "description": "Upcoming items in chronological order"
          },
          "overdue_tasks": {
            "items": {
              "$ref": "#/components/schemas/TaskItem"
            },
            "type": "array",
            "title": "Overdue Tasks",
            "description": "Overdue tasks"
          },
          "today_remaining": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "Today Remaining",
            "description": "Remaining items for today"
          },
          "total_upcoming": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Upcoming",
            "description": "Total upcoming items"
          },
          "total_overdue": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Overdue",
            "description": "Total overdue tasks",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "as_of",
          "total_upcoming"
        ],
        "title": "UpcomingItemsResponse",
        "description": "Schema for upcoming items response.\n\nExample:\n    {\n        \"as_of\": \"2024-01-15T10:30:00Z\",\n        \"next_meeting\": {...},\n        \"items\": [...],\n        \"total_upcoming\": 15\n    }",
        "examples": [
          {
            "as_of": "2024-01-15T10:30:00Z",
            "items": [],
            "overdue_tasks": [],
            "today_remaining": [],
            "total_overdue": 2,
            "total_upcoming": 15
          }
        ]
      },
      "UpcomingReminderItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "remind_at": {
            "type": "string",
            "format": "date-time",
            "title": "Remind At"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task Id"
          },
          "calendar_item_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Calendar Item Id"
          },
          "reminder_type": {
            "type": "string",
            "title": "Reminder Type"
          },
          "is_sent": {
            "type": "boolean",
            "title": "Is Sent"
          }
        },
        "type": "object",
        "required": [
          "id",
          "remind_at",
          "reminder_type",
          "is_sent"
        ],
        "title": "UpcomingReminderItem"
      },
      "UserQuotaRead": {
        "properties": {
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "daily_soft_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Daily Soft Usd"
          },
          "daily_hard_usd": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Daily Hard Usd"
          },
          "bulk_per_hour": {
            "type": "integer",
            "title": "Bulk Per Hour"
          },
          "bulk_per_day": {
            "type": "integer",
            "title": "Bulk Per Day"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "user_id",
          "tenant_id",
          "daily_soft_usd",
          "daily_hard_usd",
          "bulk_per_hour",
          "bulk_per_day"
        ],
        "title": "UserQuotaRead"
      },
      "UserQuotaUpdate": {
        "properties": {
          "daily_soft_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Daily Soft Usd"
          },
          "daily_hard_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Daily Hard Usd"
          },
          "bulk_per_hour": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10000.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Bulk Per Hour"
          },
          "bulk_per_day": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 100000.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Bulk Per Day"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "UserQuotaUpdate"
      },
      "UserResponse": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email",
            "description": "User email address"
          },
          "display_name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Display Name",
            "description": "User display name"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "description": "User first name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "description": "User last name"
          },
          "timezone": {
            "type": "string",
            "maxLength": 50,
            "title": "Timezone",
            "description": "User preferred timezone",
            "default": "UTC"
          },
          "locale": {
            "type": "string",
            "maxLength": 10,
            "title": "Locale",
            "description": "User preferred locale",
            "default": "en-US"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url",
            "description": "URL to user avatar image"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id",
            "description": "Unique user identifier"
          },
          "auth_method": {
            "$ref": "#/components/schemas/AuthMethod",
            "description": "Authentication method used"
          },
          "is_active": {
            "type": "boolean",
            "title": "Is Active",
            "description": "Whether user account is active",
            "default": true
          },
          "is_verified": {
            "type": "boolean",
            "title": "Is Verified",
            "description": "Whether email is verified",
            "default": false
          },
          "mfa_enabled": {
            "type": "boolean",
            "title": "Mfa Enabled",
            "description": "Whether MFA is enabled",
            "default": false
          },
          "last_login_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Login At",
            "description": "Last login timestamp"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "Account creation timestamp"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At",
            "description": "Account last update timestamp"
          }
        },
        "type": "object",
        "required": [
          "email",
          "display_name",
          "id",
          "auth_method",
          "created_at",
          "updated_at"
        ],
        "title": "UserResponse",
        "description": "Schema for user response.\n\nExample:\n    {\n        \"id\": \"550e8400-e29b-41d4-a716-446655440001\",\n        \"email\": \"user@example.com\",\n        \"display_name\": \"John Doe\",\n        \"auth_method\": \"local\",\n        \"is_active\": true,\n        \"created_at\": \"2024-01-01T00:00:00Z\"\n    }",
        "examples": [
          {
            "auth_method": "local",
            "created_at": "2024-01-01T00:00:00Z",
            "display_name": "John Doe",
            "email": "user@example.com",
            "first_name": "John",
            "id": "550e8400-e29b-41d4-a716-446655440001",
            "is_active": true,
            "is_verified": true,
            "last_login_at": "2024-01-15T10:30:00Z",
            "last_name": "Doe",
            "locale": "en-US",
            "mfa_enabled": false,
            "timezone": "America/New_York",
            "updated_at": "2024-01-15T10:30:00Z"
          }
        ]
      },
      "UserSettingRead": {
        "properties": {
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "working_hours": {
            "additionalProperties": true,
            "type": "object",
            "title": "Working Hours"
          },
          "no_go_windows": {
            "items": {},
            "type": "array",
            "title": "No Go Windows"
          },
          "llm_provider_default": {
            "type": "string",
            "enum": [
              "anthropic",
              "openai"
            ],
            "title": "Llm Provider Default"
          },
          "llm_provider_locked": {
            "type": "boolean",
            "title": "Llm Provider Locked"
          },
          "onboarding_completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onboarding Completed At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "user_id",
          "tenant_id",
          "timezone",
          "working_hours",
          "no_go_windows",
          "llm_provider_default",
          "llm_provider_locked",
          "created_at",
          "updated_at"
        ],
        "title": "UserSettingRead"
      },
      "UserSettingUpdate": {
        "properties": {
          "timezone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "working_hours": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Working Hours"
          },
          "no_go_windows": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "No Go Windows"
          },
          "llm_provider_default": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "anthropic",
                  "openai"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider Default"
          },
          "llm_provider_locked": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider Locked"
          },
          "onboarding_completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onboarding Completed At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "UserSettingUpdate"
      },
      "UserUpdate": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name",
            "description": "User display name"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name",
            "description": "User first name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name",
            "description": "User last name"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone",
            "description": "User preferred timezone"
          },
          "locale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Locale",
            "description": "User preferred locale"
          },
          "avatar_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url",
            "description": "URL to user avatar"
          }
        },
        "type": "object",
        "title": "UserUpdate",
        "description": "Schema for updating user profile.\n\nExample:\n    {\n        \"display_name\": \"John Smith\",\n        \"timezone\": \"Europe/London\"\n    }",
        "examples": [
          {
            "display_name": "John Smith",
            "timezone": "Europe/London"
          }
        ]
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "WebhookEndpointCreate": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "url": {
            "type": "string",
            "maxLength": 2083,
            "minLength": 1,
            "format": "uri",
            "title": "Url"
          },
          "max_attempts": {
            "type": "integer",
            "maximum": 8.0,
            "minimum": 0.0,
            "title": "Max Attempts",
            "default": 4
          },
          "fallback_to_email": {
            "type": "boolean",
            "title": "Fallback To Email",
            "default": false
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": true
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "url"
        ],
        "title": "WebhookEndpointCreate"
      },
      "WebhookEndpointCreatedResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "secret_preview": {
            "type": "string",
            "title": "Secret Preview"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "max_attempts": {
            "type": "integer",
            "title": "Max Attempts"
          },
          "fallback_to_email": {
            "type": "boolean",
            "title": "Fallback To Email"
          },
          "last_delivery_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Delivery At"
          },
          "last_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Status"
          },
          "consecutive_failures": {
            "type": "integer",
            "title": "Consecutive Failures"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "secret": {
            "type": "string",
            "title": "Secret",
            "description": "Plaintext shared secret, shown once"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "user_id",
          "name",
          "url",
          "secret_preview",
          "enabled",
          "max_attempts",
          "fallback_to_email",
          "consecutive_failures",
          "created_at",
          "updated_at",
          "secret"
        ],
        "title": "WebhookEndpointCreatedResponse",
        "description": "Special response returned ONCE on POST /webhooks - includes\nfull plaintext secret for the user to copy. Never stored."
      },
      "WebhookEndpointRead": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "user_id": {
            "type": "string",
            "title": "User Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "secret_preview": {
            "type": "string",
            "title": "Secret Preview"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "max_attempts": {
            "type": "integer",
            "title": "Max Attempts"
          },
          "fallback_to_email": {
            "type": "boolean",
            "title": "Fallback To Email"
          },
          "last_delivery_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Delivery At"
          },
          "last_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Status"
          },
          "consecutive_failures": {
            "type": "integer",
            "title": "Consecutive Failures"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "user_id",
          "name",
          "url",
          "secret_preview",
          "enabled",
          "max_attempts",
          "fallback_to_email",
          "consecutive_failures",
          "created_at",
          "updated_at"
        ],
        "title": "WebhookEndpointRead",
        "description": "Read schema - secret_preview only (never full secret)."
      },
      "WebhookEndpointUpdate": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 120,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2083,
                "minLength": 1,
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "max_attempts": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 8.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attempts"
          },
          "fallback_to_email": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fallback To Email"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "WebhookEndpointUpdate"
      },
      "WeekDay": {
        "properties": {
          "day_date": {
            "type": "string",
            "format": "date",
            "title": "Day Date",
            "description": "Date of this day"
          },
          "day_name": {
            "type": "string",
            "title": "Day Name",
            "description": "Day name (e.g., 'Monday')"
          },
          "is_today": {
            "type": "boolean",
            "title": "Is Today",
            "description": "Whether this is today",
            "default": false
          },
          "is_weekend": {
            "type": "boolean",
            "title": "Is Weekend",
            "description": "Whether this is a weekend day",
            "default": false
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "Items",
            "description": "Items for this day"
          },
          "item_count": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Item Count",
            "description": "Number of items",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "day_date",
          "day_name"
        ],
        "title": "WeekDay",
        "description": "Schema for a single day in week view."
      },
      "WeekViewResponse": {
        "properties": {
          "week_number": {
            "type": "integer",
            "maximum": 53.0,
            "minimum": 1.0,
            "title": "Week Number",
            "description": "ISO week number"
          },
          "year": {
            "type": "integer",
            "title": "Year",
            "description": "Year"
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "title": "Start Date",
            "description": "Week start date"
          },
          "end_date": {
            "type": "string",
            "format": "date",
            "title": "End Date",
            "description": "Week end date"
          },
          "days": {
            "items": {
              "$ref": "#/components/schemas/WeekDay"
            },
            "type": "array",
            "maxItems": 7,
            "minItems": 7,
            "title": "Days",
            "description": "Days in the week"
          },
          "all_day_items": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MeetingItem"
                },
                {
                  "$ref": "#/components/schemas/EventItem"
                },
                {
                  "$ref": "#/components/schemas/TaskItem"
                }
              ],
              "discriminator": {
                "propertyName": "item_type",
                "mapping": {
                  "event": "#/components/schemas/EventItem",
                  "meeting": "#/components/schemas/MeetingItem",
                  "task": "#/components/schemas/TaskItem"
                }
              }
            },
            "type": "array",
            "title": "All Day Items",
            "description": "All-day items spanning the week"
          },
          "total_items": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Items",
            "description": "Total items in the week"
          },
          "total_meetings": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Meetings",
            "description": "Total meetings",
            "default": 0
          },
          "total_events": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Events",
            "description": "Total events",
            "default": 0
          },
          "total_tasks": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Total Tasks",
            "description": "Total tasks",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "week_number",
          "year",
          "start_date",
          "end_date",
          "days",
          "total_items"
        ],
        "title": "WeekViewResponse",
        "description": "Schema for week view response.\n\nExample:\n    {\n        \"week_number\": 3,\n        \"year\": 2024,\n        \"start_date\": \"2024-01-15\",\n        \"end_date\": \"2024-01-21\",\n        \"days\": [...],\n        \"total_items\": 25\n    }",
        "examples": [
          {
            "all_day_items": [],
            "days": [],
            "end_date": "2024-01-21",
            "start_date": "2024-01-15",
            "total_events": 5,
            "total_items": 25,
            "total_meetings": 15,
            "total_tasks": 5,
            "week_number": 3,
            "year": 2024
          }
        ]
      },
      "WorkingHoursEnvelope": {
        "properties": {
          "working_hours": {
            "additionalProperties": true,
            "type": "object",
            "title": "Working Hours"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "working_hours"
        ],
        "title": "WorkingHoursEnvelope"
      },
      "app__schemas__auth__LoginRequest": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email",
            "description": "User email address"
          },
          "password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 8,
            "title": "Password",
            "description": "User password"
          },
          "remember_me": {
            "type": "boolean",
            "title": "Remember Me",
            "description": "Whether to extend session duration",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "email",
          "password"
        ],
        "title": "LoginRequest",
        "description": "Schema for login request.\n\nExample:\n    {\n        \"email\": \"user@example.com\",\n        \"password\": \"securepassword123\"\n    }",
        "examples": [
          {
            "email": "user@example.com",
            "password": "securepassword123",
            "remember_me": false
          }
        ]
      },
      "app__schemas__auth__TokenResponse": {
        "properties": {
          "access_token": {
            "type": "string",
            "title": "Access Token",
            "description": "JWT access token"
          },
          "refresh_token": {
            "type": "string",
            "title": "Refresh Token",
            "description": "Refresh token for obtaining new access tokens"
          },
          "token_type": {
            "type": "string",
            "title": "Token Type",
            "description": "Token type",
            "default": "bearer"
          },
          "expires_in": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Expires In",
            "description": "Access token expiration time in seconds"
          },
          "refresh_expires_in": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Expires In",
            "description": "Refresh token expiration time in seconds"
          },
          "scope": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scope",
            "description": "Token scope"
          }
        },
        "type": "object",
        "required": [
          "access_token",
          "refresh_token",
          "expires_in"
        ],
        "title": "TokenResponse",
        "description": "Schema for authentication token response.\n\nExample:\n    {\n        \"access_token\": \"eyJhbGciOiJIUzI1NiIs...\",\n        \"refresh_token\": \"dGhpcyBpcyBhIHJlZnJl...\",\n        \"token_type\": \"bearer\",\n        \"expires_in\": 3600\n    }",
        "examples": [
          {
            "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
            "expires_in": 3600,
            "refresh_expires_in": 604800,
            "refresh_token": "dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4...",
            "scope": "read write",
            "token_type": "bearer"
          }
        ]
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "type": "http",
        "scheme": "bearer"
      },
      "OAuth2PasswordBearer": {
        "type": "oauth2",
        "flows": {
          "password": {
            "scopes": {},
            "tokenUrl": "/api/v1/auth/login/form"
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "/timemanager",
      "description": "Relative to the site the user is logged into"
    },
    {
      "url": "https://www.solvuh.com/timemanager",
      "description": "Primary demo deployment"
    }
  ]
}