{"openapi":"3.1.0","info":{"title":"My Coach Finder","description":"Multi-subdomain SaaS Platform for Coach Matching","version":"1.0.0"},"paths":{"/health":{"get":{"summary":"Health Check","description":"System health check endpoint","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/go":{"get":{"summary":"Smart Redirect","description":"Smart redirect endpoint - checks if user is logged in and redirects appropriately\nServes an HTML page that reads token from localStorage and redirects based on auth status","operationId":"smart_redirect_go_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.ico":{"get":{"summary":"Favicon","description":"Favicon endpoint to prevent 404 errors","operationId":"favicon_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ae947d99139e85b320c623bfc6903d64.txt":{"get":{"summary":"Domain Validation","description":"Domain validation file for email service","operationId":"domain_validation_ae947d99139e85b320c623bfc6903d64_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/apple-app-site-association":{"get":{"summary":"Apple App Site Association","description":"Apple App Site Association file for Universal Links","operationId":"apple_app_site_association__well_known_apple_app_site_association_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/go":{"get":{"tags":["Authentication"],"summary":"Smart Redirect","description":"Smart redirect endpoint - checks if user is logged in (via localStorage) and redirects appropriately:\n- If logged in as coach → redirect to /app/dashboard\n- If logged in as coachee → redirect to /app/coachee-profile\n- If not logged in → redirect to /auth/login\n\nThis endpoint serves an HTML page that reads the token from localStorage\nand then performs the redirect based on the user's role.","operationId":"smart_redirect_auth_go_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/auth/login":{"get":{"tags":["Authentication"],"summary":"Login Page","description":"Serve login page","operationId":"login_page_auth_login_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["Authentication"],"summary":"Login","description":"Login with email and password\n\nIf 2FA is enabled, returns requires_2fa=true instead of token\n\nArgs:\n    email: User email\n    password: User password\n\nReturns:\n    JWT access token OR 2FA requirement message","operationId":"login_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/register":{"get":{"tags":["Authentication"],"summary":"Register Page","description":"Serve register page","operationId":"register_page_auth_register_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["Authentication"],"summary":"Register","description":"Register a new user with email and password\nAll users get both coach and coachee roles automatically\n\nArgs:\n    email: User email (validated format)\n    password: Plain text password (min 8 characters with complexity)\n    first_name: User's first name\n    last_name: User's last name\n\nReturns:\n    JWT access token","operationId":"register_auth_register_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_register_auth_register_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/verify-age":{"get":{"tags":["Authentication"],"summary":"Verify Age Page","description":"Serve age verification page","operationId":"verify_age_page_auth_verify_age_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["Authentication"],"summary":"Verify Age","description":"Verify user age by saving their birthday.\nUser must be at least 18 years old.\n\nArgs:\n    birthday: Birthday in YYYY-MM-DD format\n\nReturns:\n    Success message","operationId":"verify_age_auth_verify_age_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyAgeRequest"}}},"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/select-role":{"get":{"tags":["Authentication"],"summary":"Select Role Page","description":"Serve role selection page","operationId":"select_role_page_auth_select_role_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["Authentication"],"summary":"Select Role","description":"Set user's initial role preference (coach or coachee).\nThis is called after age verification for new users.\n\nArgs:\n    role: Either 'coach' or 'coachee'\n\nReturns:\n    Success message with redirect URL","operationId":"select_role_auth_select_role_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelectRoleRequest"}}},"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/me":{"get":{"tags":["Authentication"],"summary":"Get Current User Info","description":"Get current authenticated user information\n\nRequires: Bearer token in Authorization header\n\nReturns:\n    Current user data (includes age_verified flag)","operationId":"get_current_user_info_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/logout":{"post":{"tags":["Authentication"],"summary":"Logout","description":"Logout endpoint - Invalidates all user tokens\n\nThis invalidates all tokens for this user across all devices.\nUser will need to log in again on all devices.\nProvides strong security when user explicitly logs out.\n\nReturns:\n    Success message","operationId":"logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/validate-token":{"get":{"tags":["Authentication"],"summary":"Validate Token","description":"Validate if the current token is still valid\n\nThis endpoint allows apps to check if their stored token is still valid.\nUseful for:\n- Checking on app startup\n- Periodic token validation\n- Detecting if token expired or user account was deactivated\n\nReturns:\n    Token validity status and user info","operationId":"validate_token_auth_validate_token_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/change-password":{"post":{"tags":["Authentication"],"summary":"Change Password","description":"Change user password\n\nArgs:\n    request: Password change request with current and new password\n    current_user: Currently authenticated user\n    db: Database session\n\nReturns:\n    Success message","operationId":"change_password_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"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/update-profile":{"put":{"tags":["Authentication"],"summary":"Update Profile","description":"Update user profile information\n\nArgs:\n    request: Profile update request with first_name and last_name\n    current_user: Currently authenticated user\n    db: Database session\n\nReturns:\n    Success message","operationId":"update_profile_auth_update_profile_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileRequest"}}},"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/generate-api-token":{"post":{"tags":["Authentication"],"summary":"Generate Api Token","description":"Generate a new API key for external integrations (Zapier, webhooks, etc.)\n\nThis endpoint creates a permanent API key that can be used instead of JWT tokens.\nKeys are tracked with usage statistics and can be revoked anytime.\n\nArgs:\n    name: Name for the API key (e.g., \"Zapier Integration\")\n    description: Optional description\n    current_user: Currently authenticated user\n    db: Database session\n\nReturns:\n    New API key (shown only once!)","operationId":"generate_api_token_auth_generate_api_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"allOf":[{"$ref":"#/components/schemas/Body_generate_api_token_auth_generate_api_token_post"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/2fa/setup":{"post":{"tags":["Authentication"],"summary":"Setup 2Fa","description":"Initialize 2FA setup - generates secret and QR code\n\nReturns:\n    secret: TOTP secret key (for manual entry)\n    qr_code: Base64-encoded QR code image","operationId":"setup_2fa_auth_2fa_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/2fa/verify-setup":{"post":{"tags":["Authentication"],"summary":"Verify 2Fa Setup","description":"Verify 2FA setup by providing a token from authenticator app\n\nArgs:\n    token: 6-digit code from authenticator app","operationId":"verify_2fa_setup_auth_2fa_verify_setup_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_verify_2fa_setup_auth_2fa_verify_setup_post"}}},"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/2fa/disable":{"post":{"tags":["Authentication"],"summary":"Disable 2Fa","description":"Disable 2FA (requires password confirmation)\n\nArgs:\n    password: User's password for verification","operationId":"disable_2fa_auth_2fa_disable_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_disable_2fa_auth_2fa_disable_post"}}},"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/2fa/verify":{"post":{"tags":["Authentication"],"summary":"Verify 2Fa","description":"Verify 2FA token during login\n\nArgs:\n    email: User email\n    password: User password\n    token: 6-digit 2FA code\n\nReturns:\n    JWT access token if successful","operationId":"verify_2fa_auth_2fa_verify_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_verify_2fa_auth_2fa_verify_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/forgot-password":{"get":{"tags":["Authentication"],"summary":"Forgot Password Page","description":"Serve forgot password page","operationId":"forgot_password_page_auth_forgot_password_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["Authentication"],"summary":"Forgot Password","description":"Request password reset - sends email with reset link\n\nArgs:\n    email: User email address\n\nReturns:\n    Success message (always, to prevent user enumeration)","operationId":"forgot_password_auth_forgot_password_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forgot_password_auth_forgot_password_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/reset-password":{"get":{"tags":["Authentication"],"summary":"Reset Password Page","description":"Serve reset password page","operationId":"reset_password_page_auth_reset_password_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["Authentication"],"summary":"Reset Password","description":"Reset password with token\n\nArgs:\n    token: Password reset JWT token\n    new_password: New password\n\nReturns:\n    Success message","operationId":"reset_password_auth_reset_password_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_reset_password_auth_reset_password_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/":{"get":{"tags":["Authentication"],"summary":"Auth Info","description":"Authentication API information","operationId":"auth_info_auth__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/{provider}/login":{"get":{"tags":["OAuth 2.0"],"summary":"Oauth Login","description":"Initiate OAuth login flow for the specified provider.\n\nSupported providers: google, apple, linkedin\n\nQuery parameters:\n    - return_url (optional): URL to redirect to after successful authentication\n\nExample:\n    GET /auth/google/login?return_url=/dashboard","operationId":"oauth_login_auth__provider__login_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"return_url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"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/{provider}/callback":{"get":{"tags":["OAuth 2.0"],"summary":"Oauth Callback","description":"OAuth callback endpoint for all providers.\n\nThis endpoint handles the OAuth response and:\n1. Validates the state token (CSRF protection)\n2. Exchanges authorization code for access token\n3. Fetches user info from the provider\n4. Creates or updates user in database\n5. Generates JWT session token\n6. Redirects to return_url or returns JSON with token\n\nSupports both GET (Apple form_post response_mode) and POST.","operationId":"oauth_callback_auth__provider__callback_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["OAuth 2.0"],"summary":"Oauth Callback","description":"OAuth callback endpoint for all providers.\n\nThis endpoint handles the OAuth response and:\n1. Validates the state token (CSRF protection)\n2. Exchanges authorization code for access token\n3. Fetches user info from the provider\n4. Creates or updates user in database\n5. Generates JWT session token\n6. Redirects to return_url or returns JSON with token\n\nSupports both GET (Apple form_post response_mode) and POST.","operationId":"oauth_callback_auth__provider__callback_post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/providers":{"get":{"tags":["OAuth 2.0"],"summary":"Get Oauth Providers","description":"Get list of configured OAuth providers.\n\nReturns:\n    JSON with available providers and their configuration status","operationId":"get_oauth_providers_auth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/google/native":{"post":{"tags":["OAuth 2.0"],"summary":"Google Native Login","description":"Native Google Sign-In endpoint for mobile apps.\n\nThis endpoint accepts an ID token from Google Sign-In SDK and returns a JWT.\nUse this instead of the browser redirect flow for native mobile apps.\n\nAccepts id_token from:\n    - Query parameter: POST /auth/google/native?id_token=...\n    - JSON body: {\"id_token\": \"...\"}\n\nReturns:\n    JWT access token and user information\n\nExample (iOS/Android):\n    - Use Google Sign-In SDK to get ID token\n    - POST to this endpoint with the ID token\n    - Receive JWT access token to use for API calls","operationId":"google_native_login_auth_google_native_post","parameters":[{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/apple/native":{"post":{"tags":["OAuth 2.0"],"summary":"Apple Native Login","description":"Native Apple Sign-In endpoint for mobile apps.\n\nThis endpoint accepts an ID token from Apple Sign-In SDK and returns a JWT.\nUse this instead of the browser redirect flow for native mobile apps.\n\nAccepts JSON body: {\"id_token\": \"...\", \"first_name\": \"...\", \"last_name\": \"...\"}\n\nReturns:\n    JWT access token and user information","operationId":"apple_native_login_auth_apple_native_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/linkedin/native":{"post":{"tags":["OAuth 2.0"],"summary":"Linkedin Native Login","description":"Native LinkedIn Sign-In endpoint for mobile apps.\n\nThis endpoint accepts an access token from LinkedIn SDK and returns a JWT.\nUse this instead of the browser redirect flow for native mobile apps.\n\nArgs:\n    access_token: LinkedIn access token from LinkedIn SDK\n\nReturns:\n    JWT access token and user information\n\nExample:\n    - Use LinkedIn SDK to get access token\n    - POST to this endpoint with the access token\n    - Receive JWT access token to use for API calls","operationId":"linkedin_native_login_auth_linkedin_native_post","parameters":[{"name":"access_token","in":"query","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/":{"get":{"tags":["API"],"summary":"Api Root","description":"API root endpoint with version information","operationId":"api_root_api__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/users":{"get":{"tags":["API"],"summary":"Get Users","description":"Get list of users - PROTECTED ENDPOINT\n\nSecurity: Regular authenticated users can only see their own user record.\nFor admin access to all users, use the admin panel API at /var/www/html/admin-v1/\n\nReturns: List containing only the current user's data (prevents data leakage)","operationId":"get_users_api_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of records to skip","default":0,"title":"Skip"},"description":"Number of records to skip"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of records to return","default":100,"title":"Limit"},"description":"Maximum number of records to return"},{"name":"is_coach","in":"query","required":false,"schema":{"type":"boolean","description":"Filter by coach role","title":"Is Coach"},"description":"Filter by coach role"},{"name":"is_coachee","in":"query","required":false,"schema":{"type":"boolean","description":"Filter by coachee role","title":"Is Coachee"},"description":"Filter by coachee role"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"},"title":"Response Get Users Api Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["API"],"summary":"Create User","description":"Create a new user (coach or coachee)","operationId":"create_user_api_users_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/{user_id}":{"get":{"tags":["API"],"summary":"Get User","description":"Get a specific user by ID - Authorization required: users can only access their own data","operationId":"get_user_api_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coaches":{"get":{"tags":["API"],"summary":"Get Coaches","description":"Get list of coach profiles - PROTECTED ENDPOINT\n\nSecurity: Regular authenticated users can only see their own coach profile.\nFor public coach browsing (future), create separate /api/coaches/browse endpoint.\nFor admin access to all coaches, use the admin panel API.\n\nReturns: List containing only the current user's coach profile","operationId":"get_coaches_api_coaches_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"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/CoachProfile"},"title":"Response Get Coaches Api Coaches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coaches/browse/all":{"get":{"tags":["API"],"summary":"Browse All Coaches","description":"Public endpoint to browse all coaches with profiles.\nReturns only VERIFIED coaches for public listing.","operationId":"browse_all_coaches_api_coaches_browse_all_get","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coaches/{username}":{"get":{"tags":["API"],"summary":"Get Coach By Username","description":"Get coach profile by username (for booking pages)","operationId":"get_coach_by_username_api_coaches__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coaches/{username}/user":{"get":{"tags":["API"],"summary":"Get Coach User Info","description":"Get user info for a coach by username","operationId":"get_coach_user_info_api_coaches__username__user_get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coachees":{"get":{"tags":["API"],"summary":"Get Coachees","description":"Get list of coachee profiles - PROTECTED ENDPOINT\n\nSecurity: Regular authenticated users can only see their own coachee profile.\nPrevents data leakage of phone numbers and personal information.\nFor admin access to all coachees, use the admin panel API.\n\nReturns: List containing only the current user's coachee profile","operationId":"get_coachees_api_coachees_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of records to skip","default":0,"title":"Skip"},"description":"Number of records to skip"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of records to return","default":100,"title":"Limit"},"description":"Maximum number of records to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CoacheeProfile"},"title":"Response Get Coachees Api Coachees Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["API"],"summary":"Create Coachee","description":"Create a new coachee profile for an existing user","operationId":"create_coachee_api_coachees_post","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoacheeProfileCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoacheeProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coachees/{coachee_id}":{"get":{"tags":["API"],"summary":"Get Coachee","description":"Get a specific coachee profile by ID - Authorization required: users can only access their own coachee profile","operationId":"get_coachee_api_coachees__coachee_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"coachee_id","in":"path","required":true,"schema":{"type":"integer","title":"Coachee Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoacheeProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["API"],"summary":"Update Coachee","description":"Update a coachee profile","operationId":"update_coachee_api_coachees__coachee_id__put","parameters":[{"name":"coachee_id","in":"path","required":true,"schema":{"type":"integer","title":"Coachee Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoacheeProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoacheeProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["API"],"summary":"Delete Coachee","description":"Delete a coachee profile","operationId":"delete_coachee_api_coachees__coachee_id__delete","parameters":[{"name":"coachee_id","in":"path","required":true,"schema":{"type":"integer","title":"Coachee Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coachees/{coachee_id}/sessions":{"get":{"tags":["API"],"summary":"Get Coachee Sessions","description":"Get all sessions for a specific coachee","operationId":"get_coachee_sessions_api_coachees__coachee_id__sessions_get","parameters":[{"name":"coachee_id","in":"path","required":true,"schema":{"type":"integer","title":"Coachee Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"Filter by status","title":"Status"},"description":"Filter by status"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionPublic"},"title":"Response Get Coachee Sessions Api Coachees  Coachee Id  Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coachees/{coachee_id}/coaches":{"get":{"tags":["API"],"summary":"Get Coachee Coaches","description":"Get all coaches associated with a specific coachee","operationId":"get_coachee_coaches_api_coachees__coachee_id__coaches_get","parameters":[{"name":"coachee_id","in":"path","required":true,"schema":{"type":"integer","title":"Coachee Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CoachProfile"},"title":"Response Get Coachee Coaches Api Coachees  Coachee Id  Coaches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"tags":["Web"],"summary":"Web Stats","description":"API endpoint for public stats","operationId":"web_stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/contact":{"post":{"tags":["API"],"summary":"Submit Contact Form","description":"Handle contact form submissions","operationId":"submit_contact_form_api_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactFormRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coach/{slug}/contact":{"post":{"tags":["API"],"summary":"Submit Coach Contact","description":"Handle public contact requests for a coach profile","operationId":"submit_coach_contact_api_coach__slug__contact_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachContactRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coach/{slug}/reviews":{"post":{"tags":["API"],"summary":"Submit Public Coach Review","description":"Submit a public coach review that must be verified via email.","operationId":"submit_public_coach_review_api_coach__slug__reviews_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCoachReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coach/reviews/verify":{"get":{"tags":["API"],"summary":"Verify Public Coach Review","description":"Verify a public coach review via emailed token.","operationId":"verify_public_coach_review_api_coach_reviews_verify_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coach/icf":{"get":{"tags":["API"],"summary":"Get Icf Certification","description":"Get ICF certification data for current coach","operationId":"get_icf_certification_api_coach_icf_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["API"],"summary":"Update Icf Certification","description":"Update ICF certification data for current coach","operationId":"update_icf_certification_api_coach_icf_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ICFUpdateRequest"}}},"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":[]}]}},"/api-documentation/":{"get":{"tags":["Documentation"],"summary":"Docs Home","operationId":"docs_home_api_documentation__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api-documentation/api":{"get":{"tags":["Documentation"],"summary":"Api Docs","operationId":"api_docs_api_documentation_api_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/app/go":{"get":{"tags":["Application"],"summary":"Smart Redirect","description":"Smart redirect endpoint - checks if user is logged in and redirects:\n- If logged in → redirect to /dashboard (which will route to /coach/dashboard or /coachee/dashboard)\n- If not logged in → redirect to /auth/login\nWorks for app, ios, and android subdomains","operationId":"smart_redirect_app_go_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/dashboard":{"get":{"tags":["Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_app_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/":{"get":{"tags":["Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_app__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/find-coach":{"get":{"tags":["Application"],"summary":"Find Coach","description":"Find Coach page - for coachees to search and find coaches","operationId":"find_coach_app_find_coach_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/coach/{username}":{"get":{"tags":["Application"],"summary":"Coach Details","description":"Coach details page - view a coach's profile within the app","operationId":"coach_details_app_coach__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/documents":{"get":{"tags":["Application"],"summary":"App Documents","description":"Documents page for file uploads and management - role-specific","operationId":"app_documents_app_documents_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/sessions":{"get":{"tags":["Application"],"summary":"App Sessions","description":"Sessions listing page - role-specific","operationId":"app_sessions_app_sessions_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/sessions/new":{"get":{"tags":["Application"],"summary":"App Session Wizard","description":"Multi-step wizard for creating new sessions - coach only","operationId":"app_session_wizard_app_sessions_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/session/{session_id}/edit":{"get":{"tags":["Application"],"summary":"App Session Wizard Edit","description":"Multi-step wizard for editing existing sessions - coach only","operationId":"app_session_wizard_edit_app_session__session_id__edit_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/chat":{"get":{"tags":["Application"],"summary":"App Chat","description":"Chat page for messaging between users - role-specific","operationId":"app_chat_app_chat_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/offerings":{"get":{"tags":["Application"],"summary":"App Offerings","description":"Coaching offerings page - coach only","operationId":"app_offerings_app_offerings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/offerings/new":{"get":{"tags":["Application"],"summary":"App Offering Wizard","description":"Multi-step wizard for creating new offerings - coach only","operationId":"app_offering_wizard_app_offerings_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/offerings/{offering_id}/edit":{"get":{"tags":["Application"],"summary":"App Offering Wizard Edit","description":"Multi-step wizard for editing existing offerings - coach only","operationId":"app_offering_wizard_edit_app_offerings__offering_id__edit_get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/offerings/browse":{"get":{"tags":["Application"],"summary":"Browse Offerings","description":"Public offerings browse page - for coachees to purchase","operationId":"browse_offerings_app_offerings_browse_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/offerings/{offering_id}":{"get":{"tags":["Application"],"summary":"Offering Details","description":"Offering details page - view full details before purchase","operationId":"offering_details_app_offerings__offering_id__get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/settings":{"get":{"tags":["Application"],"summary":"App Settings","description":"Settings page - shared between coach and coachee roles","operationId":"app_settings_app_settings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/system-boards":{"get":{"tags":["Application"],"summary":"App System Boards","description":"System boards page - shared between coach and coachee roles","operationId":"app_system_boards_app_system_boards_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/community":{"get":{"tags":["Application"],"summary":"App Community","description":"Community page - coach only","operationId":"app_community_app_community_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/ai-assistant":{"get":{"tags":["Application"],"summary":"Ai Assistant Page","description":"AI Assistant Chat Interface","operationId":"ai_assistant_page_app_ai_assistant_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app/system-board/{board_id}":{"get":{"tags":["Application"],"summary":"App System Board","description":"Individual system board page - authenticated","operationId":"app_system_board_app_system_board__board_id__get","parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app/session/{session_id}":{"get":{"tags":["Application"],"summary":"App Session Detail","description":"Session detail page - authentication handled by JavaScript","operationId":"app_session_detail_app_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/go":{"get":{"tags":["Coach Application"],"summary":"Smart Redirect","description":"Smart redirect endpoint - checks if user is logged in and redirects:\n- If logged in → redirect to /dashboard (which will route to /coach/dashboard or /coachee/dashboard)\n- If not logged in → redirect to /auth/login\nWorks for app, ios, and android subdomains","operationId":"smart_redirect_coach_go_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/dashboard":{"get":{"tags":["Coach Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_coach_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/":{"get":{"tags":["Coach Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_coach__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/find-coach":{"get":{"tags":["Coach Application"],"summary":"Find Coach","description":"Find Coach page - for coachees to search and find coaches","operationId":"find_coach_coach_find_coach_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/coach/{username}":{"get":{"tags":["Coach Application"],"summary":"Coach Details","description":"Coach details page - view a coach's profile within the app","operationId":"coach_details_coach_coach__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/documents":{"get":{"tags":["Coach Application"],"summary":"App Documents","description":"Documents page for file uploads and management - role-specific","operationId":"app_documents_coach_documents_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/sessions":{"get":{"tags":["Coach Application"],"summary":"App Sessions","description":"Sessions listing page - role-specific","operationId":"app_sessions_coach_sessions_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/sessions/new":{"get":{"tags":["Coach Application"],"summary":"App Session Wizard","description":"Multi-step wizard for creating new sessions - coach only","operationId":"app_session_wizard_coach_sessions_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/session/{session_id}/edit":{"get":{"tags":["Coach Application"],"summary":"App Session Wizard Edit","description":"Multi-step wizard for editing existing sessions - coach only","operationId":"app_session_wizard_edit_coach_session__session_id__edit_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/chat":{"get":{"tags":["Coach Application"],"summary":"App Chat","description":"Chat page for messaging between users - role-specific","operationId":"app_chat_coach_chat_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/offerings":{"get":{"tags":["Coach Application"],"summary":"App Offerings","description":"Coaching offerings page - coach only","operationId":"app_offerings_coach_offerings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/offerings/new":{"get":{"tags":["Coach Application"],"summary":"App Offering Wizard","description":"Multi-step wizard for creating new offerings - coach only","operationId":"app_offering_wizard_coach_offerings_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/offerings/{offering_id}/edit":{"get":{"tags":["Coach Application"],"summary":"App Offering Wizard Edit","description":"Multi-step wizard for editing existing offerings - coach only","operationId":"app_offering_wizard_edit_coach_offerings__offering_id__edit_get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/offerings/browse":{"get":{"tags":["Coach Application"],"summary":"Browse Offerings","description":"Public offerings browse page - for coachees to purchase","operationId":"browse_offerings_coach_offerings_browse_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/offerings/{offering_id}":{"get":{"tags":["Coach Application"],"summary":"Offering Details","description":"Offering details page - view full details before purchase","operationId":"offering_details_coach_offerings__offering_id__get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/settings":{"get":{"tags":["Coach Application"],"summary":"App Settings","description":"Settings page - shared between coach and coachee roles","operationId":"app_settings_coach_settings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/system-boards":{"get":{"tags":["Coach Application"],"summary":"App System Boards","description":"System boards page - shared between coach and coachee roles","operationId":"app_system_boards_coach_system_boards_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/community":{"get":{"tags":["Coach Application"],"summary":"App Community","description":"Community page - coach only","operationId":"app_community_coach_community_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/ai-assistant":{"get":{"tags":["Coach Application"],"summary":"Ai Assistant Page","description":"AI Assistant Chat Interface","operationId":"ai_assistant_page_coach_ai_assistant_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/system-board/{board_id}":{"get":{"tags":["Coach Application"],"summary":"App System Board","description":"Individual system board page - authenticated","operationId":"app_system_board_coach_system_board__board_id__get","parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/session/{session_id}":{"get":{"tags":["Coach Application"],"summary":"App Session Detail","description":"Session detail page - authentication handled by JavaScript","operationId":"app_session_detail_coach_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/blog":{"get":{"tags":["Coach Only"],"summary":"Coach Blog Management","description":"Blog management page - only for coaches","operationId":"coach_blog_management_coach_blog_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coach/presentation":{"get":{"tags":["Coach Only"],"summary":"Coach Presentation","description":"Coach presentation page - only for coaches","operationId":"coach_presentation_coach_presentation_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/go":{"get":{"tags":["Coachee Application"],"summary":"Smart Redirect","description":"Smart redirect endpoint - checks if user is logged in and redirects:\n- If logged in → redirect to /dashboard (which will route to /coach/dashboard or /coachee/dashboard)\n- If not logged in → redirect to /auth/login\nWorks for app, ios, and android subdomains","operationId":"smart_redirect_coachee_go_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/dashboard":{"get":{"tags":["Coachee Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_coachee_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/":{"get":{"tags":["Coachee Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_coachee__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/find-coach":{"get":{"tags":["Coachee Application"],"summary":"Find Coach","description":"Find Coach page - for coachees to search and find coaches","operationId":"find_coach_coachee_find_coach_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/coach/{username}":{"get":{"tags":["Coachee Application"],"summary":"Coach Details","description":"Coach details page - view a coach's profile within the app","operationId":"coach_details_coachee_coach__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coachee/documents":{"get":{"tags":["Coachee Application"],"summary":"App Documents","description":"Documents page for file uploads and management - role-specific","operationId":"app_documents_coachee_documents_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/sessions":{"get":{"tags":["Coachee Application"],"summary":"App Sessions","description":"Sessions listing page - role-specific","operationId":"app_sessions_coachee_sessions_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/sessions/new":{"get":{"tags":["Coachee Application"],"summary":"App Session Wizard","description":"Multi-step wizard for creating new sessions - coach only","operationId":"app_session_wizard_coachee_sessions_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/session/{session_id}/edit":{"get":{"tags":["Coachee Application"],"summary":"App Session Wizard Edit","description":"Multi-step wizard for editing existing sessions - coach only","operationId":"app_session_wizard_edit_coachee_session__session_id__edit_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coachee/chat":{"get":{"tags":["Coachee Application"],"summary":"App Chat","description":"Chat page for messaging between users - role-specific","operationId":"app_chat_coachee_chat_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/offerings":{"get":{"tags":["Coachee Application"],"summary":"App Offerings","description":"Coaching offerings page - coach only","operationId":"app_offerings_coachee_offerings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/offerings/new":{"get":{"tags":["Coachee Application"],"summary":"App Offering Wizard","description":"Multi-step wizard for creating new offerings - coach only","operationId":"app_offering_wizard_coachee_offerings_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/offerings/{offering_id}/edit":{"get":{"tags":["Coachee Application"],"summary":"App Offering Wizard Edit","description":"Multi-step wizard for editing existing offerings - coach only","operationId":"app_offering_wizard_edit_coachee_offerings__offering_id__edit_get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coachee/offerings/browse":{"get":{"tags":["Coachee Application"],"summary":"Browse Offerings","description":"Public offerings browse page - for coachees to purchase","operationId":"browse_offerings_coachee_offerings_browse_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/offerings/{offering_id}":{"get":{"tags":["Coachee Application"],"summary":"Offering Details","description":"Offering details page - view full details before purchase","operationId":"offering_details_coachee_offerings__offering_id__get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coachee/settings":{"get":{"tags":["Coachee Application"],"summary":"App Settings","description":"Settings page - shared between coach and coachee roles","operationId":"app_settings_coachee_settings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/system-boards":{"get":{"tags":["Coachee Application"],"summary":"App System Boards","description":"System boards page - shared between coach and coachee roles","operationId":"app_system_boards_coachee_system_boards_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/community":{"get":{"tags":["Coachee Application"],"summary":"App Community","description":"Community page - coach only","operationId":"app_community_coachee_community_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/ai-assistant":{"get":{"tags":["Coachee Application"],"summary":"Ai Assistant Page","description":"AI Assistant Chat Interface","operationId":"ai_assistant_page_coachee_ai_assistant_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/coachee/system-board/{board_id}":{"get":{"tags":["Coachee Application"],"summary":"App System Board","description":"Individual system board page - authenticated","operationId":"app_system_board_coachee_system_board__board_id__get","parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coachee/session/{session_id}":{"get":{"tags":["Coachee Application"],"summary":"App Session Detail","description":"Session detail page - authentication handled by JavaScript","operationId":"app_session_detail_coachee_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/all/go":{"get":{"tags":["Shared Application"],"summary":"Smart Redirect","description":"Smart redirect endpoint - checks if user is logged in and redirects:\n- If logged in → redirect to /dashboard (which will route to /coach/dashboard or /coachee/dashboard)\n- If not logged in → redirect to /auth/login\nWorks for app, ios, and android subdomains","operationId":"smart_redirect_all_go_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/dashboard":{"get":{"tags":["Shared Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_all_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/":{"get":{"tags":["Shared Application"],"summary":"Dashboard","description":"Main app dashboard - role-specific view","operationId":"dashboard_all__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/find-coach":{"get":{"tags":["Shared Application"],"summary":"Find Coach","description":"Find Coach page - for coachees to search and find coaches","operationId":"find_coach_all_find_coach_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/coach/{username}":{"get":{"tags":["Shared Application"],"summary":"Coach Details","description":"Coach details page - view a coach's profile within the app","operationId":"coach_details_all_coach__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/all/documents":{"get":{"tags":["Shared Application"],"summary":"App Documents","description":"Documents page for file uploads and management - role-specific","operationId":"app_documents_all_documents_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/sessions":{"get":{"tags":["Shared Application"],"summary":"App Sessions","description":"Sessions listing page - role-specific","operationId":"app_sessions_all_sessions_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/sessions/new":{"get":{"tags":["Shared Application"],"summary":"App Session Wizard","description":"Multi-step wizard for creating new sessions - coach only","operationId":"app_session_wizard_all_sessions_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/session/{session_id}/edit":{"get":{"tags":["Shared Application"],"summary":"App Session Wizard Edit","description":"Multi-step wizard for editing existing sessions - coach only","operationId":"app_session_wizard_edit_all_session__session_id__edit_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/all/chat":{"get":{"tags":["Shared Application"],"summary":"App Chat","description":"Chat page for messaging between users - role-specific","operationId":"app_chat_all_chat_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/offerings":{"get":{"tags":["Shared Application"],"summary":"App Offerings","description":"Coaching offerings page - coach only","operationId":"app_offerings_all_offerings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/offerings/new":{"get":{"tags":["Shared Application"],"summary":"App Offering Wizard","description":"Multi-step wizard for creating new offerings - coach only","operationId":"app_offering_wizard_all_offerings_new_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/offerings/{offering_id}/edit":{"get":{"tags":["Shared Application"],"summary":"App Offering Wizard Edit","description":"Multi-step wizard for editing existing offerings - coach only","operationId":"app_offering_wizard_edit_all_offerings__offering_id__edit_get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/all/offerings/browse":{"get":{"tags":["Shared Application"],"summary":"Browse Offerings","description":"Public offerings browse page - for coachees to purchase","operationId":"browse_offerings_all_offerings_browse_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/offerings/{offering_id}":{"get":{"tags":["Shared Application"],"summary":"Offering Details","description":"Offering details page - view full details before purchase","operationId":"offering_details_all_offerings__offering_id__get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/all/settings":{"get":{"tags":["Shared Application"],"summary":"App Settings","description":"Settings page - shared between coach and coachee roles","operationId":"app_settings_all_settings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/system-boards":{"get":{"tags":["Shared Application"],"summary":"App System Boards","description":"System boards page - shared between coach and coachee roles","operationId":"app_system_boards_all_system_boards_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/community":{"get":{"tags":["Shared Application"],"summary":"App Community","description":"Community page - coach only","operationId":"app_community_all_community_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/ai-assistant":{"get":{"tags":["Shared Application"],"summary":"Ai Assistant Page","description":"AI Assistant Chat Interface","operationId":"ai_assistant_page_all_ai_assistant_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/all/system-board/{board_id}":{"get":{"tags":["Shared Application"],"summary":"App System Board","description":"Individual system board page - authenticated","operationId":"app_system_board_all_system_board__board_id__get","parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/all/session/{session_id}":{"get":{"tags":["Shared Application"],"summary":"App Session Detail","description":"Session detail page - authentication handled by JavaScript","operationId":"app_session_detail_all_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/robots.txt":{"get":{"tags":["Web"],"summary":"Robots Txt","description":"Serve robots.txt for search engine crawlers","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"tags":["Web"],"summary":"Sitemap Xml","description":"Generate dynamic sitemap.xml with all public pages and coach profiles","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"tags":["Web"],"summary":"Web Home","description":"Root endpoint handler\n- app.my-coach-finder.com: Smart redirect based on login status\n- my-coach-finder.com: Serve public homepage","operationId":"web_home__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/old":{"get":{"tags":["Web"],"summary":"Web Home Old","description":"Old homepage (backup)","operationId":"web_home_old_old_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/documents":{"get":{"tags":["Web"],"summary":"Documents Page","description":"Serve documents page","operationId":"documents_page_documents_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/imprint":{"get":{"tags":["Web"],"summary":"Imprint Page","description":"Serve Imprint page","operationId":"imprint_page_imprint_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/privacy":{"get":{"tags":["Web"],"summary":"Privacy Page","description":"Serve Privacy Policy page","operationId":"privacy_page_privacy_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/terms":{"get":{"tags":["Web"],"summary":"Terms Page","description":"Serve Terms and Conditions page","operationId":"terms_page_terms_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/roadmap":{"get":{"tags":["Web"],"summary":"Roadmap Page","description":"Serve Roadmap page","operationId":"roadmap_page_roadmap_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/faq":{"get":{"tags":["Web"],"summary":"Faq Page","description":"Serve FAQ page","operationId":"faq_page_faq_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/contact":{"get":{"tags":["Web"],"summary":"Contact Page","description":"Serve Contact page","operationId":"contact_page_contact_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/agentur":{"get":{"tags":["Web"],"summary":"Agentur Page","description":"Serve Agency page - strategic business scaling for coaches","operationId":"agentur_page_agentur_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api-documentation":{"get":{"tags":["Web"],"summary":"Api Documentation Page","description":"Serve API documentation page","operationId":"api_documentation_page_api_documentation_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/blog":{"get":{"tags":["Web"],"summary":"Blog Overview Page","description":"Public blog overview page - shows 9 random blog posts","operationId":"blog_overview_page_blog_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/blog/{slug}":{"get":{"tags":["Web"],"summary":"Blog Detail Page","description":"Public blog detail page - shows full blog post with comments","operationId":"blog_detail_page_blog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/podcast":{"get":{"tags":["Web"],"summary":"Podcast Page","description":"Serve Podcast page with RSS feed","operationId":"podcast_page_podcast_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/purchase/success":{"get":{"tags":["Web"],"summary":"Purchase Success Page","description":"Purchase success page","operationId":"purchase_success_page_purchase_success_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/purchase/cancel":{"get":{"tags":["Web"],"summary":"Purchase Cancel Page","description":"Purchase cancel page","operationId":"purchase_cancel_page_purchase_cancel_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/system-board/{board_id}":{"get":{"tags":["Web"],"summary":"System Board Redirect","description":"Redirect old system board URLs to coach prefix","operationId":"system_board_redirect_system_board__board_id__get","parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/b/{share_code}":{"get":{"tags":["Web"],"summary":"Board By Share Code","description":"Short shareable board URL - redirects to full board page\n\nURL format: my-coach-finder.com/b/{share_code}\nExample: my-coach-finder.com/b/abc123XYZ","operationId":"board_by_share_code_b__share_code__get","parameters":[{"name":"share_code","in":"path","required":true,"schema":{"type":"string","title":"Share Code"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/coach/{slug}":{"get":{"tags":["Web"],"summary":"Public Coach Profile","description":"Public coach profile page - displays all public information about a coach\nURL: my-coach-finder.com/coach/{slug}\n\nSupports both SEO-friendly slugs (e.g., max-mustermann) and usernames for backwards compatibility","operationId":"public_coach_profile_coach__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/documents/upload":{"post":{"tags":["Documents"],"summary":"Upload Document","description":"Upload a document to Bunny CDN and save metadata to database\n\nArgs:\n    file: File to upload\n    session_id: Optional session ID to associate with\n    description: Optional description\n    is_public: Whether coachee can see it\n\nRequires authentication.","operationId":"upload_document_documents_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_document_documents_upload_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Document"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/documents/":{"get":{"tags":["Documents"],"summary":"Get Documents","description":"Get list of documents with optional filtering\n\nAuthorization:\n- Users can only see documents they have access to (uploaded, public, or from their sessions)","operationId":"get_documents_documents__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"}},{"name":"uploaded_by_user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Uploaded By User Id"}},{"name":"is_public","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Document"},"title":"Response Get Documents Documents  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/documents/{document_id}":{"get":{"tags":["Documents"],"summary":"Get Document","description":"Get a specific document by ID\n\nAuthorization:\n- Coaches: Can access documents they uploaded\n- Coachees: Can access public documents OR documents from their sessions","operationId":"get_document_documents__document_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Document"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Documents"],"summary":"Update Document","description":"Update document metadata (not the file itself)\nOnly document owner can update","operationId":"update_document_documents__document_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Document"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Documents"],"summary":"Delete Document","description":"Delete a document from both database and Bunny CDN\nRequires authentication and ownership verification","operationId":"delete_document_documents__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/documents/session/{session_id}/documents":{"get":{"tags":["Documents"],"summary":"Get Session Documents","description":"Get all documents associated with a specific session","operationId":"get_session_documents_documents_session__session_id__documents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Document"},"title":"Response Get Session Documents Documents Session  Session Id  Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/documents/stats/summary":{"get":{"tags":["Documents"],"summary":"Get Documents Stats","description":"Get document statistics for the current user","operationId":"get_documents_stats_documents_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/documents/{document_id}/secure-url":{"get":{"tags":["Documents"],"summary":"Get Secure Download Url","description":"Get a secure signed URL for downloading a document.\nThe URL expires after the specified time (default 60 minutes).\n\nThis provides time-limited access to documents stored on BunnyNet CDN.\n\nArgs:\n    document_id: Document ID to get URL for\n    expiry_minutes: URL validity in minutes (default 60, max 1440 = 24 hours)\n\nReturns:\n    Object with secure_url and expiry information","operationId":"get_secure_download_url_documents__document_id__secure_url_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"expiry_minutes","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Expiry Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/improve-text":{"post":{"tags":["AI Assistance"],"summary":"Improve Text","description":"Improve and enhance text using AI\n\nUse cases:\n- Enhance coach bios\n- Improve session notes\n- Polish client communications\n- Refine goal descriptions\n\nRequires authentication.","operationId":"improve_text_ai_improve_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImproveTextRequest"}}},"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":[]}]}},"/ai/summarize":{"post":{"tags":["AI Assistance"],"summary":"Summarize Text","description":"Summarize long text into a concise version\n\nUse cases:\n- Create session summaries\n- Condense long notes\n- Generate brief overviews\n\nRequires authentication.","operationId":"summarize_text_ai_summarize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeTextRequest"}}},"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":[]}]}},"/ai/generate-action-items":{"post":{"tags":["AI Assistance"],"summary":"Generate Action Items","description":"Extract action items from session notes\n\nUse cases:\n- Identify tasks for coachees\n- Create follow-up items\n- Track commitments made during sessions\n\nRequires authentication.","operationId":"generate_action_items_ai_generate_action_items_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateActionItemsRequest"}}},"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":[]}]}},"/ai/suggest-goals":{"post":{"tags":["AI Assistance"],"summary":"Suggest Goals","description":"Suggest SMART goals based on coachee information\n\nUse cases:\n- Help coaches set initial goals\n- Provide goal ideas for new clients\n- Generate structured goal frameworks\n\nRequires authentication.","operationId":"suggest_goals_ai_suggest_goals_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestGoalsRequest"}}},"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":[]}]}},"/ai/":{"get":{"tags":["AI Assistance"],"summary":"Ai Info","description":"Get information about AI assistance features","operationId":"ai_info_ai__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ai/coach-finder/chat":{"post":{"tags":["AI Assistance"],"summary":"Coach Finder Chat","description":"AI-powered coach finder chat assistant (PUBLIC - no auth required)\n\nHelps users find coaches and coaching services through natural conversation.\nUses semantic search with embeddings for better results.\nFalls back to keyword search if AI is unavailable.\nSupports German and English.","operationId":"coach_finder_chat_ai_coach_finder_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachFinderChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/semantic-search":{"post":{"tags":["AI Assistance"],"summary":"Semantic Search","description":"Semantic search endpoint (PUBLIC - no auth required)\n\nSearch coaches, offerings, and blog posts using AI embeddings.\nReturns results ranked by semantic similarity.","operationId":"semantic_search_ai_semantic_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemanticSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/embeddings/index-all":{"post":{"tags":["AI Assistance"],"summary":"Index All Embeddings","description":"Generate embeddings for all content (coaches, offerings, blog posts)\n\nThis is a potentially expensive operation. Only run when needed.\nRequires authentication.","operationId":"index_all_embeddings_ai_embeddings_index_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/embeddings/index-coaches":{"post":{"tags":["AI Assistance"],"summary":"Index Coach Embeddings","description":"Generate embeddings for all coach profiles","operationId":"index_coach_embeddings_ai_embeddings_index_coaches_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/embeddings/index-offerings":{"post":{"tags":["AI Assistance"],"summary":"Index Offering Embeddings","description":"Generate embeddings for all coaching offerings","operationId":"index_offering_embeddings_ai_embeddings_index_offerings_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/embeddings/index-blog":{"post":{"tags":["AI Assistance"],"summary":"Index Blog Embeddings","description":"Generate embeddings for all blog posts","operationId":"index_blog_embeddings_ai_embeddings_index_blog_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/embeddings/stats":{"get":{"tags":["AI Assistance"],"summary":"Get Embedding Stats","description":"Get embedding statistics","operationId":"get_embedding_stats_ai_embeddings_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/notes/":{"get":{"tags":["Notes"],"summary":"Get Notes","description":"Get all notes for the current coach with filtering options","operationId":"get_notes_notes__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of records to skip","default":0,"title":"Skip"},"description":"Number of records to skip"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of records to return","default":100,"title":"Limit"},"description":"Maximum number of records to return"},{"name":"note_type","in":"query","required":false,"schema":{"type":"string","description":"Filter by note type","title":"Note Type"},"description":"Filter by note type"},{"name":"coachee_id","in":"query","required":false,"schema":{"type":"integer","description":"Filter by coachee","title":"Coachee Id"},"description":"Filter by coachee"},{"name":"session_id","in":"query","required":false,"schema":{"type":"integer","description":"Filter by session","title":"Session Id"},"description":"Filter by session"},{"name":"tags","in":"query","required":false,"schema":{"type":"string","description":"Filter by tags (comma-separated)","title":"Tags"},"description":"Filter by tags (comma-separated)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Note"},"title":"Response Get Notes Notes  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Notes"],"summary":"Create Note","description":"Create a new note","operationId":"create_note_notes__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/{note_id}":{"get":{"tags":["Notes"],"summary":"Get Note","description":"Get a specific note by ID","operationId":"get_note_notes__note_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"integer","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Notes"],"summary":"Update Note","description":"Update a note","operationId":"update_note_notes__note_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"integer","title":"Note Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Notes"],"summary":"Delete Note","description":"Delete a note","operationId":"delete_note_notes__note_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"integer","title":"Note Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/{note_id}/ai-improve":{"post":{"tags":["Notes"],"summary":"Ai Improve Note","description":"Use AI Magic Edit to improve note content\n\nThis will:\n- Save the original content\n- Use AI to improve the text\n- Update the note with improved content\n- Mark the note as AI-improved","operationId":"ai_improve_note_notes__note_id__ai_improve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"integer","title":"Note Id"}},{"name":"context","in":"query","required":false,"schema":{"type":"string","maxLength":200,"description":"Additional context for AI","title":"Context"},"description":"Additional context for AI"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/{note_id}/restore-original":{"post":{"tags":["Notes"],"summary":"Restore Original Note","description":"Restore note to its original content before AI improvement","operationId":"restore_original_note_notes__note_id__restore_original_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"integer","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/notes/stats/summary":{"get":{"tags":["Notes"],"summary":"Get Notes Stats","description":"Get statistics about notes for the current coach","operationId":"get_notes_stats_notes_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/":{"get":{"tags":["Payments"],"summary":"Get Payments","description":"Get all payments for the current coach with filtering options","operationId":"get_payments_payments__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of records to skip","default":0,"title":"Skip"},"description":"Number of records to skip"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of records to return","default":100,"title":"Limit"},"description":"Maximum number of records to return"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by payment status","title":"Status"},"description":"Filter by payment status"},{"name":"coachee_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by coachee","title":"Coachee Id"},"description":"Filter by coachee"},{"name":"overdue_only","in":"query","required":false,"schema":{"type":"boolean","description":"Show only overdue payments","default":false,"title":"Overdue Only"},"description":"Show only overdue payments"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Payment"},"title":"Response Get Payments Payments  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Payments"],"summary":"Create Payment","description":"Create a new payment record for a session","operationId":"create_payment_payments__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Payment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/{payment_id}":{"get":{"tags":["Payments"],"summary":"Get Payment","description":"Get a specific payment by ID","operationId":"get_payment_payments__payment_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"integer","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Payment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Payments"],"summary":"Update Payment","description":"Update a payment record","operationId":"update_payment_payments__payment_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"integer","title":"Payment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Payment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Payments"],"summary":"Delete Payment","description":"Delete a payment record","operationId":"delete_payment_payments__payment_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"integer","title":"Payment Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/{payment_id}/mark-paid":{"post":{"tags":["Payments"],"summary":"Mark Payment Paid","description":"Quick action to mark a payment as paid","operationId":"mark_payment_paid_payments__payment_id__mark_paid_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"integer","title":"Payment Id"}},{"name":"payment_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Payment method used","title":"Payment Method"},"description":"Payment method used"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Payment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/coachee/{coachee_id}/payments":{"get":{"tags":["Payments"],"summary":"Get Coachee Payments","description":"Get all payments for a specific coachee","operationId":"get_coachee_payments_payments_coachee__coachee_id__payments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"coachee_id","in":"path","required":true,"schema":{"type":"integer","title":"Coachee Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"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/Payment"},"title":"Response Get Coachee Payments Payments Coachee  Coachee Id  Payments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/stats/summary":{"get":{"tags":["Payments"],"summary":"Get Payment Stats","description":"Get payment statistics for the current coach","operationId":"get_payment_stats_payments_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/payments/stats/monthly":{"get":{"tags":["Payments"],"summary":"Get Monthly Payment Stats","description":"Get monthly payment statistics for the current coach","operationId":"get_monthly_payment_stats_payments_stats_monthly_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"description":"Number of months to include","default":6,"title":"Months"},"description":"Number of months to include"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settings/profile":{"get":{"tags":["Settings"],"summary":"Get Profile Settings","description":"Get current user profile settings","operationId":"get_profile_settings_settings_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["Settings"],"summary":"Update Profile Settings","description":"Update user profile settings","operationId":"update_profile_settings_settings_profile_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingsUpdate"}}},"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":[]}]}},"/settings/upload-profile-picture":{"post":{"tags":["Settings"],"summary":"Upload Profile Picture","description":"Upload profile picture to BunnyCDN and update user profile","operationId":"upload_profile_picture_settings_upload_profile_picture_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_profile_picture_settings_upload_profile_picture_post"}}},"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":[]}]}},"/settings/coach-settings":{"put":{"tags":["Settings"],"summary":"Update Coach Settings","description":"Update coach-specific settings\nOnly available to coaches","operationId":"update_coach_settings_settings_coach_settings_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachSettingsUpdate"}}},"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":[]}]}},"/settings/notifications":{"get":{"tags":["Settings"],"summary":"Get Notification Settings","description":"Get notification preferences\nNote: This is a placeholder. In production, store these in a separate settings table.","operationId":"get_notification_settings_settings_notifications_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["Settings"],"summary":"Update Notification Settings","description":"Update notification preferences\nNote: This is a placeholder. In production, store these in a separate settings table.","operationId":"update_notification_settings_settings_notifications_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}},"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":[]}]}},"/settings/security":{"get":{"tags":["Settings"],"summary":"Get Security Settings","description":"Get security settings\nNote: This is a placeholder. In production, store these in a separate settings table.","operationId":"get_security_settings_settings_security_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["Settings"],"summary":"Update Security Settings","description":"Update security settings\nNote: This is a placeholder. In production, implement proper 2FA and session management.","operationId":"update_security_settings_settings_security_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecuritySettings"}}},"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":[]}]}},"/settings/change-password":{"post":{"tags":["Settings"],"summary":"Change Password","description":"Change user password\nVerifies current password and updates to new hashed password","operationId":"change_password_settings_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"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":[]}]}},"/settings/deactivate-account":{"post":{"tags":["Settings"],"summary":"Deactivate Account","description":"Deactivate user account","operationId":"deactivate_account_settings_deactivate_account_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/settings/reactivate-account":{"post":{"tags":["Settings"],"summary":"Reactivate Account","description":"Reactivate user account","operationId":"reactivate_account_settings_reactivate_account_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/settings/delete-account":{"post":{"tags":["Settings"],"summary":"Delete Account","description":"Soft delete user account\n- Sets deleted_at timestamp\n- Marks account as inactive\n- Prevents future logins with this email\n- Email cannot be reused for new registrations","operationId":"delete_account_settings_delete_account_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/settings/system-info":{"get":{"tags":["Settings"],"summary":"Get System Info","description":"Get system information and available features","operationId":"get_system_info_settings_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/settings/menu":{"get":{"tags":["Settings"],"summary":"Get More Menu","description":"Get More menu items based on user type","operationId":"get_more_menu_settings_menu_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/settings/coach/settings":{"get":{"tags":["Settings"],"summary":"Get Coach Settings","description":"Get coach booking settings","operationId":"get_coach_settings_settings_coach_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api-keys/":{"get":{"tags":["API Keys"],"summary":"List Api Keys","description":"List all API keys for the authenticated user.\nKeys are masked for security.","operationId":"list_api_keys_api_keys__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/APIKeyListResponse"},"type":"array","title":"Response List Api Keys Api Keys  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["API Keys"],"summary":"Create Api Key","description":"Create a new API key for the authenticated user.\nThe key is only shown once - save it securely!","operationId":"create_api_key_api_keys__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api-keys/{api_key_id}":{"delete":{"tags":["API Keys"],"summary":"Revoke Api Key","description":"Revoke (delete) an API key.\nThis immediately stops the key from working.","operationId":"revoke_api_key_api_keys__api_key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"integer","title":"Api Key Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api-keys/test":{"get":{"tags":["API Keys"],"summary":"Test Api Key","description":"Test endpoint to verify API key authentication is working.\nReturns the authenticated user's information.","operationId":"test_api_key_api_keys_test_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/chat/conversations":{"get":{"tags":["Chat"],"summary":"Get Conversations","description":"Get all conversations for the current user with last message","operationId":"get_conversations_chat_conversations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ConversationWithLastMessage"},"type":"array","title":"Response Get Conversations Chat Conversations Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/chat/conversations/{conversation_id}/messages":{"get":{"tags":["Chat"],"summary":"Get Messages","description":"Get all messages in a conversation","operationId":"get_messages_chat_conversations__conversation_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"integer","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Message"},"title":"Response Get Messages Chat Conversations  Conversation Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/messages":{"post":{"tags":["Chat"],"summary":"Send Message","description":"Send a message to a user (creates conversation if doesn't exist)","operationId":"send_message_chat_messages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/chat/users/search":{"get":{"tags":["Chat"],"summary":"Search Users","description":"Search for users to start a conversation\nIf no query provided, returns all users","operationId":"search_users_chat_users_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","default":"","title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chat/conversations/{conversation_id}/mark-read":{"post":{"tags":["Chat"],"summary":"Mark Conversation As Read","description":"Mark all messages in a conversation as read","operationId":"mark_conversation_as_read_chat_conversations__conversation_id__mark_read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"integer","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/roles/switch":{"post":{"tags":["Roles"],"summary":"Switch Role","description":"Switch user's current active role (UI preference only)\nValidates that user has the requested role","operationId":"switch_role_roles_switch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwitchRoleRequest"}}},"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":[]}]}},"/roles/switch-role":{"post":{"tags":["Roles"],"summary":"Switch Role","description":"Switch user's current active role (UI preference only)\nValidates that user has the requested role","operationId":"switch_role_roles_switch_role_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwitchRoleRequest"}}},"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":[]}]}},"/roles/activate-coach-role":{"post":{"tags":["Roles"],"summary":"Activate Coach Role","description":"Activate coach role for user\nCreates coach_profile if it doesn't exist","operationId":"activate_coach_role_roles_activate_coach_role_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/roles/activate-coachee-role":{"post":{"tags":["Roles"],"summary":"Activate Coachee Role","description":"Activate coachee role for user\nCreates coachee_profile if it doesn't exist","operationId":"activate_coachee_role_roles_activate_coachee_role_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/roles/current-role":{"get":{"tags":["Roles"],"summary":"Get Current Role","description":"Get user's current active role and available roles","operationId":"get_current_role_roles_current_role_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/blog/public":{"get":{"tags":["Blog API"],"summary":"Get Published Blog Posts","description":"Get all published blog posts for public viewing\nOrdered by published date (newest first)","operationId":"get_published_blog_posts_api_blog_public_get","parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogPostWithAuthor"},"title":"Response Get Published Blog Posts Api Blog Public Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog/public/random":{"get":{"tags":["Blog API"],"summary":"Get Random Blog Posts","description":"Get published blog posts for the main blog page\nPrioritizes: 1) Posts with custom images (not default), 2) Newest posts\nDefault: 9 posts","operationId":"get_random_blog_posts_api_blog_public_random_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":9,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogPostWithAuthor"},"title":"Response Get Random Blog Posts Api Blog Public Random Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog/public/newest":{"get":{"tags":["Blog API"],"summary":"Get Newest Blog Posts","description":"Get newest published blog posts for the sidebar\nDefault: 8 posts","operationId":"get_newest_blog_posts_api_blog_public_newest_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogPostWithAuthor"},"title":"Response Get Newest Blog Posts Api Blog Public Newest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog/public/{slug}":{"get":{"tags":["Blog API"],"summary":"Get Blog Post By Slug","description":"Get a published blog post by slug for public viewing\nIncrements view count","operationId":"get_blog_post_by_slug_api_blog_public__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostWithAuthor"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog/my-posts":{"get":{"tags":["Blog API"],"summary":"Get My Blog Posts","description":"Get all blog posts created by the current coach\nIncludes both draft and published posts","operationId":"get_my_blog_posts_api_blog_my_posts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BlogPost"},"type":"array","title":"Response Get My Blog Posts Api Blog My Posts Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/blog/":{"post":{"tags":["Blog API"],"summary":"Create Blog Post","description":"Create a new blog post (draft status by default)\nOnly coaches can create blog posts","operationId":"create_blog_post_api_blog__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/blog/{post_id}":{"get":{"tags":["Blog API"],"summary":"Get Blog Post","description":"Get a specific blog post by ID\nOnly the coach who created it can view draft posts","operationId":"get_blog_post_api_blog__post_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Blog API"],"summary":"Update Blog Post","description":"Update a blog post\nOnly the coach who created it can update","operationId":"update_blog_post_api_blog__post_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Blog API"],"summary":"Delete Blog Post","description":"Delete a blog post\nOnly the coach who created it can delete","operationId":"delete_blog_post_api_blog__post_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog/{post_id}/publish":{"post":{"tags":["Blog API"],"summary":"Publish Blog Post","description":"Publish a draft blog post\nOnly the coach who created it can publish","operationId":"publish_blog_post_api_blog__post_id__publish_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog/ai/generate-content":{"post":{"tags":["Blog API"],"summary":"Ai Generate Content","description":"Generate blog post content from title using AI\nOnly coaches can use this endpoint","operationId":"ai_generate_content_api_blog_ai_generate_content_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIGenerateContentRequest"}}},"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":[]}]}},"/api/blog/ai/improve-content":{"post":{"tags":["Blog API"],"summary":"Ai Improve Content","description":"Improve grammar and style of blog content using AI\nOnly coaches can use this endpoint","operationId":"ai_improve_content_api_blog_ai_improve_content_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIImproveContentRequest"}}},"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":[]}]}},"/api/blog/ai/title-ideas":{"post":{"tags":["Blog API"],"summary":"Ai Title Ideas","description":"Generate blog title ideas from topic using AI\nOnly coaches can use this endpoint","operationId":"ai_title_ideas_api_blog_ai_title_ideas_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AITitleIdeasRequest"}}},"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":[]}]}},"/api/blog/{post_id}/comments":{"get":{"tags":["Blog API"],"summary":"Get Blog Comments","description":"Get all approved comments for a blog post\nPublic endpoint - no auth required","operationId":"get_blog_comments_api_blog__post_id__comments_get","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogCommentWithAuthor"},"title":"Response Get Blog Comments Api Blog  Post Id  Comments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Blog API"],"summary":"Create Blog Comment","description":"Create a comment on a blog post\nRegistered users: auto-approved\nGuests: must provide name and email (will require registration popup on frontend)","operationId":"create_blog_comment_api_blog__post_id__comments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogCommentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogComment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/presentation/data":{"get":{"tags":["Coach Presentation"],"summary":"Get Presentation Data","description":"Get complete coach presentation data including addresses and all fields","operationId":"get_presentation_data_presentation_data_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/presentation/scrape-website":{"post":{"tags":["Coach Presentation"],"summary":"Scrape Website","description":"Scrape website content and extract structured information using AI","operationId":"scrape_website_presentation_scrape_website_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScrapeWebsiteRequest"}}},"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":[]}]}},"/presentation/update":{"put":{"tags":["Coach Presentation"],"summary":"Update Presentation","description":"Update coach presentation data including all fields","operationId":"update_presentation_presentation_update_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePresentationRequest"}}},"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":[]}]}},"/presentation/user-data":{"put":{"tags":["Coach Presentation"],"summary":"Update User Data","description":"Update user personal data (mobile, birthday, country, company)","operationId":"update_user_data_presentation_user_data_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserDataRequest"}}},"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":[]}]}},"/presentation/address":{"post":{"tags":["Coach Presentation"],"summary":"Add Address","description":"Add a new address for the user","operationId":"add_address_presentation_address_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressRequest"}}},"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":[]}]}},"/presentation/address/{address_id}":{"put":{"tags":["Coach Presentation"],"summary":"Update Address","description":"Update an existing address","operationId":"update_address_presentation_address__address_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Coach Presentation"],"summary":"Delete Address","description":"Delete an address","operationId":"delete_address_presentation_address__address_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/presentation/crm-data":{"put":{"tags":["Coach Presentation"],"summary":"Update Crm Data","description":"Update CRM data (podcast, topic, phone availability)","operationId":"update_crm_data_presentation_crm_data_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"has_podcast","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Podcast"}},{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}},{"name":"phone_availability","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Availability"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/presentation/":{"get":{"tags":["Coach Presentation"],"summary":"Presentation Page","description":"Serve the coach presentation page","operationId":"presentation_page_presentation__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/roadmap/features":{"get":{"tags":["Roadmap API","roadmap"],"summary":"Get Roadmap Features","description":"Get all roadmap features with optional filters\nPublic endpoint - no authentication required","operationId":"get_roadmap_features_api_roadmap_features_get","parameters":[{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}},{"name":"category_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Filter"}},{"name":"authorization","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoadmapFeatureResponse"},"title":"Response Get Roadmap Features Api Roadmap Features Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/roadmap/features/{feature_id}/vote":{"post":{"tags":["Roadmap API","roadmap"],"summary":"Vote On Feature","description":"Vote on a roadmap feature (toggle vote)\nRequires authentication","operationId":"vote_on_feature_api_roadmap_features__feature_id__vote_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"feature_id","in":"path","required":true,"schema":{"type":"integer","title":"Feature Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/roadmap/features/{feature_id}/comments":{"get":{"tags":["Roadmap API","roadmap"],"summary":"Get Feature Comments","description":"Get all approved comments for a feature\nRequires authentication to view comments","operationId":"get_feature_comments_api_roadmap_features__feature_id__comments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"feature_id","in":"path","required":true,"schema":{"type":"integer","title":"Feature Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/routers__roadmap__CommentResponse"},"title":"Response Get Feature Comments Api Roadmap Features  Feature Id  Comments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Roadmap API","roadmap"],"summary":"Add Feature Comment","description":"Add a comment to a roadmap feature\nRequires authentication","operationId":"add_feature_comment_api_roadmap_features__feature_id__comments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"feature_id","in":"path","required":true,"schema":{"type":"integer","title":"Feature Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__roadmap__CommentCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/offerings/":{"get":{"tags":["Coaching Offerings","offerings"],"summary":"Get My Offerings","description":"Get all offerings for the current coach","operationId":"get_my_offerings_offerings__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CoachingOfferingResponse"},"type":"array","title":"Response Get My Offerings Offerings  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["Coaching Offerings","offerings"],"summary":"Create Offering","description":"Create a new coaching offering","operationId":"create_offering_offerings__post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_offering_offerings__post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachingOfferingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/offerings/public":{"get":{"tags":["Coaching Offerings","offerings"],"summary":"Get All Offerings","description":"Get all active offerings (public endpoint)","operationId":"get_all_offerings_offerings_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CoachingOfferingResponse"},"type":"array","title":"Response Get All Offerings Offerings Public Get"}}}}}}},"/offerings/public/{offering_id}":{"get":{"tags":["Coaching Offerings","offerings"],"summary":"Get Public Offering","description":"Get a single active offering with coach info (public endpoint for coachees)","operationId":"get_public_offering_offerings_public__offering_id__get","parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/offerings/{offering_id}":{"get":{"tags":["Coaching Offerings","offerings"],"summary":"Get Offering","description":"Get a specific offering","operationId":"get_offering_offerings__offering_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachingOfferingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Coaching Offerings","offerings"],"summary":"Update Offering","description":"Update an offering","operationId":"update_offering_offerings__offering_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"allOf":[{"$ref":"#/components/schemas/Body_update_offering_offerings__offering_id__put"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoachingOfferingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Coaching Offerings","offerings"],"summary":"Delete Offering","description":"Delete an offering","operationId":"delete_offering_offerings__offering_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offering_id","in":"path","required":true,"schema":{"type":"integer","title":"Offering Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stripe/create-checkout-session":{"post":{"tags":["Stripe Payments","Stripe Payments"],"summary":"Create Checkout Session","description":"Create a Stripe Checkout session for purchasing an offering","operationId":"create_checkout_session_stripe_create_checkout_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCheckoutSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/stripe/webhook":{"get":{"tags":["Stripe Payments","Stripe Payments"],"summary":"Stripe Webhook Get","description":"Redirect browser visits; keep POST for Stripe.","operationId":"stripe_webhook_get_stripe_webhook_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["Stripe Payments","Stripe Payments"],"summary":"Stripe Webhook","description":"Handle Stripe webhook events","operationId":"stripe_webhook_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stripe/session/{session_id}":{"get":{"tags":["Stripe Payments","Stripe Payments"],"summary":"Get Checkout Session","description":"Get checkout session details","operationId":"get_checkout_session_stripe_session__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/strip/webhook":{"get":{"tags":["Stripe Payments","Stripe Payments"],"summary":"Stripe Webhook Strip Get","description":"Redirect browser visits on legacy path; keep POST for Stripe.","operationId":"stripe_webhook_strip_get_strip_webhook_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["Stripe Payments","Stripe Payments"],"summary":"Stripe Webhook Strip","description":"Alias endpoint to handle webhook events for /strip/webhook.","operationId":"stripe_webhook_strip_strip_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/system-boards/":{"post":{"tags":["System Boards","System Boards"],"summary":"Create Board","description":"Create a new system board\n\nOnly coaches can create boards","operationId":"create_board_system_boards__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBoardRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["System Boards","System Boards"],"summary":"List Boards","description":"List all boards accessible to the current user\n\nCoaches see their own boards\nCoachees see boards they're involved in","operationId":"list_boards_system_boards__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"}},{"name":"is_template","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Template"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BoardResponse"},"title":"Response List Boards System Boards  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system-boards/{board_id}":{"get":{"tags":["System Boards","System Boards"],"summary":"Get Board","description":"Get a specific board by ID\n\nUser must be the coach or coachee associated with the board","operationId":"get_board_system_boards__board_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["System Boards","System Boards"],"summary":"Update Board","description":"Update a board's properties\n\nOnly the coach who created the board can update it","operationId":"update_board_system_boards__board_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBoardRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["System Boards","System Boards"],"summary":"Delete Board","description":"Delete (deactivate) a board\n\nOnly the coach who created the board can delete it","operationId":"delete_board_system_boards__board_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board_id","in":"path","required":true,"schema":{"type":"integer","title":"Board Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system-boards/room/{room_id}":{"get":{"tags":["System Boards","System Boards"],"summary":"Get Board By Room","description":"Get a board by room_id (used for WebSocket connections)\n\nUser must be the coach or coachee associated with the board","operationId":"get_board_by_room_system_boards_room__room_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","title":"Room Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/system-boards/share/{share_code}":{"get":{"tags":["System Boards","System Boards"],"summary":"Get Board By Share Code","description":"Get a board by share_code (used for shareable links)\n\nUser must be the coach or coachee associated with the board","operationId":"get_board_by_share_code_system_boards_share__share_code__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"share_code","in":"path","required":true,"schema":{"type":"string","title":"Share Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/posts":{"get":{"tags":["Community","community"],"summary":"Get Posts","description":"Get community posts feed\n- Can filter by hashtag\n- Can search in content\n- Sorted by creation date (newest first)","operationId":"get_posts_community_posts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"hashtag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hashtag"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PostResponse"},"title":"Response Get Posts Community Posts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Community","community"],"summary":"Create Post","description":"Create a new community post\n- Text content is required\n- Up to 5 images can be uploaded\n- Hashtags are automatically extracted from content","operationId":"create_post_community_posts_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_post_community_posts_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/posts/{post_id}":{"get":{"tags":["Community","community"],"summary":"Get Post","description":"Get a single post by ID","operationId":"get_post_community_posts__post_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Community","community"],"summary":"Delete Post","description":"Delete a post (soft delete)","operationId":"delete_post_community_posts__post_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/posts/{post_id}/like":{"post":{"tags":["Community","community"],"summary":"Like Post","description":"Like a post","operationId":"like_post_community_posts__post_id__like_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Community","community"],"summary":"Unlike Post","description":"Unlike a post","operationId":"unlike_post_community_posts__post_id__like_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/posts/{post_id}/comments":{"get":{"tags":["Community","community"],"summary":"Get Comments","description":"Get all comments for a post (includes nested replies)","operationId":"get_comments_community_posts__post_id__comments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/routers__community__CommentResponse"},"title":"Response Get Comments Community Posts  Post Id  Comments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Community","community"],"summary":"Create Comment","description":"Create a comment or reply to a comment","operationId":"create_comment_community_posts__post_id__comments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__community__CommentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__community__CommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/comments/{comment_id}":{"delete":{"tags":["Community","community"],"summary":"Delete Comment","description":"Delete a comment (soft delete)","operationId":"delete_comment_community_comments__comment_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/comments/{comment_id}/like":{"post":{"tags":["Community","community"],"summary":"Like Comment","description":"Like a comment","operationId":"like_comment_community_comments__comment_id__like_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Community","community"],"summary":"Unlike Comment","description":"Unlike a comment","operationId":"unlike_comment_community_comments__comment_id__like_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/community/trending-hashtags":{"get":{"tags":["Community","community"],"summary":"Get Trending Hashtags","description":"Get trending hashtags based on recent usage","operationId":"get_trending_hashtags_community_trending_hashtags_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/invite-coachee":{"post":{"tags":["Session Management"],"summary":"Invite Coachee","description":"Send invitation email to a new coachee via AWS SES","operationId":"invite_coachee_api_sessions_invite_coachee_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoacheeInvitationRequest"}}},"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":[]}]}},"/api/sessions/create-pending":{"post":{"tags":["Session Management"],"summary":"Create Pending Session","description":"Create a pending session for an invited coachee who hasn't registered yet","operationId":"create_pending_session_api_sessions_create_pending_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingSessionCreateRequest"}}},"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":[]}]}},"/api/sessions/pending/{pending_id}":{"delete":{"tags":["Session Management"],"summary":"Delete Pending Session","description":"Delete a pending session","operationId":"delete_pending_session_api_sessions_pending__pending_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"pending_id","in":"path","required":true,"schema":{"type":"integer","title":"Pending Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions":{"get":{"tags":["Session Management"],"summary":"Get My Sessions","description":"Get all sessions for the current user (as coach or coachee)\nIncluding pending sessions for coaches","operationId":"get_my_sessions_api_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/sessions/create":{"post":{"tags":["Session Management"],"summary":"Create Session","description":"Create a new coaching session","operationId":"create_session_api_sessions_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionCreateRequest"}}},"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":[]}]}},"/api/coaching-relationships":{"get":{"tags":["Session Management"],"summary":"Get Coaching Relationships","description":"Get all coaching relationships for the current coach with package info","operationId":"get_coaching_relationships_api_coaching_relationships_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/sessions/{session_id}/visibility":{"patch":{"tags":["Session Management"],"summary":"Toggle Session Visibility","description":"Toggle session visibility (archive/unarchive)","operationId":"toggle_session_visibility_api_sessions__session_id__visibility_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}},{"name":"is_active","in":"query","required":true,"schema":{"type":"boolean","title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}":{"get":{"tags":["Session Management"],"summary":"Get Session","description":"Get session details","operationId":"get_session_api_sessions__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/complete":{"post":{"tags":["Session Management"],"summary":"Complete Session","description":"Mark session as completed (coach only)","operationId":"complete_session_api_sessions__session_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/cancel":{"post":{"tags":["Session Management"],"summary":"Cancel Session","description":"Cancel a session","operationId":"cancel_session_api_sessions__session_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}},{"name":"reason","in":"query","required":true,"schema":{"type":"string","title":"Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/activity":{"get":{"tags":["Session Management"],"summary":"Get Activity Stream","description":"Get activity stream entries for a session","operationId":"get_activity_stream_api_sessions__session_id__activity_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Session Management"],"summary":"Create Activity Entry","description":"Create a new activity stream entry","operationId":"create_activity_entry_api_sessions__session_id__activity_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityEntryCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/activity/{entry_id}/share":{"put":{"tags":["Session Management"],"summary":"Share Activity Entry","description":"Share a private activity entry (makes it visible to other participant)","operationId":"share_activity_entry_api_activity__entry_id__share_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/activity/{entry_id}/revoke":{"put":{"tags":["Session Management"],"summary":"Revoke Activity Entry","description":"Revoke a shared activity entry (make it private again)\nOnly allowed within 2 hours of sharing","operationId":"revoke_activity_entry_api_activity__entry_id__revoke_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/homework":{"get":{"tags":["Session Management"],"summary":"Get Homework","description":"Get all homework tasks for a session","operationId":"get_homework_api_sessions__session_id__homework_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Session Management"],"summary":"Create Homework","description":"Create homework task (coach only)","operationId":"create_homework_api_sessions__session_id__homework_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}},{"name":"task_description","in":"query","required":true,"schema":{"type":"string","title":"Task Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/homework/{task_id}/complete":{"put":{"tags":["Session Management"],"summary":"Complete Homework","description":"Mark homework task as completed (coachee only)","operationId":"complete_homework_api_homework__task_id__complete_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/rating":{"post":{"tags":["Session Management"],"summary":"Create Rating","description":"Create session rating (dual rating system)","operationId":"create_rating_api_sessions__session_id__rating_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}},{"name":"rating_public","in":"query","required":true,"schema":{"type":"integer","title":"Rating Public"}},{"name":"rating_private","in":"query","required":true,"schema":{"type":"integer","title":"Rating Private"}},{"name":"comment_public","in":"query","required":false,"schema":{"type":"string","title":"Comment Public"}},{"name":"comment_private","in":"query","required":false,"schema":{"type":"string","title":"Comment Private"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/ratings":{"get":{"tags":["Session Management"],"summary":"Get Ratings","description":"Get ratings for a session","operationId":"get_ratings_api_sessions__session_id__ratings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/query":{"post":{"tags":["Session Management"],"summary":"Ai Query","description":"Ask AI assistant a question about the session\nProvides context-aware answers based on session data","operationId":"ai_query_api_ai_query_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"question","in":"query","required":true,"schema":{"type":"string","title":"Question"}},{"name":"session_id","in":"query","required":false,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/summarize/{session_id}":{"post":{"tags":["Session Management"],"summary":"Ai Summarize Session","description":"Generate AI summary of the session\nAnalyzes homework, documents, and activity stream","operationId":"ai_summarize_session_api_ai_summarize__session_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sso/check-admin-access":{"get":{"tags":["SSO"],"summary":"Check Admin Access","description":"Check if current user has admin access\nReturns admin info if user_id is linked to an admin account","operationId":"check_admin_access_api_sso_check_admin_access_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/sso/generate-admin-token":{"post":{"tags":["SSO"],"summary":"Generate Admin Token","description":"Generate one-time SSO token for admin panel access\nToken is valid for 5 minutes and can only be used once","operationId":"generate_admin_token_api_sso_generate_admin_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/android/test":{"get":{"tags":["Android Testing"],"summary":"Android Test Page","description":"Display QR code page for testing Android APK\nScan with phone to download and install the test build","operationId":"android_test_page_android_test_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/android/qr":{"get":{"tags":["Android Testing"],"summary":"Android Qr Code","description":"Generate QR code image for APK download URL","operationId":"android_qr_code_android_qr_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/bi/":{"get":{"tags":["BI Admin"],"summary":"Bi Dashboard","operationId":"bi_dashboard_bi__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/bi/metrics":{"post":{"tags":["BI Admin"],"summary":"Bi Metrics","operationId":"bi_metrics_bi_metrics_post","parameters":[{"name":"x-bi-token","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Bi-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bi/command":{"post":{"tags":["BI Admin"],"summary":"Bi Command","operationId":"bi_command_bi_command_post","parameters":[{"name":"x-bi-token","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Bi-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bi/query":{"post":{"tags":["BI Admin"],"summary":"Bi Query","operationId":"bi_query_bi_query_post","parameters":[{"name":"x-bi-token","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Bi-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/coach-research":{"post":{"tags":["Internal Research"],"summary":"Coach Research","description":"Internal research endpoint for admin tooling.","operationId":"coach_research_internal_coach_research_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/chatgpt/account":{"get":{"tags":["ChatGPT"],"summary":"Chatgpt Account","description":"Return basic account details for ChatGPT Actions.","operationId":"chatgpt_account_chatgpt_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chatgpt Account Chatgpt Account Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai-assistant/chat":{"post":{"tags":["In-App AI Assistant","ai-assistant"],"summary":"Chat Interaction","description":"Handle chat interaction with OpenAI and tool execution","operationId":"chat_interaction_ai_assistant_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai-assistant/history":{"get":{"tags":["In-App AI Assistant","ai-assistant"],"summary":"Ai History List","description":"List conversation history summaries for the current user.","operationId":"ai_history_list_ai_assistant_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/ai-assistant/history/{conversation_id}":{"get":{"tags":["In-App AI Assistant","ai-assistant"],"summary":"Ai History Detail","description":"Return stored messages for a conversation.","operationId":"ai_history_detail_ai_assistant_history__conversation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["In-App AI Assistant","ai-assistant"],"summary":"Ai History Delete","description":"Delete a conversation for the current user.","operationId":"ai_history_delete_ai_assistant_history__conversation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AIGenerateContentRequest":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Blog post title to generate content from"},"context":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Context","description":"Additional context for AI"}},"type":"object","required":["title"],"title":"AIGenerateContentRequest","description":"Schema for AI content generation request"},"AIImproveContentRequest":{"properties":{"content":{"type":"string","minLength":1,"title":"Content","description":"Content to improve"}},"type":"object","required":["content"],"title":"AIImproveContentRequest","description":"Schema for AI content improvement request"},"AITitleIdeasRequest":{"properties":{"topic":{"type":"string","maxLength":200,"minLength":1,"title":"Topic","description":"Topic to generate title ideas for"}},"type":"object","required":["topic"],"title":"AITitleIdeasRequest","description":"Schema for AI title ideas generation request"},"APIKeyCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"APIKeyCreate"},"APIKeyListResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"key_preview":{"type":"string","title":"Key Preview"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"usage_count":{"type":"integer","title":"Usage Count"}},"type":"object","required":["id","name","description","key_preview","is_active","created_at","last_used_at","usage_count"],"title":"APIKeyListResponse"},"APIKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"key":{"type":"string","title":"Key"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"usage_count":{"type":"integer","title":"Usage Count"}},"type":"object","required":["id","name","description","key","is_active","created_at","last_used_at","usage_count"],"title":"APIKeyResponse"},"ActivityEntryCreate":{"properties":{"content":{"type":"string","title":"Content"},"entry_type":{"type":"string","title":"Entry Type","default":"note"}},"type":"object","required":["content"],"title":"ActivityEntryCreate"},"AddressRequest":{"properties":{"address_type":{"type":"string","title":"Address Type","description":"PRIVATE, BUSINESS, or PUBLIC"},"street":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Street"},"house_number":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"House Number"},"address_addition":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Address Addition"},"postal_code":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Postal Code"},"city":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"City"},"country":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Country"},"is_primary":{"type":"boolean","title":"Is Primary","default":false}},"type":"object","required":["address_type"],"title":"AddressRequest","description":"Schema for address data"},"BlogComment":{"properties":{"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content","description":"Comment content"},"id":{"type":"integer","title":"Id"},"blog_post_id":{"type":"integer","title":"Blog Post Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"guest_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guest Name"},"guest_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guest Email"},"is_approved":{"type":"boolean","title":"Is Approved"},"is_deleted":{"type":"boolean","title":"Is Deleted"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["content","id","blog_post_id","is_approved","is_deleted","created_at"],"title":"BlogComment","description":"Schema for blog comment responses"},"BlogCommentCreate":{"properties":{"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content","description":"Comment content"},"guest_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Guest Name","description":"Guest name (if not logged in)"},"guest_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Guest Email","description":"Guest email (if not logged in)"}},"type":"object","required":["content"],"title":"BlogCommentCreate","description":"Schema for creating a blog comment"},"BlogCommentWithAuthor":{"properties":{"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content","description":"Comment content"},"id":{"type":"integer","title":"Id"},"blog_post_id":{"type":"integer","title":"Blog Post Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"guest_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guest Name"},"guest_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guest Email"},"is_approved":{"type":"boolean","title":"Is Approved"},"is_deleted":{"type":"boolean","title":"Is Deleted"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"author_name":{"type":"string","title":"Author Name"},"author_profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Profile Picture Url"}},"type":"object","required":["content","id","blog_post_id","is_approved","is_deleted","created_at","author_name"],"title":"BlogCommentWithAuthor","description":"Schema for blog comment with author information"},"BlogPost":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Blog post title"},"content":{"type":"string","minLength":1,"title":"Content","description":"Blog post content (rich text HTML)"},"excerpt":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Excerpt","description":"Short summary for preview"},"featured_image_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Featured Image Url","description":"Featured image URL"},"hashtags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hashtags","description":"List of hashtags"},"meta_description":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Meta Description","description":"SEO meta description"},"id":{"type":"integer","title":"Id"},"coach_id":{"type":"integer","title":"Coach Id"},"slug":{"type":"string","title":"Slug"},"status":{"$ref":"#/components/schemas/BlogPostStatus"},"read_time_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Time Minutes"},"word_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Word Count"},"ai_generated":{"type":"boolean","title":"Ai Generated"},"ai_improved":{"type":"boolean","title":"Ai Improved"},"view_count":{"type":"integer","title":"View Count"},"comment_count":{"type":"integer","title":"Comment Count"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["title","content","id","coach_id","slug","status","ai_generated","ai_improved","view_count","comment_count","created_at"],"title":"BlogPost","description":"Schema for blog post responses"},"BlogPostCreate":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Blog post title"},"content":{"type":"string","minLength":1,"title":"Content","description":"Blog post content (rich text HTML)"},"excerpt":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Excerpt","description":"Short summary for preview"},"featured_image_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Featured Image Url","description":"Featured image URL"},"hashtags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hashtags","description":"List of hashtags"},"meta_description":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Meta Description","description":"SEO meta description"}},"type":"object","required":["title","content"],"title":"BlogPostCreate","description":"Schema for creating a blog post"},"BlogPostStatus":{"type":"string","enum":["draft","published"],"title":"BlogPostStatus","description":"Blog post status enumeration"},"BlogPostUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Content"},"excerpt":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Excerpt"},"featured_image_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Featured Image Url"},"hashtags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hashtags"},"meta_description":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Meta Description"},"status":{"anyOf":[{"$ref":"#/components/schemas/BlogPostStatus"},{"type":"null"}]}},"type":"object","title":"BlogPostUpdate","description":"Schema for updating a blog post"},"BlogPostWithAuthor":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title","description":"Blog post title"},"content":{"type":"string","minLength":1,"title":"Content","description":"Blog post content (rich text HTML)"},"excerpt":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Excerpt","description":"Short summary for preview"},"featured_image_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Featured Image Url","description":"Featured image URL"},"hashtags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hashtags","description":"List of hashtags"},"meta_description":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Meta Description","description":"SEO meta description"},"id":{"type":"integer","title":"Id"},"coach_id":{"type":"integer","title":"Coach Id"},"slug":{"type":"string","title":"Slug"},"status":{"$ref":"#/components/schemas/BlogPostStatus"},"read_time_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Read Time Minutes"},"word_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Word Count"},"ai_generated":{"type":"boolean","title":"Ai Generated"},"ai_improved":{"type":"boolean","title":"Ai Improved"},"view_count":{"type":"integer","title":"View Count"},"comment_count":{"type":"integer","title":"Comment Count"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"author_name":{"type":"string","title":"Author Name"},"author_profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Profile Picture Url"}},"type":"object","required":["title","content","id","coach_id","slug","status","ai_generated","ai_improved","view_count","comment_count","created_at","author_name"],"title":"BlogPostWithAuthor","description":"Schema for blog post with author information"},"BoardResponse":{"properties":{"id":{"type":"integer","title":"Id"},"room_id":{"type":"string","title":"Room Id"},"share_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Code"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"},"coach_id":{"type":"integer","title":"Coach Id"},"coachee_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coachee Id"},"figures":{"items":{"type":"object"},"type":"array","title":"Figures"},"is_active":{"type":"boolean","title":"Is Active"},"is_template":{"type":"boolean","title":"Is Template"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"last_accessed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Accessed At"}},"type":"object","required":["id","room_id","share_code","title","description","session_id","coach_id","coachee_id","figures","is_active","is_template","created_at","updated_at","last_accessed_at"],"title":"BoardResponse","description":"Response schema for board data"},"Body_create_offering_offerings__post":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"offering_type":{"type":"string","title":"Offering Type","default":"single_session"},"is_group_coaching":{"type":"boolean","title":"Is Group Coaching","default":false},"max_participants":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Participants"},"delivery_method":{"type":"string","title":"Delivery Method","default":"video"},"duration_minutes":{"type":"integer","title":"Duration Minutes","default":60},"package_sessions_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Package Sessions Count"},"package_validity_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Package Validity Days"},"program_start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Program Start Date"},"program_end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Program End Date"},"program_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Program Schedule"},"subscription_sessions_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Sessions Per Month"},"price":{"type":"number","title":"Price"},"currency":{"type":"string","title":"Currency","default":"EUR"},"installment_available":{"type":"boolean","title":"Installment Available","default":false},"installment_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installment Count"},"includes_materials":{"type":"boolean","title":"Includes Materials","default":false},"materials_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Materials Description"},"includes_system_board":{"type":"boolean","title":"Includes System Board","default":false},"includes_chat_support":{"type":"boolean","title":"Includes Chat Support","default":false},"image":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Image"},"digital_file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Digital File"}},"type":"object","required":["title","description","price"],"title":"Body_create_offering_offerings__post"},"Body_create_post_community_posts_post":{"properties":{"content":{"type":"string","title":"Content"},"images":{"items":{"type":"string","format":"binary"},"type":"array","title":"Images","default":[]}},"type":"object","required":["content"],"title":"Body_create_post_community_posts_post"},"Body_disable_2fa_auth_2fa_disable_post":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"Body_disable_2fa_auth_2fa_disable_post"},"Body_forgot_password_auth_forgot_password_post":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"Body_forgot_password_auth_forgot_password_post"},"Body_generate_api_token_auth_generate_api_token_post":{"properties":{"name":{"type":"string","title":"Name","default":"API Token"},"description":{"type":"string","title":"Description"}},"type":"object","title":"Body_generate_api_token_auth_generate_api_token_post"},"Body_login_auth_login_post":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"Body_login_auth_login_post"},"Body_register_auth_register_post":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"}},"type":"object","required":["email","password","first_name","last_name"],"title":"Body_register_auth_register_post"},"Body_reset_password_auth_reset_password_post":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"Body_reset_password_auth_reset_password_post"},"Body_update_offering_offerings__offering_id__put":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"offering_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offering Type"},"is_group_coaching":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Group Coaching"},"max_participants":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Participants"},"delivery_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Method"},"duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Minutes"},"package_sessions_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Package Sessions Count"},"package_validity_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Package Validity Days"},"program_start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Program Start Date"},"program_end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Program End Date"},"program_schedule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Program Schedule"},"subscription_sessions_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Sessions Per Month"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"installment_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Installment Available"},"installment_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installment Count"},"includes_materials":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Includes Materials"},"materials_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Materials Description"},"includes_system_board":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Includes System Board"},"includes_chat_support":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Includes Chat Support"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"image":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Image"},"digital_file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Digital File"}},"type":"object","title":"Body_update_offering_offerings__offering_id__put"},"Body_upload_document_documents_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_public":{"type":"boolean","title":"Is Public","default":false}},"type":"object","required":["file"],"title":"Body_upload_document_documents_upload_post"},"Body_upload_profile_picture_settings_upload_profile_picture_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_profile_picture_settings_upload_profile_picture_post"},"Body_verify_2fa_auth_2fa_verify_post":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"token":{"type":"string","title":"Token"}},"type":"object","required":["email","password","token"],"title":"Body_verify_2fa_auth_2fa_verify_post"},"Body_verify_2fa_setup_auth_2fa_verify_setup_post":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"Body_verify_2fa_setup_auth_2fa_verify_setup_post"},"ChangePasswordRequest":{"properties":{"current_password":{"type":"string","minLength":1,"title":"Current Password","description":"Current password"},"new_password":{"type":"string","minLength":8,"title":"New Password","description":"New password (min 8 characters)"}},"type":"object","required":["current_password","new_password"],"title":"ChangePasswordRequest","description":"Schema for password change request"},"ChatRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/routers__ai_assistant__ChatMessage"},"type":"array","title":"Messages"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},"type":"object","required":["messages"],"title":"ChatRequest"},"ChatResponse":{"properties":{"role":{"type":"string","title":"Role"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"tool_calls":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Tool Calls"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},"type":"object","required":["role"],"title":"ChatResponse"},"CheckoutSessionResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["checkout_url","session_id"],"title":"CheckoutSessionResponse"},"CoachContactRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","required":["name","email","subject","message"],"title":"CoachContactRequest"},"CoachFinderChatRequest":{"properties":{"message":{"type":"string","maxLength":1000,"minLength":1,"title":"Message","description":"User's message"},"conversation_history":{"anyOf":[{"items":{"$ref":"#/components/schemas/routers__ai__ChatMessage"},"type":"array"},{"type":"null"}],"title":"Conversation History","description":"Previous messages"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session ID for tracking"}},"type":"object","required":["message"],"title":"CoachFinderChatRequest","description":"Request schema for coach finder chat"},"CoachProfile":{"properties":{"username":{"type":"string","maxLength":50,"minLength":3,"pattern":"^[a-zA-Z0-9_-]+$","title":"Username","description":"Username for booking page (alphanumeric, underscore, hyphen only)"},"bio":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Bio","description":"Coach biography"},"tagline":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Tagline","description":"Short tagline"},"specializations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Specializations","description":"List of specialization areas"},"hourly_rate":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Hourly Rate","description":"Hourly rate"},"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"booking_enabled":{"type":"boolean","title":"Booking Enabled"},"availability_calendar":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Availability Calendar"},"subscription_status":{"type":"string","title":"Subscription Status"},"subscription_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Subscription Ends At"},"total_sessions":{"type":"integer","title":"Total Sessions"},"total_coachees":{"type":"integer","title":"Total Coachees"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["username","id","user_id","booking_enabled","subscription_status","total_sessions","total_coachees","created_at"],"title":"CoachProfile","description":"Schema for coach profile responses"},"CoachSettingsUpdate":{"properties":{"bio":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Bio"},"tagline":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Tagline"},"hourly_rate":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Hourly Rate"},"booking_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Booking Enabled"},"availability_calendar":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Availability Calendar"}},"type":"object","title":"CoachSettingsUpdate","description":"Schema for updating coach-specific settings"},"CoacheeInvitationRequest":{"properties":{"email":{"type":"string","title":"Email"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["email"],"title":"CoacheeInvitationRequest"},"CoacheeProfile":{"properties":{"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone","description":"Phone number"},"goals":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Goals","description":"Coachee goals"},"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","user_id","created_at"],"title":"CoacheeProfile","description":"Schema for coachee profile responses"},"CoacheeProfileCreate":{"properties":{"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone","description":"Phone number"},"goals":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Goals","description":"Coachee goals"}},"type":"object","title":"CoacheeProfileCreate","description":"Schema for creating coachee profile"},"CoacheeProfileUpdate":{"properties":{"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone","description":"Phone number"},"goals":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Goals","description":"Coachee goals"},"notes":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Notes","description":"Private notes from coach"}},"type":"object","title":"CoacheeProfileUpdate","description":"Schema for updating coachee profile"},"CoachingOfferingResponse":{"properties":{"id":{"type":"integer","title":"Id"},"coach_id":{"type":"integer","title":"Coach Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"file_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Url"},"offering_type":{"type":"string","title":"Offering Type"},"is_group_coaching":{"type":"boolean","title":"Is Group Coaching"},"max_participants":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Participants"},"delivery_method":{"type":"string","title":"Delivery Method"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"package_sessions_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Package Sessions Count"},"package_validity_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Package Validity Days"},"program_start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Program Start Date"},"program_end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Program End Date"},"program_schedule":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Program Schedule"},"subscription_sessions_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subscription Sessions Per Month"},"price":{"type":"number","title":"Price"},"currency":{"type":"string","title":"Currency"},"installment_available":{"type":"boolean","title":"Installment Available"},"installment_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installment Count"},"includes_materials":{"type":"boolean","title":"Includes Materials"},"materials_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Materials Description"},"includes_system_board":{"type":"boolean","title":"Includes System Board"},"includes_chat_support":{"type":"boolean","title":"Includes Chat Support"},"is_active":{"type":"boolean","title":"Is Active"},"stripe_product_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Product Id"},"stripe_price_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Price Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","coach_id","title","description","offering_type","is_group_coaching","delivery_method","duration_minutes","price","currency","installment_available","includes_materials","includes_system_board","includes_chat_support","is_active","created_at"],"title":"CoachingOfferingResponse"},"CommandRequest":{"properties":{"text":{"type":"string","title":"Text"},"context_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Id"}},"type":"object","required":["text"],"title":"CommandRequest"},"ContactFormRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"}},"type":"object","required":["name","email","subject","message"],"title":"ContactFormRequest"},"ConversationPartner":{"properties":{"id":{"type":"integer","title":"Id"},"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"email":{"type":"string","title":"Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Url"}},"type":"object","required":["id","first_name","last_name","email"],"title":"ConversationPartner","description":"Schema for conversation partner info"},"ConversationWithLastMessage":{"properties":{"id":{"type":"integer","title":"Id"},"partner":{"$ref":"#/components/schemas/ConversationPartner"},"last_message":{"anyOf":[{"$ref":"#/components/schemas/Message"},{"type":"null"}]},"unread_count":{"type":"integer","title":"Unread Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","partner","created_at"],"title":"ConversationWithLastMessage","description":"Schema for conversation with last message"},"CreateBoardRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"},"coachee_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coachee Id"},"is_template":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Template","default":false}},"type":"object","required":["title"],"title":"CreateBoardRequest","description":"Request schema for creating a new board"},"CreateCheckoutSessionRequest":{"properties":{"offering_id":{"type":"integer","title":"Offering Id"}},"type":"object","required":["offering_id"],"title":"CreateCheckoutSessionRequest"},"Document":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description","description":"Document description"},"is_public":{"type":"boolean","title":"Is Public","description":"Visible to coachee","default":false},"id":{"type":"integer","title":"Id"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"},"uploaded_by_user_id":{"type":"integer","title":"Uploaded By User Id"},"filename":{"type":"string","title":"Filename"},"original_filename":{"type":"string","title":"Original Filename"},"file_path":{"type":"string","title":"File Path"},"file_size":{"type":"integer","title":"File Size"},"mime_type":{"type":"string","title":"Mime Type"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","uploaded_by_user_id","filename","original_filename","file_path","file_size","mime_type","created_at"],"title":"Document","description":"Schema for document responses"},"DocumentUpdate":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"}},"type":"object","title":"DocumentUpdate","description":"Schema for updating document metadata"},"GenerateActionItemsRequest":{"properties":{"session_notes":{"type":"string","maxLength":20000,"minLength":10,"title":"Session Notes","description":"Session notes"}},"type":"object","required":["session_notes"],"title":"GenerateActionItemsRequest","description":"Request schema for action items generation"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ICFUpdateRequest":{"properties":{"icf_credential":{"type":"string","title":"Icf Credential"},"icf_credential_number":{"type":"string","title":"Icf Credential Number"},"icf_expiry_date":{"type":"string","title":"Icf Expiry Date"}},"type":"object","required":["icf_credential"],"title":"ICFUpdateRequest"},"ImproveTextRequest":{"properties":{"text":{"type":"string","maxLength":10000,"minLength":1,"title":"Text","description":"Text to improve"},"context":{"type":"string","maxLength":200,"title":"Context","description":"Context about the text"}},"type":"object","required":["text"],"title":"ImproveTextRequest","description":"Request schema for text improvement"},"Message":{"properties":{"id":{"type":"integer","title":"Id"},"conversation_id":{"type":"integer","title":"Conversation Id"},"sender_id":{"type":"integer","title":"Sender Id"},"content":{"type":"string","title":"Content"},"status":{"$ref":"#/components/schemas/MessageStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At"}},"type":"object","required":["id","conversation_id","sender_id","content","status","created_at"],"title":"Message","description":"Schema for message responses"},"MessageCreate":{"properties":{"recipient_id":{"type":"integer","title":"Recipient Id","description":"ID of the message recipient (user ID)"},"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content","description":"Message content"}},"type":"object","required":["recipient_id","content"],"title":"MessageCreate","description":"Schema for creating a message"},"MessageStatus":{"type":"string","enum":["SENT","DELIVERED","READ"],"title":"MessageStatus","description":"Message status enumeration"},"MetricsRequest":{"properties":{"metrics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Metrics"},"range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Range","default":"30d"}},"type":"object","title":"MetricsRequest"},"Note":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Note title"},"content":{"type":"string","minLength":1,"title":"Content","description":"Note content"},"note_type":{"allOf":[{"$ref":"#/components/schemas/NoteType"}],"description":"Type of note","default":"general"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for organization"},"id":{"type":"integer","title":"Id"},"coach_id":{"type":"integer","title":"Coach Id"},"coachee_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coachee Id"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"},"ai_improved":{"type":"boolean","title":"Ai Improved"},"original_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Content"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["title","content","id","coach_id","ai_improved","created_at"],"title":"Note","description":"Schema for note responses"},"NoteCreate":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Note title"},"content":{"type":"string","minLength":1,"title":"Content","description":"Note content"},"note_type":{"allOf":[{"$ref":"#/components/schemas/NoteType"}],"description":"Type of note","default":"general"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for organization"},"coachee_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coachee Id","description":"Associated coachee ID"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id","description":"Associated session ID"}},"type":"object","required":["title","content"],"title":"NoteCreate","description":"Schema for creating a note"},"NoteType":{"type":"string","enum":["session","coachee","general"],"title":"NoteType","description":"Note type enumeration"},"NoteUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Content"},"note_type":{"anyOf":[{"$ref":"#/components/schemas/NoteType"},{"type":"null"}]},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"coachee_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coachee Id"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"}},"type":"object","title":"NoteUpdate","description":"Schema for updating a note"},"NotificationSettings":{"properties":{"email_notifications":{"type":"boolean","title":"Email Notifications","description":"Enable email notifications","default":true},"session_reminders":{"type":"boolean","title":"Session Reminders","description":"Reminders for upcoming sessions","default":true},"payment_reminders":{"type":"boolean","title":"Payment Reminders","description":"Reminders for payment due dates","default":true},"new_booking_alerts":{"type":"boolean","title":"New Booking Alerts","description":"Alerts for new bookings","default":true},"message_notifications":{"type":"boolean","title":"Message Notifications","description":"Notifications for new messages","default":true}},"type":"object","title":"NotificationSettings","description":"Schema for notification preferences"},"Payment":{"properties":{"amount":{"type":"number","minimum":0.0,"title":"Amount","description":"Payment amount"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","description":"Currency code","default":"EUR"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date","description":"Payment due date"},"payment_method":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Payment Method","description":"Payment method"},"notes":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Notes","description":"Payment notes"},"id":{"type":"integer","title":"Id"},"session_id":{"type":"integer","title":"Session Id"},"coach_id":{"type":"integer","title":"Coach Id"},"coachee_id":{"type":"integer","title":"Coachee Id"},"status":{"$ref":"#/components/schemas/PaymentStatus"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"stripe_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Payment Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["amount","id","session_id","coach_id","coachee_id","status","created_at"],"title":"Payment","description":"Schema for payment responses"},"PaymentCreate":{"properties":{"amount":{"type":"number","minimum":0.0,"title":"Amount","description":"Payment amount"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","description":"Currency code","default":"EUR"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date","description":"Payment due date"},"payment_method":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Payment Method","description":"Payment method"},"notes":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Notes","description":"Payment notes"},"session_id":{"type":"integer","title":"Session Id","description":"Associated session ID"}},"type":"object","required":["amount","session_id"],"title":"PaymentCreate","description":"Schema for creating a payment"},"PaymentStatus":{"type":"string","enum":["unpaid","paid","overdue","refunded"],"title":"PaymentStatus","description":"Payment status enumeration"},"PaymentUpdate":{"properties":{"amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Amount"},"status":{"anyOf":[{"$ref":"#/components/schemas/PaymentStatus"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"payment_method":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Payment Method"},"notes":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Notes"}},"type":"object","title":"PaymentUpdate","description":"Schema for updating payment"},"PendingSessionCreateRequest":{"properties":{"pending_coachee_email":{"type":"string","title":"Pending Coachee Email"},"title":{"type":"string","title":"Title"},"scheduled_date":{"type":"string","title":"Scheduled Date"},"scheduled_time":{"type":"string","title":"Scheduled Time"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"location_type":{"type":"string","title":"Location Type"},"meeting_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meeting Url"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","default":"Online"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["pending_coachee_email","title","scheduled_date","scheduled_time","duration_minutes","location_type"],"title":"PendingSessionCreateRequest"},"PostResponse":{"properties":{"id":{"type":"integer","title":"Id"},"author_id":{"type":"integer","title":"Author Id"},"author_name":{"type":"string","title":"Author Name"},"author_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Avatar"},"content":{"type":"string","title":"Content"},"images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Images"},"hashtags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hashtags"},"like_count":{"type":"integer","title":"Like Count"},"comment_count":{"type":"integer","title":"Comment Count"},"view_count":{"type":"integer","title":"View Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"is_liked_by_user":{"type":"boolean","title":"Is Liked By User","default":false}},"type":"object","required":["id","author_id","author_name","author_avatar","content","images","hashtags","like_count","comment_count","view_count","created_at","updated_at"],"title":"PostResponse"},"PublicCoachReviewRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"rating":{"type":"integer","title":"Rating"},"helpfulness":{"type":"integer","title":"Helpfulness"},"clarity":{"type":"integer","title":"Clarity"},"empathy":{"type":"integer","title":"Empathy"},"professionalism":{"type":"integer","title":"Professionalism"},"recommendation":{"type":"string","title":"Recommendation"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"type":"object","required":["name","email","rating","helpfulness","clarity","empathy","professionalism","recommendation"],"title":"PublicCoachReviewRequest"},"QueryRequest":{"properties":{"text":{"type":"string","title":"Text"},"context_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Id"}},"type":"object","required":["text"],"title":"QueryRequest"},"ResearchRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"ResearchRequest"},"RoadmapFeatureResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"category":{"type":"string","title":"Category"},"status":{"type":"string","title":"Status"},"priority":{"type":"integer","title":"Priority"},"estimated_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Estimated Release"},"vote_count":{"type":"integer","title":"Vote Count"},"comment_count":{"type":"integer","title":"Comment Count"},"user_voted":{"type":"boolean","title":"User Voted","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","title","description","category","status","priority","estimated_release","vote_count","comment_count","created_at"],"title":"RoadmapFeatureResponse"},"ScrapeWebsiteRequest":{"properties":{"website_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Website Url","description":"URL of the website to scrape"}},"type":"object","required":["website_url"],"title":"ScrapeWebsiteRequest","description":"Schema for website scraping request"},"SecuritySettings":{"properties":{"two_factor_enabled":{"type":"boolean","title":"Two Factor Enabled","description":"Enable two-factor authentication","default":false},"session_timeout_minutes":{"type":"integer","maximum":1440.0,"minimum":15.0,"title":"Session Timeout Minutes","description":"Session timeout in minutes","default":60}},"type":"object","title":"SecuritySettings","description":"Schema for security settings"},"SelectRoleRequest":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"SelectRoleRequest","description":"Request model for role selection"},"SemanticSearchRequest":{"properties":{"query":{"type":"string","maxLength":500,"minLength":1,"title":"Query","description":"Search query"},"use_hybrid":{"type":"boolean","title":"Use Hybrid","description":"Use hybrid search (semantic + keyword)","default":true}},"type":"object","required":["query"],"title":"SemanticSearchRequest","description":"Request schema for semantic search"},"SessionCreateRequest":{"properties":{"coachee_id":{"type":"integer","title":"Coachee Id"},"relationship_id":{"type":"integer","title":"Relationship Id"},"title":{"type":"string","title":"Title"},"scheduled_date":{"type":"string","title":"Scheduled Date"},"scheduled_time":{"type":"string","title":"Scheduled Time"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"location_type":{"type":"string","title":"Location Type"},"meeting_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meeting Url"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","default":"Online"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["coachee_id","relationship_id","title","scheduled_date","scheduled_time","duration_minutes","location_type"],"title":"SessionCreateRequest"},"SessionPublic":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Session title"},"scheduled_at":{"type":"string","format":"date-time","title":"Scheduled At","description":"Scheduled date and time"},"duration_minutes":{"type":"integer","maximum":480.0,"minimum":15.0,"title":"Duration Minutes","description":"Duration in minutes (15-480)","default":60},"meeting_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Meeting Url","description":"Video meeting URL"},"location":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Location","description":"Physical location"},"id":{"type":"integer","title":"Id"},"coach_id":{"type":"integer","title":"Coach Id"},"coachee_id":{"type":"integer","title":"Coachee Id"},"status":{"$ref":"#/components/schemas/SessionStatus"},"public_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["title","scheduled_at","id","coach_id","coachee_id","status","created_at"],"title":"SessionPublic","description":"Schema for session responses visible to coachees (no private notes)"},"SessionStatus":{"type":"string","enum":["scheduled","completed","cancelled","no_show"],"title":"SessionStatus","description":"Session status enumeration"},"SuggestGoalsRequest":{"properties":{"coachee_info":{"type":"string","maxLength":5000,"minLength":10,"title":"Coachee Info","description":"Information about coachee"}},"type":"object","required":["coachee_info"],"title":"SuggestGoalsRequest","description":"Request schema for goal suggestions"},"SummarizeTextRequest":{"properties":{"text":{"type":"string","maxLength":20000,"minLength":10,"title":"Text","description":"Text to summarize"},"max_length":{"type":"integer","maximum":500.0,"minimum":20.0,"title":"Max Length","description":"Maximum length in words","default":100}},"type":"object","required":["text"],"title":"SummarizeTextRequest","description":"Request schema for text summarization"},"SwitchRoleRequest":{"properties":{"role":{"type":"string","pattern":"^(coach|coachee)$","title":"Role","description":"Role to switch to: 'coach' or 'coachee'"}},"additionalProperties":true,"type":"object","required":["role"],"title":"SwitchRoleRequest","description":"Schema for switching current role"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["access_token","expires_in"],"title":"Token","description":"Schema for JWT token response"},"UpdateBoardRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"figures":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Figures"}},"type":"object","title":"UpdateBoardRequest","description":"Request schema for updating a board"},"UpdatePresentationRequest":{"properties":{"website_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Website Url"},"linkedin_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Linkedin Url"},"facebook_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Facebook Url"},"instagram_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Instagram Url"},"twitter_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Twitter Url"},"youtube_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Youtube Url"},"telegram_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Telegram Url"},"whatsapp_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Whatsapp Url"},"other_social_links":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Other Social Links"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline"},"competencies":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competencies"},"platform_methods":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform Methods"},"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone"},"public_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Public Phone"},"public_email":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Public Email"},"elevator_pitch_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Elevator Pitch Text"},"elevator_pitch_video_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Elevator Pitch Video Url"},"hashtags":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Hashtags"},"references_testimonials":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"References Testimonials"},"ai_scraped_bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ai Scraped Bio"},"ai_scraped_services":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ai Scraped Services"},"ai_scraped_testimonials":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Ai Scraped Testimonials"}},"type":"object","title":"UpdatePresentationRequest","description":"Schema for updating coach presentation"},"UpdateProfileRequest":{"properties":{"first_name":{"type":"string","maxLength":100,"minLength":1,"title":"First Name","description":"First name"},"last_name":{"type":"string","maxLength":100,"minLength":1,"title":"Last Name","description":"Last name"}},"type":"object","required":["first_name","last_name"],"title":"UpdateProfileRequest","description":"Schema for profile update request"},"UpdateUserDataRequest":{"properties":{"mobile":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Mobile"},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birthday"},"country":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Country"},"company_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Company Name"}},"type":"object","title":"UpdateUserDataRequest","description":"Schema for updating user personal data"},"User":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"User email address"},"first_name":{"type":"string","maxLength":100,"minLength":1,"title":"First Name","description":"First name"},"last_name":{"type":"string","maxLength":100,"minLength":1,"title":"Last Name","description":"Last name"},"id":{"type":"integer","title":"Id"},"is_coach":{"type":"boolean","title":"Is Coach"},"is_coachee":{"type":"boolean","title":"Is Coachee"},"current_role":{"type":"string","title":"Current Role"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"profile_picture_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Picture Url"},"is_active":{"type":"boolean","title":"Is Active"},"two_factor_enabled":{"type":"boolean","title":"Two Factor Enabled","default":false},"age_verified":{"type":"boolean","title":"Age Verified","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"}},"type":"object","required":["email","first_name","last_name","id","is_coach","is_coachee","current_role","is_active","created_at"],"title":"User","description":"Schema for user responses"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"User email address"},"first_name":{"type":"string","maxLength":100,"minLength":1,"title":"First Name","description":"First name"},"last_name":{"type":"string","maxLength":100,"minLength":1,"title":"Last Name","description":"Last name"},"password":{"anyOf":[{"type":"string","minLength":8},{"type":"null"}],"title":"Password","description":"Password (null for OAuth users)"},"google_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Id","description":"Google OAuth ID"}},"type":"object","required":["email","first_name","last_name"],"title":"UserCreate","description":"Schema for creating a new user"},"UserSettingsUpdate":{"properties":{"first_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Last Name"},"avatar_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Avatar Url"},"profile_picture_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Profile Picture Url"}},"type":"object","title":"UserSettingsUpdate","description":"Schema for updating user settings"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyAgeRequest":{"properties":{"birthday":{"type":"string","title":"Birthday"}},"type":"object","required":["birthday"],"title":"VerifyAgeRequest","description":"Request model for age verification"},"routers__ai__ChatMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role: 'user' or 'assistant'"},"content":{"type":"string","title":"Content","description":"Message content"}},"type":"object","required":["role","content"],"title":"ChatMessage"},"routers__ai_assistant__ChatMessage":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["role","content"],"title":"ChatMessage"},"routers__community__CommentCreate":{"properties":{"content":{"type":"string","title":"Content"},"parent_comment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Comment Id"}},"type":"object","required":["content"],"title":"CommentCreate"},"routers__community__CommentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"post_id":{"type":"integer","title":"Post Id"},"author_id":{"type":"integer","title":"Author Id"},"author_name":{"type":"string","title":"Author Name"},"author_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Avatar"},"parent_comment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Comment Id"},"content":{"type":"string","title":"Content"},"like_count":{"type":"integer","title":"Like Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"is_liked_by_user":{"type":"boolean","title":"Is Liked By User","default":false},"replies":{"items":{"$ref":"#/components/schemas/routers__community__CommentResponse"},"type":"array","title":"Replies","default":[]}},"type":"object","required":["id","post_id","author_id","author_name","author_avatar","parent_comment_id","content","like_count","created_at","updated_at"],"title":"CommentResponse"},"routers__roadmap__CommentCreate":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"CommentCreate"},"routers__roadmap__CommentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"content":{"type":"string","title":"Content"},"user_name":{"type":"string","title":"User Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","content","user_name","created_at"],"title":"CommentResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}