{"openapi":"3.1.0","info":{"title":"Reason Space","description":"Социальная платформа для голосовых и видео звонков","version":"0.3.0"},"paths":{"/metrics":{"get":{"summary":"Metrics","description":"Endpoint that serves Prometheus metrics.","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Get Me","description":"Get current authenticated user.","operationId":"get_me_api_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__auth_router__UserResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__auth_router__TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh","operationId":"refresh_api_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__auth_router__TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_api_auth_logout_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"refresh_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify-email":{"post":{"tags":["auth"],"summary":"Verify Email","operationId":"verify_email_api_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/forgot-password":{"post":{"tags":["auth"],"summary":"Forgot Password","operationId":"forgot_password_api_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset-password":{"post":{"tags":["auth"],"summary":"Reset Password","operationId":"reset_password_api_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/devices":{"get":{"tags":["auth"],"summary":"Get Devices","operationId":"get_devices_api_auth_devices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserDeviceResponse"},"type":"array","title":"Response Get Devices Api Auth Devices Get"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["auth"],"summary":"Logout All Devices","description":"Logout from all devices except current.","operationId":"logout_all_devices_api_auth_devices_delete","responses":{"204":{"description":"Successful Response"}},"security":[{"HTTPBearer":[]}]}},"/api/auth/check-username":{"get":{"tags":["auth"],"summary":"Check Username","operationId":"check_username_api_auth_check_username_get","parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckAvailabilityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/check-email":{"get":{"tags":["auth"],"summary":"Check Email","operationId":"check_email_api_auth_check_email_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckAvailabilityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/resend-verification":{"post":{"tags":["auth"],"summary":"Resend Verification","operationId":"resend_verification_api_auth_resend_verification_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/devices/{device_id}/trust":{"patch":{"tags":["auth"],"summary":"Toggle Trust","operationId":"toggle_trust_api_auth_devices__device_id__trust_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"trusted","in":"query","required":true,"schema":{"type":"boolean","title":"Trusted"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__auth_router__TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login/2fa":{"post":{"tags":["auth"],"summary":"Login 2Fa","operationId":"login_2fa_api_auth_login_2fa_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__auth_router__TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/change-password":{"post":{"tags":["auth"],"summary":"Change Password","operationId":"change_password_api_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/auth/toggle-2fa":{"post":{"tags":["auth"],"summary":"Toggle 2Fa","operationId":"toggle_2fa_api_auth_toggle_2fa_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toggle2FARequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Toggle2FAResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/auth/push-token":{"post":{"tags":["auth"],"summary":"Register Push Token","description":"Register Expo Push Token for the current user.","operationId":"register_push_token_api_auth_push_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushTokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["auth"],"summary":"Unregister Push Token","description":"Remove push token for the current user.","operationId":"unregister_push_token_api_auth_push_token_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/auth/send-test-email":{"post":{"tags":["auth"],"summary":"Send Test Email","description":"Send a test email to the current user (admin only).","operationId":"send_test_email_api_auth_send_test_email_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/me":{"get":{"tags":["users"],"summary":"Get Me","operationId":"get_me_api_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__user_router__UserResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["users"],"summary":"Update Me","description":"Update current user profile using direct autocommit to avoid row lock contention.","operationId":"update_me_api_users_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__user_router__UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/me/default-avatar":{"put":{"tags":["users"],"summary":"Update Default Avatar","description":"Update default avatar index (0-7) or reset to random (null).\n\nWhen user has no custom avatar, this determines which minimalist face is shown.","operationId":"update_default_avatar_api_users_me_default_avatar_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultAvatarUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/me/presence":{"get":{"tags":["users"],"summary":"Get My Presence","description":"Get current user's presence status.","operationId":"get_my_presence_api_users_me_presence_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPresenceResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["users"],"summary":"Update Presence","description":"Update user presence status.","operationId":"update_presence_api_users_me_presence_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresenceUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresenceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/presence":{"post":{"tags":["users"],"summary":"Update Presence Alias","description":"Update user presence status (alias for /me/presence).","operationId":"update_presence_alias_api_users_presence_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresenceUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresenceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/me/online":{"post":{"tags":["users"],"summary":"Set Online","operationId":"set_online_api_users_me_online_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresenceResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/me/offline":{"post":{"tags":["users"],"summary":"Set Offline","operationId":"set_offline_api_users_me_offline_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresenceResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/me/activity":{"post":{"tags":["users"],"summary":"Update Activity","operationId":"update_activity_api_users_me_activity_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/register":{"post":{"tags":["users"],"summary":"Register Anonymous","description":"Register an anonymous user.","operationId":"register_anonymous_api_users_register_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__user_router__UserResponse"}}}}}}},"/api/users/friends/add/{username}":{"post":{"tags":["users"],"summary":"Add Friend","description":"Add a friend by username.","operationId":"add_friend_api_users_friends_add__username__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/me/settings":{"get":{"tags":["users"],"summary":"Get Settings","operationId":"get_settings_api_users_me_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingsSchema"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["users"],"summary":"Update Settings","operationId":"update_settings_api_users_me_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingsSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSettingsSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/users/{user_id}":{"get":{"tags":["users"],"summary":"Get User","operationId":"get_user_api_users__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__user_router__UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces":{"get":{"tags":["spaces"],"summary":"List Public Spaces","description":"List user's spaces (for backward compatibility).","operationId":"list_public_spaces_api_spaces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SpaceResponse"},"type":"array","title":"Response List Public Spaces Api Spaces Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["spaces"],"summary":"Create Space","description":"Create a new space.","operationId":"create_space_api_spaces_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpaceRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/spaces/my":{"get":{"tags":["spaces"],"summary":"List My Spaces","description":"List current user's spaces.","operationId":"list_my_spaces_api_spaces_my_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SpaceResponse"},"type":"array","title":"Response List My Spaces Api Spaces My Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/spaces/discover":{"get":{"tags":["spaces"],"summary":"Discover Spaces","description":"Discover public spaces with sorting.\n\nsort_by options:\n- 'members': by member count (default)\n- 'activity': by recent activity\n- 'created': by creation date (newest first)","operationId":"discover_spaces_api_spaces_discover_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"members","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DiscoverSpaceResult"},"title":"Response Discover Spaces Api Spaces Discover Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/search":{"get":{"tags":["spaces"],"summary":"Search Spaces","description":"Search spaces by name.","operationId":"search_spaces_api_spaces_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"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/SpaceSearchResult"},"title":"Response Search Spaces Api Spaces Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/join":{"post":{"tags":["spaces"],"summary":"Join Public Space","description":"Join a public space directly (without invite code).","operationId":"join_public_space_api_spaces__space_id__join_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/request":{"post":{"tags":["spaces"],"summary":"Request Join Space","description":"Send a join request to a private space.","operationId":"request_join_space_api_spaces__space_id__request_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/JoinRequestCreateRequest"},{"type":"null"}],"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/requests":{"get":{"tags":["spaces"],"summary":"List Join Requests","description":"List pending join requests for a space (admin only).","operationId":"list_join_requests_api_spaces__space_id__requests_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JoinRequestResponse"},"title":"Response List Join Requests Api Spaces  Space Id  Requests Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/requests/{request_id}/approve":{"post":{"tags":["spaces"],"summary":"Approve Join Request","description":"Approve a join request (admin only).","operationId":"approve_join_request_api_spaces_requests__request_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/requests/{request_id}/reject":{"post":{"tags":["spaces"],"summary":"Reject Join Request","description":"Reject a join request (admin only).","operationId":"reject_join_request_api_spaces_requests__request_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/preview/{invite_code}":{"get":{"tags":["spaces"],"summary":"Get Space Preview","description":"Get space preview by invite code.","operationId":"get_space_preview_api_spaces_preview__invite_code__get","parameters":[{"name":"invite_code","in":"path","required":true,"schema":{"type":"string","title":"Invite Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpacePreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/public-info":{"get":{"tags":["spaces"],"summary":"Get Space Public Info","description":"Get public space info (no auth required). Returns 404 for non-public spaces.","operationId":"get_space_public_info_api_spaces__space_id__public_info_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpacePublicInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}":{"get":{"tags":["spaces"],"summary":"Get Space","description":"Get space by ID.","operationId":"get_space_api_spaces__space_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["spaces"],"summary":"Update Space","description":"Update space settings.","operationId":"update_space_api_spaces__space_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpaceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["spaces"],"summary":"Delete Space","description":"Delete a space.","operationId":"delete_space_api_spaces__space_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members":{"get":{"tags":["spaces"],"summary":"List Members","description":"List members of a space with fresh presence data.","operationId":"list_members_api_spaces__space_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SpaceMemberResponse"},"title":"Response List Members Api Spaces  Space Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/join/{invite_code}":{"post":{"tags":["spaces"],"summary":"Join Space","description":"Join a space using invite code.","operationId":"join_space_api_spaces_join__invite_code__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invite_code","in":"path","required":true,"schema":{"type":"string","title":"Invite Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/join/invite/{invite_code}":{"post":{"tags":["spaces"],"summary":"Join Space Alias","description":"Alias for joining a space using invite code.","operationId":"join_space_alias_api_spaces_join_invite__invite_code__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invite_code","in":"path","required":true,"schema":{"type":"string","title":"Invite Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/leave":{"post":{"tags":["spaces"],"summary":"Leave Space","description":"Leave a space.","operationId":"leave_space_api_spaces__space_id__leave_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members/{member_id}/role":{"patch":{"tags":["spaces"],"summary":"Update Member Role","description":"Update member role (admin/owner only).","operationId":"update_member_role_api_spaces__space_id__members__member_id__role_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members/{member_id}":{"delete":{"tags":["spaces"],"summary":"Kick Member","description":"Kick member from space.","operationId":"kick_member_api_spaces__space_id__members__member_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members/{member_id}/nickname":{"patch":{"tags":["spaces"],"summary":"Update Member Nickname","description":"Change member's server nickname (admin/moderator+ or self).","operationId":"update_member_nickname_api_spaces__space_id__members__member_id__nickname_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberNicknameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members/{member_id}/display-role":{"patch":{"tags":["spaces"],"summary":"Update Member Display Role","description":"Set or clear member's display role (admin/owner, or self for own display role).","operationId":"update_member_display_role_api_spaces__space_id__members__member_id__display_role_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberDisplayRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members/{member_id}/mute":{"post":{"tags":["spaces"],"summary":"Mute Member","description":"Mute a member for a specified duration (admin/moderator+).","operationId":"mute_member_api_spaces__space_id__members__member_id__mute_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MuteMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members/{member_id}/unmute":{"post":{"tags":["spaces"],"summary":"Unmute Member","description":"Remove mute from a member (admin/moderator+).","operationId":"unmute_member_api_spaces__space_id__members__member_id__unmute_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/members/{member_id}/move":{"post":{"tags":["spaces"],"summary":"Move Member To Channel","description":"Move a member from their current voice channel to another (admin/moderator+).","operationId":"move_member_to_channel_api_spaces__space_id__members__member_id__move_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveToChannelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/afk-settings":{"patch":{"tags":["spaces"],"summary":"Update Afk Settings","description":"Update AFK channel and timeout settings (admin/owner only).","operationId":"update_afk_settings_api_spaces__space_id__afk_settings_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAfkSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/join-settings":{"get":{"tags":["spaces"],"summary":"Get Join Settings","description":"Get join welcome settings (admin/owner only).","operationId":"get_join_settings_api_spaces__space_id__join_settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["spaces"],"summary":"Update Join Settings","description":"Update join welcome settings (admin/owner only).","operationId":"update_join_settings_api_spaces__space_id__join_settings_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateJoinSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/invite-code":{"get":{"tags":["spaces"],"summary":"Get Invite Code","description":"Get space invite code.","operationId":"get_invite_code_api_spaces__space_id__invite_code_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/archive":{"post":{"tags":["spaces"],"summary":"Archive Space","description":"Archive space (owner only).","operationId":"archive_space_api_spaces__space_id__archive_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/unarchive":{"post":{"tags":["spaces"],"summary":"Unarchive Space","description":"Unarchive space (owner only).","operationId":"unarchive_space_api_spaces__space_id__unarchive_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/rooms":{"post":{"tags":["spaces"],"summary":"Create Room","description":"Create a new room in space.","operationId":"create_room_api_spaces__space_id__rooms_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoomRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/rooms/{room_id}":{"patch":{"tags":["spaces"],"summary":"Update Room","description":"Update a room in space.","operationId":"update_room_api_spaces__space_id__rooms__room_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoomRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["spaces"],"summary":"Delete Room","description":"Delete a room from space.","operationId":"delete_room_api_spaces__space_id__rooms__room_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/rooms/{room_id}/access":{"put":{"tags":["spaces"],"summary":"Update Room Access","description":"Set room access mode and access list.","operationId":"update_room_access_api_spaces__space_id__rooms__room_id__access_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoomAccessRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/categories":{"post":{"tags":["spaces"],"summary":"Create Category","description":"Create a new channel category.","operationId":"create_category_api_spaces__space_id__categories_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCategoryRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/categories/{category_id}":{"patch":{"tags":["spaces"],"summary":"Update Category","description":"Update a channel category.","operationId":"update_category_api_spaces__space_id__categories__category_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCategoryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["spaces"],"summary":"Delete Category","description":"Delete a channel category. Rooms become uncategorized.","operationId":"delete_category_api_spaces__space_id__categories__category_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/rooms/reorder":{"post":{"tags":["spaces"],"summary":"Reorder Rooms","description":"Batch update room positions and category assignments.","operationId":"reorder_rooms_api_spaces__space_id__rooms_reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderRoomsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/categories/reorder":{"post":{"tags":["spaces"],"summary":"Reorder Categories","description":"Batch update category positions.","operationId":"reorder_categories_api_spaces__space_id__categories_reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderCategoriesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/channels":{"post":{"tags":["spaces"],"summary":"Create Channel","description":"Create a new channel in space (alias for create_room).","operationId":"create_channel_api_spaces__space_id__channels_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoomRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/channels/{channel_id}":{"patch":{"tags":["spaces"],"summary":"Update Channel","description":"Update a channel in space (alias for update_room).","operationId":"update_channel_api_spaces__space_id__channels__channel_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoomRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["spaces"],"summary":"Delete Channel","description":"Delete a channel from space (alias for delete_room).","operationId":"delete_channel_api_spaces__space_id__channels__channel_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/roles":{"get":{"tags":["spaces"],"summary":"List Roles","description":"List all roles in a space.","operationId":"list_roles_api_spaces__space_id__roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoleResponse"},"title":"Response List Roles Api Spaces  Space Id  Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["spaces"],"summary":"Create Role","description":"Create a new role.","operationId":"create_role_api_spaces__space_id__roles_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/roles/{role_id}":{"patch":{"tags":["spaces"],"summary":"Update Role","description":"Update a role.","operationId":"update_role_api_spaces__space_id__roles__role_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["spaces"],"summary":"Delete Role","description":"Delete a role.","operationId":"delete_role_api_spaces__space_id__roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/roles/reorder":{"post":{"tags":["spaces"],"summary":"Reorder Roles","description":"Reorder roles.","operationId":"reorder_roles_api_spaces__space_id__roles_reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderRolesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/invites":{"get":{"tags":["spaces"],"summary":"List Invites","description":"List all invites in a space.","operationId":"list_invites_api_spaces__space_id__invites_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InviteResponse"},"title":"Response List Invites Api Spaces  Space Id  Invites Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["spaces"],"summary":"Create Invite","description":"Create a new invite.","operationId":"create_invite_api_spaces__space_id__invites_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInviteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/invites/{invite_id}":{"delete":{"tags":["spaces"],"summary":"Delete Invite","description":"Delete an invite.","operationId":"delete_invite_api_spaces__space_id__invites__invite_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invite Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/voice/{space_id}/{channel_id}/participants":{"get":{"tags":["spaces"],"summary":"Get Voice Participants","description":"Получить участников голосового канала.","operationId":"get_voice_participants_api_spaces_voice__space_id___channel_id__participants_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceParticipantsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/channels/{channel_id}/notes":{"get":{"tags":["spaces"],"summary":"List Channel Notes","description":"List AI notes for a specific channel.","operationId":"list_channel_notes_api_spaces_channels__channel_id__notes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__presentation__api__space_router__NoteResponse"},"title":"Response List Channel Notes Api Spaces Channels  Channel Id  Notes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["spaces"],"summary":"Create Channel Note","description":"Create an AI note for a specific channel.","operationId":"create_channel_note_api_spaces_channels__channel_id__notes_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChannelNoteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChannelNoteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/welcome":{"get":{"tags":["spaces"],"summary":"Get Welcome Screen","description":"Get welcome screen config for a space.","operationId":"get_welcome_screen_api_spaces__space_id__welcome_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WelcomeScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["spaces"],"summary":"Update Welcome Screen","description":"Update welcome screen config (owner/admin only).","operationId":"update_welcome_screen_api_spaces__space_id__welcome_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWelcomeScreenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WelcomeScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/welcome/seen":{"post":{"tags":["spaces"],"summary":"Mark Welcome Seen","description":"Mark welcome screen as seen for the current user.","operationId":"mark_welcome_seen_api_spaces__space_id__welcome_seen_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/streaming-onboarding":{"get":{"tags":["spaces"],"summary":"Get Streaming Onboarding","description":"Check streaming onboarding status for the current user.","operationId":"get_streaming_onboarding_api_spaces__space_id__streaming_onboarding_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamingOnboardingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/streaming-onboarding/seen":{"post":{"tags":["spaces"],"summary":"Mark Streaming Onboarding Seen","description":"Mark streaming onboarding as seen for the current user.","operationId":"mark_streaming_onboarding_seen_api_spaces__space_id__streaming_onboarding_seen_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/notifications":{"put":{"tags":["spaces"],"summary":"Update Space Notification Settings","description":"Update space-level notification settings (applies when no channel-specific override).","operationId":"update_space_notification_settings_api_spaces__space_id__notifications_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["spaces"],"summary":"Get Notification Settings","description":"Get all notification settings for a space (space-level + per-channel).","operationId":"get_notification_settings_api_spaces__space_id__notifications_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationSettingsResponse"},"title":"Response Get Notification Settings Api Spaces  Space Id  Notifications Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/channels/{channel_id}/notifications":{"put":{"tags":["spaces"],"summary":"Update Channel Notification Settings","description":"Update per-channel notification settings.","operationId":"update_channel_notification_settings_api_spaces__space_id__channels__channel_id__notifications_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/audit-log":{"get":{"tags":["spaces"],"summary":"Get Audit Log","description":"Get audit log for a space (owner/admin only).","operationId":"get_audit_log_api_spaces__space_id__audit_log_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"actor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/awards":{"get":{"tags":["awards"],"summary":"Get Space Awards","description":"Все награды space с актуальным прогрессом.","operationId":"get_space_awards_api_spaces__space_id__awards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceAwardsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voice-sessions/active/mute-segment":{"post":{"tags":["voice-sessions"],"summary":"Add Mute Segment","description":"Добавить muted-сегмент к активной voice-сессии пользователя.\n\nЕсли в моменте активной сессии нет — silent no-op (matched=0). Это\nнормально: клиент мог пропустить ws-событие leave, но всё ещё пытается\nотправить «хвост» от mute-сегмента.\n\nАнти-эксплойт: сервер ограничивает приращение фактической длительностью\nсессии минус уже накопленные `muted_seconds`. Иначе любой залогиненный\nюзер мог бы инфлировать «Слушателя» циклом POST'ов с большими seconds.","operationId":"add_mute_segment_api_voice_sessions_active_mute_segment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MuteSegmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MuteSegmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/spotify/connect":{"post":{"tags":["integrations"],"summary":"Connect Spotify","description":"Старт OAuth: возвращаем auth-URL, фронт редиректит сам.\n\nНе используем серверный 307: при прямом переходе браузер не отправляет\nBearer-токен и бэк возвращает 401. Поэтому фронт сначала делает\nавторизованный POST, получает auth_url и потом `window.location.href`.","operationId":"connect_spotify_api_integrations_spotify_connect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotifyConnectResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/spotify/callback":{"get":{"tags":["integrations"],"summary":"Spotify Callback","description":"Callback Spotify OAuth. Не требует auth — личность определяем по\nstate (он привязан к user_id при /connect).","operationId":"spotify_callback_api_integrations_spotify_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/spotify/status":{"get":{"tags":["integrations"],"summary":"Spotify Status","description":"Подключён ли Spotify у этого юзера. Используется фронтом, чтобы\nпоказать кнопку «Connect» или карточку текущего трека.\n\nLazy backfill: для записей, созданных до миграции product (или с\nproduct=NULL), здесь же дёргаем /me, заполняем display_name/country/\nproduct и сохраняем. Это значит — у юзера, подключившегося до выкатки\nPremium-фичи, кнопки управления плеером появятся сразу на следующем\nзаходе в Settings, без необходимости reconnect.","operationId":"spotify_status_api_integrations_spotify_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotifyStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/spotify/disconnect":{"delete":{"tags":["integrations"],"summary":"Disconnect Spotify","operationId":"disconnect_spotify_api_integrations_spotify_disconnect_delete","responses":{"204":{"description":"Successful Response"}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/spotify/visibility":{"patch":{"tags":["integrations"],"summary":"Set Visibility","operationId":"set_visibility_api_integrations_spotify_visibility_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibilityRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/spotify/playback/{action}":{"post":{"tags":["integrations"],"summary":"Playback Command","description":"Прокси на Spotify Web API: play / pause / next / previous.\n\nДоступно только Premium-юзерам (Spotify сам вернёт 403 для free).\nНа стороне роутера: 404 если нет подключения, 409 если нет активного\nустройства или не Premium.","operationId":"playback_command_api_integrations_spotify_playback__action__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/spotify/now-playing":{"get":{"tags":["integrations"],"summary":"Now Playing","description":"Что юзер слушает прямо сейчас. None если ничего/непубличный/не подключён.","operationId":"now_playing_api_integrations_spotify_now_playing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NowPlayingResponse"},{"type":"null"}],"title":"Response Now Playing Api Integrations Spotify Now Playing Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/spotify/space-visibility":{"get":{"tags":["integrations"],"summary":"Get Space Visibility","description":"Список space_id, в которых юзер скрыл свой Spotify-presence.","operationId":"get_space_visibility_api_integrations_spotify_space_visibility_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceVisibilityResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["integrations"],"summary":"Set Space Visibility","description":"Per-space toggle. is_visible=False → добавить в blacklist;\nis_visible=True → удалить (вернуть видимость по умолчанию).\n\nReal-time-эффект: при выключении сразу broadcast'им пустой presence\nв этот space, чтобы карточки с треком у всех в этом space очистились\nмгновенно (без ожидания следующего тика поллера, ~10с).","operationId":"set_space_visibility_api_integrations_spotify_space_visibility_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSpaceVisibilityRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/steam/connect":{"post":{"tags":["integrations"],"summary":"Connect Steam","description":"Старт OpenID: возвращаем auth_url, фронт сам редиректит.\n\nНе используем серверный 307: при прямом переходе браузер не отправит\nBearer-токен и бэк вернёт 401. Поэтому фронт сначала делает\nавторизованный POST, получает auth_url и потом `window.location.href`.","operationId":"connect_steam_api_integrations_steam_connect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SteamConnectResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/steam/callback":{"get":{"tags":["integrations"],"summary":"Steam Callback","description":"Callback Steam OpenID. Не требует auth: личность определяем по\nstate (он привязан к user_id при /connect).","operationId":"steam_callback_api_integrations_steam_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/integrations/steam/status":{"get":{"tags":["integrations"],"summary":"Steam Status","description":"Подключён ли Steam у этого юзера. Используется фронтом, чтобы\nпоказать кнопку «Connect» или карточку привязанного аккаунта.","operationId":"steam_status_api_integrations_steam_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SteamStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/steam/disconnect":{"delete":{"tags":["integrations"],"summary":"Disconnect Steam","operationId":"disconnect_steam_api_integrations_steam_disconnect_delete","responses":{"204":{"description":"Successful Response"}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/steam/visibility":{"patch":{"tags":["integrations"],"summary":"Set Visibility","operationId":"set_visibility_api_integrations_steam_visibility_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibilityRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/steam/now-playing":{"get":{"tags":["integrations"],"summary":"Now Playing","description":"Во что юзер играет прямо сейчас. None если не подключён / выключен\nvisibility / Steam недоступен.","operationId":"now_playing_api_integrations_steam_now_playing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SteamNowPlayingResponse"},{"type":"null"}],"title":"Response Now Playing Api Integrations Steam Now Playing Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/integrations/steam/space-visibility":{"get":{"tags":["integrations"],"summary":"Get Space Visibility","description":"Список space_id, в которых юзер скрыл свой Steam-presence.","operationId":"get_space_visibility_api_integrations_steam_space_visibility_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpaceVisibilityResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["integrations"],"summary":"Set Space Visibility","description":"Per-space toggle для Steam. При выключении — мгновенный broadcast\nпустого presence в этот space, чтобы chip-«играет в …» у других\nисчез сразу (без ожидания тика поллера ~15с).","operationId":"set_space_visibility_api_integrations_steam_space_visibility_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSpaceVisibilityRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/spaces/{space_id}/soundboard/sounds":{"get":{"tags":["soundboard"],"summary":"List Sounds","operationId":"list_sounds_api_spaces__space_id__soundboard_sounds_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoundListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["soundboard"],"summary":"Upload Sound","description":"Загрузить обрезанный звук (до 10 секунд).","operationId":"upload_sound_api_spaces__space_id__soundboard_sounds_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_sound_api_spaces__space_id__soundboard_sounds_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoundResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/soundboard/sounds/{sound_id}":{"patch":{"tags":["soundboard"],"summary":"Update Sound","operationId":"update_sound_api_spaces__space_id__soundboard_sounds__sound_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"sound_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sound Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSoundRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoundResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["soundboard"],"summary":"Delete Sound","operationId":"delete_sound_api_spaces__space_id__soundboard_sounds__sound_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"sound_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sound Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/soundboard/sounds/{sound_id}/play":{"post":{"tags":["soundboard"],"summary":"Play Sound","description":"Триггер воспроизведения. Рассылает WS-событие всем участникам канала.\n\nКлиенты сами играют локально через `new Audio()` с применением своей\nиндивидуальной громкости/on-off. Сервер только оповещает.","operationId":"play_sound_api_spaces__space_id__soundboard_sounds__sound_id__play_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"sound_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Sound Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaySoundRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/soundboard/preferences":{"get":{"tags":["soundboard"],"summary":"Get Preferences","operationId":"get_preferences_api_spaces__space_id__soundboard_preferences_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["soundboard"],"summary":"Update Preferences","operationId":"update_preferences_api_spaces__space_id__soundboard_preferences_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePreferencesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/messages":{"post":{"tags":["chat"],"summary":"Send Message","description":"Send a message to a channel.","operationId":"send_message_api_chat__space_id___channel_id__messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["chat"],"summary":"List Messages","description":"List messages in a channel.","operationId":"list_messages_api_chat__space_id___channel_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"},"title":"Response List Messages Api Chat  Space Id   Channel Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/messages/{message_id}":{"patch":{"tags":["chat"],"summary":"Edit Message","description":"Edit a chat message.","operationId":"edit_message_api_chat__space_id___channel_id__messages__message_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Delete Message","description":"Delete a chat message.","operationId":"delete_message_api_chat__space_id___channel_id__messages__message_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/messages/{message_id}/reactions":{"post":{"tags":["chat"],"summary":"Toggle Reaction","description":"Toggle a reaction on a chat message.","operationId":"toggle_reaction_api_chat__space_id___channel_id__messages__message_id__reactions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/typing":{"get":{"tags":["chat"],"summary":"Get Typing Users","description":"Получить список печатающих пользователей.","operationId":"get_typing_users_api_chat__space_id___channel_id__typing_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TypingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/unread":{"get":{"tags":["chat"],"summary":"Get Unread Counts","description":"Get unread message counts for all text channels in a space.","operationId":"get_unread_counts_api_chat__space_id__unread_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/read":{"post":{"tags":["chat"],"summary":"Mark Channel Read","description":"Mark a channel as read.","operationId":"mark_channel_read_api_chat__space_id___channel_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/messages/{message_id}/pin":{"post":{"tags":["chat"],"summary":"Pin Message","description":"Pin a message in a channel.","operationId":"pin_message_api_chat__space_id___channel_id__messages__message_id__pin_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Unpin Message","description":"Unpin a message in a channel.","operationId":"unpin_message_api_chat__space_id___channel_id__messages__message_id__pin_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/pinned":{"get":{"tags":["chat"],"summary":"List Pinned Messages","description":"List all pinned messages in a channel.","operationId":"list_pinned_messages_api_chat__space_id___channel_id__pinned_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"},"title":"Response List Pinned Messages Api Chat  Space Id   Channel Id  Pinned Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/search":{"get":{"tags":["chat"],"summary":"Search Messages","description":"Full-text search across messages in a space.","operationId":"search_messages_api_chat__space_id__search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"channel_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Channel Id"}},{"name":"from_user","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"From User"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Before"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"After"}},{"name":"has_attachment","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Has Attachment"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"},"title":"Response Search Messages Api Chat  Space Id  Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/messages/{message_id}/thread":{"post":{"tags":["chat"],"summary":"Reply In Thread","description":"Reply in a thread (creates thread if first reply).","operationId":"reply_in_thread_api_chat__space_id___channel_id__messages__message_id__thread_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["chat"],"summary":"Get Thread Messages","description":"Get all messages in a thread.","operationId":"get_thread_messages_api_chat__space_id___channel_id__messages__message_id__thread_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"},"title":"Response Get Thread Messages Api Chat  Space Id   Channel Id  Messages  Message Id  Thread Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/posts":{"post":{"tags":["chat"],"summary":"Create Forum Post","description":"Create a new forum post.","operationId":"create_forum_post_api_chat__space_id___channel_id__posts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForumPostCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["chat"],"summary":"List Forum Posts Endpoint","description":"List forum posts in a channel.","operationId":"list_forum_posts_endpoint_api_chat__space_id___channel_id__posts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"newest","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"},"title":"Response List Forum Posts Endpoint Api Chat  Space Id   Channel Id  Posts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/polls":{"post":{"tags":["chat"],"summary":"Create Poll","description":"Create a poll message in a channel.","operationId":"create_poll_api_chat__space_id___channel_id__polls_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PollCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/messages/{message_id}/vote":{"post":{"tags":["chat"],"summary":"Vote On Poll","description":"Vote on a poll.","operationId":"vote_on_poll_api_chat__space_id___channel_id__messages__message_id__vote_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Retract Vote","description":"Retract user's vote from a poll.","operationId":"retract_vote_api_chat__space_id___channel_id__messages__message_id__vote_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/commands":{"get":{"tags":["chat"],"summary":"List Channel Commands","description":"Доступные в канале slash-команды (боты с доступом к каналу + scope\ncommands) — для автокомплита на клиенте.","operationId":"list_channel_commands_api_chat__space_id___channel_id__commands_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CommandCatalogItem"},"title":"Response List Channel Commands Api Chat  Space Id   Channel Id  Commands Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat/{space_id}/{channel_id}/commands/invoke":{"post":{"tags":["chat"],"summary":"Invoke Command","description":"Вызвать slash-команду бота. options едут plaintext (явный opt-in юзера),\nвалидируются по схеме команды; в чат/ленту/модерацию НЕ попадают.","operationId":"invoke_command_api_chat__space_id___channel_id__commands_invoke_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandInvokeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Invoke Command Api Chat  Space Id   Channel Id  Commands Invoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/conversations":{"get":{"tags":["dm"],"summary":"List Conversations","description":"List all direct message conversations.","operationId":"list_conversations_api_dm_conversations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ConversationSummaryResponse"},"type":"array","title":"Response List Conversations Api Dm Conversations Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/dm/unread/count":{"get":{"tags":["dm"],"summary":"Get Unread Count","description":"Get total unread direct message count.","operationId":"get_unread_count_api_dm_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCountResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/dm/{receiver_id}":{"post":{"tags":["dm"],"summary":"Send Dm","description":"Send a direct message to a user.","operationId":"send_dm_api_dm__receiver_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"receiver_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Receiver Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendDMRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DMResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{other_id}":{"get":{"tags":["dm"],"summary":"List Dms","description":"List direct messages with a user.","operationId":"list_dms_api_dm__other_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"other_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Other Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DMResponse"},"title":"Response List Dms Api Dm  Other Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{other_id}/read":{"post":{"tags":["dm"],"summary":"Mark As Read","description":"Mark all messages from a user as read.","operationId":"mark_as_read_api_dm__other_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"other_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Other Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{message_id}":{"delete":{"tags":["dm"],"summary":"Delete Dm","description":"Delete a direct message.","operationId":"delete_dm_api_dm__message_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["dm"],"summary":"Edit Dm","description":"Edit a direct message.","operationId":"edit_dm_api_dm__message_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditDMRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DMResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{message_id}/reactions":{"post":{"tags":["dm"],"summary":"Toggle Dm Reaction","description":"Toggle a reaction on a direct message.","operationId":"toggle_dm_reaction_api_dm__message_id__reactions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"emoji","in":"query","required":true,"schema":{"type":"string","title":"Emoji"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DMResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{message_id}/pin":{"post":{"tags":["dm"],"summary":"Pin Dm","description":"Pin a direct message.","operationId":"pin_dm_api_dm__message_id__pin_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DMResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["dm"],"summary":"Unpin Dm","description":"Unpin a direct message.","operationId":"unpin_dm_api_dm__message_id__pin_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DMResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{other_id}/pinned":{"get":{"tags":["dm"],"summary":"List Pinned Dms","description":"List pinned messages in a DM conversation.","operationId":"list_pinned_dms_api_dm__other_id__pinned_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"other_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Other Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DMResponse"},"title":"Response List Pinned Dms Api Dm  Other Id  Pinned Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{other_id}/media":{"get":{"tags":["dm"],"summary":"List Dm Media","description":"List shared media/files/links in a DM conversation.\n\nFilter by type: image, video, audio, voice, file.","operationId":"list_dm_media_api_dm__other_id__media_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"other_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Other Id"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DMResponse"},"title":"Response List Dm Media Api Dm  Other Id  Media Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dm/{other_id}/search":{"get":{"tags":["dm"],"summary":"Search Dm Messages","description":"Search messages in a DM conversation by text.","operationId":"search_dm_messages_api_dm__other_id__search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"other_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Other Id"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DMResponse"},"title":"Response Search Dm Messages Api Dm  Other Id  Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends/search":{"get":{"tags":["friends"],"summary":"Search Users","description":"Search for users by username or display name.","operationId":"search_users_api_friends_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__presentation__api__auth_router__UserResponse"},"title":"Response Search Users Api Friends Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends/request/{friend_id}":{"post":{"tags":["friends"],"summary":"Send Friend Request","description":"Send a friend request.","operationId":"send_friend_request_api_friends_request__friend_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"friend_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Friend Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FriendshipResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends/accept/{friend_id}":{"post":{"tags":["friends"],"summary":"Accept Friend Request","description":"Accept a friend request.","operationId":"accept_friend_request_api_friends_accept__friend_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"friend_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Friend Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FriendshipResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends":{"get":{"tags":["friends"],"summary":"List Friends","description":"List all friends with full user data.","operationId":"list_friends_api_friends_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app__presentation__api__auth_router__UserResponse"},"type":"array","title":"Response List Friends Api Friends Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/friends/requests/incoming":{"get":{"tags":["friends"],"summary":"List Incoming Requests","description":"List incoming friend requests with full user data.","operationId":"list_incoming_requests_api_friends_requests_incoming_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FriendRequestResponse"},"type":"array","title":"Response List Incoming Requests Api Friends Requests Incoming Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/friends/requests/outgoing":{"get":{"tags":["friends"],"summary":"List Outgoing Requests","description":"List outgoing friend requests with full user data.","operationId":"list_outgoing_requests_api_friends_requests_outgoing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FriendRequestResponse"},"type":"array","title":"Response List Outgoing Requests Api Friends Requests Outgoing Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/friends/reject/{friend_id}":{"post":{"tags":["friends"],"summary":"Reject Friend Request","description":"Reject a friend request.","operationId":"reject_friend_request_api_friends_reject__friend_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"friend_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Friend Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends/cancel/{friend_id}":{"post":{"tags":["friends"],"summary":"Cancel Friend Request","description":"Cancel an outgoing friend request.","operationId":"cancel_friend_request_api_friends_cancel__friend_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"friend_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Friend Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends/{friend_id}":{"delete":{"tags":["friends"],"summary":"Remove Friend","description":"Remove a friend.","operationId":"remove_friend_api_friends__friend_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"friend_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Friend Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/friends/block/{friend_id}":{"post":{"tags":["friends"],"summary":"Block User","description":"Block a user.","operationId":"block_user_api_friends_block__friend_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"friend_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Friend Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FriendshipResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/":{"post":{"tags":["instant-calls"],"summary":"Create Call","description":"Create a new instant call.","operationId":"create_call_api_calls__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstantCallCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstantCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["instant-calls"],"summary":"List Calls","description":"List current user's instant calls with real-time participant counts.","operationId":"list_calls_api_calls__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"include_ended","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Ended"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstantCallResponse"},"title":"Response List Calls Api Calls  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/fun-subtitle":{"get":{"tags":["instant-calls"],"summary":"Get Fun Subtitle","description":"Generate a fun subtitle for a call page title.","operationId":"get_fun_subtitle_api_calls_fun_subtitle_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunSubtitleResponse"}}}}}}},"/api/calls/{code}":{"get":{"tags":["instant-calls"],"summary":"Get Call","description":"Get instant call details by code with real-time participant count.","operationId":"get_call_api_calls__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstantCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["instant-calls"],"summary":"Delete Call","description":"Delete an instant call (creator only).","operationId":"delete_call_api_calls__code__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/{code}/join":{"post":{"tags":["instant-calls"],"summary":"Join Call","description":"Join an instant call. Returns 200 on success or 202 if placed in waiting room.","operationId":"join_call_api_calls__code__join_post","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/InstantCallJoinRequest"},{"type":"null"}],"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstantCallJoinResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/{code}/end":{"post":{"tags":["instant-calls"],"summary":"End Call","description":"End an instant call (creator only).","operationId":"end_call_api_calls__code__end_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/{code}/leave":{"post":{"tags":["instant-calls"],"summary":"Leave Call","description":"Leave an instant call.","operationId":"leave_call_api_calls__code__leave_post","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"participant_id","in":"query","required":true,"schema":{"type":"string","title":"Participant Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/{code}/waiting":{"get":{"tags":["instant-calls"],"summary":"List Waiting","description":"List participants waiting for approval (creator only).","operationId":"list_waiting_api_calls__code__waiting_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WaitingParticipantResponse"},"title":"Response List Waiting Api Calls  Code  Waiting Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/{code}/approve/{participant_id}":{"post":{"tags":["instant-calls"],"summary":"Approve Participant","description":"Approve a waiting participant (creator only).","operationId":"approve_participant_api_calls__code__approve__participant_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"participant_id","in":"path","required":true,"schema":{"type":"string","title":"Participant Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/{code}/reject/{participant_id}":{"post":{"tags":["instant-calls"],"summary":"Reject Participant","description":"Reject a waiting participant (creator only).","operationId":"reject_participant_api_calls__code__reject__participant_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"participant_id","in":"path","required":true,"schema":{"type":"string","title":"Participant Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/{code}/approval-status/{participant_id}":{"get":{"tags":["instant-calls"],"summary":"Check Approval Status","description":"Check if a participant has been approved, is still waiting, or was rejected.","operationId":"check_approval_status_api_calls__code__approval_status__participant_id__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"participant_id","in":"path","required":true,"schema":{"type":"string","title":"Participant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/":{"post":{"tags":["calendar"],"summary":"Create Event","description":"Create a new calendar event.","operationId":"create_event_api_calendar__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/calendar/events":{"get":{"tags":["calendar"],"summary":"List Events","description":"List calendar events for current user.","operationId":"list_events_api_calendar_events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":true,"schema":{"type":"string","title":"Start Date"}},{"name":"end_date","in":"query","required":true,"schema":{"type":"string","title":"End Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventResponse"},"title":"Response List Events Api Calendar Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/invitations":{"get":{"tags":["calendar"],"summary":"List Invitations","description":"List pending event invitations.","operationId":"list_invitations_api_calendar_invitations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EventResponse"},"type":"array","title":"Response List Invitations Api Calendar Invitations Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/calendar/upcoming":{"get":{"tags":["calendar"],"summary":"Get Upcoming","description":"Get upcoming calendar events.","operationId":"get_upcoming_api_calendar_upcoming_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":{"type":"array","items":{"$ref":"#/components/schemas/EventResponse"},"title":"Response Get Upcoming Api Calendar Upcoming Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/{event_id}":{"get":{"tags":["calendar"],"summary":"Get Event","description":"Get a calendar event by ID.","operationId":"get_event_api_calendar__event_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["calendar"],"summary":"Update Event","description":"Update a calendar event.","operationId":"update_event_api_calendar__event_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEventRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["calendar"],"summary":"Delete Event","description":"Delete a calendar event.","operationId":"delete_event_api_calendar__event_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/{event_id}/respond":{"post":{"tags":["calendar"],"summary":"Respond To Invite","description":"Respond to a calendar event invitation.","operationId":"respond_to_invite_api_calendar__event_id__respond_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}},{"name":"response_status","in":"query","required":true,"schema":{"$ref":"#/components/schemas/EventParticipantStatus"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/{event_id}/invite":{"post":{"tags":["calendar"],"summary":"Invite Participants","description":"Invite participants to an event.","operationId":"invite_participants_api_calendar__event_id__invite_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteParticipantsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/{event_id}/leave":{"post":{"tags":["calendar"],"summary":"Leave Event","description":"Leave a calendar event.","operationId":"leave_event_api_calendar__event_id__leave_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calendar/{event_id}/start-call":{"post":{"tags":["calendar"],"summary":"Start Event Call","description":"Start an instant call linked to an event.","operationId":"start_event_call_api_calendar__event_id__start_call_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstantCallResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/":{"get":{"tags":["recordings"],"summary":"List Recordings","operationId":"list_recordings_api_recordings__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RecordingResponse"},"type":"array","title":"Response List Recordings Api Recordings  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["recordings"],"summary":"Start Recording","operationId":"start_recording_api_recordings__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartRecordingRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/recordings/{recording_id}":{"get":{"tags":["recordings"],"summary":"Get Recording","operationId":"get_recording_api_recordings__recording_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["recordings"],"summary":"Delete Recording","description":"Delete a recording. Only the owner can delete.","operationId":"delete_recording_api_recordings__recording_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/favorite":{"post":{"tags":["recordings"],"summary":"Toggle Favorite","description":"Toggle recording favorite status.","operationId":"toggle_favorite_api_recordings__recording_id__favorite_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleFavoriteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/finish":{"post":{"tags":["recordings"],"summary":"Finish Recording","description":"Finish a recording and start background processing.","operationId":"finish_recording_api_recordings__recording_id__finish_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinishRecordingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/process":{"post":{"tags":["recordings"],"summary":"Process Recording","description":"Manually trigger recording processing (transcription + summarization).","operationId":"process_recording_api_recordings__recording_id__process_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/participant":{"post":{"tags":["recordings"],"summary":"Add Participant","description":"Add a participant to a recording.","operationId":"add_participant_api_recordings__recording_id__participant_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/summary":{"get":{"tags":["recordings"],"summary":"Get Summary","description":"Get the summary of a recording.","operationId":"get_summary_api_recordings__recording_id__summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/transcript":{"get":{"tags":["recordings"],"summary":"Get Transcript","description":"Get the transcript of a recording.","operationId":"get_transcript_api_recordings__recording_id__transcript_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/chunk":{"post":{"tags":["recordings"],"summary":"Upload Chunk","description":"Upload a video chunk.","operationId":"upload_chunk_api_recordings__recording_id__chunk_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}},{"name":"chunk_index","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Chunk Index"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_chunk_api_recordings__recording_id__chunk_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChunkUploadResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/video":{"get":{"tags":["recordings"],"summary":"Get Recording Video","description":"Get the video file of a recording. Supports ?token= query param for browser playback.","operationId":"get_recording_video_api_recordings__recording_id__video_get","parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/thumbnail":{"get":{"tags":["recordings"],"summary":"Get Recording Thumbnail","description":"Get the thumbnail of a recording. Supports ?token= query param.","operationId":"get_recording_thumbnail_api_recordings__recording_id__thumbnail_get","parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/download":{"get":{"tags":["recordings"],"summary":"Download Recording","description":"Download the recording video file. Supports ?token= query param.","operationId":"download_recording_api_recordings__recording_id__download_get","parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/processing-callback":{"post":{"tags":["recordings"],"summary":"Recording Processing Callback","description":"Callback for AI processing of recording.","operationId":"recording_processing_callback_api_recordings__recording_id__processing_callback_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingProcessingCallbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/{recording_id}/speakers":{"post":{"tags":["recordings"],"summary":"Add Speaker Events","description":"Store speaker timeline events for a recording.","operationId":"add_speaker_events_api_recordings__recording_id__speakers_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeakerEventsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/jibri/status":{"get":{"tags":["recordings"],"summary":"Get Jibri Status","description":"Get Jibri recording service status.\n\nReturns availability and health status of Jibri.\nUse this to check if server-side recording is available.","operationId":"get_jibri_status_api_recordings_jibri_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JibriStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/recordings/jibri/recordings":{"get":{"tags":["recordings"],"summary":"List Jibri Recordings","description":"List all Jibri recordings.\n\nReturns server-side recordings made by Jibri.","operationId":"list_jibri_recordings_api_recordings_jibri_recordings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/JibriRecordingResponse"},"type":"array","title":"Response List Jibri Recordings Api Recordings Jibri Recordings Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/recordings/jibri/start":{"post":{"tags":["recordings"],"summary":"Start Jibri Recording","description":"Check if Jibri is ready to record.\n\nNote: Actual recording is started from Jitsi Meet UI.\nThis endpoint verifies Jibri availability and creates\na recording entry in the database.","operationId":"start_jibri_recording_api_recordings_jibri_start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"room_name","in":"query","required":true,"schema":{"type":"string","title":"Room Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recordings/jibri/callback":{"post":{"tags":["recordings"],"summary":"Jibri Recording Callback","description":"Callback from Jibri finalize.sh after recording + STT + LLM.\n\nProtected by a shared secret passed as ``?secret=...`` query param.","operationId":"jibri_recording_callback_api_recordings_jibri_callback_post","parameters":[{"name":"secret","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JibriCallbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/upload/":{"post":{"tags":["upload"],"summary":"Upload File","description":"Upload chat attachment (auto-detects type if not specified).","operationId":"upload_file_api_upload__post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_upload__post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/upload/avatar":{"post":{"tags":["upload"],"summary":"Upload Avatar","description":"Upload user avatar (max 5MB, jpg/png/gif/webp).","operationId":"upload_avatar_api_upload_avatar_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_avatar_api_upload_avatar_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvatarUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["upload"],"summary":"Delete Avatar","description":"Delete user avatar.","operationId":"delete_avatar_api_upload_avatar_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__schemas__common__MessageResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/upload/attachment":{"post":{"tags":["upload"],"summary":"Upload Attachment","description":"Upload chat attachment (auto-detects type if not specified).","operationId":"upload_attachment_api_upload_attachment_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_attachment_api_upload_attachment_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/upload/voice":{"post":{"tags":["upload"],"summary":"Upload Voice","description":"Upload voice message.","operationId":"upload_voice_api_upload_voice_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_voice_api_upload_voice_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/uploads/sign":{"get":{"tags":["media"],"summary":"Sign And Redirect","description":"Sign a raw upload path and redirect to the signed URL.","operationId":"sign_and_redirect_api_uploads_sign_get","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"Raw upload path, e.g. /uploads/file/abc.jpg or file/abc.jpg","title":"Path"},"description":"Raw upload path, e.g. /uploads/file/abc.jpg or file/abc.jpg"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/uploads/signed":{"get":{"tags":["media"],"summary":"Serve Signed Media","description":"Serve media file if token is valid.\n\nToken is generated when returning messages/attachments to authenticated users.\nPrevents direct URL access without authorization.","operationId":"serve_signed_media_api_uploads_signed_get","parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"Relative path within uploads, e.g. image/abc.jpg","title":"Path"},"description":"Relative path within uploads, e.g. image/abc.jpg"},{"name":"token","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature","title":"Token"},"description":"HMAC signature"},{"name":"exp","in":"query","required":true,"schema":{"type":"integer","description":"Expiration timestamp","title":"Exp"},"description":"Expiration timestamp"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notes/channels/{channel_id}":{"post":{"tags":["notes"],"summary":"Create Channel Note","operationId":"create_channel_note_api_notes_channels__channel_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNoteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteIDResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notes/":{"get":{"tags":["notes"],"summary":"List Notes","operationId":"list_notes_api_notes__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app__presentation__api__note_router__NoteResponse"},"type":"array","title":"Response List Notes Api Notes  Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/notes/{note_id}":{"get":{"tags":["notes"],"summary":"Get Note","operationId":"get_note_api_notes__note_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__note_router__NoteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["notes"],"summary":"Delete Note","operationId":"delete_note_api_notes__note_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/board/{space_id}/{room_id}":{"get":{"tags":["board"],"summary":"Get Board","operationId":"get_board_api_board__space_id___room_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","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"}}}}}}},"/api/board/{space_id}/{room_id}/element":{"post":{"tags":["board"],"summary":"Add Element","operationId":"add_element_api_board__space_id___room_id__element_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardElementSchema"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardElementAddResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/board/{space_id}/{room_id}/element/{element_id}":{"patch":{"tags":["board"],"summary":"Update Element","operationId":"update_element_api_board__space_id___room_id__element__element_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"element_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Element Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardElementUpdateData"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["board"],"summary":"Delete Element","operationId":"delete_element_api_board__space_id___room_id__element__element_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"element_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Element Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/board/{space_id}/{room_id}/clear":{"post":{"tags":["board"],"summary":"Clear Board","operationId":"clear_board_api_board__space_id___room_id__clear_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/board/{space_id}/{room_id}/ai/toggle":{"post":{"tags":["board"],"summary":"Toggle Board Ai","description":"Toggle AI features for a board.","operationId":"toggle_board_ai_api_board__space_id___room_id__ai_toggle_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"enabled","in":"query","required":true,"schema":{"type":"boolean","title":"Enabled"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoardAIToggleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/board/{space_id}/{room_id}/ai/process":{"post":{"tags":["board"],"summary":"Process Board Transcript","description":"Process transcript to generate elements on board.","operationId":"process_board_transcript_api_board__space_id___room_id__ai_process_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"transcript","in":"query","required":true,"schema":{"type":"string","title":"Transcript"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BoardElementSchema"},"title":"Response Process Board Transcript Api Board  Space Id   Room Id  Ai Process Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bots":{"get":{"tags":["bots"],"summary":"List My Bots","description":"Список моих ботов (не deleted).","operationId":"list_my_bots_api_bots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BotResponse"},"type":"array","title":"Response List My Bots Api Bots Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["bots"],"summary":"Create Bot","description":"Создать бота. Возвращает plaintext-токен ОДИН раз — клиент обязан\nсохранить. Дальше токен только хеш в БД.","operationId":"create_bot_api_bots_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBotRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/bots/{bot_user_id}":{"get":{"tags":["bots"],"summary":"Get Bot","operationId":"get_bot_api_bots__bot_user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["bots"],"summary":"Update Bot","operationId":"update_bot_api_bots__bot_user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBotRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["bots"],"summary":"Delete Bot","description":"Soft-delete. 30 дней grace; hard-purge — отдельный cron.","operationId":"delete_bot_api_bots__bot_user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bots/{bot_user_id}/tokens/rotate":{"post":{"tags":["bots"],"summary":"Rotate Token","description":"Ротировать токен. Старый — revoked немедленно. Plaintext нового —\nпоказывается один раз.","operationId":"rotate_token_api_bots__bot_user_id__tokens_rotate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bots/{bot_user_id}/suspend":{"post":{"tags":["bots"],"summary":"Suspend Bot","operationId":"suspend_bot_api_bots__bot_user_id__suspend_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bots/{bot_user_id}/resume":{"post":{"tags":["bots"],"summary":"Resume Bot","operationId":"resume_bot_api_bots__bot_user_id__resume_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/bots":{"post":{"tags":["bots"],"summary":"Invite Bot","description":"Пригласить бота в Space (admin/owner only).\n\nВозможные ошибки:\n  404 — space / bot не найден\n  403 — caller не админ space, либо бот private и не принадлежит caller'у\n  409 — бот suspended/revoked\n  400 — невалидный scope или channel_ids не принадлежат space","operationId":"invite_bot_api_spaces__space_id__bots_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteBotRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMembershipResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["bots"],"summary":"List Bots","description":"Список ботов в space. Доступно любому участнику (scopes тоже видны —\nэто часть transparency: участник имеет право знать что бот может делать\nв его space).","operationId":"list_bots_api_spaces__space_id__bots_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BotMembershipResponse"},"title":"Response List Bots Api Spaces  Space Id  Bots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/spaces/{space_id}/bots/{bot_user_id}":{"patch":{"tags":["bots"],"summary":"Update Bot Membership","description":"Изменить scopes/channels существующего bot membership (admin/owner only).","operationId":"update_bot_membership_api_spaces__space_id__bots__bot_user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBotMembershipRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMembershipResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["bots"],"summary":"Remove Bot","description":"Убрать бота из space. Удаляется и bot_membership, и space_members.","operationId":"remove_bot_api_spaces__space_id__bots__bot_user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/channels/{channel_id}/messages":{"post":{"tags":["bots"],"summary":"Bot Send Message","description":"Отправить сообщение от имени бота. Требует:\n- scope `messages.send`\n- channel_id ∈ membership.allowed_channel_ids\n- бот active (проверено в get_current_bot)","operationId":"bot_send_message_api_bot_spaces__space_id__channels__channel_id__messages_post","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMessageCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["bots"],"summary":"Bot List Messages","description":"Прочитать сообщения канала. Требует:\n  - scope `messages.read`\n  - channel_id ∈ allowed_channel_ids\nВозвращает последние `limit` сообщений (по умолчанию 50, макс 100).\nPagination: `before` — id сообщения, до которого читать.","operationId":"bot_list_messages_api_bot_spaces__space_id__channels__channel_id__messages_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BotMessageResponse"},"title":"Response Bot List Messages Api Bot Spaces  Space Id  Channels  Channel Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/messages/{message_id}/reactions":{"post":{"tags":["bots"],"summary":"Bot Add Reaction","description":"Добавить реакцию к сообщению. Требует scope `messages.react`.\n\nChannel-check тут косвенный: загружаем message → channel_id → проверяем\nчто channel в allowed_channel_ids.","operationId":"bot_add_reaction_api_bot_spaces__space_id__messages__message_id__reactions_post","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotReactionRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/messages/{message_id}":{"delete":{"tags":["bots"],"summary":"Bot Delete Message","description":"Удалить сообщение. Своё → scope `messages.delete.own`; чужое (модерация)\n→ scope `moderation.messages`. Канал должен быть в allowed_channel_ids.","operationId":"bot_delete_message_api_bot_spaces__space_id__messages__message_id__delete","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/members":{"get":{"tags":["bots"],"summary":"Bot List Members","description":"Список участников space (минимум PII: id/роль/ник/мьют). Требует\nscope `members.read`. Нужен community- и модер-ботам для резолва целей.","operationId":"bot_list_members_api_bot_spaces__space_id__members_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BotMemberInfo"},"title":"Response Bot List Members Api Bot Spaces  Space Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/roles":{"get":{"tags":["bots"],"summary":"Bot List Roles","description":"Список ролей space. Требует scope `roles.read`. Нужен для осмысленного\nroles.assign (бот должен знать id/имена ролей).","operationId":"bot_list_roles_api_bot_spaces__space_id__roles_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BotRoleInfo"},"title":"Response Bot List Roles Api Bot Spaces  Space Id  Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/members/{user_id}/kick":{"post":{"tags":["bots"],"summary":"Bot Kick Member","description":"Кикнуть участника. Требует scope `moderation.kick`. Бот не может кикнуть\nowner/admin/себя.","operationId":"bot_kick_member_api_bot_spaces__space_id__members__user_id__kick_post","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/members/{user_id}/mute":{"post":{"tags":["bots"],"summary":"Bot Mute Member","description":"Замьютить участника на duration_minutes. Требует scope `moderation.mute`.\nБот не может мьютить owner/admin/себя.","operationId":"bot_mute_member_api_bot_spaces__space_id__members__user_id__mute_post","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotMuteRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/voice/{channel_id}/play":{"post":{"tags":["bots"],"summary":"Bot Voice Play","description":"Играть аудио (`source_url`) в голосовом канале.\n\nБот НЕ подключается к каналу сам и не получает чужое аудио — платформа\nпроигрывает источник односторонне. Требует:\n  - scope `voice.publish_audio`\n  - channel_id ∈ allowed_channel_ids\n  - бот active","operationId":"bot_voice_play_api_bot_spaces__space_id__voice__channel_id__play_post","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotPlaybackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotPlaybackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/voice/{channel_id}/stop":{"post":{"tags":["bots"],"summary":"Bot Voice Stop","description":"Остановить воспроизведение бота в голосовом канале.","operationId":"bot_voice_stop_api_bot_spaces__space_id__voice__channel_id__stop_post","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/voice":{"get":{"tags":["bots"],"summary":"Bot Voice Overview","description":"Все allowed voice-каналы space с текущими participants.\n\nИспользуется ботами (например, music) — чтобы найти в каком voice\nканале сейчас юзер, написавший `/play`, без 10 отдельных запросов.\n\nТребует scope `voice.join`. Возвращаются только каналы из\nmembership.allowed_channel_ids.","operationId":"bot_voice_overview_api_bot_spaces__space_id__voice_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BotVoiceChannelSummary"},"title":"Response Bot Voice Overview Api Bot Spaces  Space Id  Voice Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/spaces/{space_id}/voice/{channel_id}/participants":{"get":{"tags":["bots"],"summary":"Bot Voice Participants","description":"Загруженность voice-канала: число участников + присутствует ли сам бот.\n\nIdentity других пользователей НЕ раскрывается (spec §2.1 — voice-presence\nприватна). Требует scope `voice.join` + доступ к каналу.","operationId":"bot_voice_participants_api_bot_spaces__space_id__voice__channel_id__participants_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotVoiceChannelSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/commands":{"get":{"tags":["bots"],"summary":"List My Commands","operationId":"list_my_commands_api_bot_commands_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CommandResponse"},"type":"array","title":"Response List My Commands Api Bot Commands Get"}}}}}},"put":{"tags":["bots"],"summary":"Register Commands","description":"Декларировать ВЕСЬ набор команд (idempotent overwrite).","operationId":"register_commands_api_bot_commands_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterCommandsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CommandResponse"},"type":"array","title":"Response Register Commands Api Bot Commands Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/commands/{name}":{"delete":{"tags":["bots"],"summary":"Delete Command","operationId":"delete_command_api_bot_commands__name__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bot/interactions/respond":{"post":{"tags":["bots"],"summary":"Respond To Interaction","description":"Эфемерный ответ инвокеру по interaction_token (targeted WS, не в чат).","operationId":"respond_to_interaction_api_bot_interactions_respond_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RespondRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bots/{bot_user_id}/webhooks":{"post":{"tags":["bots"],"summary":"Create Webhook","description":"Создать webhook. Возвращает plaintext-секрет ОДИН раз.","operationId":"create_webhook_api_bots__bot_user_id__webhooks_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["bots"],"summary":"List Webhooks","operationId":"list_webhooks_api_bots__bot_user_id__webhooks_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookResponse"},"title":"Response List Webhooks Api Bots  Bot User Id  Webhooks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bots/{bot_user_id}/webhooks/{webhook_id}":{"delete":{"tags":["bots"],"summary":"Delete Webhook","operationId":"delete_webhook_api_bots__bot_user_id__webhooks__webhook_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}},{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bots/{bot_user_id}/audit-log":{"get":{"tags":["bots"],"summary":"List Audit Log","description":"Лог действий бота. Видит только owner.","operationId":"list_audit_log_api_bots__bot_user_id__audit_log_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Bot User Id"}},{"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/AuditEntryResponse"},"title":"Response List Audit Log Api Bots  Bot User Id  Audit Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/chat":{"post":{"tags":["ai"],"summary":"Chat","operationId":"chat_api_ai_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":[]}]}},"/api/ai/chat/stream":{"post":{"tags":["ai"],"summary":"Chat Stream","operationId":"chat_stream_api_ai_chat_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"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/ai/transcribe":{"post":{"tags":["ai"],"summary":"Transcribe Audio","operationId":"transcribe_audio_api_ai_transcribe_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_transcribe_audio_api_ai_transcribe_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/meeting/summary":{"post":{"tags":["ai"],"summary":"Create Meeting Summary","operationId":"create_meeting_summary_api_ai_meeting_summary_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSummaryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/meeting/hint":{"post":{"tags":["ai"],"summary":"Get Meeting Hint","operationId":"get_meeting_hint_api_ai_meeting_hint_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingHintRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingHintResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/transcribe/base64":{"post":{"tags":["ai"],"summary":"Transcribe Base64","operationId":"transcribe_base64_api_ai_transcribe_base64_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscribeBase64Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/transcribe/vosk":{"post":{"tags":["ai"],"summary":"Transcribe Vosk","operationId":"transcribe_vosk_api_ai_transcribe_vosk_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_transcribe_vosk_api_ai_transcribe_vosk_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/ai/health":{"get":{"tags":["ai"],"summary":"Ai Health","operationId":"ai_health_api_ai_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIHealthResponse"}}}}}}},"/api/voice-settings":{"get":{"tags":["voice-settings"],"summary":"Get Voice Settings","operationId":"get_voice_settings_api_voice_settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["voice-settings"],"summary":"Save Voice Settings","operationId":"save_voice_settings_api_voice_settings_put","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSettingsCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["voice-settings"],"summary":"Delete Voice Settings","operationId":"delete_voice_settings_api_voice_settings_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/voice-settings/catalog/decorations":{"get":{"tags":["voice-settings"],"summary":"Get Decorations Catalog","operationId":"get_decorations_catalog_api_voice_settings_catalog_decorations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DecorationCatalogItem"},"type":"array","title":"Response Get Decorations Catalog Api Voice Settings Catalog Decorations Get"}}}}}}},"/api/voice-settings/catalog/backgrounds":{"get":{"tags":["voice-settings"],"summary":"Get Backgrounds Catalog","description":"Возвращает каталог доступных фонов для голосовых каналов.","operationId":"get_backgrounds_catalog_api_voice_settings_catalog_backgrounds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BackgroundCatalogItem"},"type":"array","title":"Response Get Backgrounds Catalog Api Voice Settings Catalog Backgrounds Get"}}}}}}},"/api/voice-settings/catalog/controls":{"get":{"tags":["voice-settings"],"summary":"Get Controls Catalog","operationId":"get_controls_catalog_api_voice_settings_catalog_controls_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ControlCatalogItem"},"type":"array","title":"Response Get Controls Catalog Api Voice Settings Catalog Controls Get"}}}}}}},"/api/voice-settings/all":{"get":{"tags":["voice-settings"],"summary":"Get All Voice Settings","description":"Get all voice settings (admin only).","operationId":"get_all_voice_settings_api_voice_settings_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/VoiceSettingsResponse"},"type":"array","title":"Response Get All Voice Settings Api Voice Settings All Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/gif-favorites/":{"get":{"tags":["gif-favorites"],"summary":"List Gif Favorites","description":"List all favorite GIFs for current user.","operationId":"list_gif_favorites_api_gif_favorites__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GifFavoriteResponse"},"type":"array","title":"Response List Gif Favorites Api Gif Favorites  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["gif-favorites"],"summary":"Add Gif Favorite","description":"Add a GIF to favorites.","operationId":"add_gif_favorite_api_gif_favorites__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddGifFavoriteRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GifFavoriteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["gif-favorites"],"summary":"Remove Gif Favorite","description":"Remove a GIF from favorites.","operationId":"remove_gif_favorite_api_gif_favorites__delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveGifFavoriteRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/e2e/backup/status":{"get":{"tags":["E2E Keys"],"summary":"Get Backup Status","operationId":"get_backup_status_api_e2e_backup_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyBackupStatus"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/e2e/backup":{"get":{"tags":["E2E Keys"],"summary":"Get Backup","operationId":"get_backup_api_e2e_backup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyBackupResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["E2E Keys"],"summary":"Save Backup","operationId":"save_backup_api_e2e_backup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyBackupCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyBackupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["E2E Keys"],"summary":"Delete Backup","operationId":"delete_backup_api_e2e_backup_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/e2e/channel/{space_id}/{channel_id}/key":{"get":{"tags":["E2E Keys"],"summary":"Get Channel Key","description":"Get channel key (encrypted with user's master key).","operationId":"get_channel_key_api_e2e_channel__space_id___channel_id__key_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["E2E Keys"],"summary":"Save Channel Key","description":"Save channel key (encrypted with user's master key).","operationId":"save_channel_key_api_e2e_channel__space_id___channel_id__key_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelKeyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/e2e/space/{space_id}/keys":{"get":{"tags":["E2E Keys"],"summary":"List Channel Keys","description":"List all channel keys for a space.","operationId":"list_channel_keys_api_e2e_space__space_id__keys_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChannelKeyResponse"},"title":"Response List Channel Keys Api E2E Space  Space Id  Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/video/jitsi/config":{"get":{"tags":["video"],"summary":"Get Jitsi Config","operationId":"get_jitsi_config_api_video_jitsi_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JitsiRoomInfo"}}}}}}},"/api/video/jitsi/token":{"get":{"tags":["video"],"summary":"Get Jitsi Token","description":"Issue a Jitsi JWT for an authenticated user.\n\nPermission model:\n- Имя комнаты строго валидируется (см. _parse_room) — никаких произвольных\n  строк. Это закрывает Critical из аудита: раньше любой залогиненный мог\n  запросить токен для чужой приватной комнаты.\n- moderator вычисляется бэком (admin/owner space или creator call), а не\n  приходит от клиента — раньше был ?moderator=true query, и клиент сам\n  объявлял себя модератором.","operationId":"get_jitsi_token_api_video_jitsi_token_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"room","in":"query","required":true,"schema":{"type":"string","title":"Room"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JitsiTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/video/livekit/token":{"post":{"tags":["video"],"summary":"Get Livekit Token","description":"Issue a LiveKit token for an authenticated user (screen-share, instant\ncall, или просмотр стрима).","operationId":"get_livekit_token_api_video_livekit_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__video_router__TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/video/jitsi/guest-token":{"post":{"tags":["video"],"summary":"Get Jitsi Guest Token","description":"Issue a Jitsi JWT for a GUEST participant of an instant call.\n\nMirrors /livekit/guest-token semantics: гость не имеет API-токена, но он\nзарегистрирован в Redis-active-list при join_call (как `guest_{id}` или\nplain `id`). Без этого эндпоинта анонимы не могут зайти в звонок после\nвключения JWT auth в Jitsi (Jitsi отвергает passwordRequired).","operationId":"get_jitsi_guest_token_api_video_jitsi_guest_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestTokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JitsiTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/video/livekit/guest-token":{"post":{"tags":["video"],"summary":"Get Livekit Guest Token","description":"Issue a LiveKit token for a guest call participant.\n\nValidates that the participant_id is an active participant of the call\n(room_name must follow the convention ``instant-{code}``).","operationId":"get_livekit_guest_token_api_video_livekit_guest_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestTokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__video_router__TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/video/livekit/config":{"get":{"tags":["video"],"summary":"Get Livekit Config","operationId":"get_livekit_config_api_video_livekit_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveKitConfigResponse"}}}}}}},"/api/video/ice-servers":{"get":{"tags":["video"],"summary":"Get Ice Servers","description":"Return ICE (STUN/TURN) servers. Requires auth to protect TURN credentials.","operationId":"get_ice_servers_api_video_ice_servers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IceConfigResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/streams/create":{"post":{"tags":["streams"],"summary":"Create Stream","description":"Create a stream and LiveKit Ingress. Returns RTMP URL + stream key for OBS.","operationId":"create_stream_api_streams_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStreamRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/streams/{stream_id}/stop":{"post":{"tags":["streams"],"summary":"Stop Stream","description":"Stop a stream: stop egress recording, delete LiveKit Ingress.","operationId":"stop_stream_api_streams__stream_id__stop_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"stream_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Stream Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/my/active":{"get":{"tags":["streams"],"summary":"Get My Active Stream","description":"Get current user's active stream if exists.","operationId":"get_my_active_stream_api_streams_my_active_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/StreamResponse"},{"type":"null"}],"title":"Response Get My Active Stream Api Streams My Active Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/streams/my/stop":{"post":{"tags":["streams"],"summary":"Stop My Active Stream","description":"Stop current user's active stream if exists.","operationId":"stop_my_active_stream_api_streams_my_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/StreamResponse"},{"type":"null"}],"title":"Response Stop My Active Stream Api Streams My Stop Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/streams/room/{room_id}/active":{"get":{"tags":["streams"],"summary":"Get Room Active Stream","description":"Get active stream for a specific room (if any).","operationId":"get_room_active_stream_api_streams_room__room_id__active_get","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/StreamResponse"},{"type":"null"}],"title":"Response Get Room Active Stream Api Streams Room  Room Id  Active Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/space/{space_id}/active":{"get":{"tags":["streams"],"summary":"Get Space Active Streams","description":"All active streams in a space (for live bar + sidebar indicators).","operationId":"get_space_active_streams_api_streams_space__space_id__active_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StreamResponse"},"title":"Response Get Space Active Streams Api Streams Space  Space Id  Active Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/{stream_id}":{"get":{"tags":["streams"],"summary":"Get Stream","description":"Get stream info.","operationId":"get_stream_api_streams__stream_id__get","parameters":[{"name":"stream_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Stream Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/":{"get":{"tags":["streams"],"summary":"List Active Public Streams","description":"List all active public streams for discover/hub.","operationId":"list_active_public_streams_api_streams__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ActiveStreamResponse"},"type":"array","title":"Response List Active Public Streams Api Streams  Get"}}}}}}},"/api/streams/{stream_id}/viewer-token":{"post":{"tags":["streams"],"summary":"Get Stream Viewer Token","description":"Get a LiveKit token to watch a stream.","operationId":"get_stream_viewer_token_api_streams__stream_id__viewer_token_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"stream_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Stream Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamViewerTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/schedule":{"post":{"tags":["streams"],"summary":"Create Schedule","description":"Create a scheduled stream announcement.","operationId":"create_schedule_api_streams_schedule_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScheduleRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/streams/schedule/room/{room_id}":{"get":{"tags":["streams"],"summary":"List Room Schedule","description":"List scheduled streams for a stream channel.","operationId":"list_room_schedule_api_streams_schedule_room__room_id__get","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"include_past","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Past"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleResponse"},"title":"Response List Room Schedule Api Streams Schedule Room  Room Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/schedule/upcoming":{"get":{"tags":["streams"],"summary":"List Upcoming Public Schedules","description":"List upcoming public scheduled streams.","operationId":"list_upcoming_public_schedules_api_streams_schedule_upcoming_get","parameters":[{"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/ScheduleResponse"},"title":"Response List Upcoming Public Schedules Api Streams Schedule Upcoming Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/schedule/{schedule_id}":{"get":{"tags":["streams"],"summary":"Get Schedule","description":"Get a schedule by ID.","operationId":"get_schedule_api_streams_schedule__schedule_id__get","parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["streams"],"summary":"Update Schedule","description":"Update a scheduled stream.","operationId":"update_schedule_api_streams_schedule__schedule_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScheduleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["streams"],"summary":"Delete Schedule","description":"Delete a scheduled stream.","operationId":"delete_schedule_api_streams_schedule__schedule_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/schedule/{schedule_id}/go-live":{"post":{"tags":["streams"],"summary":"Go Live From Schedule","description":"Start a stream from a scheduled announcement.","operationId":"go_live_from_schedule_api_streams_schedule__schedule_id__go_live_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/streams/recordings/room/{room_id}":{"get":{"tags":["streams"],"summary":"Get Room Recordings","description":"List stream recordings for a room (ended streams with recording URLs).","operationId":"get_room_recordings_api_streams_recordings_room__room_id__get","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Room Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StreamResponse"},"title":"Response Get Room Recordings Api Streams Recordings Room  Room Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/livekit/webhook":{"post":{"tags":["livekit-webhooks"],"summary":"Livekit Webhook","description":"Receive and process LiveKit webhook events.\n\nLiveKit signs the webhook body with the API secret via JWT.\nWe verify the signature, then handle relevant events:\n- ingress_ended: auto-stop the stream when OBS disconnects\n- ingress_started: auto-transition stream to LIVE","operationId":"livekit_webhook_api_livekit_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Livekit Webhook Api Livekit Webhook Post"}}}}}}},"/api/tv/streams":{"get":{"tags":["tv"],"summary":"List Public Streams","description":"List all active public streams.\n\nThis is the main feed for the TV site homepage.\nNo authentication required.","operationId":"list_public_streams_api_tv_streams_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TVStreamResponse"},"title":"Response List Public Streams Api Tv Streams Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/streams/{stream_id}":{"get":{"tags":["tv"],"summary":"Get Public Stream","description":"Get details of a stream.\nPublic streams are available to everyone.\nPrivate streams are available to space members.","operationId":"get_public_stream_api_tv_streams__stream_id__get","parameters":[{"name":"stream_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Stream Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TVStreamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/streams/{stream_id}/viewer-token":{"post":{"tags":["tv"],"summary":"Get Public Viewer Token","description":"Get a LiveKit token to watch a public stream.\n\nWorks for both authenticated and anonymous users.\nAnonymous users get a temporary identity.","operationId":"get_public_viewer_token_api_tv_streams__stream_id__viewer_token_post","parameters":[{"name":"stream_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Stream Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TVViewerTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/schedules":{"get":{"tags":["tv"],"summary":"List Public Schedules","description":"List upcoming public stream schedules.\nNo authentication required.","operationId":"list_public_schedules_api_tv_schedules_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TVScheduleResponse"},"title":"Response List Public Schedules Api Tv Schedules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/streamers/{username}":{"get":{"tags":["tv"],"summary":"Get Streamer Profile","description":"Get public profile of a streamer by username.\nNo authentication required.","operationId":"get_streamer_profile_api_tv_streamers__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/TVStreamerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/recordings/{recording_id}":{"get":{"tags":["tv"],"summary":"Get Recording","description":"Get a single recording by ID.\nPublic recordings are available to everyone.\nPrivate recordings are available to space members.","operationId":"get_recording_api_tv_recordings__recording_id__get","parameters":[{"name":"recording_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recording Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TVRecordingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/my/streams":{"get":{"tags":["tv"],"summary":"List My Streams","description":"List all active streams from spaces where the user is a member.\nIncludes both public and private streams. Requires authentication.","operationId":"list_my_streams_api_tv_my_streams_get","parameters":[{"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":{"type":"array","items":{"$ref":"#/components/schemas/TVStreamResponse"},"title":"Response List My Streams Api Tv My Streams Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/my/recordings":{"get":{"tags":["tv"],"summary":"List My Recordings","description":"List recordings from spaces where the user is a member.\nIncludes both public and private stream recordings. Requires authentication.","operationId":"list_my_recordings_api_tv_my_recordings_get","parameters":[{"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":{"type":"array","items":{"$ref":"#/components/schemas/TVRecordingResponse"},"title":"Response List My Recordings Api Tv My Recordings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/my/schedules":{"get":{"tags":["tv"],"summary":"List My Schedules","description":"List upcoming schedules from spaces where the user is a member.\nIncludes both public and private schedules. Requires authentication.","operationId":"list_my_schedules_api_tv_my_schedules_get","parameters":[{"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":{"type":"array","items":{"$ref":"#/components/schemas/TVScheduleResponse"},"title":"Response List My Schedules Api Tv My Schedules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/search":{"get":{"tags":["tv"],"summary":"Search Streams","description":"Search public streams by title, streamer name, or space name.\nNo authentication required.","operationId":"search_streams_api_tv_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TVStreamResponse"},"title":"Response Search Streams Api Tv Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/spaces/{space_id}":{"get":{"tags":["tv"],"summary":"Get Space Info","description":"Get public info about a space for Space TV.\nReturns basic space details and member count.","operationId":"get_space_info_api_tv_spaces__space_id__get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TVSpaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/follow/{user_id}":{"post":{"tags":["tv"],"summary":"Follow User","description":"Follow a user. Requires authentication.","operationId":"follow_user_api_tv_follow__user_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tv"],"summary":"Unfollow User","description":"Unfollow a user. Requires authentication.","operationId":"unfollow_user_api_tv_follow__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/follow/{user_id}/status":{"get":{"tags":["tv"],"summary":"Get Follow Status","description":"Check if current user follows a given user.","operationId":"get_follow_status_api_tv_follow__user_id__status_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tv/my/following":{"get":{"tags":["tv"],"summary":"List My Following","description":"List users the current user follows. Includes live status.","operationId":"list_my_following_api_tv_my_following_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FollowingUserResponse"},"type":"array","title":"Response List My Following Api Tv My Following Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/jitsi/config":{"get":{"tags":["jitsi"],"summary":"Get Jitsi Config Legacy","description":"Get Jitsi server configuration (legacy path).","operationId":"get_jitsi_config_legacy_api_jitsi_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JitsiRoomInfo"}}}}}}},"/api/jitsi/token":{"get":{"tags":["jitsi"],"summary":"Get Jitsi Token Legacy","description":"Generate Jitsi JWT token (legacy path).","operationId":"get_jitsi_token_legacy_api_jitsi_token_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"room","in":"query","required":true,"schema":{"type":"string","title":"Room"}},{"name":"moderator","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Moderator"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JitsiTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/link-preview":{"get":{"tags":["link-preview"],"summary":"Get Link Preview","description":"Fetch Open Graph preview for a URL.\n\n- Auth required (prevents abuse)\n- Results cached in Redis for 24h\n- Skips known media embed domains (YouTube, TikTok, etc.)\n- 5s timeout for external requests","operationId":"get_link_preview_api_link_preview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","minLength":10,"maxLength":2048,"title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders":{"get":{"tags":["folders"],"summary":"List Folders","description":"Получить все папки текущего пользователя.","operationId":"list_folders_api_folders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FolderOut"},"type":"array","title":"Response List Folders Api Folders Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["folders"],"summary":"Create Folder","description":"Создать новую папку.","operationId":"create_folder_api_folders_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/folders/{folder_id}":{"patch":{"tags":["folders"],"summary":"Update Folder","description":"Обновить папку.","operationId":"update_folder_api_folders__folder_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["folders"],"summary":"Delete Folder","description":"Удалить папку.","operationId":"delete_folder_api_folders__folder_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Folder Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/folders/pins":{"get":{"tags":["folders"],"summary":"List Pins","description":"Получить все закреплённые чаты.","operationId":"list_pins_api_folders_pins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PinOut"},"type":"array","title":"Response List Pins Api Folders Pins Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/folders/pins/toggle":{"post":{"tags":["folders"],"summary":"Toggle Pin","description":"Закрепить / открепить чат (toggle).","operationId":"toggle_pin_api_folders_pins_toggle_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinToggle"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Toggle Pin Api Folders Pins Toggle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/folders/sync":{"post":{"tags":["folders"],"summary":"Sync All","description":"Полная синхронизация: заменяет все папки и пины.","operationId":"sync_all_api_folders_sync_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sync All Api Folders Sync Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/doodles/my":{"get":{"tags":["doodles"],"summary":"List My Doodles","description":"Все мои дудлы (для отображения в списке друзей).","operationId":"list_my_doodles_api_doodles_my_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DoodleOut"},"type":"array","title":"Response List My Doodles Api Doodles My Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/doodles/{target_user_id}":{"get":{"tags":["doodles"],"summary":"Get Doodle","description":"Получить мой дудл для конкретного друга.","operationId":"get_doodle_api_doodles__target_user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DoodleOut"},{"type":"null"}],"title":"Response Get Doodle Api Doodles  Target User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["doodles"],"summary":"Save Doodle","description":"Создать или обновить дудл (upsert).","operationId":"save_doodle_api_doodles__target_user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoodleCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoodleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["doodles"],"summary":"Delete Doodle","description":"Удалить мой дудл для друга.","operationId":"delete_doodle_api_doodles__target_user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/doodles/{target_user_id}/propose":{"post":{"tags":["doodles"],"summary":"Propose Doodle","description":"Предложить дудл другу.","operationId":"propose_doodle_api_doodles__target_user_id__propose_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoodleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/doodles/proposals/incoming":{"get":{"tags":["doodles"],"summary":"List Incoming Proposals","description":"Входящие предложения дудлов.","operationId":"list_incoming_proposals_api_doodles_proposals_incoming_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DoodleProposalOut"},"type":"array","title":"Response List Incoming Proposals Api Doodles Proposals Incoming Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/doodles/proposals/{doodle_id}/accept":{"post":{"tags":["doodles"],"summary":"Accept Proposal","description":"Принять предложенный дудл — он станет виден всем.","operationId":"accept_proposal_api_doodles_proposals__doodle_id__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"doodle_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Doodle Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Accept Proposal Api Doodles Proposals  Doodle Id  Accept Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/doodles/proposals/{doodle_id}/reject":{"post":{"tags":["doodles"],"summary":"Reject Proposal","description":"Отклонить предложенный дудл.","operationId":"reject_proposal_api_doodles_proposals__doodle_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"doodle_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Doodle Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reject Proposal Api Doodles Proposals  Doodle Id  Reject Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat":{"post":{"tags":["group-chat"],"summary":"Create Group","description":"Create a new group chat.","operationId":"create_group_api_group_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupChatCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/group-chat/conversations":{"get":{"tags":["group-chat"],"summary":"List Conversations","description":"List all group conversations for the current user.","operationId":"list_conversations_api_group_chat_conversations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GroupChatSummaryResponse"},"type":"array","title":"Response List Conversations Api Group Chat Conversations Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/group-chat/{group_id}":{"get":{"tags":["group-chat"],"summary":"Get Group","description":"Get group chat details (require membership).","operationId":"get_group_api_group_chat__group_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["group-chat"],"summary":"Update Group","description":"Update group name/description/avatar (admin+), settings (owner only).","operationId":"update_group_api_group_chat__group_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupChatUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["group-chat"],"summary":"Delete Group","description":"Delete a group chat (owner only).","operationId":"delete_group_api_group_chat__group_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__group_chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/invite":{"post":{"tags":["group-chat"],"summary":"Generate Invite","description":"Generate an invite code for the group (admin+).","operationId":"generate_invite_api_group_chat__group_id__invite_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Invite Api Group Chat  Group Id  Invite Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/join/{invite_code}":{"post":{"tags":["group-chat"],"summary":"Join By Invite","description":"Join a group by invite code.","operationId":"join_by_invite_api_group_chat_join__invite_code__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invite_code","in":"path","required":true,"schema":{"type":"string","title":"Invite Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/members":{"get":{"tags":["group-chat"],"summary":"List Members","description":"List group members with user info.","operationId":"list_members_api_group_chat__group_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupMemberResponse"},"title":"Response List Members Api Group Chat  Group Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["group-chat"],"summary":"Add Members","description":"Add members to the group (check who_can_add_members setting, verify friendship).","operationId":"add_members_api_group_chat__group_id__members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMembersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__group_chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/members/{user_id}":{"delete":{"tags":["group-chat"],"summary":"Remove Member","description":"Remove a member from the group (admin removes member, owner removes admin).","operationId":"remove_member_api_group_chat__group_id__members__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__group_chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["group-chat"],"summary":"Change Role","description":"Change a member's role (owner only).","operationId":"change_role_api_group_chat__group_id__members__user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__group_chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/leave":{"post":{"tags":["group-chat"],"summary":"Leave Group","description":"Leave the group. If owner: transfer to first admin or first member. If last member: delete group.","operationId":"leave_group_api_group_chat__group_id__leave_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__group_chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/messages":{"get":{"tags":["group-chat"],"summary":"List Messages","description":"List group messages with sender info.","operationId":"list_messages_api_group_chat__group_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupMessageResponse"},"title":"Response List Messages Api Group Chat  Group Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["group-chat"],"summary":"Send Message","description":"Send a message to the group.","operationId":"send_message_api_group_chat__group_id__messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendGroupMessageRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/messages/{msg_id}":{"delete":{"tags":["group-chat"],"summary":"Delete Message","description":"Delete a message (own message or admin+).","operationId":"delete_message_api_group_chat__group_id__messages__msg_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"msg_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Msg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__group_chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["group-chat"],"summary":"Edit Message","description":"Edit own message.","operationId":"edit_message_api_group_chat__group_id__messages__msg_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"msg_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Msg Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditGroupMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/messages/{msg_id}/reactions":{"post":{"tags":["group-chat"],"summary":"Toggle Reaction","description":"Toggle a reaction on a group message.","operationId":"toggle_reaction_api_group_chat__group_id__messages__msg_id__reactions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"msg_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Msg Id"}},{"name":"emoji","in":"query","required":true,"schema":{"type":"string","title":"Emoji"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/messages/{msg_id}/pin":{"post":{"tags":["group-chat"],"summary":"Pin Message","description":"Pin a message (admin+).","operationId":"pin_message_api_group_chat__group_id__messages__msg_id__pin_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"msg_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Msg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["group-chat"],"summary":"Unpin Message","description":"Unpin a message (admin+).","operationId":"unpin_message_api_group_chat__group_id__messages__msg_id__pin_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"msg_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Msg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/pinned":{"get":{"tags":["group-chat"],"summary":"List Pinned","description":"List pinned messages in a group.","operationId":"list_pinned_api_group_chat__group_id__pinned_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupMessageResponse"},"title":"Response List Pinned Api Group Chat  Group Id  Pinned Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/read":{"post":{"tags":["group-chat"],"summary":"Mark As Read","description":"Upsert group read status.","operationId":"mark_as_read_api_group_chat__group_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__presentation__api__group_chat_router__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/group-chat/{group_id}/search":{"get":{"tags":["group-chat"],"summary":"Search Messages","description":"Search messages in a group by content (ILIKE).","operationId":"search_messages_api_group_chat__group_id__search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupMessageResponse"},"title":"Response Search Messages Api Group Chat  Group Id  Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capsules/settings":{"get":{"tags":["capsules"],"summary":"Get Capsule Settings","description":"Get capsule-related settings for the current user.","operationId":"get_capsule_settings_api_capsules_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleSettingsResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["capsules"],"summary":"Update Capsule Settings","description":"Update capsule AI setting for the current user.","operationId":"update_capsule_settings_api_capsules_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleSettingsUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/capsules/auto-sort":{"post":{"tags":["capsules"],"summary":"Auto Sort","description":"Use AI to determine which capsule a message should be sorted into.","operationId":"auto_sort_api_capsules_auto_sort_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoSortRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoSortResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/capsules/background-sort":{"post":{"tags":["capsules"],"summary":"Background Sort","description":"Silently sort a message into the right capsule after it's been sent.","operationId":"background_sort_api_capsules_background_sort_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundSortRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Background Sort Api Capsules Background Sort Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/capsules/messages/{message_id}":{"delete":{"tags":["capsules"],"summary":"Delete Message","description":"Delete a capsule message.","operationId":"delete_message_api_capsules_messages__message_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Message Api Capsules Messages  Message Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["capsules"],"summary":"Edit Message","description":"Edit a capsule message's encrypted content.","operationId":"edit_message_api_capsules_messages__message_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleMessageUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capsules/messages/{message_id}/move":{"post":{"tags":["capsules"],"summary":"Move Message","description":"Move a message to another capsule.","operationId":"move_message_api_capsules_messages__message_id__move_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleMoveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capsules":{"get":{"tags":["capsules"],"summary":"List Capsules","description":"List all capsules for the current user with message counts and last message info.","operationId":"list_capsules_api_capsules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CapsuleResponse"},"type":"array","title":"Response List Capsules Api Capsules Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["capsules"],"summary":"Create Capsule","description":"Create a new capsule.","operationId":"create_capsule_api_capsules_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/capsules/{capsule_id}":{"patch":{"tags":["capsules"],"summary":"Update Capsule","description":"Update a capsule's name, emoji, gradient or position.","operationId":"update_capsule_api_capsules__capsule_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"capsule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Capsule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["capsules"],"summary":"Delete Capsule","description":"Delete a capsule. Messages are moved to the default capsule. Default capsule cannot be deleted.","operationId":"delete_capsule_api_capsules__capsule_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"capsule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Capsule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Capsule Api Capsules  Capsule Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/capsules/{capsule_id}/messages":{"get":{"tags":["capsules"],"summary":"List Messages","description":"List paginated messages in a capsule.","operationId":"list_messages_api_capsules__capsule_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"capsule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Capsule Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CapsuleMessageResponse"},"title":"Response List Messages Api Capsules  Capsule Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["capsules"],"summary":"Create Message","description":"Create a new message inside a capsule.","operationId":"create_message_api_capsules__capsule_id__messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"capsule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Capsule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleMessageCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsuleMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/emoji/{ver}/{name}.webp":{"get":{"tags":["emoji"],"summary":"Get Emoji","description":"Отдаёт animated-WebP эмодзи версии набора по имени. 404, если нет.\n\nВерсионируется путём (/v1/, /v2/...): immutable-кэш не конфликтует — при\nобновлении набора заливаем новую версию, клиент переключает базовый URL.","operationId":"get_emoji_api_emoji__ver___name__webp_get","parameters":[{"name":"ver","in":"path","required":true,"schema":{"type":"string","title":"Ver"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/calls/rating":{"post":{"tags":["analytics"],"summary":"Submit Call Rating","description":"Submit a post-call quality rating.","operationId":"submit_call_rating_api_calls_rating_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallRatingRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/calls/events":{"post":{"tags":["analytics"],"summary":"Track Analytics Event","description":"Track a generic analytics event.","operationId":"track_analytics_event_api_calls_events_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsEventRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/metrics/overview":{"get":{"tags":["metrics"],"summary":"Api Overview","operationId":"api_overview_api_metrics_overview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Overview Api Metrics Overview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/users":{"get":{"tags":["metrics"],"summary":"Api Users","operationId":"api_users_api_metrics_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Users Api Metrics Users Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/calls":{"get":{"tags":["metrics"],"summary":"Api Calls","operationId":"api_calls_api_metrics_calls_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Calls Api Metrics Calls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/spaces":{"get":{"tags":["metrics"],"summary":"Api Spaces","operationId":"api_spaces_api_metrics_spaces_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Spaces Api Metrics Spaces Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/messages":{"get":{"tags":["metrics"],"summary":"Api Messages","operationId":"api_messages_api_metrics_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Messages Api Metrics Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/recordings":{"get":{"tags":["metrics"],"summary":"Api Recordings","operationId":"api_recordings_api_metrics_recordings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Recordings Api Metrics Recordings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/quality":{"get":{"tags":["metrics"],"summary":"Api Quality","operationId":"api_quality_api_metrics_quality_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Quality Api Metrics Quality Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/retention":{"get":{"tags":["metrics"],"summary":"Api Retention","operationId":"api_retention_api_metrics_retention_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"365d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Retention Api Metrics Retention Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/uploads":{"get":{"tags":["metrics"],"summary":"Api Uploads","operationId":"api_uploads_api_metrics_uploads_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Uploads Api Metrics Uploads Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/social":{"get":{"tags":["metrics"],"summary":"Api Social","operationId":"api_social_api_metrics_social_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Social Api Metrics Social Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/funnel":{"get":{"tags":["metrics"],"summary":"Api Funnel","operationId":"api_funnel_api_metrics_funnel_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"30d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Funnel Api Metrics Funnel Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/activity":{"get":{"tags":["metrics"],"summary":"Api Activity","operationId":"api_activity_api_metrics_activity_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Activity Api Metrics Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/realtime":{"get":{"tags":["metrics"],"summary":"Api Realtime","operationId":"api_realtime_api_metrics_realtime_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Realtime Api Metrics Realtime Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/metrics/yandex-metrika":{"get":{"tags":["metrics"],"summary":"Api Yandex Metrika","operationId":"api_yandex_metrika_api_metrics_yandex_metrika_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"30d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Yandex Metrika Api Metrics Yandex Metrika Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/seo/space/{space_id}":{"get":{"tags":["seo"],"summary":"Get Space Seo Page","description":"Serve an HTML page with full SEO meta tags for a public space.\n\nDesigned to be served to crawlers (Google, Yandex) and social bots\n(Telegram, VK, Twitter) via nginx User-Agent detection.","operationId":"get_space_seo_page_seo_space__space_id__get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/seo/sitemap-spaces.xml":{"get":{"tags":["seo"],"summary":"Get Spaces Sitemap","description":"Generate a dynamic XML sitemap listing all public spaces.","operationId":"get_spaces_sitemap_seo_sitemap_spaces_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Проверка здоровья сервиса.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"anyOf":[{"type":"string"},{}]},"type":"object","title":"Response Health Check Health Get"}}}}}}},"/api/voice/{space_id}/{channel_id}/participants":{"get":{"summary":"Get Voice Participants","description":"Получить участников голосового канала.","operationId":"get_voice_participants_api_voice__space_id___channel_id__participants_get","parameters":[{"name":"space_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Space Id"}},{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Voice Participants Api Voice  Space Id   Channel Id  Participants Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AIHealthResponse":{"properties":{"status":{"type":"string","title":"Status"},"provider":{"type":"string","title":"Provider"}},"type":"object","required":["status","provider"],"title":"AIHealthResponse"},"ActiveStreamResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"title":{"type":"string","title":"Title"},"is_public":{"type":"boolean","title":"Is Public"},"status":{"type":"string","title":"Status"},"viewer_count":{"type":"integer","title":"Viewer Count"},"livekit_room_name":{"type":"string","title":"Livekit Room Name"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"streamer_id":{"type":"string","format":"uuid","title":"Streamer Id"},"streamer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Name"},"streamer_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Avatar"},"space_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Name"},"space_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Icon Url"}},"type":"object","required":["id","space_id","title","is_public","status","viewer_count","livekit_room_name","streamer_id"],"title":"ActiveStreamResponse","description":"Public stream for discover/hub listing."},"AddGifFavoriteRequest":{"properties":{"gif_url":{"type":"string","maxLength":2000,"minLength":1,"title":"Gif Url"},"preview_url":{"type":"string","maxLength":2000,"minLength":1,"title":"Preview Url"},"title":{"type":"string","maxLength":500,"title":"Title","default":""},"source":{"type":"string","pattern":"^(tenor|giphy)$","title":"Source","default":"tenor"},"width":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Width","default":200},"height":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Height","default":200}},"type":"object","required":["gif_url","preview_url"],"title":"AddGifFavoriteRequest"},"AddMembersRequest":{"properties":{"user_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"User Ids"}},"type":"object","required":["user_ids"],"title":"AddMembersRequest"},"AnalyticsEventRequest":{"properties":{"event_name":{"type":"string","title":"Event Name"},"event_category":{"type":"string","title":"Event Category"},"properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Properties"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"device_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Info"}},"type":"object","required":["event_name","event_category"],"title":"AnalyticsEventRequest"},"AppSettingsSchema":{"properties":{"openLastSpace":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Openlastspace"},"compactSidebar":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Compactsidebar"},"showNotifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Shownotifications"},"streamerMode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Streamermode"}},"type":"object","title":"AppSettingsSchema"},"ApprovalStatusResponse":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"ApprovalStatusResponse"},"AttachmentDTO":{"properties":{"url":{"type":"string","title":"Url"},"type":{"type":"string","title":"Type"},"filename":{"type":"string","title":"Filename"},"size":{"type":"integer","title":"Size"},"mime_type":{"type":"string","title":"Mime Type"},"duration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"}},"type":"object","required":["url","type","filename","size","mime_type"],"title":"AttachmentDTO"},"AuditEntryResponse":{"properties":{"id":{"type":"string","title":"Id"},"space_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Id"},"action":{"type":"string","title":"Action"},"target_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target User Id"},"target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Id"},"payload_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload Summary"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","space_id","action","target_user_id","target_id","payload_summary","ip_address","created_at"],"title":"AuditEntryResponse"},"AuditLogEntryResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"action":{"type":"string","title":"Action"},"actor_id":{"type":"string","format":"uuid","title":"Actor Id"},"target_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Id"},"target_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Type"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","action","actor_id","created_at"],"title":"AuditLogEntryResponse"},"AuditLogResponse":{"properties":{"entries":{"items":{"$ref":"#/components/schemas/AuditLogEntryResponse"},"type":"array","title":"Entries"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["entries","total"],"title":"AuditLogResponse"},"AutoSortRequest":{"properties":{"content":{"type":"string","title":"Content"},"capsule_names":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Capsule Names"}},"type":"object","required":["content","capsule_names"],"title":"AutoSortRequest"},"AutoSortResponse":{"properties":{"capsule_id":{"type":"string","format":"uuid","title":"Capsule Id"}},"type":"object","required":["capsule_id"],"title":"AutoSortResponse"},"AvatarUploadResponse":{"properties":{"avatar_url":{"type":"string","title":"Avatar Url"}},"type":"object","required":["avatar_url"],"title":"AvatarUploadResponse"},"AwardCategory":{"type":"string","enum":["voice","stream","text","social","epic"],"title":"AwardCategory","description":"Тематическая группа награды."},"AwardItemResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"long_description":{"type":"string","title":"Long Description"},"image":{"type":"string","title":"Image"},"tier":{"$ref":"#/components/schemas/AwardTier"},"category":{"$ref":"#/components/schemas/AwardCategory"},"points":{"type":"integer","title":"Points"},"threshold":{"type":"number","title":"Threshold"},"progress_label":{"type":"string","title":"Progress Label"},"unlocked":{"type":"boolean","title":"Unlocked"},"current":{"type":"number","title":"Current"},"unlocked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Unlocked At"}},"type":"object","required":["id","name","description","long_description","image","tier","category","points","threshold","progress_label","unlocked","current"],"title":"AwardItemResponse","description":"Одна награда + прогресс — плоско, чтобы фронт не маппил вручную."},"AwardTier":{"type":"string","enum":["common","rare","epic","legendary","mythic"],"title":"AwardTier","description":"Редкость награды. Используется для подсветки в UI."},"BackgroundCatalogItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","required":["id","name","type","value"],"title":"BackgroundCatalogItem"},"BackgroundSortRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"content":{"type":"string","title":"Content"},"capsule_names":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Capsule Names"}},"type":"object","required":["message_id","content","capsule_names"],"title":"BackgroundSortRequest"},"BoardAIToggleResponse":{"properties":{"status":{"type":"string","title":"Status"},"ai_enabled":{"type":"boolean","title":"Ai Enabled"}},"type":"object","required":["status","ai_enabled"],"title":"BoardAIToggleResponse"},"BoardElementAddResponse":{"properties":{"status":{"type":"string","title":"Status"},"element_id":{"type":"string","format":"uuid","title":"Element Id"}},"type":"object","required":["status","element_id"],"title":"BoardElementAddResponse"},"BoardElementSchema":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type":{"type":"string","title":"Type"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"width":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Height"},"text":{"type":"string","title":"Text","default":""},"color":{"type":"string","title":"Color","default":"yellow"},"from_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Id"},"to_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Id"},"contains":{"items":{"type":"string"},"type":"array","title":"Contains","default":[]},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["type","x","y"],"title":"BoardElementSchema"},"BoardElementUpdateData":{"properties":{"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"width":{"type":"number","title":"Width"},"height":{"type":"number","title":"Height"},"text":{"type":"string","title":"Text"},"color":{"type":"string","title":"Color"}},"type":"object","title":"BoardElementUpdateData","description":"Board element update fields."},"BoardResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"room_id":{"type":"string","format":"uuid","title":"Room Id"},"elements":{"items":{"$ref":"#/components/schemas/BoardElementSchema"},"type":"array","title":"Elements"},"ai_enabled":{"type":"boolean","title":"Ai Enabled"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","space_id","room_id","elements","ai_enabled","created_at","updated_at"],"title":"BoardResponse"},"Body_transcribe_audio_api_ai_transcribe_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["audio"],"title":"Body_transcribe_audio_api_ai_transcribe_post"},"Body_transcribe_vosk_api_ai_transcribe_vosk_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["audio"],"title":"Body_transcribe_vosk_api_ai_transcribe_vosk_post"},"Body_upload_attachment_api_upload_attachment_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"attachment_type":{"type":"string","title":"Attachment Type","default":"file"},"duration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration"}},"type":"object","required":["file"],"title":"Body_upload_attachment_api_upload_attachment_post"},"Body_upload_avatar_api_upload_avatar_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_avatar_api_upload_avatar_post"},"Body_upload_chunk_api_recordings__recording_id__chunk_post":{"properties":{"chunk":{"type":"string","contentMediaType":"application/octet-stream","title":"Chunk"}},"type":"object","required":["chunk"],"title":"Body_upload_chunk_api_recordings__recording_id__chunk_post"},"Body_upload_file_api_upload__post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"attachment_type":{"type":"string","title":"Attachment Type","default":"file"},"duration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration"}},"type":"object","required":["file"],"title":"Body_upload_file_api_upload__post"},"Body_upload_sound_api_spaces__space_id__soundboard_sounds_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"duration_ms":{"type":"integer","maximum":30500.0,"minimum":1.0,"title":"Duration Ms"},"name":{"type":"string","maxLength":40,"minLength":1,"title":"Name"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"}},"type":"object","required":["file","duration_ms","name"],"title":"Body_upload_sound_api_spaces__space_id__soundboard_sounds_post"},"Body_upload_voice_api_upload_voice_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"duration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration"}},"type":"object","required":["file"],"title":"Body_upload_voice_api_upload_voice_post"},"BotMemberInfo":{"properties":{"user_id":{"type":"string","title":"User Id"},"role":{"type":"string","title":"Role"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"muted_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Muted Until"}},"type":"object","required":["user_id","role"],"title":"BotMemberInfo"},"BotMembershipResponse":{"properties":{"bot_user_id":{"type":"string","title":"Bot User Id"},"space_id":{"type":"string","title":"Space Id"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"allowed_channel_ids":{"items":{"type":"string"},"type":"array","title":"Allowed Channel Ids"},"invited_by_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invited By User Id"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["bot_user_id","space_id","scopes","allowed_channel_ids","invited_by_user_id","created_at"],"title":"BotMembershipResponse"},"BotMessageCreateRequest":{"properties":{"content":{"type":"string","maxLength":10000,"minLength":1,"title":"Content"},"reply_to":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To"}},"type":"object","required":["content"],"title":"BotMessageCreateRequest"},"BotMessageResponse":{"properties":{"id":{"type":"string","title":"Id"},"space_id":{"type":"string","title":"Space Id"},"channel_id":{"type":"string","title":"Channel Id"},"bot_user_id":{"type":"string","title":"Bot User Id"},"content":{"type":"string","title":"Content"},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","space_id","channel_id","bot_user_id","content","reply_to","created_at"],"title":"BotMessageResponse"},"BotMuteRequest":{"properties":{"duration_minutes":{"type":"integer","maximum":10080.0,"minimum":1.0,"title":"Duration Minutes","default":10},"reason":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Reason"}},"type":"object","title":"BotMuteRequest"},"BotPlaybackRequest":{"properties":{"source_url":{"type":"string","title":"Source Url"},"loop":{"type":"boolean","title":"Loop","default":false},"volume":{"type":"integer","title":"Volume","default":100}},"type":"object","required":["source_url"],"title":"BotPlaybackRequest","description":"Запрос на воспроизведение аудио в голосовом канале."},"BotPlaybackResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["session_id","status"],"title":"BotPlaybackResponse"},"BotReactionRequest":{"properties":{"emoji":{"type":"string","maxLength":64,"minLength":1,"title":"Emoji"}},"type":"object","required":["emoji"],"title":"BotReactionRequest"},"BotResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"owner_user_id":{"type":"string","title":"Owner User Id"},"username":{"type":"string","title":"Username"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"state":{"type":"string","title":"State"},"visibility":{"type":"string","title":"Visibility"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["user_id","owner_user_id","username","display_name","avatar_url","description","website","state","visibility","created_at"],"title":"BotResponse"},"BotRoleInfo":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"color":{"type":"string","title":"Color"},"position":{"type":"integer","title":"Position"}},"type":"object","required":["id","name","color","position"],"title":"BotRoleInfo"},"BotVisibility":{"type":"string","enum":["private","unlisted","public"],"title":"BotVisibility","description":"Кто может приглашать бота в свой space.\n\n* private  — только owner\n* unlisted — любой со ссылкой /invite/<bot_user_id>\n* public   — листится в каталоге (Phase 5+)"},"BotVoiceChannelSummary":{"properties":{"channel_id":{"type":"string","title":"Channel Id"},"participant_count":{"type":"integer","title":"Participant Count"},"bot_present":{"type":"boolean","title":"Bot Present"}},"type":"object","required":["channel_id","participant_count","bot_present"],"title":"BotVoiceChannelSummary","description":"Privacy-preserving voice-occupancy для бота.\n\nБоту НЕ раскрываются identity других участников: spec §2.1 относит\n«кто сейчас в voice-канале» к приватному voice-state, недоступному ни\nпод каким scope. Отдаём только число участников и факт присутствия\nсамого бота — этого хватает для music-сценария «есть ли смысл\nподключаться», без слежки за людьми. Идентификация конкретного юзера\nвозможна только по его явному действию в адрес бота (future: grant)."},"CallRatingRequest":{"properties":{"rating":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Rating"},"issues":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Issues"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"call_type":{"type":"string","title":"Call Type"},"duration_sec":{"type":"integer","title":"Duration Sec"},"connection_quality":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Connection Quality"}},"type":"object","required":["rating","call_type","duration_sec"],"title":"CallRatingRequest"},"CapsuleCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"emoji":{"type":"string","title":"Emoji","default":"⚡"},"gradient":{"type":"string","title":"Gradient","default":"linear-gradient(135deg,#5B6EF5,#818CF8)"}},"type":"object","required":["name"],"title":"CapsuleCreateRequest"},"CapsuleMessageCreateRequest":{"properties":{"encrypted_content":{"type":"string","title":"Encrypted Content"},"attachments_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attachments Json"},"ai_sorted":{"type":"boolean","title":"Ai Sorted","default":false}},"type":"object","required":["encrypted_content"],"title":"CapsuleMessageCreateRequest"},"CapsuleMessageResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"capsule_id":{"type":"string","format":"uuid","title":"Capsule Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"encrypted_content":{"type":"string","title":"Encrypted Content"},"attachments_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attachments Json"},"ai_sorted":{"type":"boolean","title":"Ai Sorted"},"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","capsule_id","user_id","encrypted_content","ai_sorted","created_at"],"title":"CapsuleMessageResponse"},"CapsuleMessageUpdateRequest":{"properties":{"encrypted_content":{"type":"string","title":"Encrypted Content"}},"type":"object","required":["encrypted_content"],"title":"CapsuleMessageUpdateRequest"},"CapsuleMoveRequest":{"properties":{"capsule_id":{"type":"string","format":"uuid","title":"Capsule Id"}},"type":"object","required":["capsule_id"],"title":"CapsuleMoveRequest"},"CapsuleResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"emoji":{"type":"string","title":"Emoji"},"gradient":{"type":"string","title":"Gradient"},"is_default":{"type":"boolean","title":"Is Default"},"position":{"type":"integer","title":"Position"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"message_count":{"type":"integer","title":"Message Count","default":0},"last_message_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message Content"},"last_message_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message At"}},"type":"object","required":["id","user_id","name","emoji","gradient","is_default","position","created_at"],"title":"CapsuleResponse"},"CapsuleSettingsResponse":{"properties":{"ai_enabled":{"type":"boolean","title":"Ai Enabled"}},"type":"object","required":["ai_enabled"],"title":"CapsuleSettingsResponse"},"CapsuleSettingsUpdateRequest":{"properties":{"ai_enabled":{"type":"boolean","title":"Ai Enabled"}},"type":"object","required":["ai_enabled"],"title":"CapsuleSettingsUpdateRequest"},"CapsuleUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"gradient":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gradient"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"CapsuleUpdateRequest"},"CategoryResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"position":{"type":"integer","title":"Position"}},"type":"object","required":["id","name","position"],"title":"CategoryResponse"},"ChangeRoleRequest":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"ChangeRoleRequest"},"ChannelKeyCreate":{"properties":{"encrypted_key":{"type":"string","title":"Encrypted Key"}},"type":"object","required":["encrypted_key"],"title":"ChannelKeyCreate"},"ChannelKeyResponse":{"properties":{"channel_id":{"type":"string","format":"uuid","title":"Channel Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"encrypted_key":{"type":"string","title":"Encrypted Key"},"created_by":{"type":"string","format":"uuid","title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["channel_id","space_id","encrypted_key","created_by","created_at","updated_at"],"title":"ChannelKeyResponse"},"ChannelPreviewSchema":{"properties":{"name":{"type":"string","title":"Name"},"is_voice":{"type":"boolean","title":"Is Voice"}},"type":"object","required":["name","is_voice"],"title":"ChannelPreviewSchema"},"ChatMessageSchema":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content"}},"type":"object","required":["role","content"],"title":"ChatMessageSchema"},"ChatRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ChatMessageSchema"},"type":"array","title":"Messages"}},"type":"object","required":["messages"],"title":"ChatRequest"},"ChatResponse":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"ChatResponse"},"CheckAvailabilityResponse":{"properties":{"available":{"type":"boolean","title":"Available"}},"type":"object","required":["available"],"title":"CheckAvailabilityResponse"},"ChunkUploadResult":{"properties":{"status":{"type":"string","title":"Status"},"chunk_index":{"type":"integer","title":"Chunk Index"},"size":{"type":"integer","title":"Size"}},"type":"object","required":["status","chunk_index","size"],"title":"ChunkUploadResult","description":"Recording chunk upload result."},"CommandCatalogItem":{"properties":{"bot_user_id":{"type":"string","title":"Bot User Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"options":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Options"},"version":{"type":"integer","title":"Version"}},"type":"object","required":["bot_user_id","name","description","options","version"],"title":"CommandCatalogItem"},"CommandDTO":{"properties":{"name":{"type":"string","maxLength":32,"minLength":1,"title":"Name"},"description":{"type":"string","maxLength":100,"minLength":1,"title":"Description"},"options":{"items":{"$ref":"#/components/schemas/CommandOptionDTO"},"type":"array","maxItems":25,"title":"Options"}},"type":"object","required":["name","description"],"title":"CommandDTO"},"CommandInvokeRequest":{"properties":{"bot_user_id":{"type":"string","format":"uuid","title":"Bot User Id"},"command":{"type":"string","maxLength":32,"minLength":1,"title":"Command"},"options":{"additionalProperties":true,"type":"object","title":"Options"}},"type":"object","required":["bot_user_id","command"],"title":"CommandInvokeRequest"},"CommandOptionDTO":{"properties":{"name":{"type":"string","maxLength":32,"minLength":1,"title":"Name"},"type":{"type":"string","title":"Type"},"description":{"type":"string","maxLength":100,"minLength":1,"title":"Description"},"required":{"type":"boolean","title":"Required","default":false},"choices":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Choices"},"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max"}},"type":"object","required":["name","type","description"],"title":"CommandOptionDTO"},"CommandResponse":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"options":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Options"},"version":{"type":"integer","title":"Version"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["name","description","options","version","enabled"],"title":"CommandResponse"},"ControlBarConfigSchema":{"properties":{"visible":{"items":{"type":"string"},"type":"array","title":"Visible"},"hidden":{"items":{"type":"string"},"type":"array","title":"Hidden"},"tray_enabled":{"type":"boolean","title":"Tray Enabled"}},"type":"object","required":["visible","hidden","tray_enabled"],"title":"ControlBarConfigSchema"},"ControlCatalogItem":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"}},"type":"object","required":["key","name"],"title":"ControlCatalogItem"},"ConversationSummaryResponse":{"properties":{"other_user_id":{"type":"string","format":"uuid","title":"Other User Id"},"last_message_at":{"type":"string","format":"date-time","title":"Last Message At"},"last_message_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message Content"},"last_message_sender_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Last Message Sender Id"},"unread_count":{"type":"integer","title":"Unread Count","default":0}},"type":"object","required":["other_user_id","last_message_at"],"title":"ConversationSummaryResponse"},"CreateBotRequest":{"properties":{"username":{"type":"string","maxLength":30,"minLength":3,"title":"Username"},"display_name":{"type":"string","maxLength":32,"minLength":1,"title":"Display Name"},"description":{"anyOf":[{"type":"string","maxLength":240},{"type":"null"}],"title":"Description"},"website":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Website"},"avatar_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Avatar Url"},"visibility":{"$ref":"#/components/schemas/BotVisibility","default":"private"}},"type":"object","required":["username","display_name"],"title":"CreateBotRequest"},"CreateBotResponse":{"properties":{"bot":{"$ref":"#/components/schemas/BotResponse"},"token":{"type":"string","title":"Token"},"token_prefix":{"type":"string","title":"Token Prefix"}},"type":"object","required":["bot","token","token_prefix"],"title":"CreateBotResponse"},"CreateCategoryRequest":{"properties":{"name":{"type":"string","title":"Name"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"}},"type":"object","required":["name"],"title":"CreateCategoryRequest"},"CreateChannelNoteRequest":{"properties":{"rawTranscription":{"type":"string","title":"Rawtranscription"},"summary":{"type":"string","title":"Summary"},"participantCount":{"type":"integer","title":"Participantcount"},"segmentCount":{"type":"integer","title":"Segmentcount"},"channelName":{"type":"string","title":"Channelname","default":"Voice Channel"},"spaceName":{"type":"string","title":"Spacename","default":"Space"}},"type":"object","required":["rawTranscription","summary","participantCount","segmentCount"],"title":"CreateChannelNoteRequest","description":"Request for creating a note in a channel."},"CreateChannelNoteResponse":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"CreateChannelNoteResponse","description":"Response for created note."},"CreateEventRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"event_type":{"type":"string","title":"Event Type","default":"call"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"type":"string","format":"date-time","title":"End Time"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"},"room_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Room Id"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"participant_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Participant Ids","default":[]}},"type":"object","required":["title","start_time","end_time"],"title":"CreateEventRequest"},"CreateInviteRequest":{"properties":{"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"max_uses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Uses"}},"type":"object","title":"CreateInviteRequest"},"CreateNoteRequest":{"properties":{"rawTranscription":{"type":"string","title":"Rawtranscription"},"summary":{"type":"string","title":"Summary"},"participantCount":{"type":"integer","title":"Participantcount"},"segmentCount":{"type":"integer","title":"Segmentcount"},"channelName":{"type":"string","title":"Channelname","default":"Voice Channel"},"spaceName":{"type":"string","title":"Spacename","default":"Space"}},"type":"object","required":["rawTranscription","summary","participantCount","segmentCount"],"title":"CreateNoteRequest"},"CreateRoleRequest":{"properties":{"name":{"type":"string","title":"Name"},"color":{"type":"string","title":"Color","default":"#10B981"}},"type":"object","required":["name"],"title":"CreateRoleRequest"},"CreateRoomRequest":{"properties":{"name":{"type":"string","title":"Name"},"is_voice":{"type":"boolean","title":"Is Voice","default":true},"room_type":{"type":"string","title":"Room Type","default":"text"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"}},"type":"object","required":["name"],"title":"CreateRoomRequest"},"CreateScheduleRequest":{"properties":{"room_id":{"type":"string","format":"uuid","title":"Room Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"scheduled_at":{"type":"string","format":"date-time","title":"Scheduled At"},"is_public":{"type":"boolean","title":"Is Public","default":false},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"type":"object","required":["room_id","space_id","title","scheduled_at"],"title":"CreateScheduleRequest","description":"Request to create a scheduled stream announcement."},"CreateSpaceRequest":{"properties":{"name":{"type":"string","title":"Name"},"template":{"$ref":"#/components/schemas/SpaceTemplate","default":"custom"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"is_public":{"type":"boolean","title":"Is Public","default":true}},"type":"object","required":["name"],"title":"CreateSpaceRequest"},"CreateStreamRequest":{"properties":{"room_id":{"type":"string","format":"uuid","title":"Room Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"title":{"type":"string","title":"Title"},"is_public":{"type":"boolean","title":"Is Public","default":false},"recording_enabled":{"type":"boolean","title":"Recording Enabled","default":false}},"type":"object","required":["room_id","space_id","title"],"title":"CreateStreamRequest","description":"Request to create a new stream."},"CreateWebhookRequest":{"properties":{"url":{"type":"string","maxLength":500,"minLength":1,"title":"Url"},"events":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Events"},"space_filter":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Space Filter"}},"type":"object","required":["url","events"],"title":"CreateWebhookRequest"},"CreateWebhookResponse":{"properties":{"webhook":{"$ref":"#/components/schemas/WebhookResponse"},"secret":{"type":"string","title":"Secret"},"secret_prefix":{"type":"string","title":"Secret Prefix"}},"type":"object","required":["webhook","secret","secret_prefix"],"title":"CreateWebhookResponse"},"DMResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"sender_id":{"type":"string","format":"uuid","title":"Sender Id"},"receiver_id":{"type":"string","format":"uuid","title":"Receiver Id"},"content":{"type":"string","title":"Content"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentDTO"},"type":"array","title":"Attachments","default":[]},"reactions":{"additionalProperties":{"items":{"type":"string","format":"uuid"},"type":"array"},"type":"object","title":"Reactions","default":{}},"reply_to_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To Id"},"is_read":{"type":"boolean","title":"Is Read"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At"},"edited":{"type":"boolean","title":"Edited","default":false},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"pinned":{"type":"boolean","title":"Pinned","default":false},"pinned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pinned At"},"pinned_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Pinned By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","sender_id","receiver_id","content","is_read","read_at","created_at"],"title":"DMResponse"},"DecorationCatalogItem":{"properties":{"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"},"positions":{"items":{"type":"string"},"type":"array","title":"Positions"}},"type":"object","required":["type","name","positions"],"title":"DecorationCatalogItem"},"DecorationItemSchema":{"properties":{"type":{"type":"string","title":"Type"},"position":{"type":"string","title":"Position","default":"top-left"},"settings":{"$ref":"#/components/schemas/DecorationSettingsData"}},"type":"object","required":["type"],"title":"DecorationItemSchema"},"DecorationSettingsData":{"properties":{"size":{"type":"number","title":"Size"},"opacity":{"type":"number","title":"Opacity"},"rotation":{"type":"integer","title":"Rotation"},"offset_x":{"type":"number","title":"Offset X"},"offset_y":{"type":"number","title":"Offset Y"}},"type":"object","title":"DecorationSettingsData","description":"Voice decoration settings."},"DefaultAvatarUpdateRequest":{"properties":{"index":{"anyOf":[{"type":"integer","maximum":7.0,"minimum":0.0},{"type":"null"}],"title":"Index"}},"type":"object","title":"DefaultAvatarUpdateRequest","description":"Request to update default avatar index."},"DiscoverSpaceResult":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"template":{"type":"string","title":"Template"},"member_count":{"type":"integer","title":"Member Count"},"voice_count":{"type":"integer","title":"Voice Count","default":0},"room_count":{"type":"integer","title":"Room Count","default":0},"voice_room_count":{"type":"integer","title":"Voice Room Count","default":0},"online_count":{"type":"integer","title":"Online Count","default":0},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"is_public":{"type":"boolean","title":"Is Public"},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"is_member":{"type":"boolean","title":"Is Member"},"has_pending_request":{"type":"boolean","title":"Has Pending Request"}},"type":"object","required":["id","name","template","member_count","is_public","is_member","has_pending_request"],"title":"DiscoverSpaceResult","description":"Result for discover page with additional info."},"DoodleCreate":{"properties":{"strokes":{"items":{"$ref":"#/components/schemas/DoodleStroke"},"type":"array","title":"Strokes"}},"type":"object","required":["strokes"],"title":"DoodleCreate"},"DoodleOut":{"properties":{"id":{"type":"string","title":"Id"},"creator_id":{"type":"string","title":"Creator Id"},"target_user_id":{"type":"string","title":"Target User Id"},"strokes":{"items":{"$ref":"#/components/schemas/DoodleStroke"},"type":"array","title":"Strokes"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","creator_id","target_user_id","strokes","status","created_at","updated_at"],"title":"DoodleOut"},"DoodleProposalOut":{"properties":{"id":{"type":"string","title":"Id"},"creator_id":{"type":"string","title":"Creator Id"},"creator_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Name"},"creator_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Avatar"},"strokes":{"items":{"$ref":"#/components/schemas/DoodleStroke"},"type":"array","title":"Strokes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","creator_id","strokes","created_at"],"title":"DoodleProposalOut"},"DoodleStroke":{"properties":{"path":{"type":"string","title":"Path"},"color":{"type":"string","title":"Color"},"width":{"type":"number","title":"Width"}},"type":"object","required":["path","color","width"],"title":"DoodleStroke"},"EditDMRequest":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"EditDMRequest"},"EditGroupMessageRequest":{"properties":{"content":{"type":"string","title":"Content"}},"type":"object","required":["content"],"title":"EditGroupMessageRequest"},"EventParticipantStatus":{"type":"string","enum":["pending","accepted","declined","maybe"],"title":"EventParticipantStatus","description":"Статус ответа участника на приглашение"},"EventRecurrence":{"type":"string","enum":["none","daily","weekly","monthly"],"title":"EventRecurrence","description":"Повторение события"},"EventResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"event_type":{"type":"string","title":"Event Type"},"status":{"type":"string","title":"Status"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"type":"string","format":"date-time","title":"End Time"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"},"room_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Room Id"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"participants":{"items":{"$ref":"#/components/schemas/ParticipantResponse"},"type":"array","title":"Participants"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"creator_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Username"},"creator_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Display Name"},"creator_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Avatar Url"}},"type":"object","required":["id","title","description","event_type","status","start_time","end_time","creator_id","space_id","participants","created_at"],"title":"EventResponse"},"FinishRecordingRequest":{"properties":{"videoPath":{"type":"string","title":"Videopath"},"duration":{"type":"integer","title":"Duration"},"size":{"type":"integer","title":"Size"}},"type":"object","required":["videoPath","duration","size"],"title":"FinishRecordingRequest","description":"Request to finish a recording."},"FolderCreate":{"properties":{"name":{"type":"string","title":"Name"},"emoji":{"type":"string","title":"Emoji","default":"📁"},"chat_ids":{"items":{"type":"string"},"type":"array","title":"Chat Ids","default":[]}},"type":"object","required":["name"],"title":"FolderCreate"},"FolderOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"emoji":{"type":"string","title":"Emoji"},"position":{"type":"integer","title":"Position"},"chat_ids":{"items":{"type":"string"},"type":"array","title":"Chat Ids"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","emoji","position","chat_ids","created_at","updated_at"],"title":"FolderOut"},"FolderUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"chat_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chat Ids"}},"type":"object","title":"FolderUpdate"},"FollowStatusResponse":{"properties":{"is_following":{"type":"boolean","title":"Is Following"},"follower_count":{"type":"integer","title":"Follower Count"}},"type":"object","required":["is_following","follower_count"],"title":"FollowStatusResponse"},"FollowingUserResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"username":{"type":"string","title":"Username"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"default_avatar_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Avatar Index"},"is_live":{"type":"boolean","title":"Is Live","default":false},"current_stream_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Current Stream Id"},"current_stream_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stream Title"},"current_stream_viewer_count":{"type":"integer","title":"Current Stream Viewer Count","default":0}},"type":"object","required":["id","username"],"title":"FollowingUserResponse"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"ForumPostCreateRequest":{"properties":{"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentDTO"},"type":"array","title":"Attachments","default":[]}},"type":"object","required":["title","content"],"title":"ForumPostCreateRequest"},"FriendRequestResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user":{"$ref":"#/components/schemas/app__presentation__api__auth_router__UserResponse"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","user","status","created_at"],"title":"FriendRequestResponse","description":"Friend request with full user data (for incoming/outgoing requests)."},"FriendshipResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"friend_id":{"type":"string","format":"uuid","title":"Friend Id"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","user_id","friend_id","status","created_at","updated_at"],"title":"FriendshipResponse"},"FunSubtitleResponse":{"properties":{"subtitle":{"type":"string","title":"Subtitle"}},"type":"object","required":["subtitle"],"title":"FunSubtitleResponse"},"GifFavoriteResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"gif_url":{"type":"string","title":"Gif Url"},"preview_url":{"type":"string","title":"Preview Url"},"title":{"type":"string","title":"Title"},"source":{"type":"string","title":"Source"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"}},"type":"object","required":["id","gif_url","preview_url","title","source","width","height"],"title":"GifFavoriteResponse"},"GroupChatCreateRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"member_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Member Ids","default":[]}},"type":"object","required":["name"],"title":"GroupChatCreateRequest"},"GroupChatResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"created_by":{"type":"string","format":"uuid","title":"Created By"},"invite_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invite Code"},"settings_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Settings Json"},"member_count":{"type":"integer","title":"Member Count"},"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","name","description","avatar_url","created_by","invite_code","settings_json","member_count","created_at","updated_at"],"title":"GroupChatResponse"},"GroupChatSummaryResponse":{"properties":{"group_id":{"type":"string","format":"uuid","title":"Group Id"},"name":{"type":"string","title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"member_count":{"type":"integer","title":"Member Count"},"last_message_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message At"},"last_message_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message Content"},"last_message_sender_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Last Message Sender Id"},"last_message_sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message Sender Name"},"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["group_id","name","avatar_url","member_count","last_message_at","last_message_content","last_message_sender_id","last_message_sender_name","unread_count"],"title":"GroupChatSummaryResponse"},"GroupChatUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"settings_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Settings Json"}},"type":"object","title":"GroupChatUpdateRequest"},"GroupMemberResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"username":{"type":"string","title":"Username"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"default_avatar_index":{"type":"integer","title":"Default Avatar Index"},"role":{"type":"string","title":"Role"},"joined_at":{"type":"string","format":"date-time","title":"Joined At"},"is_online":{"type":"boolean","title":"Is Online"}},"type":"object","required":["id","user_id","username","display_name","avatar_url","default_avatar_index","role","joined_at","is_online"],"title":"GroupMemberResponse"},"GroupMessageResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"group_id":{"type":"string","format":"uuid","title":"Group Id"},"sender_id":{"type":"string","format":"uuid","title":"Sender Id"},"sender_name":{"type":"string","title":"Sender Name"},"sender_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Avatar"},"sender_avatar_index":{"type":"integer","title":"Sender Avatar Index"},"content":{"type":"string","title":"Content"},"attachments":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Attachments","default":[]},"reactions":{"additionalProperties":{"items":{"type":"string","format":"uuid"},"type":"array"},"type":"object","title":"Reactions","default":{}},"reply_to_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To Id"},"edited":{"type":"boolean","title":"Edited"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"pinned":{"type":"boolean","title":"Pinned"},"pinned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pinned At"},"pinned_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Pinned By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","group_id","sender_id","sender_name","sender_avatar","sender_avatar_index","content","reply_to_id","edited","updated_at","pinned","pinned_at","pinned_by","created_at"],"title":"GroupMessageResponse"},"GuestTokenRequest":{"properties":{"room_name":{"type":"string","title":"Room Name"},"participant_id":{"type":"string","title":"Participant Id"},"participant_name":{"type":"string","title":"Participant Name"}},"type":"object","required":["room_name","participant_id","participant_name"],"title":"GuestTokenRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IceConfigResponse":{"properties":{"ice_servers":{"items":{"$ref":"#/components/schemas/IceServerResponse"},"type":"array","title":"Ice Servers"}},"type":"object","required":["ice_servers"],"title":"IceConfigResponse"},"IceServerResponse":{"properties":{"urls":{"items":{"type":"string"},"type":"array","title":"Urls"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"credential":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credential"}},"type":"object","required":["urls"],"title":"IceServerResponse"},"InstantCallCreateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"require_approval":{"type":"boolean","title":"Require Approval","default":false},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","title":"InstantCallCreateRequest"},"InstantCallJoinRequest":{"properties":{"guest_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guest Name"},"participant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Participant Id"}},"type":"object","title":"InstantCallJoinRequest"},"InstantCallJoinResponse":{"properties":{"call_id":{"type":"string","format":"uuid","title":"Call Id"},"code":{"type":"string","title":"Code"},"title":{"type":"string","title":"Title"},"jitsi_domain":{"type":"string","title":"Jitsi Domain"},"jitsi_room":{"type":"string","title":"Jitsi Room"},"jitsi_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jitsi Token"},"participant_id":{"type":"string","title":"Participant Id"},"participant_name":{"type":"string","title":"Participant Name"},"is_creator":{"type":"boolean","title":"Is Creator","default":false},"waiting_approval":{"type":"boolean","title":"Waiting Approval","default":false}},"type":"object","required":["call_id","code","title","jitsi_domain","jitsi_room","jitsi_token","participant_id","participant_name"],"title":"InstantCallJoinResponse"},"InstantCallResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"code":{"type":"string","title":"Code"},"title":{"type":"string","title":"Title"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"status":{"type":"string","title":"Status"},"require_approval":{"type":"boolean","title":"Require Approval"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"participant_count":{"type":"integer","title":"Participant Count","default":0}},"type":"object","required":["id","code","title","creator_id","status","require_approval","expires_at","created_at"],"title":"InstantCallResponse"},"InviteBotRequest":{"properties":{"bot_user_id":{"type":"string","format":"uuid","title":"Bot User Id"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"channel_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Channel Ids"}},"type":"object","required":["bot_user_id"],"title":"InviteBotRequest"},"InviteCodeResponse":{"properties":{"invite_code":{"type":"string","title":"Invite Code"}},"type":"object","required":["invite_code"],"title":"InviteCodeResponse"},"InviteParticipantsRequest":{"properties":{"user_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"User Ids"}},"type":"object","required":["user_ids"],"title":"InviteParticipantsRequest"},"InviteResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"code":{"type":"string","title":"Code"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"max_uses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Uses"},"uses":{"type":"integer","title":"Uses"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"is_expired":{"type":"boolean","title":"Is Expired","default":false}},"type":"object","required":["id","code","expires_at","max_uses","uses","created_at"],"title":"InviteResponse"},"JibriCallbackRequest":{"properties":{"recording_dir":{"type":"string","title":"Recording Dir"},"video_file":{"type":"string","title":"Video File"},"video_size":{"type":"integer","title":"Video Size","default":0},"duration_seconds":{"type":"integer","title":"Duration Seconds","default":0},"transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript"},"transcript_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"},{"type":"null"}],"title":"Transcript Json"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"}},"type":"object","required":["recording_dir","video_file"],"title":"JibriCallbackRequest","description":"Callback from Jibri finalize script."},"JibriRecordingResponse":{"properties":{"recording_id":{"type":"string","title":"Recording Id"},"room_name":{"type":"string","title":"Room Name"},"video_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Path"},"transcript_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Path"},"has_transcript":{"type":"boolean","title":"Has Transcript","default":false}},"type":"object","required":["recording_id","room_name"],"title":"JibriRecordingResponse","description":"Jibri recording info response."},"JibriStatusResponse":{"properties":{"available":{"type":"boolean","title":"Available"},"busy_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Busy Status"},"health_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Health Status"}},"type":"object","required":["available"],"title":"JibriStatusResponse","description":"Jibri status response."},"JitsiRoomInfo":{"properties":{"domain":{"type":"string","title":"Domain"},"websocket_url":{"type":"string","title":"Websocket Url"},"bosh_url":{"type":"string","title":"Bosh Url"}},"type":"object","required":["domain","websocket_url","bosh_url"],"title":"JitsiRoomInfo"},"JitsiTokenResponse":{"properties":{"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"domain":{"type":"string","title":"Domain"},"room":{"type":"string","title":"Room"}},"type":"object","required":["domain","room"],"title":"JitsiTokenResponse"},"JoinRequestCreateRequest":{"properties":{"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","title":"JoinRequestCreateRequest","description":"Request to join a private space."},"JoinRequestResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"user":{"$ref":"#/components/schemas/app__presentation__api__auth_router__UserResponse"},"status":{"type":"string","title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"reviewed_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reviewed By"},"reviewed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reviewed At"}},"type":"object","required":["id","space_id","user","status","created_at"],"title":"JoinRequestResponse","description":"Response for a join request."},"JoinSettingsResponse":{"properties":{"join_channel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Join Channel Id"},"join_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Join Message Template"},"auto_display_role_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Display Role Id"}},"type":"object","title":"JoinSettingsResponse","description":"Response with current join welcome settings."},"KeyBackupCreate":{"properties":{"encrypted_keys":{"type":"string","title":"Encrypted Keys"},"salt":{"type":"string","title":"Salt"},"version":{"type":"integer","title":"Version","default":1}},"type":"object","required":["encrypted_keys","salt"],"title":"KeyBackupCreate"},"KeyBackupResponse":{"properties":{"encrypted_keys":{"type":"string","title":"Encrypted Keys"},"salt":{"type":"string","title":"Salt"},"version":{"type":"integer","title":"Version"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["encrypted_keys","salt","version","updated_at"],"title":"KeyBackupResponse"},"KeyBackupStatus":{"properties":{"exists":{"type":"boolean","title":"Exists"},"salt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Salt"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["exists"],"title":"KeyBackupStatus"},"LinkPreviewResponse":{"properties":{"url":{"type":"string","title":"Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"site_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Name"},"favicon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Favicon"}},"type":"object","required":["url"],"title":"LinkPreviewResponse"},"LiveKitConfigResponse":{"properties":{"url":{"type":"string","title":"Url"},"screen_share_presets":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"Screen Share Presets"}},"type":"object","required":["url","screen_share_presets"],"title":"LiveKitConfigResponse"},"LoginRequest":{"properties":{"login":{"type":"string","title":"Login"},"password":{"type":"string","title":"Password"},"turnstile_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile Token"}},"type":"object","required":["login","password"],"title":"LoginRequest"},"MeetingHintRequest":{"properties":{"transcription":{"type":"string","title":"Transcription"},"recent_messages":{"items":{"type":"string"},"type":"array","title":"Recent Messages","default":[]}},"type":"object","required":["transcription"],"title":"MeetingHintRequest"},"MeetingHintResponse":{"properties":{"hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hint"}},"type":"object","required":["hint"],"title":"MeetingHintResponse"},"MeetingSummaryRequest":{"properties":{"transcription":{"type":"string","title":"Transcription"}},"type":"object","required":["transcription"],"title":"MeetingSummaryRequest"},"MeetingSummaryResponse":{"properties":{"summary":{"type":"string","title":"Summary"}},"type":"object","required":["summary"],"title":"MeetingSummaryResponse"},"MemberPreviewSchema":{"properties":{"id":{"type":"string","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","required":["id","display_name","avatar_url"],"title":"MemberPreviewSchema"},"MessageCreateRequest":{"properties":{"content":{"type":"string","title":"Content"},"reply_to":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentDTO"},"type":"array","title":"Attachments","default":[]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["content"],"title":"MessageCreateRequest"},"MoveToChannelRequest":{"properties":{"target_channel_id":{"type":"string","format":"uuid","title":"Target Channel Id"}},"type":"object","required":["target_channel_id"],"title":"MoveToChannelRequest"},"MuteMemberRequest":{"properties":{"duration_minutes":{"type":"integer","maximum":43200.0,"exclusiveMinimum":0.0,"title":"Duration Minutes","description":"Mute duration in minutes (max 30 days)"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["duration_minutes"],"title":"MuteMemberRequest"},"MuteSegmentRequest":{"properties":{"seconds":{"type":"integer","maximum":86400.0,"minimum":1.0,"title":"Seconds","description":"Длительность muted-сегмента в секундах"}},"type":"object","required":["seconds"],"title":"MuteSegmentRequest"},"MuteSegmentResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"matched":{"type":"integer","title":"Matched"}},"type":"object","required":["ok","matched"],"title":"MuteSegmentResponse"},"NoteCreatorData":{"properties":{"id":{"type":"string","title":"Id"},"username":{"type":"string","title":"Username"}},"type":"object","required":["id","username"],"title":"NoteCreatorData","description":"Note creator information."},"NoteDeleteResponse":{"properties":{"success":{"type":"boolean","title":"Success"}},"type":"object","required":["success"],"title":"NoteDeleteResponse"},"NoteIDResponse":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"NoteIDResponse"},"NotificationSettingsRequest":{"properties":{"mode":{"type":"string","title":"Mode"}},"type":"object","required":["mode"],"title":"NotificationSettingsRequest"},"NotificationSettingsResponse":{"properties":{"channel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Channel Id"},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["mode"],"title":"NotificationSettingsResponse"},"NotificationSettingsSchema":{"properties":{"sounds":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sounds"},"mentions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mentions"},"calendar_events":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Calendar Events"}},"type":"object","title":"NotificationSettingsSchema"},"NowPlayingResponse":{"properties":{"is_playing":{"type":"boolean","title":"Is Playing"},"track_id":{"type":"string","title":"Track Id"},"track_name":{"type":"string","title":"Track Name"},"artists":{"items":{"type":"string"},"type":"array","title":"Artists"},"album_name":{"type":"string","title":"Album Name"},"album_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Album Image Url"},"progress_ms":{"type":"integer","title":"Progress Ms"},"duration_ms":{"type":"integer","title":"Duration Ms"},"track_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Track Url"}},"type":"object","required":["is_playing","track_id","track_name","artists","album_name","progress_ms","duration_ms"],"title":"NowPlayingResponse"},"ParticipantResponse":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"status":{"type":"string","title":"Status"},"invited_at":{"type":"string","format":"date-time","title":"Invited At"},"responded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Responded At"}},"type":"object","required":["user_id","status","invited_at","responded_at"],"title":"ParticipantResponse"},"PasswordChangeRequest":{"properties":{"old_password":{"type":"string","title":"Old Password"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["old_password","new_password"],"title":"PasswordChangeRequest"},"PinOut":{"properties":{"chat_id":{"type":"string","title":"Chat Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["chat_id","created_at"],"title":"PinOut"},"PinToggle":{"properties":{"chat_id":{"type":"string","title":"Chat Id"}},"type":"object","required":["chat_id"],"title":"PinToggle"},"PlaySoundRequest":{"properties":{"channel_id":{"type":"string","format":"uuid","title":"Channel Id"}},"type":"object","required":["channel_id"],"title":"PlaySoundRequest"},"PollCreateRequest":{"properties":{"question":{"type":"string","title":"Question"},"options":{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object"},"type":"array","title":"Options"},"is_anonymous":{"type":"boolean","title":"Is Anonymous","default":false},"is_multi_choice":{"type":"boolean","title":"Is Multi Choice","default":false},"allows_revote":{"type":"boolean","title":"Allows Revote","default":true},"deadline":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deadline"}},"type":"object","required":["question","options"],"title":"PollCreateRequest"},"PollDTO":{"properties":{"question":{"type":"string","title":"Question"},"options":{"items":{"$ref":"#/components/schemas/PollOptionDTO"},"type":"array","title":"Options"},"is_anonymous":{"type":"boolean","title":"Is Anonymous","default":false},"is_multi_choice":{"type":"boolean","title":"Is Multi Choice","default":false},"allows_revote":{"type":"boolean","title":"Allows Revote","default":true},"deadline":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deadline"},"created_by":{"type":"string","format":"uuid","title":"Created By"},"total_votes":{"type":"integer","title":"Total Votes","default":0}},"type":"object","required":["question","options","created_by"],"title":"PollDTO"},"PollOptionDTO":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"text":{"type":"string","title":"Text"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"voter_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Voter Ids","default":[]},"vote_count":{"type":"integer","title":"Vote Count","default":0}},"type":"object","required":["id","text"],"title":"PollOptionDTO"},"PreferencesResponse":{"properties":{"space_id":{"type":"string","format":"uuid","title":"Space Id"},"volume":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Volume"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["space_id","volume","enabled"],"title":"PreferencesResponse"},"PresenceResponse":{"properties":{"status":{"type":"string","title":"Status"},"is_online":{"type":"boolean","title":"Is Online"}},"type":"object","required":["status","is_online"],"title":"PresenceResponse","description":"Presence status response."},"PresenceStatus":{"type":"string","enum":["online","idle","dnd","invisible","offline"],"title":"PresenceStatus","description":"Статус присутствия пользователя"},"PresenceUpdateRequest":{"properties":{"status":{"$ref":"#/components/schemas/PresenceStatus"},"manual":{"type":"boolean","title":"Manual","default":true}},"type":"object","required":["status"],"title":"PresenceUpdateRequest"},"PrivacySettingsSchema":{"properties":{"show_online_status":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Online Status"},"show_read_receipts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Read Receipts"}},"type":"object","title":"PrivacySettingsSchema"},"PushTokenRequest":{"properties":{"push_token":{"type":"string","title":"Push Token"}},"type":"object","required":["push_token"],"title":"PushTokenRequest"},"ReactionRequest":{"properties":{"emoji":{"type":"string","title":"Emoji"}},"type":"object","required":["emoji"],"title":"ReactionRequest"},"RecordingParticipantResponse":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"joined_at":{"type":"string","title":"Joined At"},"left_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Left At"}},"type":"object","required":["user_id","joined_at"],"title":"RecordingParticipantResponse"},"RecordingProcessingCallbackRequest":{"properties":{"transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"}},"type":"object","title":"RecordingProcessingCallbackRequest"},"RecordingResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"original_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Title"},"status":{"$ref":"#/components/schemas/RecordingStatus"},"started_at":{"type":"string","title":"Started At"},"ended_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ended At"},"expires_at":{"type":"string","title":"Expires At"},"started_by":{"type":"string","format":"uuid","title":"Started By"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"},"room_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Room Id"},"instant_call_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Instant Call Id"},"video_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Path"},"thumbnail_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Path"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"file_size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size Bytes"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"},"transcript_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript Json"},"summary_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Json"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"is_favorited":{"type":"boolean","title":"Is Favorited","default":false},"participants":{"items":{"$ref":"#/components/schemas/RecordingParticipantResponse"},"type":"array","title":"Participants"}},"type":"object","required":["id","title","status","started_at","expires_at","started_by","participants"],"title":"RecordingResponse"},"RecordingStatus":{"type":"string","enum":["recording","uploading","processing","ready","failed","expired"],"title":"RecordingStatus","description":"Статус записи встречи."},"RecordingSummaryResponse":{"properties":{"summary":{"type":"string","title":"Summary"}},"type":"object","required":["summary"],"title":"RecordingSummaryResponse"},"RecordingTranscriptResponse":{"properties":{"transcript":{"type":"string","title":"Transcript"}},"type":"object","required":["transcript"],"title":"RecordingTranscriptResponse"},"RefreshRequest":{"properties":{"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"}},"type":"object","title":"RefreshRequest"},"RegisterCommandsRequest":{"properties":{"commands":{"items":{"$ref":"#/components/schemas/CommandDTO"},"type":"array","maxItems":100,"title":"Commands"}},"type":"object","title":"RegisterCommandsRequest"},"RegisterRequest":{"properties":{"username":{"type":"string","title":"Username"},"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"turnstile_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile Token"}},"type":"object","required":["username","email","password"],"title":"RegisterRequest"},"RemoveGifFavoriteRequest":{"properties":{"gif_url":{"type":"string","maxLength":2000,"minLength":1,"title":"Gif Url"}},"type":"object","required":["gif_url"],"title":"RemoveGifFavoriteRequest"},"ReorderCategoriesRequest":{"properties":{"order":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Order"}},"type":"object","required":["order"],"title":"ReorderCategoriesRequest"},"ReorderRolesRequest":{"properties":{"order":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Order"}},"type":"object","required":["order"],"title":"ReorderRolesRequest"},"ReorderRoomItem":{"properties":{"room_id":{"type":"string","format":"uuid","title":"Room Id"},"position":{"type":"integer","title":"Position"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"}},"type":"object","required":["room_id","position"],"title":"ReorderRoomItem"},"ReorderRoomsRequest":{"properties":{"order":{"items":{"$ref":"#/components/schemas/ReorderRoomItem"},"type":"array","title":"Order"}},"type":"object","required":["order"],"title":"ReorderRoomsRequest"},"ReplyToMessageInfo":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"content":{"type":"string","title":"Content"},"attachments_count":{"type":"integer","title":"Attachments Count","default":0}},"type":"object","required":["id","user_id","display_name","content"],"title":"ReplyToMessageInfo","description":"Brief info about the message being replied to."},"ResendVerificationRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ResendVerificationRequest"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordRequest"},"RespondRequest":{"properties":{"interaction_token":{"type":"string","maxLength":4096,"minLength":1,"title":"Interaction Token"},"content":{"type":"string","maxLength":2000,"minLength":1,"title":"Content"}},"type":"object","required":["interaction_token","content"],"title":"RespondRequest"},"RoleResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"color":{"type":"string","title":"Color"},"position":{"type":"integer","title":"Position"},"is_system":{"type":"boolean","title":"Is System","default":false}},"type":"object","required":["id","name","color","position"],"title":"RoleResponse"},"RoomAccessEntryRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},"type":"object","title":"RoomAccessEntryRequest"},"RoomAccessEntryResponse":{"properties":{"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},"type":"object","title":"RoomAccessEntryResponse"},"RoomResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"is_voice":{"type":"boolean","title":"Is Voice"},"room_type":{"type":"string","title":"Room Type","default":"text"},"is_private":{"type":"boolean","title":"Is Private","default":false},"access_mode":{"type":"string","title":"Access Mode","default":"open"},"position":{"type":"integer","title":"Position"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"access_list":{"items":{"$ref":"#/components/schemas/RoomAccessEntryResponse"},"type":"array","title":"Access List","default":[]}},"type":"object","required":["id","name","is_voice","position"],"title":"RoomResponse"},"RotateTokenResponse":{"properties":{"token":{"type":"string","title":"Token"},"token_prefix":{"type":"string","title":"Token Prefix"}},"type":"object","required":["token","token_prefix"],"title":"RotateTokenResponse"},"ScheduleResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"room_id":{"type":"string","format":"uuid","title":"Room Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"scheduled_at":{"type":"string","title":"Scheduled At"},"is_public":{"type":"boolean","title":"Is Public"},"status":{"type":"string","title":"Status"},"stream_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Stream Id"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"created_at":{"type":"string","title":"Created At"},"creator_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Name"},"creator_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Avatar"},"space_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Name"}},"type":"object","required":["id","room_id","space_id","creator_id","title","description","scheduled_at","is_public","status","created_at"],"title":"ScheduleResponse","description":"Stream schedule response."},"SendDMRequest":{"properties":{"content":{"type":"string","title":"Content"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentDTO"},"type":"array","title":"Attachments","default":[]},"reply_to_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To Id"}},"type":"object","required":["content"],"title":"SendDMRequest"},"SendGroupMessageRequest":{"properties":{"content":{"type":"string","title":"Content"},"attachments":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Attachments","default":[]},"reply_to_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To Id"}},"type":"object","required":["content"],"title":"SendGroupMessageRequest"},"SetSpaceVisibilityRequest":{"properties":{"space_id":{"type":"string","title":"Space Id"},"is_visible":{"type":"boolean","title":"Is Visible"}},"type":"object","required":["space_id","is_visible"],"title":"SetSpaceVisibilityRequest"},"SoundListResponse":{"properties":{"sounds":{"items":{"$ref":"#/components/schemas/SoundResponse"},"type":"array","title":"Sounds"},"limit":{"type":"integer","title":"Limit","default":10}},"type":"object","required":["sounds"],"title":"SoundListResponse"},"SoundResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"name":{"type":"string","title":"Name"},"file_url":{"type":"string","title":"File Url"},"duration_ms":{"type":"integer","title":"Duration Ms"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"position":{"type":"integer","title":"Position"},"uploaded_by_user_id":{"type":"string","format":"uuid","title":"Uploaded By User Id"}},"type":"object","required":["id","space_id","name","file_url","duration_ms","emoji","position","uploaded_by_user_id"],"title":"SoundResponse"},"SpaceAwardsResponse":{"properties":{"space_id":{"type":"string","title":"Space Id"},"items":{"items":{"$ref":"#/components/schemas/AwardItemResponse"},"type":"array","title":"Items"},"total_unlocked":{"type":"integer","title":"Total Unlocked"},"total_points":{"type":"integer","title":"Total Points"},"computed_at":{"type":"string","format":"date-time","title":"Computed At"}},"type":"object","required":["space_id","items","total_unlocked","total_points","computed_at"],"title":"SpaceAwardsResponse"},"SpaceMemberResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"user":{"$ref":"#/components/schemas/app__presentation__api__auth_router__UserResponse"},"role":{"type":"string","title":"Role"},"display_role_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Role Id"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"joined_at":{"type":"string","title":"Joined At"},"muted_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Muted Until"},"mute_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mute Reason"}},"type":"object","required":["id","user_id","user","role","joined_at"],"title":"SpaceMemberResponse"},"SpacePreviewResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"template":{"type":"string","title":"Template"},"member_count":{"type":"integer","title":"Member Count"},"is_public":{"type":"boolean","title":"Is Public"},"channels":{"items":{"$ref":"#/components/schemas/ChannelPreviewSchema"},"type":"array","title":"Channels"},"members_preview":{"items":{"$ref":"#/components/schemas/MemberPreviewSchema"},"type":"array","title":"Members Preview"}},"type":"object","required":["id","name","template","member_count","is_public","channels","members_preview"],"title":"SpacePreviewResponse"},"SpacePublicInfoResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"template":{"type":"string","title":"Template"},"member_count":{"type":"integer","title":"Member Count"},"room_count":{"type":"integer","title":"Room Count"},"voice_room_count":{"type":"integer","title":"Voice Room Count"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"invite_code":{"type":"string","title":"Invite Code"},"channels":{"items":{"$ref":"#/components/schemas/ChannelPreviewSchema"},"type":"array","title":"Channels"}},"type":"object","required":["id","name","template","member_count","room_count","voice_room_count","invite_code","channels"],"title":"SpacePublicInfoResponse","description":"Public space info (no auth required, for SEO and public space pages)."},"SpaceResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"owner_id":{"type":"string","format":"uuid","title":"Owner Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"template":{"type":"string","title":"Template"},"invite_code":{"type":"string","title":"Invite Code"},"is_public":{"type":"boolean","title":"Is Public"},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"is_archived":{"type":"boolean","title":"Is Archived"},"has_streaming_access":{"type":"boolean","title":"Has Streaming Access","default":false},"afk_channel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Afk Channel Id"},"afk_timeout_minutes":{"type":"integer","title":"Afk Timeout Minutes","default":5},"welcome_enabled":{"type":"boolean","title":"Welcome Enabled","default":false},"welcome_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Title"},"welcome_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"},"join_channel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Join Channel Id"},"join_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Join Message Template"},"auto_display_role_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Display Role Id"},"created_at":{"type":"string","title":"Created At"},"members":{"items":{"$ref":"#/components/schemas/SpaceMemberResponse"},"type":"array","title":"Members"},"rooms":{"items":{"$ref":"#/components/schemas/RoomResponse"},"type":"array","title":"Rooms"},"categories":{"items":{"$ref":"#/components/schemas/CategoryResponse"},"type":"array","title":"Categories"}},"type":"object","required":["id","name","owner_id","template","invite_code","is_public","is_archived","created_at","members","rooms"],"title":"SpaceResponse"},"SpaceSearchResult":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"template":{"type":"string","title":"Template"},"member_count":{"type":"integer","title":"Member Count"},"is_public":{"type":"boolean","title":"Is Public"},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"is_member":{"type":"boolean","title":"Is Member"},"has_pending_request":{"type":"boolean","title":"Has Pending Request"}},"type":"object","required":["id","name","template","member_count","is_public","is_member","has_pending_request"],"title":"SpaceSearchResult","description":"Search result for a single space."},"SpaceTemplate":{"type":"string","enum":["friends","study","work","community","gaming","custom"],"title":"SpaceTemplate","description":"Шаблоны для быстрого создания пространств"},"SpaceVisibilityResponse":{"properties":{"hidden_space_ids":{"items":{"type":"string"},"type":"array","title":"Hidden Space Ids"}},"type":"object","required":["hidden_space_ids"],"title":"SpaceVisibilityResponse"},"SpeakerEventItem":{"properties":{"participantId":{"type":"string","title":"Participantid"},"name":{"type":"string","title":"Name"},"startSec":{"type":"number","title":"Startsec"},"endSec":{"type":"number","title":"Endsec"}},"type":"object","required":["participantId","name","startSec","endSec"],"title":"SpeakerEventItem","description":"Single speaker activity event."},"SpeakerEventsRequest":{"properties":{"events":{"items":{"$ref":"#/components/schemas/SpeakerEventItem"},"type":"array","title":"Events"}},"type":"object","required":["events"],"title":"SpeakerEventsRequest","description":"Speaker events payload from the client."},"SpotifyConnectResponse":{"properties":{"auth_url":{"type":"string","title":"Auth Url"}},"type":"object","required":["auth_url"],"title":"SpotifyConnectResponse"},"SpotifyStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected"},"is_visible":{"type":"boolean","title":"Is Visible","default":false},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"is_premium":{"type":"boolean","title":"Is Premium","default":false}},"type":"object","required":["connected"],"title":"SpotifyStatusResponse"},"StartRecordingRequest":{"properties":{"title":{"type":"string","title":"Title","default":"Meeting Recording"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"},"room_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Room Id"},"instant_call_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Instant Call Id"}},"type":"object","title":"StartRecordingRequest"},"StatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["status"],"title":"StatusResponse","description":"Status response."},"SteamConnectResponse":{"properties":{"auth_url":{"type":"string","title":"Auth Url"}},"type":"object","required":["auth_url"],"title":"SteamConnectResponse"},"SteamNowPlayingResponse":{"properties":{"is_playing":{"type":"boolean","title":"Is Playing"},"game_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Id"},"game_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Name"},"game_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Image Url"}},"type":"object","required":["is_playing"],"title":"SteamNowPlayingResponse"},"SteamStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected"},"is_visible":{"type":"boolean","title":"Is Visible","default":false},"steam_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Steam Id"},"persona_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","required":["connected"],"title":"SteamStatusResponse"},"StreamResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"room_id":{"type":"string","format":"uuid","title":"Room Id"},"streamer_id":{"type":"string","format":"uuid","title":"Streamer Id"},"title":{"type":"string","title":"Title"},"is_public":{"type":"boolean","title":"Is Public"},"status":{"type":"string","title":"Status"},"rtmp_url":{"type":"string","title":"Rtmp Url"},"stream_key":{"type":"string","title":"Stream Key"},"livekit_room_name":{"type":"string","title":"Livekit Room Name"},"recording_enabled":{"type":"boolean","title":"Recording Enabled","default":false},"recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Url"},"recording_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recording Duration"},"recording_qualities":{"additionalProperties":{"type":"string"},"type":"object","title":"Recording Qualities","default":{}},"viewer_count":{"type":"integer","title":"Viewer Count"},"peak_viewer_count":{"type":"integer","title":"Peak Viewer Count"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"ended_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ended At"},"created_at":{"type":"string","title":"Created At"},"streamer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Name"},"streamer_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Avatar"},"space_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Name"},"space_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Icon Url"}},"type":"object","required":["id","space_id","room_id","streamer_id","title","is_public","status","rtmp_url","stream_key","livekit_room_name","viewer_count","peak_viewer_count","created_at"],"title":"StreamResponse","description":"Stream info response."},"StreamViewerTokenResponse":{"properties":{"token":{"type":"string","title":"Token"},"url":{"type":"string","title":"Url"}},"type":"object","required":["token","url"],"title":"StreamViewerTokenResponse","description":"LiveKit token for stream viewers."},"StreamingOnboardingResponse":{"properties":{"has_access":{"type":"boolean","title":"Has Access"},"has_seen":{"type":"boolean","title":"Has Seen"}},"type":"object","required":["has_access","has_seen"],"title":"StreamingOnboardingResponse"},"SyncRequest":{"properties":{"folders":{"items":{"$ref":"#/components/schemas/FolderCreate"},"type":"array","title":"Folders"},"pins":{"items":{"type":"string"},"type":"array","title":"Pins"}},"type":"object","required":["folders","pins"],"title":"SyncRequest"},"TVRecordingResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"title":{"type":"string","title":"Title"},"recording_url":{"type":"string","title":"Recording Url"},"recording_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recording Duration"},"recording_qualities":{"additionalProperties":{"type":"string"},"type":"object","title":"Recording Qualities","default":{}},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"ended_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ended At"},"streamer_id":{"type":"string","format":"uuid","title":"Streamer Id"},"streamer_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Username"},"streamer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Name"},"streamer_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Avatar"},"streamer_default_avatar_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Streamer Default Avatar Index"},"space_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Name"},"space_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Icon Url"}},"type":"object","required":["id","space_id","title","recording_url","streamer_id"],"title":"TVRecordingResponse","description":"Recording info for TV site."},"TVScheduleResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"room_id":{"type":"string","format":"uuid","title":"Room Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"scheduled_at":{"type":"string","title":"Scheduled At"},"is_public":{"type":"boolean","title":"Is Public"},"status":{"type":"string","title":"Status"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"creator_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Username"},"creator_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Name"},"creator_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Avatar"},"space_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Name"}},"type":"object","required":["id","room_id","space_id","title","description","scheduled_at","is_public","status","creator_id"],"title":"TVScheduleResponse","description":"Public schedule info for TV site."},"TVSpaceResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"is_public":{"type":"boolean","title":"Is Public","default":true},"member_count":{"type":"integer","title":"Member Count","default":0},"invite_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invite Code"}},"type":"object","required":["id","name"],"title":"TVSpaceResponse","description":"Public space info for TV site."},"TVStreamResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"title":{"type":"string","title":"Title"},"status":{"type":"string","title":"Status"},"viewer_count":{"type":"integer","title":"Viewer Count"},"livekit_room_name":{"type":"string","title":"Livekit Room Name"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"streamer_id":{"type":"string","format":"uuid","title":"Streamer Id"},"streamer_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Username"},"streamer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Name"},"streamer_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streamer Avatar"},"streamer_default_avatar_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Streamer Default Avatar Index"},"space_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Name"},"space_icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Space Icon Url"}},"type":"object","required":["id","space_id","title","status","viewer_count","livekit_room_name","streamer_id"],"title":"TVStreamResponse","description":"Public stream info for TV site."},"TVStreamerResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"username":{"type":"string","title":"Username"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"is_live":{"type":"boolean","title":"Is Live","default":false},"current_stream_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Current Stream Id"},"follower_count":{"type":"integer","title":"Follower Count","default":0}},"type":"object","required":["id","username"],"title":"TVStreamerResponse","description":"Public streamer profile info."},"TVViewerTokenResponse":{"properties":{"token":{"type":"string","title":"Token"},"livekit_url":{"type":"string","title":"Livekit Url"},"identity":{"type":"string","title":"Identity"}},"type":"object","required":["token","livekit_url","identity"],"title":"TVViewerTokenResponse","description":"LiveKit token for anonymous/authenticated viewers."},"Toggle2FARequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"password":{"type":"string","title":"Password"}},"type":"object","required":["enabled","password"],"title":"Toggle2FARequest"},"Toggle2FAResponse":{"properties":{"two_factor_enabled":{"type":"boolean","title":"Two Factor Enabled"},"message":{"type":"string","title":"Message"}},"type":"object","required":["two_factor_enabled","message"],"title":"Toggle2FAResponse"},"ToggleFavoriteResponse":{"properties":{"is_favorited":{"type":"boolean","title":"Is Favorited"}},"type":"object","required":["is_favorited"],"title":"ToggleFavoriteResponse"},"TokenRequest":{"properties":{"room_name":{"type":"string","title":"Room Name"},"participant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Participant Name"}},"type":"object","required":["room_name"],"title":"TokenRequest"},"TranscribeBase64Request":{"properties":{"audio_base64":{"type":"string","title":"Audio Base64"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["audio_base64"],"title":"TranscribeBase64Request"},"TranscriptionResponse":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"TranscriptionResponse"},"TwoFactorLoginRequest":{"properties":{"login_token":{"type":"string","title":"Login Token"},"code":{"type":"string","title":"Code"}},"type":"object","required":["login_token","code"],"title":"TwoFactorLoginRequest"},"TypingResponse":{"properties":{"space_id":{"type":"string","format":"uuid","title":"Space Id"},"channel_id":{"type":"string","format":"uuid","title":"Channel Id"},"typing":{"items":{"type":"string"},"type":"array","title":"Typing"}},"type":"object","required":["space_id","channel_id","typing"],"title":"TypingResponse"},"UnreadCountResponse":{"properties":{"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["unread_count"],"title":"UnreadCountResponse"},"UnreadCountsResponse":{"properties":{"space_id":{"type":"string","format":"uuid","title":"Space Id"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"}},"type":"object","required":["space_id","counts"],"title":"UnreadCountsResponse","description":"Response with unread counts per channel."},"UpdateAfkSettingsRequest":{"properties":{"afk_channel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Afk Channel Id"},"afk_timeout_minutes":{"type":"integer","maximum":60.0,"minimum":1.0,"title":"Afk Timeout Minutes","default":5}},"type":"object","title":"UpdateAfkSettingsRequest"},"UpdateBotMembershipRequest":{"properties":{"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"channel_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Channel Ids"}},"type":"object","title":"UpdateBotMembershipRequest"},"UpdateBotRequest":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":240},{"type":"null"}],"title":"Description"},"website":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Website"},"visibility":{"anyOf":[{"$ref":"#/components/schemas/BotVisibility"},{"type":"null"}]}},"type":"object","title":"UpdateBotRequest"},"UpdateCategoryRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"UpdateCategoryRequest"},"UpdateEventRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"recurrence":{"anyOf":[{"$ref":"#/components/schemas/EventRecurrence"},{"type":"null"}]},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"}},"type":"object","title":"UpdateEventRequest"},"UpdateJoinSettingsRequest":{"properties":{"join_channel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Join Channel Id"},"join_message_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Join Message Template"},"auto_display_role_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Display Role Id"}},"type":"object","title":"UpdateJoinSettingsRequest","description":"Request to update join welcome settings."},"UpdateMemberDisplayRoleRequest":{"properties":{"display_role_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Role Id"}},"type":"object","title":"UpdateMemberDisplayRoleRequest"},"UpdateMemberNicknameRequest":{"properties":{"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"}},"type":"object","title":"UpdateMemberNicknameRequest"},"UpdateMemberRoleRequest":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"UpdateMemberRoleRequest"},"UpdatePreferencesRequest":{"properties":{"volume":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Volume"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"UpdatePreferencesRequest"},"UpdateRoleRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"}},"type":"object","title":"UpdateRoleRequest"},"UpdateRoomAccessRequest":{"properties":{"access_mode":{"type":"string","title":"Access Mode","default":"open"},"entries":{"items":{"$ref":"#/components/schemas/RoomAccessEntryRequest"},"type":"array","title":"Entries","default":[]}},"type":"object","title":"UpdateRoomAccessRequest"},"UpdateRoomRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_voice":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Voice"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"}},"type":"object","title":"UpdateRoomRequest"},"UpdateScheduleRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"}},"type":"object","title":"UpdateScheduleRequest","description":"Request to update a scheduled stream."},"UpdateSoundRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"position":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Position"}},"type":"object","title":"UpdateSoundRequest"},"UpdateSpaceRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"cover_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Url"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"}},"type":"object","title":"UpdateSpaceRequest"},"UpdateWelcomeScreenRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"channels":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Channels","default":[]}},"type":"object","title":"UpdateWelcomeScreenRequest"},"UploadResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"url":{"type":"string","title":"Url"},"path":{"type":"string","title":"Path"},"type":{"type":"string","title":"Type"},"filename":{"type":"string","title":"Filename"},"size":{"type":"integer","title":"Size"},"mime_type":{"type":"string","title":"Mime Type"},"duration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"}},"type":"object","required":["id","url","path","type","filename","size","mime_type"],"title":"UploadResponse","description":"Upload response matching AttachmentDTO format for frontend compatibility."},"UserDeviceResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"device_name":{"type":"string","title":"Device Name"},"device_fingerprint":{"type":"string","title":"Device Fingerprint"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"},"is_trusted":{"type":"boolean","title":"Is Trusted"}},"type":"object","required":["id","device_name","device_fingerprint","last_seen_at","is_trusted"],"title":"UserDeviceResponse"},"UserPresenceResponse":{"properties":{"status":{"type":"string","title":"Status"},"is_online":{"type":"boolean","title":"Is Online"},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"}},"type":"object","required":["status","is_online"],"title":"UserPresenceResponse"},"UserSettingsSchema":{"properties":{"theme":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Theme"},"theme_variant":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Theme Variant"},"pinned_spaces":{"anyOf":[{"items":{"type":"string","maxLength":36,"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":"array","maxItems":50},{"type":"null"}],"title":"Pinned Spaces"},"app_settings":{"anyOf":[{"$ref":"#/components/schemas/AppSettingsSchema"},{"type":"null"}]},"notifications":{"anyOf":[{"$ref":"#/components/schemas/NotificationSettingsSchema"},{"type":"null"}]},"privacy":{"anyOf":[{"$ref":"#/components/schemas/PrivacySettingsSchema"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"UserSettingsSchema"},"UserUpdateRequest":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"avatar_hat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Hat"},"default_avatar_index":{"anyOf":[{"type":"integer","maximum":7.0,"minimum":0.0},{"type":"null"}],"title":"Default Avatar Index"}},"type":"object","title":"UserUpdateRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyEmailRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"VerifyEmailRequest"},"VisibilityRequest":{"properties":{"is_visible":{"type":"boolean","title":"Is Visible"}},"type":"object","required":["is_visible"],"title":"VisibilityRequest"},"VoiceParticipantSchema":{"properties":{"client_id":{"type":"string","title":"Client Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"default_avatar_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Avatar Index"},"avatar_hat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Hat"},"in_voice":{"type":"boolean","title":"In Voice"}},"type":"object","required":["client_id","user_id","display_name","avatar_url","in_voice"],"title":"VoiceParticipantSchema"},"VoiceParticipantsResponse":{"properties":{"space_id":{"type":"string","format":"uuid","title":"Space Id"},"channel_id":{"type":"string","format":"uuid","title":"Channel Id"},"participants":{"items":{"$ref":"#/components/schemas/VoiceParticipantSchema"},"type":"array","title":"Participants"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["space_id","channel_id","participants","count"],"title":"VoiceParticipantsResponse"},"VoiceSettingsCreate":{"properties":{"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"},"background_type":{"type":"string","title":"Background Type","default":"default"},"background_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Value"},"decorations":{"items":{"$ref":"#/components/schemas/DecorationItemSchema"},"type":"array","title":"Decorations","default":[]},"control_bar":{"$ref":"#/components/schemas/ControlBarConfigSchema"}},"type":"object","title":"VoiceSettingsCreate"},"VoiceSettingsResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"space_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Space Id"},"background_type":{"type":"string","title":"Background Type"},"background_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Background Value"},"decorations":{"items":{"$ref":"#/components/schemas/DecorationItemSchema"},"type":"array","title":"Decorations"},"control_bar":{"$ref":"#/components/schemas/ControlBarConfigSchema"}},"type":"object","required":["id","user_id","space_id","background_type","background_value","decorations","control_bar"],"title":"VoiceSettingsResponse"},"VoteRequest":{"properties":{"option_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Option Ids"}},"type":"object","required":["option_ids"],"title":"VoteRequest"},"WaitingParticipantResponse":{"properties":{"participant_id":{"type":"string","title":"Participant Id"},"name":{"type":"string","title":"Name"},"requested_at":{"type":"string","title":"Requested At"}},"type":"object","required":["participant_id","name","requested_at"],"title":"WaitingParticipantResponse"},"WebhookResponse":{"properties":{"id":{"type":"string","title":"Id"},"url":{"type":"string","title":"Url"},"secret_prefix":{"type":"string","title":"Secret Prefix"},"events":{"items":{"type":"string"},"type":"array","title":"Events"},"space_filter":{"items":{"type":"string"},"type":"array","title":"Space Filter"},"enabled":{"type":"boolean","title":"Enabled"},"failure_count":{"type":"integer","title":"Failure Count"},"suspended_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suspended Until"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","url","secret_prefix","events","space_filter","enabled","failure_count","suspended_until","created_at"],"title":"WebhookResponse"},"WelcomeScreenResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"channels":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Channels","default":[]},"has_seen_welcome":{"type":"boolean","title":"Has Seen Welcome","default":false}},"type":"object","required":["enabled"],"title":"WelcomeScreenResponse"},"app__presentation__api__auth_router__TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/app__presentation__api__auth_router__UserResponse"},"two_factor_required":{"type":"boolean","title":"Two Factor Required","default":false},"login_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Token"}},"type":"object","required":["access_token","refresh_token","user"],"title":"TokenResponse"},"app__presentation__api__auth_router__UserResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"username":{"type":"string","title":"Username"},"email":{"type":"string","title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"avatar_hat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Hat"},"default_avatar_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Avatar Index"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"presence_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Presence Status"},"is_online":{"type":"boolean","title":"Is Online","default":false},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"settings_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Settings Json"}},"type":"object","required":["id","username","email","display_name"],"title":"UserResponse"},"app__presentation__api__chat_router__MessageResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"space_id":{"type":"string","format":"uuid","title":"Space Id"},"channel_id":{"type":"string","format":"uuid","title":"Channel Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"default_avatar_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Avatar Index"},"message_type":{"type":"string","title":"Message Type","default":"user"},"is_bot":{"type":"boolean","title":"Is Bot","default":false},"content":{"type":"string","title":"Content"},"reply_to":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reply To"},"reply_to_message":{"anyOf":[{"$ref":"#/components/schemas/ReplyToMessageInfo"},{"type":"null"}]},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentDTO"},"type":"array","title":"Attachments","default":[]},"reactions":{"additionalProperties":{"items":{"type":"string","format":"uuid"},"type":"array"},"type":"object","title":"Reactions","default":{}},"edited":{"type":"boolean","title":"Edited","default":false},"deleted":{"type":"boolean","title":"Deleted","default":false},"pinned":{"type":"boolean","title":"Pinned","default":false},"pinned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pinned At"},"pinned_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Pinned By"},"thread_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Thread Id"},"thread_message_count":{"type":"integer","title":"Thread Message Count","default":0},"is_forum_post":{"type":"boolean","title":"Is Forum Post","default":false},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"poll":{"anyOf":[{"$ref":"#/components/schemas/PollDTO"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","space_id","channel_id","user_id","display_name","content","created_at","updated_at"],"title":"MessageResponse"},"app__presentation__api__group_chat_router__MessageResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"MessageResponse"},"app__presentation__api__note_router__NoteResponse":{"properties":{"id":{"type":"string","title":"Id"},"summary":{"type":"string","title":"Summary"},"participantCount":{"type":"integer","title":"Participantcount"},"segmentCount":{"type":"integer","title":"Segmentcount"},"createdAt":{"type":"string","title":"Createdat"},"createdBy":{"$ref":"#/components/schemas/NoteCreatorData"},"channelId":{"type":"string","title":"Channelid"},"channelName":{"type":"string","title":"Channelname"},"spaceName":{"type":"string","title":"Spacename"},"rawTranscription":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rawtranscription"}},"type":"object","required":["id","summary","participantCount","segmentCount","createdAt","createdBy","channelId","channelName","spaceName"],"title":"NoteResponse"},"app__presentation__api__schemas__common__MessageResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"MessageResponse","description":"Simple message response."},"app__presentation__api__space_router__NoteResponse":{"properties":{"id":{"type":"string","title":"Id"},"channel_id":{"type":"string","title":"Channel Id"},"channel_name":{"type":"string","title":"Channel Name"},"space_name":{"type":"string","title":"Space Name"},"summary":{"type":"string","title":"Summary"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","channel_id","channel_name","space_name","summary","created_at"],"title":"NoteResponse"},"app__presentation__api__user_router__UserResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"username":{"type":"string","title":"Username"},"email":{"type":"string","title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"avatar_hat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Hat"},"default_avatar_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Avatar Index"},"presence_status":{"anyOf":[{"$ref":"#/components/schemas/PresenceStatus"},{"type":"null"}]},"is_online":{"type":"boolean","title":"Is Online","default":false},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"},"settings_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Settings Json"}},"type":"object","required":["id","username","email","display_name"],"title":"UserResponse"},"app__presentation__api__video_router__TokenResponse":{"properties":{"token":{"type":"string","title":"Token"},"url":{"type":"string","title":"Url"}},"type":"object","required":["token","url"],"title":"TokenResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}