{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Check Health Get"}}}}}}},"/nginx-health":{"get":{"summary":"Nginx Health Check","operationId":"nginx_health_check_nginx_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Nginx Health Check Nginx Health Get"}}}}}}},"/api/v1/newsletter/send":{"post":{"tags":["newsletter"],"summary":"Send To Channel","description":"Endpoint для отправки рассылки новостей через API менеджер.\n\nОжидает JSON с полями `message` и  `chat_ids`.","operationId":"send_to_channel_api_v1_newsletter_send_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_send_to_channel_api_v1_newsletter_send_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/payments/balance":{"get":{"tags":["payments"],"summary":"Payments.Balance","description":"Return current user's balance. Creates a zero balance if it doesn't exist.","operationId":"payments_balance_api_v1_payments_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/payments/transactions":{"get":{"tags":["payments"],"summary":"Payments.Transactions","description":"Paginated list of current user's transactions.","operationId":"payments_transactions_api_v1_payments_transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/topup":{"post":{"tags":["payments"],"summary":"Payments.Topup Request","description":"Submit a topup request. Admin will approve manually.","operationId":"payments_topup_request_api_v1_payments_topup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequestCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/payments/withdraw":{"post":{"tags":["payments"],"summary":"Payments.Withdraw Request","description":"Submit a withdrawal request. Admin will approve and process manually.","operationId":"payments_withdraw_request_api_v1_payments_withdraw_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawRequestCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/payments/transfer":{"post":{"tags":["payments"],"summary":"Payments.Transfer","description":"Transfer credits to another user (e.g. student paying mentor directly).","operationId":"payments_transfer_api_v1_payments_transfer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalTransferRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/payments/topics/{topic_id}/vote":{"post":{"tags":["payments"],"summary":"Payments.Topic Vote","description":"Upvote a forum topic. Each user can vote once per topic.\n\nIf the topic reaches the vote threshold, the author is automatically rewarded.","operationId":"payments_topic_vote_api_v1_payments_topics__topic_id__vote_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicVoteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/":{"get":{"tags":["web"],"summary":"Index","operationId":"index__lang___get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/how-it-works":{"get":{"tags":["web"],"summary":"How It Works","description":"Localized quick-start guide for students and mentors.","operationId":"how_it_works__lang__how_it_works_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/releases":{"get":{"tags":["web"],"summary":"Releases","description":"Changelog / release history page.","operationId":"releases__lang__releases_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/error/404":{"get":{"tags":["web"],"summary":"Error 404","description":"404 - Page Not Found error page","operationId":"error_404__lang__error_404_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/error/403":{"get":{"tags":["web"],"summary":"Error 403","description":"403 - Forbidden error page","operationId":"error_403__lang__error_403_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/error/500":{"get":{"tags":["web"],"summary":"Error 500","description":"500 - Internal Server Error page","operationId":"error_500__lang__error_500_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/error/{code}":{"get":{"tags":["web"],"summary":"Error Generic","description":"Generic error page for other HTTP status codes","operationId":"error_generic__lang__error__code__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"code","in":"path","required":true,"schema":{"type":"integer","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/privacy-policy":{"get":{"tags":["web"],"summary":"Privacy Policy","description":"Privacy Policy page","operationId":"privacy_policy__lang__privacy_policy_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/cookie-policy":{"get":{"tags":["web"],"summary":"Cookie Policy","description":"Cookie Policy page","operationId":"cookie_policy__lang__cookie_policy_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/schedule":{"get":{"tags":["web"],"summary":"Schedule","description":"Public Schedule page - shows stats and 3-month calendar with bookings","operationId":"schedule__lang__schedule_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/api/schedule/{year}/{month}/{day}":{"get":{"tags":["web"],"summary":"Get Day Schedule","description":"API endpoint to get schedules for a specific day","operationId":"get_day_schedule__lang__api_schedule__year___month___day__get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"year","in":"path","required":true,"schema":{"type":"integer","title":"Year"}},{"name":"month","in":"path","required":true,"schema":{"type":"integer","title":"Month"}},{"name":"day","in":"path","required":true,"schema":{"type":"integer","title":"Day"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/login":{"get":{"tags":["user"],"summary":"User Login","operationId":"user_login__lang__users_login_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["user"],"summary":"User Login Post","description":"Handle login form submission.\n\nAuthenticates user with username and password, creates session on successful login.\nRedirects to provided URL, or profile if no valid redirect target found.","operationId":"user_login_post__lang__users_login_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"redirect_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect After"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/social-login/{provider}":{"post":{"tags":["user"],"summary":"User Social Login Post","operationId":"user_social_login_post__lang__users_social_login__provider__post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/register":{"post":{"tags":["user"],"summary":"User Register Api","description":"Register a new user via JSON API.","operationId":"user_register_api__lang__users_api_register_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/email/resend-verification":{"post":{"tags":["user"],"summary":"User Resend Verification Email","description":"Resend email verification link for authenticated user from profile page.","operationId":"user_resend_verification_email__lang__users_email_resend_verification_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/profile/register":{"post":{"tags":["user"],"summary":"User Profile Register Api","description":"Create or update user profile details.","operationId":"user_profile_register_api__lang__users_api_profile_register_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/profile/messenger":{"post":{"tags":["user"],"summary":"User Messenger Add","description":"Add or update a messenger contact for the current user.","operationId":"user_messenger_add__lang__users_api_profile_messenger_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["user"],"summary":"User Messenger Get","description":"Return current messenger contacts for the authenticated user.","operationId":"user_messenger_get__lang__users_api_profile_messenger_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/profile/messenger/{messenger_name}":{"delete":{"tags":["user"],"summary":"User Messenger Delete","operationId":"user_messenger_delete__lang__users_api_profile_messenger__messenger_name__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"messenger_name","in":"path","required":true,"schema":{"type":"string","title":"Messenger Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/booking/{booking_id}/status":{"post":{"tags":["user"],"summary":"User Booking Status Update","description":"Update booking status for mentor-managed sessions.","operationId":"user_booking_status_update__lang__users_api_booking__booking_id__status_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"booking_id","in":"path","required":true,"schema":{"type":"integer","title":"Booking Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/logout":{"get":{"tags":["user"],"summary":"User Logout","operationId":"user_logout__lang__users_logout_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/register":{"get":{"tags":["user"],"summary":"User Register","operationId":"user_register__lang__users_register_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/terms":{"get":{"tags":["user"],"summary":"User Terms","operationId":"user_terms__lang__users_terms_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/password/change":{"get":{"tags":["user"],"summary":"User Change Password","operationId":"user_change_password__lang__users_password_change_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["user"],"summary":"User Change Password Post","operationId":"user_change_password_post__lang__users_password_change_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/password/forgot":{"get":{"tags":["user"],"summary":"User Forgot Password","operationId":"user_forgot_password__lang__users_password_forgot_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["user"],"summary":"User Forgot Password Post","description":"Request password reset email.\n\nAlways returns generic success response to avoid account enumeration.","operationId":"user_forgot_password_post__lang__users_password_forgot_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/password/reset":{"get":{"tags":["user"],"summary":"User Reset Password","operationId":"user_reset_password__lang__users_password_reset_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["user"],"summary":"User Reset Password Post","operationId":"user_reset_password_post__lang__users_password_reset_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/profile":{"get":{"tags":["user"],"summary":"User Profile","description":"Display user profile with subjects and schedule","operationId":"user_profile__lang__users_profile_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/profile/guides/{guide_slug}":{"get":{"tags":["user"],"summary":"User Profile Guide","description":"Display profile module instruction pages loaded from root markdown files.","operationId":"user_profile_guide__lang__users_profile_guides__guide_slug__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"guide_slug","in":"path","required":true,"schema":{"type":"string","title":"Guide Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/subject/create":{"get":{"tags":["user"],"summary":"User Create Subject","description":"Display form to create a new subject","operationId":"user_create_subject__lang__users_subject_create_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["user"],"summary":"User Create Subject Post","description":"Handle subject creation","operationId":"user_create_subject_post__lang__users_subject_create_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Subject Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/subject/edit/{subject_id}":{"get":{"tags":["user"],"summary":"User Edit Subject","description":"Display form to edit an existing subject","operationId":"user_edit_subject__lang__users_subject_edit__subject_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"subject_id","in":"path","required":true,"schema":{"type":"integer","title":"Subject Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/subject/edit":{"post":{"tags":["user"],"summary":"User Edit Subject Post","description":"Handle subject update","operationId":"user_edit_subject_post__lang__users_subject_edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Subject Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/mentor/add-mentee":{"post":{"tags":["user"],"summary":"Mentor Add Mentee","description":"Ментор добавляет ученика в свой список.\n\nBody:\n    mentee_id: str - email или username ученика\n    subscribe_to_quizzes: bool (default True)\n    subscribe_to_courses: bool (default True)\n    subscribe_to_subjects: bool (default False)\n    notes: str (optional) - заметки ментора","operationId":"mentor_add_mentee__lang__users_mentor_add_mentee_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Mentee Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages":{"get":{"tags":["user"],"summary":"Get My Messages","description":"Get all non-deleted messages for current user.","operationId":"get_my_messages__lang__users_messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages/threads":{"get":{"tags":["user"],"summary":"Get Message Threads","description":"Get conversation threads for current user.","operationId":"get_message_threads__lang__users_messages_threads_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages/thread/{other_user_id}":{"get":{"tags":["user"],"summary":"Get Message Thread","description":"Get paginated conversation with another user and mark unread incoming as read.","operationId":"get_message_thread__lang__users_messages_thread__other_user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"other_user_id","in":"path","required":true,"schema":{"type":"integer","title":"Other User Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages/all":{"get":{"tags":["user"],"summary":"Get All Messages","description":"Get all messages (admin only).","operationId":"get_all_messages__lang__users_messages_all_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages/user/{target_user_id}":{"get":{"tags":["user"],"summary":"Get User Messages","description":"Get messages by user id (self or admin).","operationId":"get_user_messages__lang__users_messages_user__target_user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"target_user_id","in":"path","required":true,"schema":{"type":"integer","title":"Target User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages/{message_id}":{"get":{"tags":["user"],"summary":"Get Message By Id","description":"Get one message by id for current user.","operationId":"get_message_by_id__lang__users_messages__message_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["user"],"summary":"Delete Private Message","description":"Soft-delete message for current participant.","operationId":"delete_private_message__lang__users_messages__message_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages/send":{"post":{"tags":["user"],"summary":"Send Private Message","description":"Send private message from current user.","operationId":"send_private_message__lang__users_messages_send_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendPrivateMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/messages/{message_id}/read":{"put":{"tags":["user"],"summary":"Read Private Message","description":"Mark message as read for receiver.","operationId":"read_private_message__lang__users_messages__message_id__read_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/mentee/add-mentor":{"post":{"tags":["user"],"summary":"Mentee Add Mentor","description":"Ученик подписывается на ментора.\n\nBody:\n    mentor_id: str - email или username ментора\n    subscribe_to_quizzes: bool (default True)\n    subscribe_to_courses: bool (default True)\n    subscribe_to_subjects: bool (default False)\n    notes: str (optional) - заметки ученика","operationId":"mentee_add_mentor__lang__users_mentee_add_mentor_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Mentor Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/mentor/mentees":{"get":{"tags":["user"],"summary":"Get Mentor Mentees","description":"Получить список учеников ментора с их статистикой.\n\nQuery params:\n    status_filter: str (optional) - фильтр по статусу (pending/active/paused/completed)","operationId":"get_mentor_mentees__lang__users_mentor_mentees_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/mentee/mentors":{"get":{"tags":["user"],"summary":"Get Mentee Mentors","description":"Получить список менторов ученика.\n\nQuery params:\n    status_filter: str (optional) - фильтр по статусу","operationId":"get_mentee_mentors__lang__users_mentee_mentors_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/relationship/{relationship_id}/stats":{"get":{"tags":["user"],"summary":"Get Relationship Stats","description":"Получить статистику по занятиям для конкретной связи mentor-mentee.","operationId":"get_relationship_stats__lang__users_relationship__relationship_id__stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"relationship_id","in":"path","required":true,"schema":{"type":"integer","title":"Relationship Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/relationship/{relationship_id}/accept":{"put":{"tags":["user"],"summary":"Accept Relationship","description":"Принять запрос на связь mentor-mentee","operationId":"accept_relationship__lang__users_relationship__relationship_id__accept_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"relationship_id","in":"path","required":true,"schema":{"type":"integer","title":"Relationship Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/relationship/{relationship_id}/reject":{"put":{"tags":["user"],"summary":"Reject Relationship","description":"Отклонить запрос на связь mentor-mentee","operationId":"reject_relationship__lang__users_relationship__relationship_id__reject_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"relationship_id","in":"path","required":true,"schema":{"type":"integer","title":"Relationship Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/relationship/{relationship_id}":{"delete":{"tags":["user"],"summary":"Delete Relationship","description":"Удалить (завершить) связь mentor-mentee","operationId":"delete_relationship__lang__users_relationship__relationship_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"relationship_id","in":"path","required":true,"schema":{"type":"integer","title":"Relationship Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/verify-email":{"get":{"tags":["user"],"summary":"User Verify Email","description":"Verify user email with verification token.","operationId":"user_verify_email__lang__users_verify_email_get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/profile/litellm-balance":{"get":{"tags":["user"],"summary":"User Litellm Balance","description":"Return LiteLLM virtual key balance info for current user.","operationId":"user_litellm_balance__lang__users_api_profile_litellm_balance_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/profile/litellm-generate-key":{"post":{"tags":["user"],"summary":"User Litellm Generate Key","description":"Generate a LiteLLM virtual key for the current user.\n\nDebits the requested budget from user's platform balance,\ncreates a virtual key via LiteLLM /key/generate and saves it\nto the user profile.","operationId":"user_litellm_generate_key__lang__users_api_profile_litellm_generate_key_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/profile/litellm-models":{"get":{"tags":["user"],"summary":"User Litellm Models","description":"Return available LiteLLM models for the current user.","operationId":"user_litellm_models__lang__users_api_profile_litellm_models_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/balance/transfer":{"post":{"tags":["user"],"summary":"User Balance Transfer","description":"Transfer balance from current user to another user and create auto message.","operationId":"user_balance_transfer__lang__users_api_balance_transfer_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceTransferRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/ai-tutor-sessions/{session_id}":{"get":{"tags":["user"],"summary":"User Ai Tutor Session Detail","description":"Get detailed information about an AI Tutor session including messages and summary.","operationId":"user_ai_tutor_session_detail__lang__users_api_ai_tutor_sessions__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/api/ai-examiner-sessions/{session_id}":{"get":{"tags":["user"],"summary":"User Ai Examiner Session Detail","description":"Get detailed information about an AI Examiner session including messages and summary.","operationId":"user_ai_examiner_session_detail__lang__users_api_ai_examiner_sessions__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/messenger/telegram/activate":{"post":{"tags":["internal"],"summary":"Telegram Activate","operationId":"telegram_activate_internal_messenger_telegram_activate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/subjects/":{"get":{"tags":["subjects"],"summary":"Subjects List","description":"Display paginated list of all available subjects with filtering options.\nAccessible to all visitors without authentication.\nPagination: 20 subjects per page.","operationId":"subjects_list__lang__subjects__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/subjects/home":{"get":{"tags":["subjects"],"summary":"Subjects Home","description":"Landing page for Subjects service with mentor booking value proposition.","operationId":"subjects_home__lang__subjects_home_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/subjects/{subject}/book":{"get":{"tags":["subjects"],"summary":"Subject.Book Subject","description":"Display subject details with booking calendar.\nRequires authentication.","operationId":"subject_book_subject__lang__subjects__subject__book_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"subject","in":"path","required":true,"schema":{"type":"integer","title":"Subject"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["subjects"],"summary":"Subject.Book Subject Post","description":"Handle subject booking submission (PRG pattern).\n\nOn success: redirects to GET confirmation page.\nOn error: re-renders subject.html with error message.\n\nNote: Email confirmation is not implemented inline.\nTODO: Enqueue confirmation email via ARQ queue once ARQ workers\nare configured for the subjects module (see src/core/forum/queue/).","operationId":"subject_book_subject_post__lang__subjects__subject__book_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"subject","in":"path","required":true,"schema":{"type":"integer","title":"Subject"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_subject_book_subject_post__lang__subjects__subject__book_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/subjects/{subject}/booking/{schedule_id}/confirm":{"get":{"tags":["subjects"],"summary":"Subject.Booking Confirm","description":"Booking confirmation page (Step 4 of the wizard).\n\nDisplays subject, mentor, date, time, price, optional Zoom link,\nand calendar integration buttons (Google Calendar, Outlook, .ics download).","operationId":"subject_booking_confirm__lang__subjects__subject__booking__schedule_id__confirm_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"subject","in":"path","required":true,"schema":{"type":"integer","title":"Subject"}},{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/subjects/{subject}/booking/{schedule_id}/ics":{"get":{"tags":["subjects"],"summary":"Subject.Booking Ics","description":"Download .ics calendar file for a booking.\n\nReturns a text/calendar response with a single VEVENT.\nThe authenticated user must own the booking.","operationId":"subject_booking_ics__lang__subjects__subject__booking__schedule_id__ics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"subject","in":"path","required":true,"schema":{"type":"integer","title":"Subject"}},{"name":"schedule_id","in":"path","required":true,"schema":{"type":"integer","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Dashboard","description":"Главная страница админ-панели","operationId":"forum_admin_dashboard__lang__forum_admin__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/ai-settings":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Settings","operationId":"forum_admin_ai_settings__lang__forum_admin_ai_settings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Settings Save","operationId":"forum_admin_ai_settings_save__lang__forum_admin_ai_settings_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/users":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.User List","description":"Список пользователей","operationId":"forum_admin_user_list__lang__forum_admin_users_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/users/create":{"get":{"tags":["forum-admin-web"],"summary":"Admin Users Create Form","description":"Форма создания пользователя","operationId":"admin_users_create_form__lang__forum_admin_users_create_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["forum-admin-web"],"summary":"Admin Users Create","description":"Создание пользователя","operationId":"admin_users_create__lang__forum_admin_users_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/users/{user_id}/edit":{"get":{"tags":["forum-admin-web"],"summary":"Admin Users Edit Form","description":"Форма редактирования пользователя","operationId":"admin_users_edit_form__lang__forum_admin_users__user_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Admin Users Edit","description":"Редактирование пользователя","operationId":"admin_users_edit__lang__forum_admin_users__user_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/users/{user_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Admin Users Delete","description":"Удаление пользователя","operationId":"admin_users_delete__lang__forum_admin_users__user_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/topics":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Topic List","description":"Список тем","operationId":"forum_admin_topic_list__lang__forum_admin_topics_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/topics/create":{"get":{"tags":["forum-admin-web"],"summary":"Admin Topics Create Form","description":"Форма создания темы","operationId":"admin_topics_create_form__lang__forum_admin_topics_create_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["forum-admin-web"],"summary":"Admin Topics Create","description":"Создание темы","operationId":"admin_topics_create__lang__forum_admin_topics_create_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_admin_topics_create__lang__forum_admin_topics_create_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/topics/{topic_id}/edit":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Topic Detail","description":"Форма редактирования темы","operationId":"forum_admin_topic_detail__lang__forum_admin_topics__topic_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Admin Topics Edit","description":"Редактирование темы","operationId":"admin_topics_edit__lang__forum_admin_topics__topic_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_admin_topics_edit__lang__forum_admin_topics__topic_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/topics/{topic_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Admin Topics Delete","description":"Удаление темы","operationId":"admin_topics_delete__lang__forum_admin_topics__topic_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/topics/import":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Topic Import","description":"Форма импорта темы из JSON файла","operationId":"forum_admin_topic_import__lang__forum_admin_topics_import_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Topic Import Post","description":"Импорт темы из JSON файла.\n\nПринимает JSON файл, создаёт Topic и сообщения из массива messages.\nВсе сообщения получают статус active и не отправляются на модерацию.","operationId":"forum_admin_topic_import_post__lang__forum_admin_topics_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_topic_import_post__lang__forum_admin_topics_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/messages":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Message List","description":"Список сообщений","operationId":"forum_admin_message_list__lang__forum_admin_messages_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/messages/{message_id}/edit":{"get":{"tags":["forum-admin-web"],"summary":"Admin Messages Edit Form","description":"Форма редактирования сообщения","operationId":"admin_messages_edit_form__lang__forum_admin_messages__message_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Admin Messages Edit","description":"Редактирование сообщения","operationId":"admin_messages_edit__lang__forum_admin_messages__message_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_admin_messages_edit__lang__forum_admin_messages__message_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/messages/{message_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Admin Messages Delete","description":"Удаление сообщения","operationId":"admin_messages_delete__lang__forum_admin_messages__message_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/users/{user_id}/ai-messages/create":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Message Create","description":"Форма создания AI сообщения","operationId":"forum_admin_ai_message_create__lang__forum_admin_users__user_id__ai_messages_create_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/messages/ai/create":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Message Create Post","description":"Создание ИИ сообщения через SQS","operationId":"forum_admin_ai_message_create_post__lang__forum_admin_messages_ai_create_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_message_create_post__lang__forum_admin_messages_ai_create_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/tasks":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Task List","description":"Список задач (tasks)","operationId":"forum_admin_task_list__lang__forum_admin_tasks_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/tasks/{task_id}/edit":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Task Edit","description":"Форма редактирования задачи","operationId":"forum_admin_task_edit__lang__forum_admin_tasks__task_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Task Edit Post","description":"Обновление полей задачи","operationId":"forum_admin_task_edit_post__lang__forum_admin_tasks__task_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_task_edit_post__lang__forum_admin_tasks__task_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/tasks/{task_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Task Delete Post","description":"Обновление полей задачи","operationId":"forum_admin_task_delete_post__lang__forum_admin_tasks__task_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_task_delete_post__lang__forum_admin_tasks__task_id__delete_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/tasks/{task_id}/retry":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Task Retry","description":"Re-enqueue task to ARQ by numeric admin table ID.","operationId":"forum_admin_task_retry__lang__forum_admin_tasks__task_id__retry_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"integer","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/tasks/stats":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Task Stats","description":"API endpoint для получения статистики задач (для автообновления)","operationId":"forum_admin_task_stats__lang__forum_admin_tasks_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/analytics/posts-by-hour":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Analytics Posts","description":"Страница аналитики: посты по часам с разбивкой по дням.","operationId":"forum_admin_analytics_posts__lang__forum_admin_analytics_posts_by_hour_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/api/analytics/posts-by-hour":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Analytics Posts Api","description":"API: посты форума, сгруппированные по дням и часам.","operationId":"forum_admin_analytics_posts_api__lang__forum_admin_api_analytics_posts_by_hour_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/send-messages":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Send Messages Page","description":"Display form to send private messages to users.","operationId":"forum_admin_send_messages_page__lang__forum_admin_send_messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/send-messages/send":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Send Message Post","description":"Send private message to user.","operationId":"forum_admin_send_message_post__lang__forum_admin_send_messages_send_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_send_message_post__lang__forum_admin_send_messages_send_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/home":{"get":{"tags":["forum"],"summary":"Forum.Home","description":"Промо-страница возможностей форума.","operationId":"forum_home__lang__forum_home_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/":{"get":{"tags":["forum"],"summary":"Index","description":"Главная страница с лентой тем по дате последнего комментария","operationId":"index__lang__forum__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/topics/{topic_id}":{"get":{"tags":["forum"],"summary":"Forum.Topic Detail","description":"Страница темы с сообщениями","operationId":"forum_topic_detail__lang__forum_topics__topic_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/create-topic":{"get":{"tags":["forum"],"summary":"Create Topic","description":"Форма создания новой темы","operationId":"create_topic__lang__forum_create_topic_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["forum"],"summary":"Forum.Create Topic","description":"Создать новую тему","operationId":"forum_create_topic__lang__forum_create_topic_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/category":{"get":{"tags":["forum"],"summary":"Category","description":"Страница разделов со списком тем, сгруппированных по категориям","operationId":"category__lang__forum_category_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/message/create":{"post":{"tags":["forum"],"summary":"Create Message","description":"Создать новое сообщение","operationId":"create_message__lang__forum_message_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/shared_models__schemas__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/api/topics":{"get":{"tags":["forum-api"],"summary":"Get Topics","description":"Получить список тем","operationId":"get_topics__lang__forum_api_topics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopicList"},"title":"Response Get Topics  Lang  Forum Api Topics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/api/topics/{topic_id}":{"get":{"tags":["forum-api"],"summary":"Get Topic","description":"Получить тему по ID","operationId":"get_topic__lang__forum_api_topics__topic_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/api/topics/{topic_id}/full":{"get":{"tags":["forum-api"],"summary":"Get Topic With Messages","description":"Получить тему со всеми сообщениями","operationId":"get_topic_with_messages__lang__forum_api_topics__topic_id__full_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicWithMessages"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/api/topics/{topic_id}/messages":{"get":{"tags":["forum-api"],"summary":"Get Topic Messages","description":"Получить сообщения темы","operationId":"get_topic_messages__lang__forum_api_topics__topic_id__messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}},{"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/shared_models__schemas__MessageResponse"},"title":"Response Get Topic Messages  Lang  Forum Api Topics  Topic Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/api/messages":{"post":{"tags":["forum-api"],"summary":"Create Message","description":"Создать новое сообщение","operationId":"create_message__lang__forum_api_messages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/shared_models__schemas__MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/categories":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Category List","description":"Список категорий","operationId":"forum_admin_category_list__lang__forum_admin_categories_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/categories/create":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Category Create","description":"Форма создания категории","operationId":"forum_admin_category_create__lang__forum_admin_categories_create_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Category Create Post","description":"Создание категории","operationId":"forum_admin_category_create_post__lang__forum_admin_categories_create_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_category_create_post__lang__forum_admin_categories_create_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/categories/{category_id}/edit":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Category Edit","description":"Форма редактирования категории","operationId":"forum_admin_category_edit__lang__forum_admin_categories__category_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Category Edit Post","description":"Редактирование категории","operationId":"forum_admin_category_edit_post__lang__forum_admin_categories__category_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_category_edit_post__lang__forum_admin_categories__category_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/categories/{category_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Category Delete","description":"Удаление категории","operationId":"forum_admin_category_delete__lang__forum_admin_categories__category_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/subcategories":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Subcategory List","description":"Список подкатегорий","operationId":"forum_admin_subcategory_list__lang__forum_admin_subcategories_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/subcategories/create":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Subcategory Create","description":"Форма создания подкатегории","operationId":"forum_admin_subcategory_create__lang__forum_admin_subcategories_create_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Subcategory Create Post","description":"Создание подкатегории","operationId":"forum_admin_subcategory_create_post__lang__forum_admin_subcategories_create_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_subcategory_create_post__lang__forum_admin_subcategories_create_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/subcategories/{subcategory_id}/edit":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Subcategory Edit","description":"Форма редактирования подкатегории","operationId":"forum_admin_subcategory_edit__lang__forum_admin_subcategories__subcategory_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"subcategory_id","in":"path","required":true,"schema":{"type":"integer","title":"Subcategory Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Subcategory Edit Post","description":"Редактирование подкатегории","operationId":"forum_admin_subcategory_edit_post__lang__forum_admin_subcategories__subcategory_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"subcategory_id","in":"path","required":true,"schema":{"type":"integer","title":"Subcategory Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_subcategory_edit_post__lang__forum_admin_subcategories__subcategory_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/subcategories/{subcategory_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Subcategory Delete","description":"Удаление подкатегории","operationId":"forum_admin_subcategory_delete__lang__forum_admin_subcategories__subcategory_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"subcategory_id","in":"path","required":true,"schema":{"type":"integer","title":"Subcategory Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots List","operationId":"forum_admin_ai_bots_list__lang__forum_admin_ai_bots_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/ai-bots/topic-rules/save":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Topic Rules Save","operationId":"forum_admin_ai_bots_topic_rules_save__lang__forum_admin_ai_bots_topic_rules_save_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/ai-bots/{user_id}":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Detail","operationId":"forum_admin_ai_bots_detail__lang__forum_admin_ai_bots__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/topic-rules/save":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Topic Rules Save Single","operationId":"forum_admin_ai_bots_topic_rules_save_single__lang__forum_admin_ai_bots__user_id__topic_rules_save_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/profile":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Profile Update","operationId":"forum_admin_ai_bots_profile_update__lang__forum_admin_ai_bots__user_id__profile_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_bots_profile_update__lang__forum_admin_ai_bots__user_id__profile_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/import-profile":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Import Profile","operationId":"forum_admin_ai_bots_import_profile__lang__forum_admin_ai_bots__user_id__import_profile_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_bots_import_profile__lang__forum_admin_ai_bots__user_id__import_profile_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/import-examples":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Import Examples","operationId":"forum_admin_ai_bots_import_examples__lang__forum_admin_ai_bots__user_id__import_examples_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_bots_import_examples__lang__forum_admin_ai_bots__user_id__import_examples_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/db-source-users":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Db Source Users","operationId":"forum_admin_ai_bots_db_source_users__lang__forum_admin_ai_bots__user_id__db_source_users_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/db-source-messages":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Db Source Messages","operationId":"forum_admin_ai_bots_db_source_messages__lang__forum_admin_ai_bots__user_id__db_source_messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"source_user_id","in":"query","required":true,"schema":{"type":"integer","title":"Source User Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/import-examples-db":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Import Examples Db","operationId":"forum_admin_ai_bots_import_examples_db__lang__forum_admin_ai_bots__user_id__import_examples_db_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/examples/create":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Example Create","operationId":"forum_admin_ai_bots_example_create__lang__forum_admin_ai_bots__user_id__examples_create_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_bots_example_create__lang__forum_admin_ai_bots__user_id__examples_create_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/examples/{example_id}/edit":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Example Edit","operationId":"forum_admin_ai_bots_example_edit__lang__forum_admin_ai_bots__user_id__examples__example_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"example_id","in":"path","required":true,"schema":{"type":"integer","title":"Example Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_bots_example_edit__lang__forum_admin_ai_bots__user_id__examples__example_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/examples/{example_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Example Delete","operationId":"forum_admin_ai_bots_example_delete__lang__forum_admin_ai_bots__user_id__examples__example_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"example_id","in":"path","required":true,"schema":{"type":"integer","title":"Example Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/ai-bots/{user_id}/profile/generate":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Bots Profile Generate","operationId":"forum_admin_ai_bots_profile_generate__lang__forum_admin_ai_bots__user_id__profile_generate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_bots_profile_generate__lang__forum_admin_ai_bots__user_id__profile_generate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/profiles/list":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile List","operationId":"forum_admin_ai_profile_list__lang__forum_admin_profiles_list_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/forum/admin/profiles/{profile_id}/edit":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile Edit","operationId":"forum_admin_ai_profile_edit__lang__forum_admin_profiles__profile_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile Edit","operationId":"forum_admin_ai_profile_edit__lang__forum_admin_profiles__profile_id__edit_post","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_profile_edit__lang__forum_admin_profiles__profile_id__edit_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/profiles/{profile_id}/delete":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile Delete","operationId":"forum_admin_ai_profile_delete__lang__forum_admin_profiles__profile_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}}],"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/profiles/create":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile Create","operationId":"forum_admin_ai_profile_create__lang__forum_admin_profiles_create_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile Create","operationId":"forum_admin_ai_profile_create__lang__forum_admin_profiles_create_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_profile_create__lang__forum_admin_profiles_create_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/profiles/{profile_id}/messages":{"get":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile Messages","operationId":"forum_admin_ai_profile_messages__lang__forum_admin_profiles__profile_id__messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/forum/admin/profiles/{profile_id}/messages/create":{"post":{"tags":["forum-admin-web"],"summary":"Forum.Admin.Ai Profile Messages Create","operationId":"forum_admin_ai_profile_messages_create__lang__forum_admin_profiles__profile_id__messages_create_post","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Profile Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_forum_admin_ai_profile_messages_create__lang__forum_admin_profiles__profile_id__messages_create_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/claude/v2/web_search":{"get":{"tags":["claude-API-v2"],"summary":"Api.Claude.V2 Web Search","operationId":"api_claude_v2_web_search_api_claude_v2_web_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeTextResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["claude-API-v2"],"summary":"Api.Claude.V2 Web Search Post","operationId":"api_claude_v2_web_search_post_api_claude_v2_web_search_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeTextResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/claude/v2/code_interpreter":{"post":{"tags":["claude-API-v2"],"summary":"Api.Claude.V2 Code Interpreter","operationId":"api_claude_v2_code_interpreter_api_claude_v2_code_interpreter_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeInterpreterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeTextResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/claude/v2/chat_completion":{"post":{"tags":["claude-API-v2"],"summary":"Api.Claude.V2 Chat Completion","operationId":"api_claude_v2_chat_completion_api_claude_v2_chat_completion_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/claude/v2/chat_completion_with_responses":{"post":{"tags":["claude-API-v2"],"summary":"Api.Claude.V2 Chat Completion With Responses","operationId":"api_claude_v2_chat_completion_with_responses_api_claude_v2_chat_completion_with_responses_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionWithResponsesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeTextResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/claude/v2/image-generate":{"post":{"tags":["claude-API-v2"],"summary":"Api.Claude.V2 Image Generation","operationId":"api_claude_v2_image_generation_api_claude_v2_image_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeImageGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeImageGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/claude/v2/image-generate-with-responses":{"post":{"tags":["claude-API-v2"],"summary":"Api.Claude.V2 Image Generation With Responses","operationId":"api_claude_v2_image_generation_with_responses_api_claude_v2_image_generate_with_responses_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeImageGenerationWithResponsesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudeImageGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/quizzes":{"get":{"tags":["quizzes"],"summary":"Quizzes List","description":"Get list of all quizzes (public page, no auth required)","operationId":"quizzes_list__lang__quizzes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/create":{"get":{"tags":["quizzes"],"summary":"Create Quiz Page","description":"Quiz creation page (requires admin or mentor role)","operationId":"create_quiz_page__lang__quizzes_create_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["quizzes"],"summary":"Create New Quiz","description":"Create a new quiz (admin/mentor only)","operationId":"create_new_quiz__lang__quizzes_create_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuizCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/upload-image":{"post":{"tags":["quizzes"],"summary":"Upload Quiz Image","description":"Upload question image for quiz builder and return public media URL.","operationId":"upload_quiz_image__lang__quizzes_upload_image_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_quiz_image__lang__quizzes_upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/delete-image":{"post":{"tags":["quizzes"],"summary":"Delete Quiz Image","description":"Delete previously uploaded quiz image from MEDIA_PATH/quiz tree.","operationId":"delete_quiz_image__lang__quizzes_delete_image_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_delete_quiz_image__lang__quizzes_delete_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/ai-draft":{"post":{"tags":["quizzes"],"summary":"Generate Quiz Ai Draft","description":"Generate AI draft for quiz creation page (mentor/admin only).","operationId":"generate_quiz_ai_draft__lang__quizzes_ai_draft_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIQuizDraftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIQuizDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/statistics":{"get":{"tags":["quizzes"],"summary":"User Quiz Statistics","description":"Show quizzes the current user completed with attempts and results.","operationId":"user_quiz_statistics__lang__quizzes_statistics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/my-quizzes":{"get":{"tags":["quizzes"],"summary":"My Quiz List Page","description":"Page showing quizzes created by the current user (admin/mentor)","operationId":"my_quiz_list_page__lang__quizzes_my_quizzes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/{quiz_id}":{"get":{"tags":["quizzes"],"summary":"Take Quiz","description":"Открыть прохождение квиза либо отдать его данные в JSON.\n\nДоступ:\n  - авторизованный пользователь — как раньше (включая платные квизы);\n  - гость — только для опубликованных квизов с ``access_type=public``\n    и только пока не исчерпан суточный лимит прохождений (cookie).","operationId":"take_quiz__lang__quizzes__quiz_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["quizzes"],"summary":"Update Quiz","description":"Update an existing quiz (creator only)","operationId":"update_quiz__lang__quizzes__quiz_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuizCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["quizzes"],"summary":"Delete Quiz","description":"Delete a quiz (creator only)","operationId":"delete_quiz__lang__quizzes__quiz_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/{quiz_id}/submit":{"post":{"tags":["quizzes"],"summary":"Submit Quiz","description":"Принять ответы и вернуть результат прохождения.\n\nДва режима:\n  - авторизованный пользователь — результат сохраняется в БД,\n    отправляются уведомления (как раньше);\n  - гость — результат только считается и возвращается в JSON,\n    в БД ничего не пишется, а счётчик прохождений в cookie увеличивается.","operationId":"submit_quiz__lang__quizzes__quiz_id__submit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuizSubmission"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/{quiz_id}/result":{"get":{"tags":["quizzes"],"summary":"Quiz Result","description":"View quiz result (latest attempt)","operationId":"quiz_result__lang__quizzes__quiz_id__result_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/{quiz_id}/history":{"get":{"tags":["quizzes"],"summary":"Get Quiz History","description":"Get user's history for a specific quiz","operationId":"get_quiz_history__lang__quizzes__quiz_id__history_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/quizzes/{quiz_id}/edit":{"get":{"tags":["quizzes"],"summary":"Edit Quiz Page","description":"Quiz editing page (requires creator or admin)","operationId":"edit_quiz_page__lang__quizzes__quiz_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Home","description":"AI Tutor landing page. Requires active user.","operationId":"ai_tutor_home__lang__ai_tutor__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/llm-catalog":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Llm Catalog","description":"Return available LiteLLM chat models for current user (no embed models).","operationId":"ai_tutor_llm_catalog__lang__ai_tutor_llm_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Tutor Llm Catalog  Lang  Ai Tutor Llm Catalog Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-tutor/providers/ollama/models":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Ollama Models","description":"Return currently installed Ollama model names for the AI Tutor model selector.","operationId":"ai_tutor_ollama_models__lang__ai_tutor_providers_ollama_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Tutor Ollama Models  Lang  Ai Tutor Providers Ollama Models Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-tutor/rag/upload":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Upload Page","description":"Knowledge base upload page for user-scoped RAG.","operationId":"ai_tutor_rag_upload_page__lang__ai_tutor_rag_upload_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Upload Submit","description":"Handle knowledge base upload via form (manual text + csv/json file).","operationId":"ai_tutor_rag_upload_submit__lang__ai_tutor_rag_upload_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_tutor_rag_upload_submit__lang__ai_tutor_rag_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/rag/preview":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Upload Preview Api","description":"Dry-run preview API for future drag-and-drop/AJAX upload clients.","operationId":"ai_tutor_rag_upload_preview_api__lang__ai_tutor_rag_preview_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_tutor_rag_upload_preview_api__lang__ai_tutor_rag_preview_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGKnowledgePreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-tutor/rag/library":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Library Page","description":"List current user's uploaded knowledge records.","operationId":"ai_tutor_rag_library_page__lang__ai_tutor_rag_library_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"status_message","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Message"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/rag/knowledge-api":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Knowledge Api","description":"JSON API: list current user's RAG knowledge records for lesson question picker.","operationId":"ai_tutor_rag_knowledge_api__lang__ai_tutor_rag_knowledge_api_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/rag/library/{record_id}/edit":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Library Edit Page","description":"Edit one uploaded knowledge record.","operationId":"ai_tutor_rag_library_edit_page__lang__ai_tutor_rag_library__record_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Library Edit Submit","description":"Persist knowledge record edits and regenerate embedding.","operationId":"ai_tutor_rag_library_edit_submit__lang__ai_tutor_rag_library__record_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_tutor_rag_library_edit_submit__lang__ai_tutor_rag_library__record_id__edit_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/rag/library/{record_id}/delete":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Library Delete","description":"Delete one knowledge record for current user.","operationId":"ai_tutor_rag_library_delete__lang__ai_tutor_rag_library__record_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/rag/library/files/delete":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Library Delete File Group","description":"Delete all records linked to one uploaded source file.","operationId":"ai_tutor_rag_library_delete_file_group__lang__ai_tutor_rag_library_files_delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_tutor_rag_library_delete_file_group__lang__ai_tutor_rag_library_files_delete_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Topics","description":"AI Tutor topics list page.","operationId":"ai_tutor_topics__lang__ai_tutor_topics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"ai_teacher_profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Ai Teacher Profile Id"}},{"name":"booking_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Booking Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/create":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Create Topic","description":"Topic creation form page.","operationId":"ai_tutor_create_topic__lang__ai_tutor_topics_create_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Create Topic Post","description":"Create a new tutor topic (mentor/admin only).","operationId":"ai_tutor_create_topic_post__lang__ai_tutor_topics_create_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__CreateTopicRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/system-prompts":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.System Prompts","description":"Return available system prompt templates for topic creation.\n\nCurrently loaded from ``system_prompts.json`` next to this module.\nTo switch to database storage, replace the file read below with a DB query\nand return the same list-of-dicts schema:\n    [{\"id\", \"name\", \"description\", \"category\", \"content\"}, ...]","operationId":"ai_tutor_system_prompts__lang__ai_tutor_topics_system_prompts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/available-quizzes":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Available Quizzes","description":"Return quizzes created by the current user (for topic linking).","operationId":"ai_tutor_available_quizzes__lang__ai_tutor_topics_available_quizzes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/available-subjects":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Available Subjects","description":"Return subjects created by current mentor/admin for topic linkage.","operationId":"ai_tutor_available_subjects__lang__ai_tutor_topics_available_subjects_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/{topic_id}/edit":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Edit Topic","description":"Topic edit form page (author or admin only).","operationId":"ai_tutor_edit_topic__lang__ai_tutor_topics__topic_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Edit Topic Post","description":"Update a tutor topic (author or admin only).","operationId":"ai_tutor_edit_topic_post__lang__ai_tutor_topics__topic_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__CreateTopicRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/{topic_id}/delete":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Delete Topic","description":"Delete a tutor topic (author or admin only).","operationId":"ai_tutor_delete_topic__lang__ai_tutor_topics__topic_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/{topic_id}/chat":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Topic Chat","description":"Create a session for a topic and open live chat page. Supports text and voice modes.","operationId":"ai_tutor_topic_chat__lang__ai_tutor_topics__topic_id__chat_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"ai_teacher_profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Ai Teacher Profile Id"}},{"name":"booking_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Booking Id"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","default":"text","title":"Mode"}},{"name":"voice_stt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Stt"}},{"name":"voice_tts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Tts"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/topics/ai-draft":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Ai Topic Draft","description":"Generate an AI topic draft for mentors/admins using shared OpenAIManager.","operationId":"ai_tutor_ai_topic_draft__lang__ai_tutor_topics_ai_draft_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AITopicDraftRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AITopicDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-tutor/rag/knowledge":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Rag Ingest Knowledge","description":"Manually ingest user-topic knowledge chunks for AI Tutor RAG.","operationId":"ai_tutor_rag_ingest_knowledge__lang__ai_tutor_rag_knowledge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__RAGKnowledgeIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGKnowledgeIngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-tutor/topics/{topic_id}":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Topic Detail","description":"Get topic details including lesson plan.","operationId":"ai_tutor_topic_detail__lang__ai_tutor_topics__topic_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__TopicDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/sessions":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Create Session","description":"Create a new tutor session for the current user.","operationId":"ai_tutor_create_session__lang__ai_tutor_sessions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__CreateSessionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Sessions","description":"Get current user's session history.","operationId":"ai_tutor_sessions__lang__ai_tutor_sessions_get","security":[{"OAuth2PasswordBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__SessionHistoryResponse"}}}}}}},"/{lang}/ai-tutor/sessions/{session_id}/resume":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Resume Session","description":"Resume an existing unfinished session and render the chat page for it.","operationId":"ai_tutor_resume_session__lang__ai_tutor_sessions__session_id__resume_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/sessions/{session_id}/discard":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Discard Session","description":"Discard an existing session so user can create a new one.\n\nSets status to 'discarded' (terminal) — does NOT block new session creation,\nunlike 'abandoned' which is reserved for sessions the user wants to resume.","operationId":"ai_tutor_discard_session__lang__ai_tutor_sessions__session_id__discard_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/sessions/{session_id}/mark-in-progress":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Mark In Progress","description":"Mark a session as in_progress (idempotent).","operationId":"ai_tutor_mark_in_progress__lang__ai_tutor_sessions__session_id__mark_in_progress_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/sessions/{session_id}/interrupt":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Interrupt Session","description":"User-initiated interrupt: persist engine state and mark session abandoned so it can be resumed later.","operationId":"ai_tutor_interrupt_session__lang__ai_tutor_sessions__session_id__interrupt_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/sessions/active":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Active Session","description":"Check if user has an unfinished session for the given topic.","operationId":"ai_tutor_active_session__lang__ai_tutor_sessions_active_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"query","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/sessions/{session_id}":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Session Detail","description":"Get session details with message history.","operationId":"ai_tutor_session_detail__lang__ai_tutor_sessions__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__SessionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/progress":{"get":{"tags":["ai-tutor"],"summary":"Ai Tutor.Progress","description":"Get current user's learning progress.","operationId":"ai_tutor_progress__lang__ai_tutor_progress_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentProgressResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-tutor/sessions/{session_id}/voice/stt":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Voice Stt","description":"Upload audio file and get transcript via speech-to-text.","operationId":"ai_tutor_voice_stt__lang__ai_tutor_sessions__session_id__voice_stt_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_tutor_voice_stt__lang__ai_tutor_sessions__session_id__voice_stt_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/STTResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-tutor/sessions/{session_id}/voice/tts":{"post":{"tags":["ai-tutor"],"summary":"Ai Tutor.Voice Tts","description":"Convert text to speech and return MP3 audio stream.","operationId":"ai_tutor_voice_tts__lang__ai_tutor_sessions__session_id__voice_tts_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Home","description":"AI Examiner landing page. Requires active user.","operationId":"ai_examiner_home__lang__ai_examiner__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/llm-catalog":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Llm Catalog","description":"Return available LiteLLM chat models for current user (no embed models).","operationId":"ai_examiner_llm_catalog__lang__ai_examiner_llm_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ai Examiner Llm Catalog  Lang  Ai Examiner Llm Catalog Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-examiner/rag/upload":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Upload Page","description":"Knowledge base upload page for user-scoped RAG.","operationId":"ai_examiner_rag_upload_page__lang__ai_examiner_rag_upload_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Upload Submit","description":"Handle knowledge base upload via form (manual text + csv/json file).","operationId":"ai_examiner_rag_upload_submit__lang__ai_examiner_rag_upload_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_examiner_rag_upload_submit__lang__ai_examiner_rag_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/rag/preview":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Upload Preview Api","description":"Dry-run preview API for future drag-and-drop/AJAX upload clients.","operationId":"ai_examiner_rag_upload_preview_api__lang__ai_examiner_rag_preview_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_examiner_rag_upload_preview_api__lang__ai_examiner_rag_preview_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGKnowledgePreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-examiner/rag/library":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Library Page","description":"List current user's uploaded knowledge records.","operationId":"ai_examiner_rag_library_page__lang__ai_examiner_rag_library_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"status_message","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Message"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/rag/knowledge-api":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Knowledge Api","description":"JSON API: list current user's RAG knowledge records for exam question picker.","operationId":"ai_examiner_rag_knowledge_api__lang__ai_examiner_rag_knowledge_api_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/rag/library/{record_id}/edit":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Library Edit Page","description":"Edit one uploaded knowledge record.","operationId":"ai_examiner_rag_library_edit_page__lang__ai_examiner_rag_library__record_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Library Edit Submit","description":"Persist knowledge record edits and regenerate embedding.","operationId":"ai_examiner_rag_library_edit_submit__lang__ai_examiner_rag_library__record_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_examiner_rag_library_edit_submit__lang__ai_examiner_rag_library__record_id__edit_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/rag/library/{record_id}/delete":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Library Delete","description":"Delete one knowledge record for current user.","operationId":"ai_examiner_rag_library_delete__lang__ai_examiner_rag_library__record_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/rag/library/files/delete":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Library Delete File Group","description":"Delete all records linked to one uploaded source file.","operationId":"ai_examiner_rag_library_delete_file_group__lang__ai_examiner_rag_library_files_delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_examiner_rag_library_delete_file_group__lang__ai_examiner_rag_library_files_delete_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Topics","description":"AI Examiner topics list page.","operationId":"ai_examiner_topics__lang__ai_examiner_topics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"ai_teacher_profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Ai Teacher Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics/create":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Create Topic","description":"Topic creation form page.","operationId":"ai_examiner_create_topic__lang__ai_examiner_topics_create_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Create Topic Post","description":"Create a new examiner topic (mentor only).","operationId":"ai_examiner_create_topic_post__lang__ai_examiner_topics_create_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__CreateTopicRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics/system-prompts":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.System Prompts","description":"Return available system prompt templates for topic creation.\n\nCurrently loaded from ``system_prompts.json`` next to this module.\nTo switch to database storage, replace the file read below with a DB query\nand return the same list-of-dicts schema:\n    [{\"id\", \"name\", \"description\", \"category\", \"content\"}, ...]","operationId":"ai_examiner_system_prompts__lang__ai_examiner_topics_system_prompts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics/available-quizzes":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Available Quizzes","description":"Return quizzes created by the current user (for topic linking).","operationId":"ai_examiner_available_quizzes__lang__ai_examiner_topics_available_quizzes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics/{topic_id}/edit":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Edit Topic","description":"Topic edit form page (author or admin only).","operationId":"ai_examiner_edit_topic__lang__ai_examiner_topics__topic_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Edit Topic Post","description":"Update a tutor topic (author or admin only).","operationId":"ai_examiner_edit_topic_post__lang__ai_examiner_topics__topic_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__CreateTopicRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics/{topic_id}/delete":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Delete Topic","description":"Delete a tutor topic (author or admin only).","operationId":"ai_examiner_delete_topic__lang__ai_examiner_topics__topic_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics/{topic_id}/chat":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Topic Chat","description":"Create a session for a topic and open live chat page.\n\nSupports text and voice modes. Voice mode is activated via ``mode=voice``\nquery parameter. Voice backends can be selected via ``voice_stt`` and\n``voice_tts`` parameters and are stored in session metadata for the\nWebSocket handler to use.","operationId":"ai_examiner_topic_chat__lang__ai_examiner_topics__topic_id__chat_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"ai_teacher_profile_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Ai Teacher Profile Id"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","default":"text","title":"Mode"}},{"name":"voice_stt","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Stt"}},{"name":"voice_tts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Tts"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/topics/ai-draft":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Ai Topic Draft","description":"Generate an AI topic draft for mentors/admins using shared OpenAIManager.","operationId":"ai_examiner_ai_topic_draft__lang__ai_examiner_topics_ai_draft_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AITopicDraftRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AITopicDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-examiner/rag/knowledge":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Rag Ingest Knowledge","description":"Manually ingest user-topic knowledge chunks for AI Examiner RAG.","operationId":"ai_examiner_rag_ingest_knowledge__lang__ai_examiner_rag_knowledge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__RAGKnowledgeIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGKnowledgeIngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-examiner/topics/{topic_id}":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Topic Detail","description":"Get topic details including lesson plan.","operationId":"ai_examiner_topic_detail__lang__ai_examiner_topics__topic_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__TopicDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/sessions":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Create Session","description":"Create a new tutor session for the current user.","operationId":"ai_examiner_create_session__lang__ai_examiner_sessions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__CreateSessionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Sessions","description":"Get current user's session history.","operationId":"ai_examiner_sessions__lang__ai_examiner_sessions_get","security":[{"OAuth2PasswordBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__SessionHistoryResponse"}}}}}}},"/{lang}/ai-examiner/sessions/{session_id}":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Session Detail","description":"Get session details with message history.","operationId":"ai_examiner_session_detail__lang__ai_examiner_sessions__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__SessionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/sessions/{session_id}/voice/stt":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Voice Stt","description":"Upload audio file and get transcript via speech-to-text.","operationId":"ai_examiner_voice_stt__lang__ai_examiner_sessions__session_id__voice_stt_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_examiner_voice_stt__lang__ai_examiner_sessions__session_id__voice_stt_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/STTResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/sessions/{session_id}/voice/tts":{"post":{"tags":["ai-examiner"],"summary":"Ai Examiner.Voice Tts","description":"Convert text to speech and return MP3 audio stream.","operationId":"ai_examiner_voice_tts__lang__ai_examiner_sessions__session_id__voice_tts_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-examiner/progress":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Progress","description":"Get current user's learning progress.","operationId":"ai_examiner_progress__lang__ai_examiner_progress_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentProgressResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/ai-examiner/students/{student_id}/stats":{"get":{"tags":["ai-examiner"],"summary":"Ai Examiner.Student Stats","description":"Get aggregate exam statistics for a student by previous attempts.","operationId":"ai_examiner_student_stats__lang__ai_examiner_students__student_id__stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"student_id","in":"path","required":true,"schema":{"type":"integer","title":"Student Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentExamStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Home","description":"Render the main AI Relevanter dashboard (any authenticated user).","operationId":"ai_relevanter_home__lang__ai_relevanter__get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual/runs":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual Runs","description":"Render the table of manually uploaded topics/runs (any authenticated user).","operationId":"ai_relevanter_manual_runs__lang__ai_relevanter_manual_runs_get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"analyzed","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Analyzed"}},{"name":"updated","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual/runs/{run_id}/analyze":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual Run Analyze","description":"Run scoring on a pending manual run and redirect back to the runs list.","operationId":"ai_relevanter_manual_run_analyze__lang__ai_relevanter_manual_runs__run_id__analyze_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual/runs/{run_id}/edit":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual Run Edit","description":"Render edit form for an existing manual run (add/remove messages).","operationId":"ai_relevanter_manual_run_edit__lang__ai_relevanter_manual_runs__run_id__edit_get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual/runs/{run_id}/update":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual Run Update","description":"Save updated payload for an existing manual run and reset it to pending.","operationId":"ai_relevanter_manual_run_update__lang__ai_relevanter_manual_runs__run_id__update_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_relevanter_manual_run_update__lang__ai_relevanter_manual_runs__run_id__update_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual/runs/{run_id}/result":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual Run Result","description":"Return analysis result JSON for a completed manual run (used by popup).","operationId":"ai_relevanter_manual_run_result__lang__ai_relevanter_manual_runs__run_id__result_get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/billing/status":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Billing Status","description":"Get current billing status for selected provider in AI Relevanter.","operationId":"ai_relevanter_billing_status__lang__ai_relevanter_billing_status_get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ai Relevanter Billing Status  Lang  Ai Relevanter Billing Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual","description":"Render manual ingestion page (any authenticated user).","operationId":"ai_relevanter_manual__lang__ai_relevanter_manual_get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"saved","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Saved"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual/parse-topic":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual Parse Topic","description":"Parse a forum topic by URL and return relevancer-compatible JSON.\n\nCalled via AJAX from the manual upload form modal.\n``parse_all=True`` overrides max_messages and fetches every page.","operationId":"ai_relevanter_manual_parse_topic__lang__ai_relevanter_manual_parse_topic_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_relevanter_manual_parse_topic__lang__ai_relevanter_manual_parse_topic_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/manual/save":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Manual Save","description":"Save a manually entered or file-uploaded payload as a pending run.","operationId":"ai_relevanter_manual_save__lang__ai_relevanter_manual_save_post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_relevanter_manual_save__lang__ai_relevanter_manual_save_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/forum":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Forum","description":"Render the forum-integrated analysis view (admin only).","operationId":"ai_relevanter_forum__lang__ai_relevanter_forum_get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/forum/analyze/{topic_id}":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Forum Analyze","description":"Create a real forum analysis run for one selected topic (admin only).","operationId":"ai_relevanter_forum_analyze__lang__ai_relevanter_forum_analyze__topic_id__post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/forum/reanalyze/{topic_id}":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Forum Reanalyze","description":"Force re-run of analysis for a topic that has already been analyzed (admin only).","operationId":"ai_relevanter_forum_reanalyze__lang__ai_relevanter_forum_reanalyze__topic_id__post","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/forum/queue/{topic_id}":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Forum Queue","description":"Enqueue background relevance analysis without waiting for result (admin only).","operationId":"ai_relevanter_forum_queue__lang__ai_relevanter_forum_queue__topic_id__post","parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}},{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/forum/rescore/{topic_id}":{"post":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Forum Rescore","description":"Enqueue background re-score for a topic (admin only).","operationId":"ai_relevanter_forum_rescore__lang__ai_relevanter_forum_rescore__topic_id__post","parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}},{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-relevanter/results/{topic_id}":{"get":{"tags":["ai-relevanter"],"summary":"Ai Relevanter.Results","description":"Render the latest analysis result for one topic (admin only).","operationId":"ai_relevanter_results__lang__ai_relevanter_results__topic_id__get","parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/api/anti-cheat/incident":{"post":{"tags":["anti-cheat"],"summary":"Anti Cheat.Record Incident","description":"Record an anti-cheat incident during a session.\n\nCalled by frontend JavaScript when a violation is detected.\n\nQuery parameters:\n- session_id: UUID of the session\n- session_type: \"ai_tutor\" or \"quiz\"\n- config: URL-encoded JSON of AntiCheatConfig\n\nReturns:\n{\n    incident_id: int,\n    warning_number: int,\n    warnings_limit: int,\n    should_end_session: bool,\n    message: str\n}","operationId":"anti_cheat_record_incident__lang__api_anti_cheat_incident_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"query","required":false,"schema":{"type":"string","title":"Session Id"}},{"name":"session_type","in":"query","required":false,"schema":{"type":"string","title":"Session Type"}},{"name":"enabled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},{"name":"warnings_limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":20,"minimum":1},{"type":"null"}],"title":"Warnings Limit"}},{"name":"methods","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Methods"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AntiCheatIncidentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/api/anti-cheat/session/{session_id}":{"get":{"tags":["anti-cheat"],"summary":"Anti Cheat.Get Session Incidents","description":"Get all incidents for a session (admin/instructor only).\n\nReturns:\n{\n    session_id: str,\n    incidents: [\n        {\n            id: int,\n            incident_type: str,\n            description: str,\n            created_at: datetime,\n            metadata: dict\n        }\n    ]\n}","operationId":"anti_cheat_get_session_incidents__lang__api_anti_cheat_session__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","description":"Session UUID","title":"Session Id"},"description":"Session UUID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/doc-recognition/":{"get":{"tags":["document-recognition"],"summary":"Doc Recognition.Home","description":"Document recognition upload page.","operationId":"doc_recognition_home__lang__doc_recognition__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/doc-recognition/upload":{"post":{"tags":["document-recognition"],"summary":"Doc Recognition.Upload Submit","description":"Handle form submission: extract text, optionally ingest to RAG.","operationId":"doc_recognition_upload_submit__lang__doc_recognition_upload_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_doc_recognition_upload_submit__lang__doc_recognition_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/doc-recognition/process-stream":{"post":{"tags":["document-recognition"],"summary":"Doc Recognition.Process Stream Api","description":"Process document and stream real-time progress/status as SSE events.","operationId":"doc_recognition_process_stream_api__lang__doc_recognition_process_stream_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_doc_recognition_process_stream_api__lang__doc_recognition_process_stream_post"}}},"required":true},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/doc-recognition/extract":{"post":{"tags":["document-recognition"],"summary":"Doc Recognition.Extract Api","description":"Extract text and chunks from an uploaded document (no DB writes).","operationId":"doc_recognition_extract_api__lang__doc_recognition_extract_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_doc_recognition_extract_api__lang__doc_recognition_extract_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentExtractionResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/doc-recognition/ingest":{"post":{"tags":["document-recognition"],"summary":"Doc Recognition.Ingest Api","description":"Extract text from document and ingest all chunks into the user RAG knowledge base.","operationId":"doc_recognition_ingest_api__lang__doc_recognition_ingest_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_doc_recognition_ingest_api__lang__doc_recognition_ingest_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentIngestToRAGResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/doc-recognition/queue-ingest":{"post":{"tags":["document-recognition"],"summary":"Doc Recognition.Queue Ingest Api","description":"Save the uploaded file to disk and enqueue an ARQ worker job for RAG ingestion.\n\nReturns immediately with a job_id. Use GET /job-status/{job_id} to poll status.","operationId":"doc_recognition_queue_ingest_api__lang__doc_recognition_queue_ingest_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_doc_recognition_queue_ingest_api__lang__doc_recognition_queue_ingest_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/doc-recognition/job-status/{job_id}":{"get":{"tags":["document-recognition"],"summary":"Doc Recognition.Job Status Api","description":"Check the status of a queued document processing job.\n\nUses ARQ to query the job status by job_id.","operationId":"doc_recognition_job_status_api__lang__doc_recognition_job_status__job_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/image-analysis/":{"get":{"tags":["image-analysis"],"summary":"Image Analysis.Form","operationId":"image_analysis_form__lang__image_analysis__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/image-analysis/compare":{"post":{"tags":["image-analysis"],"summary":"Image Analysis.Compare","operationId":"image_analysis_compare__lang__image_analysis_compare_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_image_analysis_compare__lang__image_analysis_compare_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/":{"get":{"tags":["parser"],"summary":"Parser.Form","description":"Parser main page. Login required.","operationId":"parser_form__lang__parser__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/by-id":{"get":{"tags":["parser"],"summary":"Parser.Form By Id","description":"Parser page for user ID. Login required.","operationId":"parser_form_by_id__lang__parser_by_id_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/search":{"post":{"tags":["parser"],"summary":"Parser.Search","description":"Run parser by username and render HTML result.","operationId":"parser_search__lang__parser_search_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_parser_search__lang__parser_search_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/search-by-id":{"post":{"tags":["parser"],"summary":"Parser.Search By Id","description":"Run parser by user id and render HTML result.","operationId":"parser_search_by_id__lang__parser_search_by_id_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_parser_search_by_id__lang__parser_search_by_id_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/parse/{username}":{"get":{"tags":["parser"],"summary":"Parse User","description":"Parse messages from searchengines.guru user\n\nArgs:\n    username: Username to search and parse\n    format: Response format (json or html)\n    headless: Run browser in headless mode\n\nReturns:\n    JSON with user messages or error","operationId":"parse_user__lang__parser_parse__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}},{"name":"headless","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Headless"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/parse":{"post":{"tags":["parser"],"summary":"Parse User Post","description":"Parse messages from searchengines.guru user (POST method)\n\nArgs:\n    username: Username to search and parse\n    headless: Run browser in headless mode\n\nReturns:\n    JSON with user messages","operationId":"parse_user_post__lang__parser_parse_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_parse_user_post__lang__parser_parse_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/parse/id/{user_id}":{"get":{"tags":["parser"],"summary":"Parse User By Id","description":"Parse messages from searchengines.guru user by user ID\n\nArgs:\n    user_id: User ID to search and parse\n    format: Response format (json or html)\n    headless: Run browser in headless mode\n\nReturns:\n    JSON with user messages or error","operationId":"parse_user_by_id__lang__parser_parse_id__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}},{"name":"headless","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Headless"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/parse/id":{"post":{"tags":["parser"],"summary":"Parse User By Id Post","description":"Parse messages from searchengines.guru user by user ID (POST method)\n\nArgs:\n    user_id: User ID to search and parse\n    headless: Run browser in headless mode\n\nReturns:\n    JSON with user messages","operationId":"parse_user_by_id_post__lang__parser_parse_id_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_parse_user_by_id_post__lang__parser_parse_id_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/parser/save":{"post":{"tags":["parser"],"summary":"Parser Save","description":"Save current parser result (posted from HTML) and return JSON file for download.","operationId":"parser_save__lang__parser_save_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_parser_save__lang__parser_save_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/catalog":{"get":{"tags":["ai-adapter-v1"],"summary":"Adapter Catalog","operationId":"adapter_catalog_api_ai_adapter_v1_catalog_get","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/settings":{"get":{"tags":["ai-adapter-v1"],"summary":"List Scope Settings","operationId":"list_scope_settings_api_ai_adapter_v1_settings_get","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScopeSettingResponse"},"title":"Response List Scope Settings Api Ai Adapter V1 Settings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/settings/{scope}":{"get":{"tags":["ai-adapter-v1"],"summary":"Get Scope Settings","operationId":"get_scope_settings_api_ai_adapter_v1_settings__scope__get","parameters":[{"name":"scope","in":"path","required":true,"schema":{"type":"string","title":"Scope"}},{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeSettingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["ai-adapter-v1"],"summary":"Update Scope Settings","operationId":"update_scope_settings_api_ai_adapter_v1_settings__scope__put","parameters":[{"name":"scope","in":"path","required":true,"schema":{"type":"string","title":"Scope"}},{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeSettingUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeSettingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/chat/completions":{"post":{"tags":["ai-adapter-v1"],"summary":"Adapter Chat Completion","operationId":"adapter_chat_completion_api_ai_adapter_v1_chat_completions_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdapterChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Adapter Chat Completion Api Ai Adapter V1 Chat Completions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/responses":{"post":{"tags":["ai-adapter-v1"],"summary":"Adapter Responses","operationId":"adapter_responses_api_ai_adapter_v1_responses_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdapterTextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Adapter Responses Api Ai Adapter V1 Responses Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/rag/retrieve":{"post":{"tags":["ai-adapter-v1"],"summary":"Adapter Rag Retrieve","operationId":"adapter_rag_retrieve_api_ai_adapter_v1_rag_retrieve_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdapterRAGRetrieveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Adapter Rag Retrieve Api Ai Adapter V1 Rag Retrieve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/ollama/version":{"get":{"tags":["ai-adapter-v1"],"summary":"Ollama Version","operationId":"ollama_version_api_ai_adapter_v1_ollama_version_get","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ollama Version Api Ai Adapter V1 Ollama Version Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/ollama/tags":{"get":{"tags":["ai-adapter-v1"],"summary":"Ollama Tags","operationId":"ollama_tags_api_ai_adapter_v1_ollama_tags_get","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ollama Tags Api Ai Adapter V1 Ollama Tags Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/ollama/generate":{"post":{"tags":["ai-adapter-v1"],"summary":"Ollama Generate","operationId":"ollama_generate_api_ai_adapter_v1_ollama_generate_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ollama Generate Api Ai Adapter V1 Ollama Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/ollama/chat":{"post":{"tags":["ai-adapter-v1"],"summary":"Ollama Chat","operationId":"ollama_chat_api_ai_adapter_v1_ollama_chat_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ollama Chat Api Ai Adapter V1 Ollama Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/ollama/chat/stream":{"post":{"tags":["ai-adapter-v1"],"summary":"Ollama Chat Stream","operationId":"ollama_chat_stream_api_ai_adapter_v1_ollama_chat_stream_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/ollama/models/pull":{"post":{"tags":["ai-adapter-v1"],"summary":"Ollama Pull Model","operationId":"ollama_pull_model_api_ai_adapter_v1_ollama_models_pull_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_adapter__router__OllamaModelPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ollama Pull Model Api Ai Adapter V1 Ollama Models Pull Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-adapter/v1/ollama/models/delete":{"post":{"tags":["ai-adapter-v1"],"summary":"Ollama Delete Model","operationId":"ollama_delete_model_api_ai_adapter_v1_ollama_models_delete_post","parameters":[{"name":"x-adapter-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Adapter-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__services__ai_adapter__router__OllamaModelPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ollama Delete Model Api Ai Adapter V1 Ollama Models Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/settings":{"get":{"tags":["RAG Knowledge Base"],"summary":"Получить настройки RAG пользователя","operationId":"get_rag_settings_rag_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRAGSettingsSchema"}}}}}},"patch":{"tags":["RAG Knowledge Base"],"summary":"Обновить настройки RAG","operationId":"update_rag_settings_rag_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRAGSettingsUpdateSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRAGSettingsSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/knowledge/quota":{"get":{"tags":["RAG Knowledge Base"],"summary":"Использование квоты базы знаний","operationId":"get_quota_rag_knowledge_quota_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGQuotaSchema"}}}}}}},"/rag/knowledge/domains":{"get":{"tags":["RAG Knowledge Base"],"summary":"Список доменов пользователя","operationId":"list_domains_rag_knowledge_domains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response List Domains Rag Knowledge Domains Get"}}}}}}},"/rag/knowledge":{"get":{"tags":["RAG Knowledge Base"],"summary":"Список документов базы знаний","description":"Return documents grouped by document_id.\n\nEach item represents one logical document (all its chunks share the same document_id).","operationId":"list_knowledge_rag_knowledge_get","parameters":[{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGDocumentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/knowledge/ingest":{"post":{"tags":["RAG Knowledge Base"],"summary":"Добавить текстовый контент в базу знаний","operationId":"ingest_text_rag_knowledge_ingest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGIngestTextRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGIngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/knowledge/search":{"post":{"tags":["RAG Knowledge Base"],"summary":"Поиск по базе знаний","operationId":"search_knowledge_rag_knowledge_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/knowledge/{document_id}":{"delete":{"tags":["RAG Knowledge Base"],"summary":"Удалить документ","operationId":"delete_document_rag_knowledge__document_id__delete","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/knowledge/chunk/{chunk_id}":{"delete":{"tags":["RAG Knowledge Base"],"summary":"Удалить чанк","operationId":"delete_chunk_rag_knowledge_chunk__chunk_id__delete","parameters":[{"name":"chunk_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Chunk Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/knowledge/{document_id}/sharing":{"patch":{"tags":["RAG Knowledge Base"],"summary":"Обновить настройки шаринга документа","operationId":"update_sharing_rag_knowledge__document_id__sharing_patch","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGSharingUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGSharingUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/knowledge/ingest/file":{"post":{"tags":["RAG Knowledge Base"],"summary":"Загрузить файл в базу знаний (асинхронно)","description":"Upload a file (txt/pdf/docx) for async ingestion into the knowledge base.\n\nReturns 202 Accepted with a job_id for status polling.\nFile is saved to a temporary location and processed by ARQ worker.","operationId":"ingest_file_rag_knowledge_ingest_file_post","parameters":[{"name":"topic","in":"query","required":true,"schema":{"type":"string","title":"Topic"}},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},{"name":"is_public","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Public"}},{"name":"chunk_strategy","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunk Strategy"}},{"name":"chunk_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunk Size"}},{"name":"chunk_overlap","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chunk Overlap"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ingest_file_rag_knowledge_ingest_file_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGFileIngestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rag/ingest/status/{job_id}":{"get":{"tags":["RAG Knowledge Base"],"summary":"Статус задачи загрузки файла","description":"Poll the status of an async file ingest job.\n\nUses ARQ's job result store (Redis) to check job state.","operationId":"get_ingest_job_status_rag_ingest_status__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RAGIngestJobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/":{"get":{"tags":["gpt-chat"],"summary":"Gpt Chat Home","description":"Render GPT Chat web page. Requires active user.","operationId":"gpt_chat_home__lang__gpt_chat__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/chat":{"get":{"tags":["gpt-chat"],"summary":"Gpt Chat Page","description":"Render GPT Chat web page. Requires active user.","operationId":"gpt_chat_page__lang__gpt_chat_chat_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions":{"post":{"tags":["gpt-chat"],"summary":"Create Session","description":"Create a new chat session.","operationId":"create_session__lang__gpt_chat_sessions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["gpt-chat"],"summary":"List Sessions","description":"List user's chat sessions.","operationId":"list_sessions__lang__gpt_chat_sessions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["gpt-chat"],"summary":"Bulk Delete Sessions","description":"Bulk delete current user's sessions older than the given number of days.","operationId":"bulk_delete_sessions__lang__gpt_chat_sessions_delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"older_than_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Delete sessions older than N days","default":30,"title":"Older Than Days"},"description":"Delete sessions older than N days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}":{"get":{"tags":["gpt-chat"],"summary":"Get Session","description":"Get chat session with all messages.","operationId":"get_session__lang__gpt_chat_sessions__session_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["gpt-chat"],"summary":"Update Session","description":"Update chat session.","operationId":"update_session__lang__gpt_chat_sessions__session_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["gpt-chat"],"summary":"Delete Session","description":"Delete chat session.","operationId":"delete_session__lang__gpt_chat_sessions__session_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}/messages":{"post":{"tags":["gpt-chat"],"summary":"Add Message","description":"Add a message to the chat session.","operationId":"add_message__lang__gpt_chat_sessions__session_id__messages_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["gpt-chat"],"summary":"List Messages","description":"List messages in a chat session.","operationId":"list_messages__lang__gpt_chat_sessions__session_id__messages_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Messages  Lang  Gpt Chat Sessions  Session Id  Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}/chat":{"post":{"tags":["gpt-chat"],"summary":"Chat With Assistant","description":"Send user message and return assistant response in one call.","operationId":"chat_with_assistant__lang__gpt_chat_sessions__session_id__chat_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDialogRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDialogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}/prompt-preview":{"post":{"tags":["gpt-chat"],"summary":"Preview Chat Prompt","description":"Preview the final system prompt before sending a message to the LLM.","operationId":"preview_chat_prompt__lang__gpt_chat_sessions__session_id__prompt_preview_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatDialogRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatPromptPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/messages/{message_id}":{"get":{"tags":["gpt-chat"],"summary":"Get Message","description":"Get a specific message.","operationId":"get_message__lang__gpt_chat_messages__message_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"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/ChatMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}/images":{"post":{"tags":["gpt-chat"],"summary":"Generate Image","description":"Generate an image using AI.","operationId":"generate_image__lang__gpt_chat_sessions__session_id__images_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/images/limit":{"get":{"tags":["gpt-chat"],"summary":"Get Image Limit","description":"Get user's image generation limit.","operationId":"get_image_limit__lang__gpt_chat_images_limit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationLimitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}/export":{"post":{"tags":["gpt-chat"],"summary":"Export Session","description":"Export a chat session in the requested format.","operationId":"export_session__lang__gpt_chat_sessions__session_id__export_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/providers":{"get":{"tags":["gpt-chat"],"summary":"List Providers","description":"Get list of available AI providers.","operationId":"list_providers__lang__gpt_chat_providers_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableProvidersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/models":{"get":{"tags":["gpt-chat"],"summary":"List Litellm Models","description":"Return model list from LiteLLM proxy and user's preferred model from profile.","operationId":"list_litellm_models__lang__gpt_chat_models_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Litellm Models  Lang  Gpt Chat Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/providers/ollama/models":{"get":{"tags":["gpt-chat"],"summary":"List Ollama Models","description":"Get currently installed Ollama model names for GPT chat model selector.","operationId":"list_ollama_models__lang__gpt_chat_providers_ollama_models_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaModelsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/billing/status":{"get":{"tags":["gpt-chat"],"summary":"Get Billing Status","description":"Get current billing status for selected provider in GPT Chat.","operationId":"get_billing_status__lang__gpt_chat_billing_status_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"llm_model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Model"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Billing Status  Lang  Gpt Chat Billing Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/health":{"get":{"tags":["gpt-chat"],"summary":"Health Check","description":"Health check for GPT Chat service.","operationId":"health_check__lang__gpt_chat_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Check  Lang  Gpt Chat Health Get"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}/voice/stt":{"post":{"tags":["gpt-chat"],"summary":"Voice Stt","description":"Upload audio file and get transcript via speech-to-text.","operationId":"voice_stt__lang__gpt_chat_sessions__session_id__voice_stt_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_voice_stt__lang__gpt_chat_sessions__session_id__voice_stt_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/STTResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/sessions/{session_id}/voice/tts":{"post":{"tags":["gpt-chat"],"summary":"Voice Tts","description":"Convert text to speech and return MP3 audio stream.","operationId":"voice_tts__lang__gpt_chat_sessions__session_id__voice_tts_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/agents":{"post":{"tags":["gpt-chat"],"summary":"Create Agent","description":"Create a new AI agent.","operationId":"create_agent__lang__gpt_chat_agents_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["gpt-chat"],"summary":"List Agents","description":"List agents accessible to the current user.","operationId":"list_agents__lang__gpt_chat_agents_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/agents/ai-draft":{"post":{"tags":["gpt-chat"],"summary":"Generate Agent Ai Draft","description":"Generate AI draft for agent creation popup.","operationId":"generate_agent_ai_draft__lang__gpt_chat_agents_ai_draft_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentAIDraftRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentAIDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/gpt-chat/agents/{agent_id}":{"get":{"tags":["gpt-chat"],"summary":"Get Agent","description":"Get agent by ID.","operationId":"get_agent__lang__gpt_chat_agents__agent_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["gpt-chat"],"summary":"Update Agent","description":"Update an existing agent (creator or admin only).","operationId":"update_agent__lang__gpt_chat_agents__agent_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["gpt-chat"],"summary":"Delete Agent","description":"Delete an agent (creator or admin only).","operationId":"delete_agent__lang__gpt_chat_agents__agent_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-teacher/":{"get":{"tags":["ai-teacher"],"summary":"Ai Teacher.Index","operationId":"ai_teacher_index__lang__ai_teacher__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-teacher/create":{"get":{"tags":["ai-teacher"],"summary":"Ai Teacher.Create Page","operationId":"ai_teacher_create_page__lang__ai_teacher_create_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-teacher"],"summary":"Ai Teacher.Create","operationId":"ai_teacher_create__lang__ai_teacher_create_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_teacher_create__lang__ai_teacher_create_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-teacher/{profile_id}/edit":{"get":{"tags":["ai-teacher"],"summary":"Ai Teacher.Edit Page","operationId":"ai_teacher_edit_page__lang__ai_teacher__profile_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["ai-teacher"],"summary":"Ai Teacher.Edit","operationId":"ai_teacher_edit__lang__ai_teacher__profile_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_ai_teacher_edit__lang__ai_teacher__profile_id__edit_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/ai-teacher/{profile_id}/toggle":{"post":{"tags":["ai-teacher"],"summary":"Ai Teacher.Toggle","operationId":"ai_teacher_toggle__lang__ai_teacher__profile_id__toggle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}}],"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai-teacher/profiles":{"get":{"tags":["ai-teacher-api"],"summary":"Api List Profiles","operationId":"api_list_profiles_api_v1_ai_teacher_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["ai-teacher-api"],"summary":"Api Create Profile","operationId":"api_create_profile_api_v1_ai_teacher_profiles_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/ai-teacher/profiles/{profile_id}":{"put":{"tags":["ai-teacher-api"],"summary":"Api Update Profile","operationId":"api_update_profile_api_v1_ai_teacher_profiles__profile_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai-teacher/profiles/{profile_id}/toggle":{"post":{"tags":["ai-teacher-api"],"summary":"Api Toggle Profile","operationId":"api_toggle_profile_api_v1_ai_teacher_profiles__profile_id__toggle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai-teacher/profiles/{profile_id}/rag-context":{"get":{"tags":["ai-teacher-api"],"summary":"Api Get Rag Context","operationId":"api_get_rag_context_api_v1_ai_teacher_profiles__profile_id__rag_context_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/content-localization":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Content Localization","operationId":"site_admin_content_localization__lang__dashboard_admin_content_localization_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Content Localization Post","operationId":"site_admin_content_localization_post__lang__dashboard_admin_content_localization_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_content_localization_post__lang__dashboard_admin_content_localization_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/releases":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Releases","operationId":"site_admin_releases__lang__dashboard_admin_releases_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Releases Post","operationId":"site_admin_releases_post__lang__dashboard_admin_releases_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_releases_post__lang__dashboard_admin_releases_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Dashboard","operationId":"site_admin_dashboard__lang__dashboard_admin__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Users List","operationId":"site_admin_users_list__lang__dashboard_admin_users_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/subjects":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Subjects List","description":"Show subjects together with their AI lessons for catalog administration.","operationId":"site_admin_subjects_list__lang__dashboard_admin_subjects_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/subjects/{subject_id}/edit":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Subject Edit Post","description":"Update a subject's status and owner from the admin catalog.","operationId":"site_admin_subject_edit_post__lang__dashboard_admin_subjects__subject_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"subject_id","in":"path","required":true,"schema":{"type":"integer","title":"Subject Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_subject_edit_post__lang__dashboard_admin_subjects__subject_id__edit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/quizzes":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Quizzes List","operationId":"site_admin_quizzes_list__lang__dashboard_admin_quizzes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/content/{content_type}/{content_id}/edit":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Content Edit","description":"Render the common Site Admin editor for supported content types.","operationId":"site_admin_content_edit__lang__dashboard_admin_content__content_type___content_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"content_type","in":"path","required":true,"schema":{"type":"string","title":"Content Type"}},{"name":"content_id","in":"path","required":true,"schema":{"type":"integer","title":"Content Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Content Edit Post","description":"Update Site Admin content and explicitly allow author reassignment only here.","operationId":"site_admin_content_edit_post__lang__dashboard_admin_content__content_type___content_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"content_type","in":"path","required":true,"schema":{"type":"string","title":"Content Type"}},{"name":"content_id","in":"path","required":true,"schema":{"type":"integer","title":"Content Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_content_edit_post__lang__dashboard_admin_content__content_type___content_id__edit_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/tutor-topics":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Tutor Topics List","operationId":"site_admin_tutor_topics_list__lang__dashboard_admin_tutor_topics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/examiner-topics":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Examiner Topics List","operationId":"site_admin_examiner_topics_list__lang__dashboard_admin_examiner_topics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/quizzes/{quiz_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Delete Quiz Global","operationId":"site_admin_delete_quiz_global__lang__dashboard_admin_quizzes__quiz_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/tutor-topics/{topic_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Delete Tutor Topic Global","operationId":"site_admin_delete_tutor_topic_global__lang__dashboard_admin_tutor_topics__topic_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/examiner-topics/{topic_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Delete Examiner Topic Global","operationId":"site_admin_delete_examiner_topic_global__lang__dashboard_admin_examiner_topics__topic_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.User Edit","operationId":"site_admin_user_edit__lang__dashboard_admin_users__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/api/quiz/{quiz_id}/attempts":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.User Quiz Attempts Api","operationId":"site_admin_user_quiz_attempts_api__lang__dashboard_admin_users__user_id__api_quiz__quiz_id__attempts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/api/tutor-topics/{topic_id}/stats":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.User Tutor Topic Stats Api","operationId":"site_admin_user_tutor_topic_stats_api__lang__dashboard_admin_users__user_id__api_tutor_topics__topic_id__stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/api/examiner-topics/{topic_id}/stats":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.User Examiner Topic Stats Api","operationId":"site_admin_user_examiner_topic_stats_api__lang__dashboard_admin_users__user_id__api_examiner_topics__topic_id__stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/status":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.User Set Status","operationId":"site_admin_user_set_status__lang__dashboard_admin_users__user_id__status_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_user_set_status__lang__dashboard_admin_users__user_id__status_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/balance":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.User Adjust Balance","operationId":"site_admin_user_adjust_balance__lang__dashboard_admin_users__user_id__balance_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_user_adjust_balance__lang__dashboard_admin_users__user_id__balance_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/transactions/{tx_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.User Delete Transaction","operationId":"site_admin_user_delete_transaction__lang__dashboard_admin_users__user_id__transactions__tx_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"tx_id","in":"path","required":true,"schema":{"type":"integer","title":"Tx Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/chat-sessions/{session_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.User Delete Chat Session","operationId":"site_admin_user_delete_chat_session__lang__dashboard_admin_users__user_id__chat_sessions__session_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/quizzes/{quiz_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.User Delete Quiz","operationId":"site_admin_user_delete_quiz__lang__dashboard_admin_users__user_id__quizzes__quiz_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"quiz_id","in":"path","required":true,"schema":{"type":"integer","title":"Quiz Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/tutor-topics/{topic_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.User Delete Tutor Topic","operationId":"site_admin_user_delete_tutor_topic__lang__dashboard_admin_users__user_id__tutor_topics__topic_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/users/{user_id}/examiner-topics/{topic_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.User Delete Examiner Topic","operationId":"site_admin_user_delete_examiner_topic__lang__dashboard_admin_users__user_id__examiner_topics__topic_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"integer","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/transactions":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Transactions List","operationId":"site_admin_transactions_list__lang__dashboard_admin_transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},{"name":"tx_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tx Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/topups":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Topups List","operationId":"site_admin_topups_list__lang__dashboard_admin_topups_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/topups/{request_id}/approve":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Topup Approve","operationId":"site_admin_topup_approve__lang__dashboard_admin_topups__request_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/topups/{request_id}/reject":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Topup Reject","operationId":"site_admin_topup_reject__lang__dashboard_admin_topups__request_id__reject_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/withdrawals":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Withdrawals List","operationId":"site_admin_withdrawals_list__lang__dashboard_admin_withdrawals_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/withdrawals/{request_id}/approve":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Withdrawal Approve","operationId":"site_admin_withdrawal_approve__lang__dashboard_admin_withdrawals__request_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/withdrawals/{request_id}/reject":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Withdrawal Reject","operationId":"site_admin_withdrawal_reject__lang__dashboard_admin_withdrawals__request_id__reject_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/logs":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs","operationId":"site_admin_logs__lang__dashboard_admin_logs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/logs/api/containers":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Containers","description":"Return list of running Docker containers as JSON.","operationId":"site_admin_logs_containers__lang__dashboard_admin_logs_api_containers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/logs/api/last":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Last","description":"Return the last N log lines for a container (or all containers).","operationId":"site_admin_logs_last__lang__dashboard_admin_logs_api_last_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"container_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id"}},{"name":"lines","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Lines"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/logs/api/stream":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Stream","description":"Server-Sent Events stream of live Docker logs.","operationId":"site_admin_logs_stream__lang__dashboard_admin_logs_api_stream_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"container_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/logs/api/security/analytics":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Analytics","description":"Return aggregated traffic/security analytics parsed from Docker logs.","operationId":"site_admin_logs_security_analytics__lang__dashboard_admin_logs_api_security_analytics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":24,"title":"Hours"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":100,"default":5000,"title":"Limit"}},{"name":"container_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/logs/api/security/blocked-ips":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Blocked Ips","description":"Return active blocked IP list.","operationId":"site_admin_logs_security_blocked_ips__lang__dashboard_admin_logs_api_security_blocked_ips_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Block Ip","description":"Create or update blocked IP entry.","operationId":"site_admin_logs_security_block_ip__lang__dashboard_admin_logs_api_security_blocked_ips_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockIPPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/logs/api/security/blocked-ips/remove":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Unblock Ip","description":"Deactivate blocked IP entry.","operationId":"site_admin_logs_security_unblock_ip__lang__dashboard_admin_logs_api_security_blocked_ips_remove_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnblockIPPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/logs/api/security/blocked-ips/cleanup-expired":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Cleanup Expired Ips","description":"Deactivate expired temporary blocked IP entries.","operationId":"site_admin_logs_security_cleanup_expired_ips__lang__dashboard_admin_logs_api_security_blocked_ips_cleanup_expired_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/logs/api/security/blocked-ips/auto-block":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Auto Block Ips","description":"Temporarily block suspicious IPs selected from security analytics.","operationId":"site_admin_logs_security_auto_block_ips__lang__dashboard_admin_logs_api_security_blocked_ips_auto_block_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoBlockIPPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/logs/api/security/blocked-user-agents":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Blocked User Agents","description":"Return active blocked user-agent patterns list.","operationId":"site_admin_logs_security_blocked_user_agents__lang__dashboard_admin_logs_api_security_blocked_user_agents_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Block User Agent","description":"Create or update blocked user-agent pattern entry.","operationId":"site_admin_logs_security_block_user_agent__lang__dashboard_admin_logs_api_security_blocked_user_agents_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUserAgentPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/logs/api/security/blocked-user-agents/from-observed":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Block User Agent From Observed","description":"Create or update blocked user-agent pattern from observed full UA string.","operationId":"site_admin_logs_security_block_user_agent_from_observed__lang__dashboard_admin_logs_api_security_blocked_user_agents_from_observed_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockUserAgentFromObservedPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/logs/api/security/blocked-user-agents/remove":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Logs Security Unblock User Agent","description":"Deactivate blocked user-agent pattern entry.","operationId":"site_admin_logs_security_unblock_user_agent__lang__dashboard_admin_logs_api_security_blocked_user_agents_remove_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnblockUserAgentPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/config":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Config","description":"Return current runtime Ollama URL config for admin dashboard.","operationId":"site_admin_ollama_config__lang__dashboard_admin_ollama_api_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Config Update","description":"Update runtime Ollama URL config used by AI adapter and admin tooling.","operationId":"site_admin_ollama_config_update__lang__dashboard_admin_ollama_api_config_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaBaseUrlPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/capacity":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Capacity","description":"Return current shared Ollama inference slot usage for the admin dashboard.","operationId":"site_admin_ollama_capacity__lang__dashboard_admin_ollama_api_capacity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/version":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Version","description":"Proxy Ollama /api/version for admin dashboard management.","operationId":"site_admin_ollama_version__lang__dashboard_admin_ollama_api_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/tags":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Tags","description":"Proxy Ollama /api/tags for admin dashboard management.","operationId":"site_admin_ollama_tags__lang__dashboard_admin_ollama_api_tags_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/generate":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Generate","description":"Proxy Ollama /api/generate for admin dashboard playground.","operationId":"site_admin_ollama_generate__lang__dashboard_admin_ollama_api_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaGeneratePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/chat":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Chat","description":"Proxy Ollama /api/chat for admin dashboard playground.","operationId":"site_admin_ollama_chat__lang__dashboard_admin_ollama_api_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaChatPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/chat/stream":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Chat Stream","description":"Proxy streaming Ollama /api/chat for admin dashboard playground.","operationId":"site_admin_ollama_chat_stream__lang__dashboard_admin_ollama_api_chat_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OllamaChatPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/models/pull":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Pull Model","description":"Proxy Ollama /api/pull model operation for admin dashboard.","operationId":"site_admin_ollama_pull_model__lang__dashboard_admin_ollama_api_models_pull_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__admin__routers__OllamaModelPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/models/pull/stream":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Pull Model Stream","description":"Proxy streaming Ollama /api/pull operation with progress chunks.","operationId":"site_admin_ollama_pull_model_stream__lang__dashboard_admin_ollama_api_models_pull_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__admin__routers__OllamaModelPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ollama/api/models/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ollama Delete Model","description":"Proxy Ollama /api/delete model operation for admin dashboard.","operationId":"site_admin_ollama_delete_model__lang__dashboard_admin_ollama_api_models_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__core__admin__routers__OllamaModelPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/ai-settings":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ai Settings","operationId":"site_admin_ai_settings__lang__dashboard_admin_ai_settings_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ai Settings Save","operationId":"site_admin_ai_settings_save__lang__dashboard_admin_ai_settings_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/smtp/diagnose":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Smtp Diagnose","description":"SMTP диагностика: TCP-подключение, EHLO capabilities, конфигурация.\n\nДоступен только администраторам. Не раскрывает пароли.","operationId":"site_admin_smtp_diagnose__lang__dashboard_admin_smtp_diagnose_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/smtp/test-send":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Smtp Test Send","description":"Отправляет тестовое письмо на email текущего администратора.\n\nЛогирует все шаги отправки включая TCP-connectivity, EHLO и ответ сервера.","operationId":"site_admin_smtp_test_send__lang__dashboard_admin_smtp_test_send_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/dashboard-admin/agents":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Agents List","description":"List all AI agents for admin.","operationId":"site_admin_agents_list__lang__dashboard_admin_agents_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/agents/{agent_id}/add-user":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Agent Add User","description":"Admin: add a user to agent's shared list.","operationId":"site_admin_agent_add_user__lang__dashboard_admin_agents__agent_id__add_user_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_agent_add_user__lang__dashboard_admin_agents__agent_id__add_user_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/agents/{agent_id}/visibility":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Agent Update Visibility","description":"Admin: change agent visibility.","operationId":"site_admin_agent_update_visibility__lang__dashboard_admin_agents__agent_id__visibility_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_agent_update_visibility__lang__dashboard_admin_agents__agent_id__visibility_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/agents/{agent_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Agent Delete","description":"Admin: delete an agent.","operationId":"site_admin_agent_delete__lang__dashboard_admin_agents__agent_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/ai-relevanter-runs":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ai Relevanter Runs","description":"Admin: list all relevance analysis runs with delete support.","operationId":"site_admin_ai_relevanter_runs__lang__dashboard_admin_ai_relevanter_runs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/ai-relevanter-runs/{run_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Delete Ai Relevanter Run","description":"Admin: delete a single relevance analysis run (cascade removes items).","operationId":"site_admin_delete_ai_relevanter_run__lang__dashboard_admin_ai_relevanter_runs__run_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"integer","title":"Run Id"}},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/chat-sessions":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Chat Sessions","description":"Admin: monitor all chat sessions with user info (latest 20).","operationId":"site_admin_chat_sessions__lang__dashboard_admin_chat_sessions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["site-admin-web"],"summary":"Site.Admin.Bulk Delete Chat Sessions","description":"Admin: bulk delete all chat sessions older than given number of days.","operationId":"site_admin_bulk_delete_chat_sessions__lang__dashboard_admin_chat_sessions_delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"older_than_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Delete sessions older than N days","default":30,"title":"Older Than Days"},"description":"Delete sessions older than N days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/chat-sessions/{session_id}":{"delete":{"tags":["site-admin-web"],"summary":"Site.Admin.Delete Chat Session","description":"Admin: delete any single chat session.","operationId":"site_admin_delete_chat_session__lang__dashboard_admin_chat_sessions__session_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/ai-billing":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ai Billing List","description":"Admin: AI Billing dashboard with token usage analytics.","operationId":"site_admin_ai_billing_list__lang__dashboard_admin_ai_billing_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/ai-billing/api/stats":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Ai Billing Stats Api","description":"Return aggregated AI token usage stats as JSON for the given period and provider.","operationId":"site_admin_ai_billing_stats_api__lang__dashboard_admin_ai_billing_api_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Period"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Site Admin Ai Billing Stats Api  Lang  Dashboard Admin Ai Billing Api Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/ai-billing/openai":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Ai Billing Openai","description":"Admin: open OpenAI billing dashboard.","operationId":"site_admin_ai_billing_openai__lang__dashboard_admin_ai_billing_openai_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/blog":{"get":{"tags":["site-admin-web"],"summary":"Site.Admin.Blog Moderation","description":"Admin: Blog moderation page with list of posts.","operationId":"site_admin_blog_moderation__lang__dashboard_admin_blog_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/blog/posts/{post_id}/approve":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Blog Approve","description":"Admin: Approve blog post.","operationId":"site_admin_blog_approve__lang__dashboard_admin_blog_posts__post_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/blog/posts/{post_id}/reject":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Blog Reject","description":"Admin: Reject blog post.","operationId":"site_admin_blog_reject__lang__dashboard_admin_blog_posts__post_id__reject_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_site_admin_blog_reject__lang__dashboard_admin_blog_posts__post_id__reject_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/dashboard-admin/blog/posts/{post_id}/delete":{"post":{"tags":["site-admin-web"],"summary":"Site.Admin.Blog Delete","description":"Admin: Delete blog post.","operationId":"site_admin_blog_delete__lang__dashboard_admin_blog_posts__post_id__delete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/text-analysis/":{"get":{"tags":["text-analysis"],"summary":"Text Analysis.Form","description":"Text-analysis form page. Login required.","operationId":"text_analysis_form__lang__text_analysis__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/text-analysis/compare":{"post":{"tags":["text-analysis"],"summary":"Text Analysis.Compare","description":"Run authorship comparison. Login required.","operationId":"text_analysis_compare__lang__text_analysis_compare_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_text_analysis_compare__lang__text_analysis_compare_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/diary/entries":{"post":{"tags":["diary-api"],"summary":"Create Entry","operationId":"create_entry_api_v1_diary_entries_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/diary/entries/{entry_id}":{"put":{"tags":["diary-api"],"summary":"Update Entry","operationId":"update_entry_api_v1_diary_entries__entry_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}},{"name":"expected_version","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Version"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryTeacherUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["diary-api"],"summary":"Delete Entry","operationId":"delete_entry_api_v1_diary_entries__entry_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["diary-api"],"summary":"Get Entry","operationId":"get_entry_api_v1_diary_entries__entry_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/diary/entries/{entry_id}/student":{"put":{"tags":["diary-api"],"summary":"Update Entry Student Fields","operationId":"update_entry_student_fields_api_v1_diary_entries__entry_id__student_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryStudentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/diary/student/{student_id}":{"get":{"tags":["diary-api"],"summary":"Get Student Entries","operationId":"get_student_entries_api_v1_diary_student__student_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"student_id","in":"path","required":true,"schema":{"type":"integer","title":"Student Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/diary/my":{"get":{"tags":["diary-api"],"summary":"Get My Entries","operationId":"get_my_entries_api_v1_diary_my_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiaryEntryListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/diary/":{"get":{"tags":["diary-ui"],"summary":"Diary Home","operationId":"diary_home__lang__diary__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/diary/student/{student_id}":{"get":{"tags":["diary-ui"],"summary":"Diary Student Profile","operationId":"diary_student_profile__lang__diary_student__student_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"integer","title":"Student Id"}},{"name":"subject_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/diary/entry/new":{"get":{"tags":["diary-ui"],"summary":"Diary New Entry Form","operationId":"diary_new_entry_form__lang__diary_entry_new_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"student_id","in":"query","required":true,"schema":{"type":"integer","title":"Student Id"}},{"name":"subject_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"}},{"name":"booking_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Booking Id"}},{"name":"lesson_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Date"}},{"name":"topic_covered","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Covered"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["diary-ui"],"summary":"Diary Create Entry Form","operationId":"diary_create_entry_form__lang__diary_entry_new_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_diary_create_entry_form__lang__diary_entry_new_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/diary/entry/{entry_id}":{"get":{"tags":["diary-ui"],"summary":"Diary Entry View","operationId":"diary_entry_view__lang__diary_entry__entry_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/diary/entry/{entry_id}/edit":{"get":{"tags":["diary-ui"],"summary":"Diary Edit Entry Form","operationId":"diary_edit_entry_form__lang__diary_entry__entry_id__edit_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["diary-ui"],"summary":"Diary Update Entry Form","operationId":"diary_update_entry_form__lang__diary_entry__entry_id__edit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_diary_update_entry_form__lang__diary_entry__entry_id__edit_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/diary/entry/{entry_id}/student-update":{"post":{"tags":["diary-ui"],"summary":"Diary Student Update Form","operationId":"diary_student_update_form__lang__diary_entry__entry_id__student_update_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"entry_id","in":"path","required":true,"schema":{"type":"integer","title":"Entry Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_diary_student_update_form__lang__diary_entry__entry_id__student_update_post"}}}},"responses":{"307":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/jobs/{job_name}":{"post":{"tags":["internal-jobs"],"summary":"Run Internal Job","operationId":"run_internal_job_api_internal_jobs__job_name__post","parameters":[{"name":"job_name","in":"path","required":true,"schema":{"type":"string","title":"Job Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Internal Job Api Internal Jobs  Job Name  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/categories":{"get":{"tags":["blog"],"summary":"List Blog Categories","description":"Получить список категорий блога с опциональным поиском по имени (?q=<name>).","operationId":"list_blog_categories_api_v1_blog_categories_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogCategoryResponse"},"title":"Response List Blog Categories Api V1 Blog Categories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["blog"],"summary":"Create Blog Category","description":"Создать новую категорию блога по имени (slug генерируется автоматически).","operationId":"create_blog_category_api_v1_blog_categories_post","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts":{"post":{"tags":["blog"],"summary":"Create Blog Post","description":"Создать новый блог-пост.","operationId":"create_blog_post_api_v1_blog_posts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["blog"],"summary":"List Blog Posts","description":"Получить список блог-постов.","operationId":"list_blog_posts_api_v1_blog_posts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"post_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Status"}},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogPostList"},"title":"Response List Blog Posts Api V1 Blog Posts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts/generate":{"post":{"tags":["blog"],"summary":"Generate Blog Post","description":"Поставить в очередь фоновую генерацию блог-поста.\n\nСоздаётся черновик (``status=draft``) и задача в очереди ARQ. Контент\nгенерируется воркером асинхронно; статус можно опрашивать через\n``GET /posts/generate/{task_id}``.","operationId":"generate_blog_post_api_v1_blog_posts_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateBlogPostRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateBlogPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts/generate/{task_id}":{"get":{"tags":["blog"],"summary":"Get Blog Generation Status","description":"Получить статус фоновой задачи генерации блог-поста.","operationId":"get_blog_generation_status_api_v1_blog_posts_generate__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogGenerationStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts/{post_id}":{"get":{"tags":["blog"],"summary":"Get Blog Post","description":"Получить блог-пост по ID.","operationId":"get_blog_post_api_v1_blog_posts__post_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["blog"],"summary":"Update Blog Post","description":"Обновить блог-пост.","operationId":"update_blog_post_api_v1_blog_posts__post_id__put","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["blog"],"summary":"Delete Blog Post","description":"Удалить блог-пост.","operationId":"delete_blog_post_api_v1_blog_posts__post_id__delete","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts/{post_id}/apply-edit":{"post":{"tags":["blog"],"summary":"Apply Blog Edit","description":"Сохранить ручное редактирование в текущей записи статьи.","operationId":"apply_blog_edit_api_v1_blog_posts__post_id__apply_edit_post","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostApplyEditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts/{post_id}/generate-image":{"post":{"tags":["blog"],"summary":"Generate Blog Image","description":"Generate and store a featured image for a blog post.","operationId":"generate_blog_image_api_v1_blog_posts__post_id__generate_image_post","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogImageGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogImageGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts/{post_id}/publish":{"post":{"tags":["blog"],"summary":"Publish Blog Post","description":"Опубликовать блог-пост.","operationId":"publish_blog_post_api_v1_blog_posts__post_id__publish_post","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/users/{user_id}/posts":{"get":{"tags":["blog"],"summary":"Get User Posts","description":"Получить посты конкретного пользователя.","operationId":"get_user_posts_api_v1_blog_users__user_id__posts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogPostList"},"title":"Response Get User Posts Api V1 Blog Users  User Id  Posts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/posts/{post_id}/reactions":{"post":{"tags":["blog"],"summary":"Add Reaction","description":"Добавить реакцию к посту (лайк/дислайк). Защита от мультилайков от одного пользователя.","operationId":"add_reaction_api_v1_blog_posts__post_id__reactions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}},{"name":"reaction_type","in":"query","required":true,"schema":{"type":"string","title":"Reaction Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/blog/":{"get":{"tags":["blog-web"],"summary":"Blog Home","description":"Главная страница блога.","operationId":"blog_home__lang__blog__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/blog/posts/{slug}":{"get":{"tags":["blog-web"],"summary":"Blog Post Detail","description":"Просмотр отдельного блог-поста.","operationId":"blog_post_detail__lang__blog_posts__slug__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/blog/write":{"get":{"tags":["blog-web"],"summary":"Blog Write Page","description":"Форма написания нового блог-поста.","operationId":"blog_write_page__lang__blog_write_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/blog/edit/{post_id}":{"get":{"tags":["blog-web"],"summary":"Blog Edit Page","description":"Форма редактирования блог-поста.","operationId":"blog_edit_page__lang__blog_edit__post_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"integer","title":"Post Id"}},{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/blog/my-posts":{"get":{"tags":["blog-web"],"summary":"Blog My Posts","description":"Список постов пользователя или всех авторов для администратора.","operationId":"blog_my_posts__lang__blog_my_posts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/models":{"get":{"tags":["blog-ai"],"summary":"List Models","description":"Список chat-моделей, доступных пользователю (аналогично ИИ-чату).","operationId":"list_models_api_v1_blog_ai_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListModelsResponse"}}}}}}},"/api/v1/blog/ai/preview-prompt":{"post":{"tags":["blog-ai"],"summary":"Preview Blog Prompt","description":"Build the editable final article prompt, including the user's RAG context.","operationId":"preview_blog_prompt_api_v1_blog_ai_preview_prompt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPromptPreviewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPromptPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/generate-title":{"post":{"tags":["blog-ai"],"summary":"Generate Title","description":"Сгенерировать заголовок для блог-поста.","operationId":"generate_title_api_v1_blog_ai_generate_title_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTitleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/generate-excerpt":{"post":{"tags":["blog-ai"],"summary":"Generate Excerpt","description":"Сгенерировать описание (excerpt) для блог-поста.","operationId":"generate_excerpt_api_v1_blog_ai_generate_excerpt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateExcerptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateExcerptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/improve-content":{"post":{"tags":["blog-ai"],"summary":"Improve Content","description":"Улучшить содержание блог-поста.","operationId":"improve_content_api_v1_blog_ai_improve_content_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImproveContentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImproveContentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/generate-seo-metadata":{"post":{"tags":["blog-ai"],"summary":"Generate Seo Metadata","description":"Сгенерировать SEO метаданные для блог-поста.","operationId":"generate_seo_metadata_api_v1_blog_ai_generate_seo_metadata_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSEOMetadataRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSEOMetadataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/generate-content":{"post":{"tags":["blog-ai"],"summary":"Generate Content","description":"Сгенерировать полный текст блог-поста.","operationId":"generate_content_api_v1_blog_ai_generate_content_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateContentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateContentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/generate-with-prompt":{"post":{"tags":["blog-ai"],"summary":"Generate With Prompt","description":"Сгенерировать контент используя пользовательский промпт.","operationId":"generate_with_prompt_api_v1_blog_ai_generate_with_prompt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateWithPromptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateWithPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blog/ai/user-prompts":{"get":{"tags":["blog-ai"],"summary":"Get User Prompts","description":"Получить сохраненные промпты пользователя.","operationId":"get_user_prompts_api_v1_blog_ai_user_prompts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserPromptsResponse"}}}}},"deprecated":true},"post":{"tags":["blog-ai"],"summary":"Save User Prompt","description":"Сохранить пользовательский промпт для повторного использования.","operationId":"save_user_prompt_api_v1_blog_ai_user_prompts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavePromptRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavePromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true}},"/api/v1/blog/ai/user-prompts/{prompt_id}":{"delete":{"tags":["blog-ai"],"summary":"Delete User Prompt","description":"Удалить сохранённый промпт пользователя.","operationId":"delete_user_prompt_api_v1_blog_ai_user_prompts__prompt_id__delete","deprecated":true,"parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"integer","title":"Prompt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletePromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prompts/":{"get":{"tags":["prompts"],"summary":"List Prompts","description":"List the current user's active prompts with optional category filter and pagination.","operationId":"list_prompts_api_v1_prompts__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["prompts"],"summary":"Create Prompt","description":"Create a new prompt for the current user. Returns 409 if an identical prompt exists.","operationId":"create_prompt_api_v1_prompts__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prompts/{prompt_id}":{"put":{"tags":["prompts"],"summary":"Update Prompt","description":"Partially update a prompt that belongs to the current user.","operationId":"update_prompt_api_v1_prompts__prompt_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"integer","title":"Prompt Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["prompts"],"summary":"Delete Prompt","description":"Delete a prompt that belongs to the current user.","operationId":"delete_prompt_api_v1_prompts__prompt_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"integer","title":"Prompt Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prompts/generate":{"post":{"tags":["prompts"],"summary":"Generate Prompt","description":"Use AI to expand a short description into a detailed, ready-to-use prompt.","operationId":"generate_prompt_api_v1_prompts_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePromptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/{lang}/users/calendar":{"get":{"tags":["my-calendar"],"summary":"My Calendar.Page","operationId":"my_calendar_page__lang__users_calendar_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/calendar/api/week":{"get":{"tags":["my-calendar"],"summary":"My Calendar.Week","operationId":"my_calendar_week__lang__users_calendar_api_week_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/calendar/api/day/{day}":{"get":{"tags":["my-calendar"],"summary":"My Calendar.Day","operationId":"my_calendar_day__lang__users_calendar_api_day__day__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"day","in":"path","required":true,"schema":{"type":"string","format":"date","title":"Day"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/calendar/api/notify":{"post":{"tags":["my-calendar"],"summary":"My Calendar.Notify","operationId":"my_calendar_notify__lang__users_calendar_api_notify_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarNotificationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/calendar/api/cancel":{"post":{"tags":["my-calendar"],"summary":"My Calendar.Cancel","operationId":"my_calendar_cancel__lang__users_calendar_api_cancel_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarBookingActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/calendar/api/book":{"post":{"tags":["my-calendar"],"summary":"My Calendar.Book","operationId":"my_calendar_book__lang__users_calendar_api_book_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarBookingCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{lang}/users/calendar/api/booking/{booking_id}":{"get":{"tags":["my-calendar"],"summary":"My Calendar.Booking","operationId":"my_calendar_booking__lang__users_calendar_api_booking__booking_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"lang","in":"path","required":true,"schema":{"type":"string","title":"Lang"}},{"name":"booking_id","in":"path","required":true,"schema":{"type":"integer","title":"Booking Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Redirect To Default Lang","description":"Redirect root to language from cookie or default","operationId":"redirect_to_default_lang__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AIQuizDraftAnswer":{"properties":{"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"},"is_correct":{"type":"boolean","title":"Is Correct","default":false}},"type":"object","required":["text"],"title":"AIQuizDraftAnswer","description":"Answer variant generated by AI for one question."},"AIQuizDraftDebug":{"properties":{"trace_id":{"type":"string","title":"Trace Id"},"ai_provider":{"type":"string","title":"Ai Provider","default":"openai"},"ai_usage_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ai Usage Mode"},"ai_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ai Model"},"usage_prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Prompt Tokens"},"usage_completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Completion Tokens"},"usage_total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Total Tokens"},"intent_topic":{"type":"string","title":"Intent Topic"},"intent_fallback":{"type":"boolean","title":"Intent Fallback","default":false},"intents":{"items":{"type":"string"},"type":"array","title":"Intents"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"rag_query_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rag Query Preview"},"has_topic_knowledge":{"type":"boolean","title":"Has Topic Knowledge","default":false},"topic_record_count":{"type":"integer","title":"Topic Record Count","default":0},"rag_snippets_used":{"type":"integer","title":"Rag Snippets Used","default":0},"rag_snippets":{"items":{"$ref":"#/components/schemas/AIQuizDraftDebugSnippet"},"type":"array","title":"Rag Snippets"},"rag_enabled":{"type":"boolean","title":"Rag Enabled","default":true},"rag_rerank_enabled":{"type":"boolean","title":"Rag Rerank Enabled","default":false},"rag_hybrid_enabled":{"type":"boolean","title":"Rag Hybrid Enabled","default":false}},"type":"object","required":["trace_id","intent_topic"],"title":"AIQuizDraftDebug","description":"Debug metadata for AI quiz generation and RAG retrieval."},"AIQuizDraftDebugSnippet":{"properties":{"chunk_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunk Id"},"topic":{"type":"string","title":"Topic"},"similarity":{"type":"number","title":"Similarity"},"content_preview":{"type":"string","title":"Content Preview"},"reranked":{"type":"boolean","title":"Reranked","default":false},"pipeline":{"type":"string","title":"Pipeline","default":"vector"},"rrf_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rrf Score"}},"type":"object","required":["topic","similarity","content_preview"],"title":"AIQuizDraftDebugSnippet","description":"One retrieved RAG snippet with similarity score."},"AIQuizDraftQuestion":{"properties":{"text":{"type":"string","maxLength":5000,"minLength":1,"title":"Text"},"type":{"type":"string","pattern":"^(single_choice|multiple_choice)$","title":"Type","default":"single_choice"},"image_url":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Image Url"},"answers":{"items":{"$ref":"#/components/schemas/AIQuizDraftAnswer"},"type":"array","title":"Answers"}},"type":"object","required":["text"],"title":"AIQuizDraftQuestion","description":"Quiz question generated by AI."},"AIQuizDraftRequest":{"properties":{"prompt":{"type":"string","maxLength":4000,"minLength":5,"title":"Prompt"},"language":{"type":"string","title":"Language","default":"ru"},"question_count":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Question Count","default":5},"difficulty":{"type":"string","pattern":"^(beginner|intermediate|advanced)$","title":"Difficulty","default":"beginner"},"topic_hint":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Topic Hint"},"model":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Model"},"use_rag":{"type":"boolean","title":"Use Rag","description":"Use personal knowledge base context","default":true},"use_rerank":{"type":"boolean","title":"Use Rerank","description":"Enable reranking for RAG results","default":true},"use_hybrid":{"type":"boolean","title":"Use Hybrid","description":"Enable hybrid vector and full-text search","default":true},"rag_limit":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Rag Limit","description":"Maximum number of RAG chunks","default":5},"rag_score_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Rag Score Threshold","description":"Minimum cosine similarity for accepted RAG chunks","default":0.5}},"type":"object","required":["prompt"],"title":"AIQuizDraftRequest","description":"Prompt payload for AI-assisted quiz draft generation."},"AIQuizDraftResponse":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"language":{"type":"string","title":"Language","default":"ru"},"status":{"type":"string","pattern":"^(draft|published|archived)$","title":"Status","default":"draft"},"access_type":{"type":"string","pattern":"^(public|registered|paid|subscription|private)$","title":"Access Type","default":"public"},"questions":{"items":{"$ref":"#/components/schemas/AIQuizDraftQuestion"},"type":"array","title":"Questions"},"debug":{"anyOf":[{"$ref":"#/components/schemas/AIQuizDraftDebug"},{"type":"null"}]}},"type":"object","required":["title"],"title":"AIQuizDraftResponse","description":"AI-generated draft for quiz creation form prefill."},"AITopicDraftRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"language":{"type":"string","title":"Language","default":"ru"},"level":{"$ref":"#/components/schemas/TopicLevel","default":"beginner"},"section_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Hint"},"question_count":{"type":"integer","title":"Question Count","default":5},"estimated_duration_minutes":{"type":"integer","title":"Estimated Duration Minutes","default":45},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"use_rag":{"type":"boolean","title":"Use Rag","description":"Use personal knowledge base context","default":true},"use_rerank":{"type":"boolean","title":"Use Rerank","description":"Enable reranking for RAG results","default":true},"use_hybrid":{"type":"boolean","title":"Use Hybrid","description":"Enable hybrid vector and full-text search","default":true},"rag_limit":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Rag Limit","description":"Maximum number of RAG chunks","default":5},"rag_score_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Rag Score Threshold","description":"Minimum cosine similarity for accepted RAG chunks","default":0.5}},"type":"object","required":["prompt"],"title":"AITopicDraftRequest","description":"Prompt payload for AI-assisted topic draft generation."},"AITopicDraftResponse":{"properties":{"title":{"type":"string","title":"Title"},"section":{"type":"string","title":"Section"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"level":{"$ref":"#/components/schemas/TopicLevel","default":"beginner"},"language":{"type":"string","title":"Language","default":"ru"},"estimated_duration_minutes":{"type":"integer","title":"Estimated Duration Minutes","default":45},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"intro_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intro Text"},"summary_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Prompt"},"system_prompt_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Template"},"questions":{"items":{"$ref":"#/components/schemas/CreateTopicQuestionRequest"},"type":"array","title":"Questions"},"debug":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Debug"}},"type":"object","required":["title","section"],"title":"AITopicDraftResponse","description":"AI-generated draft for topic creation form prefill."},"AdapterChatMessage":{"properties":{"role":{"type":"string","maxLength":40,"minLength":1,"title":"Role","default":"user"},"content":{"title":"Content"}},"type":"object","required":["content"],"title":"AdapterChatMessage"},"AdapterChatRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/AdapterChatMessage"},"type":"array","title":"Messages"},"model":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Model"},"scope":{"type":"string","enum":["global","forum","ai_tutor","ai_examiner"],"title":"Scope","default":"global"},"n":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"N","default":1},"provider":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Provider"}},"type":"object","title":"AdapterChatRequest"},"AdapterRAGRetrieveRequest":{"properties":{"user_id":{"type":"integer","minimum":1.0,"title":"User Id"},"topic_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Hint"},"query_text":{"type":"string","minLength":1,"title":"Query Text"},"limit":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Limit","default":5}},"type":"object","required":["user_id","query_text"],"title":"AdapterRAGRetrieveRequest"},"AdapterTextRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query"},"model":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Model"},"scope":{"type":"string","enum":["global","forum","ai_tutor","ai_examiner"],"title":"Scope","default":"global"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"},"provider":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Provider"}},"type":"object","required":["query"],"title":"AdapterTextRequest"},"AgentAIDraftRequest":{"properties":{"prompt":{"type":"string","maxLength":4000,"minLength":5,"title":"Prompt"},"topic_hint":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Topic Hint"},"ai_provider":{"$ref":"#/components/schemas/ProviderType","default":"deepseek"},"model":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Model"},"use_rag":{"type":"boolean","title":"Use Rag","default":true},"language":{"type":"string","maxLength":16,"title":"Language","default":"ru"}},"type":"object","required":["prompt"],"title":"AgentAIDraftRequest","description":"Prompt payload for AI-assisted agent draft generation."},"AgentAIDraftResponse":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"system_prompt":{"type":"string","maxLength":50000,"minLength":10,"title":"System Prompt"},"avatar_emoji":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Avatar Emoji"},"use_rag":{"type":"boolean","title":"Use Rag","default":true},"visibility":{"$ref":"#/components/schemas/AgentVisibility","default":"private"}},"type":"object","required":["name","system_prompt"],"title":"AgentAIDraftResponse","description":"AI-generated draft for agent creation form prefill."},"AgentCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system_prompt":{"type":"string","maxLength":50000,"minLength":10,"title":"System Prompt"},"avatar_emoji":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Avatar Emoji"},"visibility":{"$ref":"#/components/schemas/AgentVisibility","default":"private"},"shared_user_ids":{"items":{"type":"integer"},"type":"array","title":"Shared User Ids","default":[]},"use_rag":{"type":"boolean","title":"Use Rag","default":true}},"type":"object","required":["name","system_prompt"],"title":"AgentCreate","description":"Request to create a new AI agent."},"AgentListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"agents":{"items":{"$ref":"#/components/schemas/AgentResponse"},"type":"array","title":"Agents"}},"type":"object","required":["total","agents"],"title":"AgentListResponse","description":"Response with list of agents."},"AgentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"creator_id":{"type":"integer","title":"Creator Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system_prompt":{"type":"string","title":"System Prompt"},"avatar_emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Emoji"},"visibility":{"$ref":"#/components/schemas/AgentVisibility"},"shared_user_ids":{"items":{"type":"integer"},"type":"array","title":"Shared User Ids","default":[]},"is_active":{"type":"boolean","title":"Is Active"},"use_rag":{"type":"boolean","title":"Use Rag"},"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","name","system_prompt","visibility","is_active","use_rag","created_at","updated_at"],"title":"AgentResponse","description":"Response with agent details."},"AgentUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system_prompt":{"anyOf":[{"type":"string","maxLength":50000,"minLength":10},{"type":"null"}],"title":"System Prompt"},"avatar_emoji":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Avatar Emoji"},"visibility":{"anyOf":[{"$ref":"#/components/schemas/AgentVisibility"},{"type":"null"}]},"shared_user_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Shared User Ids"},"use_rag":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Rag"}},"type":"object","title":"AgentUpdate","description":"Request to update an existing AI agent."},"AgentVisibility":{"type":"string","enum":["private","public","custom"],"title":"AgentVisibility","description":"Visibility level for AI agents."},"AnswerSchema":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional answer identifier"},"text":{"type":"string","title":"Text","description":"Answer text"},"is_correct":{"type":"boolean","title":"Is Correct","description":"Marks whether the answer is correct","default":false},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation","description":"Explanation shown after the question is answered"},"points":{"type":"integer","minimum":0.0,"title":"Points","description":"Points awarded for this answer","default":1}},"type":"object","required":["text"],"title":"AnswerSchema","description":"Schema representing a single answer option."},"AntiCheatIncidentRequest":{"properties":{"incident_type":{"type":"string","title":"Incident Type","description":"Type of violation: focus_loss, dev_tools_detected, screenshot_blocked, etc."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Human-readable description of the incident"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional context (user_agent, ip, etc.)"}},"type":"object","required":["incident_type"],"title":"AntiCheatIncidentRequest","description":"Incoming report of suspected anti-cheat violation."},"AutoBlockIPPayload":{"properties":{"hours":{"type":"integer","maximum":168.0,"minimum":1.0,"title":"Hours","default":24},"limit":{"type":"integer","maximum":50000.0,"minimum":100.0,"title":"Limit","default":5000},"container_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Container Id"},"min_scanner_hits":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Min Scanner Hits","default":3},"min_total_hits":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Min Total Hits","default":5},"max_ips":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Max Ips","default":30},"ttl_hours":{"type":"integer","maximum":3.0,"minimum":2.0,"title":"Ttl Hours","default":3}},"type":"object","title":"AutoBlockIPPayload","description":"Request payload for temporary auto-blocking suspicious IPs from analytics."},"AvailableProvidersResponse":{"properties":{"providers":{"items":{"$ref":"#/components/schemas/ProviderConfigResponse"},"type":"array","title":"Providers"},"default_provider":{"$ref":"#/components/schemas/ProviderType"}},"type":"object","required":["providers","default_provider"],"title":"AvailableProvidersResponse","description":"Response with all available providers."},"BalanceResponse":{"properties":{"user_id":{"type":"integer","title":"User Id"},"available_credits":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Available Credits"},"reserved_credits":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Reserved Credits"},"total_earned":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Earned"},"total_spent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Spent"},"last_transaction_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Transaction At"}},"type":"object","required":["user_id","available_credits","reserved_credits","total_earned","total_spent"],"title":"BalanceResponse","description":"Current balance summary for a user — safe to expose in API responses."},"BalanceTransferRequest":{"properties":{"receiver_id":{"type":"integer","title":"Receiver Id"},"amount":{"type":"number","title":"Amount"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["receiver_id","amount"],"title":"BalanceTransferRequest"},"BlockIPPayload":{"properties":{"ip_address":{"type":"string","maxLength":64,"minLength":3,"title":"Ip Address"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"},"source":{"type":"string","maxLength":64,"minLength":3,"title":"Source","default":"manual_admin"}},"type":"object","required":["ip_address"],"title":"BlockIPPayload","description":"Request payload for adding IP to security blocklist."},"BlockUserAgentFromObservedPayload":{"properties":{"user_agent":{"type":"string","maxLength":1024,"minLength":3,"title":"User Agent"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"},"source":{"type":"string","maxLength":64,"minLength":3,"title":"Source","default":"security_analytics"}},"type":"object","required":["user_agent"],"title":"BlockUserAgentFromObservedPayload","description":"Request payload for creating block rule from observed full user-agent string."},"BlockUserAgentPayload":{"properties":{"pattern":{"type":"string","maxLength":255,"minLength":3,"title":"Pattern"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"},"source":{"type":"string","maxLength":64,"minLength":3,"title":"Source","default":"manual_admin"}},"type":"object","required":["pattern"],"title":"BlockUserAgentPayload","description":"Request payload for adding user-agent pattern to security blocklist."},"BlogCategoryResponse":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["name","slug","id","created_at","updated_at"],"title":"BlogCategoryResponse","description":"Schema for blog category response."},"BlogGenerationStatusResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"status":{"type":"string","title":"Status"},"post_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Post Id"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["task_id","status"],"title":"BlogGenerationStatusResponse","description":"Polling response describing the state of a generation task."},"BlogImageGenerateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"type":"string","title":"Content"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"size":{"type":"string","title":"Size","default":"1024x1024"},"quality":{"type":"string","title":"Quality","default":"standard"},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style"}},"type":"object","required":["content"],"title":"BlogImageGenerateRequest","description":"Schema for generating a blog featured image."},"BlogImageGenerateResponse":{"properties":{"image_url":{"type":"string","title":"Image Url"},"file_path":{"type":"string","title":"File Path"}},"type":"object","required":["image_url","file_path"],"title":"BlogImageGenerateResponse"},"BlogPostApplyEditRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"content":{"type":"string","title":"Content"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"author_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author Id"},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"},"seo_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Seo Keywords"},"ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ai Generated"},"ai_usage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ai Usage"}},"type":"object","required":["content"],"title":"BlogPostApplyEditRequest","description":"Schema for applying manual article edits as a new published version."},"BlogPostCreate":{"properties":{"title":{"type":"string","title":"Title"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"content":{"type":"string","title":"Content"},"language":{"type":"string","title":"Language","default":"ru"},"category_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Category Ids"},"ai_generated":{"type":"boolean","title":"Ai Generated","default":false},"ai_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ai Tools"},"ai_usage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ai Usage"}},"type":"object","required":["title","content"],"title":"BlogPostCreate","description":"Schema for creating a blog post."},"BlogPostList":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"slug":{"type":"string","title":"Slug"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"user_id":{"type":"integer","title":"User Id"},"status":{"$ref":"#/components/schemas/BlogPostStatus"},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url"},"view_count":{"type":"integer","title":"View Count","default":0},"comment_count":{"type":"integer","title":"Comment Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"}},"type":"object","required":["id","title","slug","user_id","status","created_at","updated_at"],"title":"BlogPostList","description":"Schema for blog post in list view."},"BlogPostResponse":{"properties":{"title":{"type":"string","title":"Title"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"content":{"type":"string","title":"Content"},"language":{"type":"string","title":"Language","default":"ru"},"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"status":{"$ref":"#/components/schemas/BlogPostStatus"},"ai_generated":{"type":"boolean","title":"Ai Generated"},"ai_tools":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Ai Tools"},"reactions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Reactions"},"view_count":{"type":"integer","title":"View Count","default":0},"comment_count":{"type":"integer","title":"Comment Count","default":0},"version":{"type":"integer","title":"Version","default":1},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"},"seo_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Seo Keywords"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"topic_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Topic Id"}},"type":"object","required":["title","content","id","user_id","status","ai_generated","created_at","updated_at"],"title":"BlogPostResponse","description":"Schema for blog post response."},"BlogPostStatus":{"type":"string","enum":["draft","published","archived","rejected"],"title":"BlogPostStatus","description":"Publication status for blog posts."},"BlogPostUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"author_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author Id"},"status":{"anyOf":[{"$ref":"#/components/schemas/BlogPostStatus"},{"type":"null"}]},"category_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Category Ids"},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url"},"seo_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Title"},"seo_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Description"},"seo_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Seo Keywords"},"ai_generated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ai Generated"},"ai_usage":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ai Usage"}},"type":"object","title":"BlogPostUpdate","description":"Schema for updating a blog post."},"BlogPromptPreviewRequest":{"properties":{"topic":{"type":"string","title":"Topic"},"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keywords"},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt"},"language":{"type":"string","title":"Language","default":"ru"},"use_rag":{"type":"boolean","title":"Use Rag","default":true}},"type":"object","required":["topic"],"title":"BlogPromptPreviewRequest"},"BlogPromptPreviewResponse":{"properties":{"final_prompt":{"type":"string","title":"Final Prompt"},"rag_context":{"type":"string","title":"Rag Context","default":""},"models":{"items":{"type":"string"},"type":"array","title":"Models"},"preferred_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Model"}},"type":"object","required":["final_prompt","models"],"title":"BlogPromptPreviewResponse"},"Body_admin_messages_edit__lang__forum_admin_messages__message_id__edit_post":{"properties":{"content":{"type":"string","title":"Content"},"author_name":{"type":"string","title":"Author Name"},"status":{"type":"string","title":"Status"}},"type":"object","required":["content","author_name","status"],"title":"Body_admin_messages_edit__lang__forum_admin_messages__message_id__edit_post"},"Body_admin_topics_create__lang__forum_admin_topics_create_post":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"task_type":{"type":"string","title":"Task Type","default":"general"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"category_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subcategory Id"}},"type":"object","required":["title"],"title":"Body_admin_topics_create__lang__forum_admin_topics_create_post"},"Body_admin_topics_edit__lang__forum_admin_topics__topic_id__edit_post":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"task_type":{"type":"string","title":"Task Type"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subcategory Id"}},"type":"object","required":["title","task_type"],"title":"Body_admin_topics_edit__lang__forum_admin_topics__topic_id__edit_post"},"Body_ai_examiner_rag_library_delete_file_group__lang__ai_examiner_rag_library_files_delete_post":{"properties":{"filename":{"type":"string","title":"Filename"}},"type":"object","required":["filename"],"title":"Body_ai_examiner_rag_library_delete_file_group__lang__ai_examiner_rag_library_files_delete_post"},"Body_ai_examiner_rag_library_edit_submit__lang__ai_examiner_rag_library__record_id__edit_post":{"properties":{"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"content":{"type":"string","title":"Content"}},"type":"object","required":["topic","content"],"title":"Body_ai_examiner_rag_library_edit_submit__lang__ai_examiner_rag_library__record_id__edit_post"},"Body_ai_examiner_rag_upload_preview_api__lang__ai_examiner_rag_preview_post":{"properties":{"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"manual_contents":{"type":"string","title":"Manual Contents","default":""},"upload_file":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Upload File"}},"type":"object","required":["topic"],"title":"Body_ai_examiner_rag_upload_preview_api__lang__ai_examiner_rag_preview_post"},"Body_ai_examiner_rag_upload_submit__lang__ai_examiner_rag_upload_post":{"properties":{"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"manual_contents":{"type":"string","title":"Manual Contents","default":""},"action":{"type":"string","title":"Action","default":"ingest"},"upload_file":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Upload File"}},"type":"object","required":["topic"],"title":"Body_ai_examiner_rag_upload_submit__lang__ai_examiner_rag_upload_post"},"Body_ai_examiner_voice_stt__lang__ai_examiner_sessions__session_id__voice_stt_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["audio"],"title":"Body_ai_examiner_voice_stt__lang__ai_examiner_sessions__session_id__voice_stt_post"},"Body_ai_relevanter_manual_parse_topic__lang__ai_relevanter_manual_parse_topic_post":{"properties":{"topic_url":{"type":"string","title":"Topic Url"},"max_messages":{"type":"integer","title":"Max Messages","default":50},"parse_all":{"type":"boolean","title":"Parse All","default":false}},"type":"object","required":["topic_url"],"title":"Body_ai_relevanter_manual_parse_topic__lang__ai_relevanter_manual_parse_topic_post"},"Body_ai_relevanter_manual_run_update__lang__ai_relevanter_manual_runs__run_id__update_post":{"properties":{"title":{"type":"string","title":"Title","default":""},"description":{"type":"string","title":"Description","default":""},"first_message":{"type":"string","title":"First Message","default":""},"message_author":{"items":{"type":"string"},"type":"array","title":"Message Author","default":[]},"message_content":{"items":{"type":"string"},"type":"array","title":"Message Content","default":[]},"use_llm_explain":{"type":"boolean","title":"Use Llm Explain","default":false},"use_llm_scoring":{"type":"boolean","title":"Use Llm Scoring","default":false},"llm_provider":{"type":"string","title":"Llm Provider","default":""},"llm_chat_model":{"type":"string","title":"Llm Chat Model","default":""}},"type":"object","title":"Body_ai_relevanter_manual_run_update__lang__ai_relevanter_manual_runs__run_id__update_post"},"Body_ai_relevanter_manual_save__lang__ai_relevanter_manual_save_post":{"properties":{"title":{"type":"string","title":"Title","default":""},"description":{"type":"string","title":"Description","default":""},"first_message":{"type":"string","title":"First Message","default":""},"message_author":{"items":{"type":"string"},"type":"array","title":"Message Author","default":[]},"message_content":{"items":{"type":"string"},"type":"array","title":"Message Content","default":[]},"use_llm_explain":{"type":"boolean","title":"Use Llm Explain","default":false},"use_llm_scoring":{"type":"boolean","title":"Use Llm Scoring","default":false},"llm_provider":{"type":"string","title":"Llm Provider","default":""},"llm_chat_model":{"type":"string","title":"Llm Chat Model","default":""},"upload_file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Upload File"}},"type":"object","title":"Body_ai_relevanter_manual_save__lang__ai_relevanter_manual_save_post"},"Body_ai_teacher_create__lang__ai_teacher_create_post":{"properties":{"bot_user_id":{"type":"integer","title":"Bot User Id"},"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"default_provider":{"type":"string","title":"Default Provider","default":"openai"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model"},"price_per_session":{"type":"string","title":"Price Per Session","default":"0.00"},"rag_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rag Domain"},"use_owner_rag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Use Owner Rag"},"is_active":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Active"},"linked_subject_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Linked Subject Ids"},"allowed_models_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Allowed Models Json"}},"type":"object","required":["bot_user_id","display_name"],"title":"Body_ai_teacher_create__lang__ai_teacher_create_post"},"Body_ai_teacher_edit__lang__ai_teacher__profile_id__edit_post":{"properties":{"display_name":{"type":"string","title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"default_provider":{"type":"string","title":"Default Provider","default":"openai"},"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model"},"price_per_session":{"type":"string","title":"Price Per Session","default":"0.00"},"rag_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rag Domain"},"use_owner_rag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Use Owner Rag"},"is_active":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Active"},"linked_subject_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Linked Subject Ids"},"allowed_models_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Allowed Models Json"}},"type":"object","required":["display_name"],"title":"Body_ai_teacher_edit__lang__ai_teacher__profile_id__edit_post"},"Body_ai_tutor_rag_library_delete_file_group__lang__ai_tutor_rag_library_files_delete_post":{"properties":{"filename":{"type":"string","title":"Filename"}},"type":"object","required":["filename"],"title":"Body_ai_tutor_rag_library_delete_file_group__lang__ai_tutor_rag_library_files_delete_post"},"Body_ai_tutor_rag_library_edit_submit__lang__ai_tutor_rag_library__record_id__edit_post":{"properties":{"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"content":{"type":"string","title":"Content"}},"type":"object","required":["topic","content"],"title":"Body_ai_tutor_rag_library_edit_submit__lang__ai_tutor_rag_library__record_id__edit_post"},"Body_ai_tutor_rag_upload_preview_api__lang__ai_tutor_rag_preview_post":{"properties":{"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"manual_contents":{"type":"string","title":"Manual Contents","default":""},"upload_file":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Upload File"}},"type":"object","required":["topic"],"title":"Body_ai_tutor_rag_upload_preview_api__lang__ai_tutor_rag_preview_post"},"Body_ai_tutor_rag_upload_submit__lang__ai_tutor_rag_upload_post":{"properties":{"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"manual_contents":{"type":"string","title":"Manual Contents","default":""},"action":{"type":"string","title":"Action","default":"ingest"},"upload_file":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Upload File"}},"type":"object","required":["topic"],"title":"Body_ai_tutor_rag_upload_submit__lang__ai_tutor_rag_upload_post"},"Body_ai_tutor_voice_stt__lang__ai_tutor_sessions__session_id__voice_stt_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["audio"],"title":"Body_ai_tutor_voice_stt__lang__ai_tutor_sessions__session_id__voice_stt_post"},"Body_delete_quiz_image__lang__quizzes_delete_image_post":{"properties":{"image_url":{"type":"string","title":"Image Url"}},"type":"object","required":["image_url"],"title":"Body_delete_quiz_image__lang__quizzes_delete_image_post"},"Body_diary_create_entry_form__lang__diary_entry_new_post":{"properties":{"student_id":{"type":"integer","title":"Student Id"},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"},"booking_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Booking Id"},"lesson_date":{"type":"string","title":"Lesson Date"},"entry_type":{"type":"string","title":"Entry Type","default":"manual_teacher"},"topic_covered":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Covered"},"lesson_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Notes"},"grade":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade"},"attendance":{"type":"string","title":"Attendance","default":"present"},"section_name":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Section Name"},"strengths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Strengths"},"weaknesses":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Weaknesses"},"recommendations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recommendations"}},"type":"object","required":["student_id","lesson_date"],"title":"Body_diary_create_entry_form__lang__diary_entry_new_post"},"Body_diary_student_update_form__lang__diary_entry__entry_id__student_update_post":{"properties":{"is_completed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Completed"},"student_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Student Comment"}},"type":"object","title":"Body_diary_student_update_form__lang__diary_entry__entry_id__student_update_post"},"Body_diary_update_entry_form__lang__diary_entry__entry_id__edit_post":{"properties":{"lesson_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Date"},"topic_covered":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Covered"},"lesson_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Notes"},"grade":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade"},"attendance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attendance"},"is_visible_to_student":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Is Visible To Student"},"reviewed_by_teacher":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed By Teacher"},"expected_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Version"},"section_name":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Section Name"},"strengths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Strengths"},"weaknesses":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Weaknesses"},"recommendations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recommendations"}},"type":"object","title":"Body_diary_update_entry_form__lang__diary_entry__entry_id__edit_post"},"Body_doc_recognition_extract_api__lang__doc_recognition_extract_post":{"properties":{"upload_file":{"type":"string","contentMediaType":"application/octet-stream","title":"Upload File"},"chunk_size":{"type":"integer","title":"Chunk Size","default":1000},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100}},"type":"object","required":["upload_file"],"title":"Body_doc_recognition_extract_api__lang__doc_recognition_extract_post"},"Body_doc_recognition_ingest_api__lang__doc_recognition_ingest_post":{"properties":{"upload_file":{"type":"string","contentMediaType":"application/octet-stream","title":"Upload File"},"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"file"},"chunk_size":{"type":"integer","title":"Chunk Size","default":1000},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100}},"type":"object","required":["upload_file","topic"],"title":"Body_doc_recognition_ingest_api__lang__doc_recognition_ingest_post"},"Body_doc_recognition_process_stream_api__lang__doc_recognition_process_stream_post":{"properties":{"upload_file":{"type":"string","contentMediaType":"application/octet-stream","title":"Upload File"},"topic":{"type":"string","title":"Topic","default":""},"source_type":{"type":"string","title":"Source Type","default":"file"},"chunk_size":{"type":"integer","title":"Chunk Size","default":1000},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100},"action":{"type":"string","title":"Action","default":"extract"},"vision_model":{"type":"string","title":"Vision Model","default":""}},"type":"object","required":["upload_file"],"title":"Body_doc_recognition_process_stream_api__lang__doc_recognition_process_stream_post"},"Body_doc_recognition_queue_ingest_api__lang__doc_recognition_queue_ingest_post":{"properties":{"upload_file":{"type":"string","contentMediaType":"application/octet-stream","title":"Upload File"},"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type","default":"file"},"chunk_size":{"type":"integer","title":"Chunk Size","default":1000},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100},"domain":{"type":"string","title":"Domain","default":""}},"type":"object","required":["upload_file","topic"],"title":"Body_doc_recognition_queue_ingest_api__lang__doc_recognition_queue_ingest_post"},"Body_doc_recognition_upload_submit__lang__doc_recognition_upload_post":{"properties":{"upload_file":{"type":"string","contentMediaType":"application/octet-stream","title":"Upload File"},"topic":{"type":"string","title":"Topic","default":""},"source_type":{"type":"string","title":"Source Type","default":"file"},"chunk_size":{"type":"integer","title":"Chunk Size","default":1000},"chunk_overlap":{"type":"integer","title":"Chunk Overlap","default":100},"action":{"type":"string","title":"Action","default":"extract"}},"type":"object","required":["upload_file"],"title":"Body_doc_recognition_upload_submit__lang__doc_recognition_upload_post"},"Body_forum_admin_ai_bots_example_create__lang__forum_admin_ai_bots__user_id__examples_create_post":{"properties":{"content":{"type":"string","title":"Content"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"thread_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Id"},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"}},"type":"object","required":["content"],"title":"Body_forum_admin_ai_bots_example_create__lang__forum_admin_ai_bots__user_id__examples_create_post"},"Body_forum_admin_ai_bots_example_edit__lang__forum_admin_ai_bots__user_id__examples__example_id__edit_post":{"properties":{"content":{"type":"string","title":"Content"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"thread_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Id"},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"}},"type":"object","required":["content"],"title":"Body_forum_admin_ai_bots_example_edit__lang__forum_admin_ai_bots__user_id__examples__example_id__edit_post"},"Body_forum_admin_ai_bots_import_examples__lang__forum_admin_ai_bots__user_id__import_examples_post":{"properties":{"filename":{"type":"string","title":"Filename"}},"type":"object","required":["filename"],"title":"Body_forum_admin_ai_bots_import_examples__lang__forum_admin_ai_bots__user_id__import_examples_post"},"Body_forum_admin_ai_bots_import_profile__lang__forum_admin_ai_bots__user_id__import_profile_post":{"properties":{"filename":{"type":"string","title":"Filename"}},"type":"object","required":["filename"],"title":"Body_forum_admin_ai_bots_import_profile__lang__forum_admin_ai_bots__user_id__import_profile_post"},"Body_forum_admin_ai_bots_profile_generate__lang__forum_admin_ai_bots__user_id__profile_generate_post":{"properties":{"model":{"type":"string","title":"Model","default":""},"personality_hint":{"type":"string","title":"Personality Hint","default":""}},"type":"object","title":"Body_forum_admin_ai_bots_profile_generate__lang__forum_admin_ai_bots__user_id__profile_generate_post"},"Body_forum_admin_ai_bots_profile_update__lang__forum_admin_ai_bots__user_id__profile_post":{"properties":{"name":{"type":"string","title":"Name","default":""},"personality":{"type":"string","title":"Personality","default":""},"background":{"type":"string","title":"Background","default":""},"expertise":{"type":"string","title":"Expertise","default":""},"communication_style":{"type":"string","title":"Communication Style","default":""},"system_prompt":{"type":"string","title":"System Prompt","default":""},"preferences":{"type":"string","title":"Preferences","default":"{}"},"llm_model":{"type":"string","title":"Llm Model","default":""}},"type":"object","title":"Body_forum_admin_ai_bots_profile_update__lang__forum_admin_ai_bots__user_id__profile_post"},"Body_forum_admin_ai_message_create_post__lang__forum_admin_messages_ai_create_post":{"properties":{"topic_id":{"type":"string","title":"Topic Id"},"user_id":{"type":"string","title":"User Id"},"reply_to":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reply To"}},"type":"object","required":["topic_id","user_id"],"title":"Body_forum_admin_ai_message_create_post__lang__forum_admin_messages_ai_create_post"},"Body_forum_admin_ai_profile_create__lang__forum_admin_profiles_create_post":{"properties":{"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","title":"Name"},"personality":{"type":"string","title":"Personality","default":""},"background":{"type":"string","title":"Background","default":""},"expertise":{"type":"string","title":"Expertise","default":""},"communication_style":{"type":"string","title":"Communication Style","default":""},"system_prompt":{"type":"string","title":"System Prompt","default":""},"preferences":{"type":"string","title":"Preferences","default":"{}"}},"type":"object","required":["user_id","name"],"title":"Body_forum_admin_ai_profile_create__lang__forum_admin_profiles_create_post"},"Body_forum_admin_ai_profile_edit__lang__forum_admin_profiles__profile_id__edit_post":{"properties":{"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","title":"Name"},"personality":{"type":"string","title":"Personality","default":""},"background":{"type":"string","title":"Background","default":""},"expertise":{"type":"string","title":"Expertise","default":""},"communication_style":{"type":"string","title":"Communication Style","default":""},"system_prompt":{"type":"string","title":"System Prompt","default":""},"preferences":{"type":"string","title":"Preferences","default":"{}"}},"type":"object","required":["user_id","name"],"title":"Body_forum_admin_ai_profile_edit__lang__forum_admin_profiles__profile_id__edit_post"},"Body_forum_admin_ai_profile_messages_create__lang__forum_admin_profiles__profile_id__messages_create_post":{"properties":{"content":{"type":"string","title":"Content"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"thread_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Id"},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"}},"type":"object","required":["content"],"title":"Body_forum_admin_ai_profile_messages_create__lang__forum_admin_profiles__profile_id__messages_create_post"},"Body_forum_admin_category_create_post__lang__forum_admin_categories_create_post":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"slug":{"type":"string","title":"Slug","default":""},"color":{"type":"string","title":"Color","default":""},"icon":{"type":"string","title":"Icon","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name"],"title":"Body_forum_admin_category_create_post__lang__forum_admin_categories_create_post"},"Body_forum_admin_category_edit_post__lang__forum_admin_categories__category_id__edit_post":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"slug":{"type":"string","title":"Slug","default":""},"color":{"type":"string","title":"Color","default":""},"icon":{"type":"string","title":"Icon","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name"],"title":"Body_forum_admin_category_edit_post__lang__forum_admin_categories__category_id__edit_post"},"Body_forum_admin_send_message_post__lang__forum_admin_send_messages_send_post":{"properties":{"receiver_id":{"type":"integer","title":"Receiver Id"},"message_text":{"type":"string","title":"Message Text"}},"type":"object","required":["receiver_id","message_text"],"title":"Body_forum_admin_send_message_post__lang__forum_admin_send_messages_send_post"},"Body_forum_admin_subcategory_create_post__lang__forum_admin_subcategories_create_post":{"properties":{"name":{"type":"string","title":"Name"},"category_id":{"type":"integer","title":"Category Id"},"description":{"type":"string","title":"Description","default":""},"slug":{"type":"string","title":"Slug","default":""},"color":{"type":"string","title":"Color","default":""},"icon":{"type":"string","title":"Icon","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name","category_id"],"title":"Body_forum_admin_subcategory_create_post__lang__forum_admin_subcategories_create_post"},"Body_forum_admin_subcategory_edit_post__lang__forum_admin_subcategories__subcategory_id__edit_post":{"properties":{"name":{"type":"string","title":"Name"},"category_id":{"type":"integer","title":"Category Id"},"description":{"type":"string","title":"Description","default":""},"slug":{"type":"string","title":"Slug","default":""},"color":{"type":"string","title":"Color","default":""},"icon":{"type":"string","title":"Icon","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name","category_id"],"title":"Body_forum_admin_subcategory_edit_post__lang__forum_admin_subcategories__subcategory_id__edit_post"},"Body_forum_admin_task_delete_post__lang__forum_admin_tasks__task_id__delete_post":{"properties":{"error_message":{"type":"string","title":"Error Message","default":""}},"type":"object","title":"Body_forum_admin_task_delete_post__lang__forum_admin_tasks__task_id__delete_post"},"Body_forum_admin_task_edit_post__lang__forum_admin_tasks__task_id__edit_post":{"properties":{"status":{"type":"string","title":"Status"},"result":{"type":"string","title":"Result","default":""},"error_message":{"type":"string","title":"Error Message","default":""}},"type":"object","required":["status"],"title":"Body_forum_admin_task_edit_post__lang__forum_admin_tasks__task_id__edit_post"},"Body_forum_admin_topic_import_post__lang__forum_admin_topics_import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"category_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subcategory Id"}},"type":"object","required":["file"],"title":"Body_forum_admin_topic_import_post__lang__forum_admin_topics_import_post"},"Body_image_analysis_compare__lang__image_analysis_compare_post":{"properties":{"image_a":{"type":"string","contentMediaType":"application/octet-stream","title":"Image A","description":"Первое изображение"},"image_b":{"type":"string","contentMediaType":"application/octet-stream","title":"Image B","description":"Второе изображение"},"use_perceptual":{"type":"boolean","title":"Use Perceptual","description":"Использовать перцептивные хэши","default":false},"use_histogram":{"type":"boolean","title":"Use Histogram","description":"Использовать гистограммы","default":false}},"type":"object","required":["image_a","image_b"],"title":"Body_image_analysis_compare__lang__image_analysis_compare_post"},"Body_ingest_file_rag_knowledge_ingest_file_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_ingest_file_rag_knowledge_ingest_file_post"},"Body_parse_user_by_id_post__lang__parser_parse_id_post":{"properties":{"user_id":{"type":"string","title":"User Id"},"headless":{"type":"boolean","title":"Headless","default":true}},"type":"object","required":["user_id"],"title":"Body_parse_user_by_id_post__lang__parser_parse_id_post"},"Body_parse_user_post__lang__parser_parse_post":{"properties":{"username":{"type":"string","title":"Username"},"headless":{"type":"boolean","title":"Headless","default":true}},"type":"object","required":["username"],"title":"Body_parse_user_post__lang__parser_parse_post"},"Body_parser_save__lang__parser_save_post":{"properties":{"result_json":{"type":"string","title":"Result Json"}},"type":"object","required":["result_json"],"title":"Body_parser_save__lang__parser_save_post"},"Body_parser_search__lang__parser_search_post":{"properties":{"username":{"type":"string","title":"Username"},"headless":{"type":"boolean","title":"Headless","default":true}},"type":"object","required":["username"],"title":"Body_parser_search__lang__parser_search_post"},"Body_parser_search_by_id__lang__parser_search_by_id_post":{"properties":{"user_id":{"type":"string","title":"User Id"},"max_pages":{"type":"integer","title":"Max Pages"},"timeout":{"type":"integer","title":"Timeout"},"headless":{"type":"boolean","title":"Headless","default":true}},"type":"object","required":["user_id","max_pages","timeout"],"title":"Body_parser_search_by_id__lang__parser_search_by_id_post"},"Body_send_to_channel_api_v1_newsletter_send_post":{"properties":{"message":{"type":"string","title":"Message"},"chat_ids":{"type":"string","title":"Chat Ids"}},"type":"object","required":["message"],"title":"Body_send_to_channel_api_v1_newsletter_send_post"},"Body_site_admin_agent_add_user__lang__dashboard_admin_agents__agent_id__add_user_post":{"properties":{"target_user_id":{"type":"integer","title":"Target User Id"}},"type":"object","required":["target_user_id"],"title":"Body_site_admin_agent_add_user__lang__dashboard_admin_agents__agent_id__add_user_post"},"Body_site_admin_agent_update_visibility__lang__dashboard_admin_agents__agent_id__visibility_post":{"properties":{"visibility":{"type":"string","title":"Visibility"}},"type":"object","required":["visibility"],"title":"Body_site_admin_agent_update_visibility__lang__dashboard_admin_agents__agent_id__visibility_post"},"Body_site_admin_blog_reject__lang__dashboard_admin_blog_posts__post_id__reject_post":{"properties":{"reason":{"type":"string","title":"Reason"},"comment":{"type":"string","title":"Comment","default":""}},"type":"object","required":["reason"],"title":"Body_site_admin_blog_reject__lang__dashboard_admin_blog_posts__post_id__reject_post"},"Body_site_admin_content_edit_post__lang__dashboard_admin_content__content_type___content_id__edit_post":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"section":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"author_id":{"type":"integer","minimum":1.0,"title":"Author Id"}},"type":"object","required":["title","author_id"],"title":"Body_site_admin_content_edit_post__lang__dashboard_admin_content__content_type___content_id__edit_post"},"Body_site_admin_content_localization_post__lang__dashboard_admin_content_localization_post":{"properties":{"content_json":{"type":"string","title":"Content Json"}},"type":"object","required":["content_json"],"title":"Body_site_admin_content_localization_post__lang__dashboard_admin_content_localization_post"},"Body_site_admin_releases_post__lang__dashboard_admin_releases_post":{"properties":{"releases_json":{"type":"string","title":"Releases Json"}},"type":"object","required":["releases_json"],"title":"Body_site_admin_releases_post__lang__dashboard_admin_releases_post"},"Body_site_admin_subject_edit_post__lang__dashboard_admin_subjects__subject_id__edit_post":{"properties":{"subject_name":{"type":"string","title":"Subject Name"},"subject_status":{"type":"string","title":"Subject Status"},"owner_id":{"type":"integer","minimum":1.0,"title":"Owner Id"}},"type":"object","required":["subject_name","subject_status","owner_id"],"title":"Body_site_admin_subject_edit_post__lang__dashboard_admin_subjects__subject_id__edit_post"},"Body_site_admin_user_adjust_balance__lang__dashboard_admin_users__user_id__balance_post":{"properties":{"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"description":{"type":"string","title":"Description"}},"type":"object","required":["amount","description"],"title":"Body_site_admin_user_adjust_balance__lang__dashboard_admin_users__user_id__balance_post"},"Body_site_admin_user_set_status__lang__dashboard_admin_users__user_id__status_post":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"Body_site_admin_user_set_status__lang__dashboard_admin_users__user_id__status_post"},"Body_subject_book_subject_post__lang__subjects__subject__book_post":{"properties":{"booking_date":{"type":"string","title":"Booking Date"},"booking_time":{"type":"string","title":"Booking Time"},"notes":{"type":"string","title":"Notes"},"pay_with_credits":{"type":"boolean","title":"Pay With Credits","default":false}},"type":"object","required":["booking_date","booking_time"],"title":"Body_subject_book_subject_post__lang__subjects__subject__book_post"},"Body_text_analysis_compare__lang__text_analysis_compare_post":{"properties":{"text_a":{"type":"string","title":"Text A","description":"Текст первого автора"},"text_b":{"type":"string","title":"Text B","description":"Текст второго автора"},"use_embeddings":{"type":"boolean","title":"Use Embeddings","description":"Использовать эмбеддинги OpenAI","default":false},"use_stylometry":{"type":"boolean","title":"Use Stylometry","description":"Расширенные стилистические признаки","default":false}},"type":"object","required":["text_a","text_b"],"title":"Body_text_analysis_compare__lang__text_analysis_compare_post"},"Body_upload_quiz_image__lang__quizzes_upload_image_post":{"properties":{"upload_file":{"type":"string","contentMediaType":"application/octet-stream","title":"Upload File"}},"type":"object","required":["upload_file"],"title":"Body_upload_quiz_image__lang__quizzes_upload_image_post"},"Body_voice_stt__lang__gpt_chat_sessions__session_id__voice_stt_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["audio"],"title":"Body_voice_stt__lang__gpt_chat_sessions__session_id__voice_stt_post"},"BulkDeleteResponse":{"properties":{"deleted":{"type":"integer","title":"Deleted"},"message":{"type":"string","title":"Message"}},"type":"object","required":["deleted","message"],"title":"BulkDeleteResponse","description":"Response after bulk session deletion."},"CacheControlRequest":{"properties":{"type":{"type":"string","title":"Type"}},"type":"object","required":["type"],"title":"CacheControlRequest"},"CalendarBookingActionRequest":{"properties":{"booking_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Booking Id"},"note":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Note"}},"type":"object","required":["booking_id"],"title":"CalendarBookingActionRequest"},"CalendarBookingCreateRequest":{"properties":{"subject_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Subject Id"},"booked_date":{"type":"string","format":"date","title":"Booked Date"},"booked_hours":{"type":"string","maxLength":20,"minLength":1,"title":"Booked Hours"},"message":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Message"}},"type":"object","required":["subject_id","booked_date","booked_hours"],"title":"CalendarBookingCreateRequest"},"CalendarNotificationRequest":{"properties":{"booking_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Booking Id"},"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"},"recipient_user_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Recipient User Id"}},"type":"object","required":["booking_id","message"],"title":"CalendarNotificationRequest"},"CatalogResponse":{"properties":{"default_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model"},"default_scope":{"type":"string","title":"Default Scope"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"models":{"additionalProperties":true,"type":"object","title":"Models"},"runtime_settings":{"additionalProperties":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object"},"type":"object","title":"Runtime Settings"}},"type":"object","required":["default_scope","scopes","models","runtime_settings"],"title":"CatalogResponse"},"ChangePasswordRequest":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","title":"New Password"},"confirm_password":{"type":"string","title":"Confirm Password"}},"type":"object","required":["current_password","new_password","confirm_password"],"title":"ChangePasswordRequest"},"ChatCompletionChoiceMessageResponse":{"properties":{"role":{"type":"string","title":"Role"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatCompletionChoiceMessageResponse"},"ChatCompletionChoiceResponse":{"properties":{"index":{"type":"integer","title":"Index"},"message":{"$ref":"#/components/schemas/ChatCompletionChoiceMessageResponse"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason"}},"type":"object","required":["index","message","finish_reason"],"title":"ChatCompletionChoiceResponse"},"ChatCompletionRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ChatMessageRequest"},"type":"array","title":"Messages"},"model":{"type":"string","title":"Model","default":"claude-haiku-4-5"},"n":{"type":"integer","title":"N","default":1},"cache_control":{"anyOf":[{"$ref":"#/components/schemas/CacheControlRequest"},{"type":"null"}]}},"type":"object","required":["messages"],"title":"ChatCompletionRequest"},"ChatCompletionResponse":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","title":"Object"},"created":{"type":"integer","title":"Created"},"model":{"type":"string","title":"Model"},"choices":{"items":{"$ref":"#/components/schemas/ChatCompletionChoiceResponse"},"type":"array","title":"Choices"},"usage":{"$ref":"#/components/schemas/ChatCompletionUsageResponse"}},"type":"object","required":["id","object","created","model","choices","usage"],"title":"ChatCompletionResponse"},"ChatCompletionUsageResponse":{"properties":{"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens"},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens"},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens"}},"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatCompletionUsageResponse"},"ChatCompletionWithResponsesRequest":{"properties":{"query":{"type":"string","title":"Query"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"},"cache_control":{"anyOf":[{"$ref":"#/components/schemas/CacheControlRequest"},{"type":"null"}]}},"type":"object","required":["query"],"title":"ChatCompletionWithResponsesRequest"},"ChatDialogRequest":{"properties":{"content":{"type":"string","maxLength":10000,"minLength":1,"title":"Content","description":"User message"},"use_rag":{"type":"boolean","title":"Use Rag","description":"Enable RAG for this reply","default":true},"use_rerank":{"type":"boolean","title":"Use Rerank","description":"Enable reranker for RAG retrieval","default":true},"use_hybrid":{"type":"boolean","title":"Use Hybrid","description":"Enable hybrid search (BM25 + vector) for RAG","default":true},"include_sources":{"type":"boolean","title":"Include Sources","description":"Attach RAG sources to assistant reply","default":true},"topic_hint":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Topic Hint","description":"Optional topic hint for RAG retrieval"},"rag_limit":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Rag Limit","description":"Max number of RAG snippets","default":5},"rag_score_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Rag Score Threshold","description":"Minimum similarity score for RAG sources (0 = include all, 1 = exact match only)","default":0.5},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id","description":"Optional agent ID to use for this request"},"ai_teacher_profile_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Ai Teacher Profile Id","description":"Optional AI teacher profile for owner/bot RAG context"}},"type":"object","required":["content"],"title":"ChatDialogRequest","description":"Request to send a user message and get assistant reply."},"ChatDialogResponse":{"properties":{"session_id":{"type":"string","format":"uuid","title":"Session Id"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"used_rag":{"type":"boolean","title":"Used Rag"},"hybrid_used":{"type":"boolean","title":"Hybrid Used","default":false},"user_message":{"$ref":"#/components/schemas/ChatMessageResponse"},"assistant_message":{"$ref":"#/components/schemas/ChatMessageResponse"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"agent_emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Emoji"},"final_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Final System Prompt"}},"type":"object","required":["session_id","provider","model","used_rag","user_message","assistant_message"],"title":"ChatDialogResponse","description":"Response for single chat interaction (user+assistant messages)."},"ChatListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"sessions":{"items":{"$ref":"#/components/schemas/ChatSessionResponse"},"type":"array","title":"Sessions"}},"type":"object","required":["total","sessions"],"title":"ChatListResponse","description":"Response with list of sessions."},"ChatMessageContentBlockRequest":{"properties":{"type":{"type":"string","const":"text","title":"Type","default":"text"},"text":{"type":"string","title":"Text"},"cache_control":{"anyOf":[{"$ref":"#/components/schemas/CacheControlRequest"},{"type":"null"}]}},"type":"object","required":["text"],"title":"ChatMessageContentBlockRequest"},"ChatMessageCreate":{"properties":{"content":{"type":"string","maxLength":10000,"minLength":1,"title":"Content","description":"Message content"},"role":{"$ref":"#/components/schemas/ChatRole","description":"Message role","default":"user"},"use_rag":{"type":"boolean","title":"Use Rag","description":"Use RAG for response generation","default":true},"include_sources":{"type":"boolean","title":"Include Sources","description":"Include RAG sources in response","default":false}},"type":"object","required":["content"],"title":"ChatMessageCreate","description":"Request to create a new chat message."},"ChatMessageRequest":{"properties":{"role":{"type":"string","enum":["system","user","assistant","developer","tool"],"title":"Role"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/ChatMessageContentBlockRequest"},"type":"array"}],"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatMessageRequest"},"ChatMessageResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"session_id":{"type":"string","format":"uuid","title":"Session Id"},"role":{"$ref":"#/components/schemas/ChatRole"},"content":{"type":"string","title":"Content"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"has_sources":{"type":"boolean","title":"Has Sources","default":false},"sources":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Sources"}},"type":"object","required":["id","session_id","role","content","created_at"],"title":"ChatMessageResponse","description":"Response with a single chat message."},"ChatPromptPreviewResponse":{"properties":{"session_id":{"type":"string","format":"uuid","title":"Session Id"},"used_rag":{"type":"boolean","title":"Used Rag"},"hybrid_used":{"type":"boolean","title":"Hybrid Used","default":false},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"agent_emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Emoji"},"final_system_prompt":{"type":"string","title":"Final System Prompt"},"rag_sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rag Sources"},"rag_rejected_sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rag Rejected Sources","description":"RAG candidates that were filtered out (below threshold or top-k overflow)"}},"type":"object","required":["session_id","used_rag","final_system_prompt"],"title":"ChatPromptPreviewResponse","description":"Preview of the final prompt before sending a chat request."},"ChatRole":{"type":"string","enum":["user","assistant","system"],"title":"ChatRole","description":"Message sender role."},"ChatSessionCreate":{"properties":{"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Title","description":"Session title"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"AI provider (deprecated, use model)","default":"litellm"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model name"},"use_rag":{"type":"boolean","title":"Use Rag","description":"Enable RAG for this session","default":true}},"type":"object","title":"ChatSessionCreate","description":"Request to create a new chat session."},"ChatSessionDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"use_rag":{"type":"boolean","title":"Use Rag"},"message_count":{"type":"integer","title":"Message Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_message_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message At"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"messages":{"items":{"$ref":"#/components/schemas/ChatMessageResponse"},"type":"array","title":"Messages","default":[]}},"type":"object","required":["id","user_id","title","provider","model","use_rag","created_at","updated_at"],"title":"ChatSessionDetailResponse","description":"Extended response with messages."},"ChatSessionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"provider":{"type":"string","title":"Provider"},"model":{"type":"string","title":"Model"},"use_rag":{"type":"boolean","title":"Use Rag"},"message_count":{"type":"integer","title":"Message Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_message_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Message At"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"}},"type":"object","required":["id","user_id","title","provider","model","use_rag","created_at","updated_at"],"title":"ChatSessionResponse","description":"Response with chat session details."},"ChatSessionUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Title"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"use_rag":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Rag"}},"type":"object","title":"ChatSessionUpdate","description":"Request to update chat session."},"ClaudeImageGenerationRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"n":{"type":"integer","title":"N","default":1},"size":{"type":"string","title":"Size","default":"1024x1024"}},"type":"object","required":["prompt"],"title":"ClaudeImageGenerationRequest"},"ClaudeImageGenerationResponse":{"properties":{"id":{"type":"string","title":"Id"},"model":{"type":"string","title":"Model"},"image_urls":{"items":{"type":"string"},"type":"array","title":"Image Urls"},"usage":{"$ref":"#/components/schemas/ChatCompletionUsageResponse"}},"type":"object","required":["id","model","image_urls","usage"],"title":"ClaudeImageGenerationResponse"},"ClaudeImageGenerationWithResponsesRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"}},"type":"object","required":["prompt"],"title":"ClaudeImageGenerationWithResponsesRequest"},"ClaudeTextResponse":{"properties":{"id":{"type":"string","title":"Id"},"model":{"type":"string","title":"Model"},"output_text":{"type":"string","title":"Output Text"}},"type":"object","required":["id","model","output_text"],"title":"ClaudeTextResponse"},"CodeInterpreterRequest":{"properties":{"query":{"type":"string","title":"Query"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"type":"object","required":["query"],"title":"CodeInterpreterRequest"},"CreateSessionResponse":{"properties":{"session_id":{"type":"string","format":"uuid","title":"Session Id"},"topic_title":{"type":"string","title":"Topic Title"},"estimated_duration_minutes":{"type":"integer","title":"Estimated Duration Minutes"},"websocket_url":{"type":"string","title":"Websocket Url"}},"type":"object","required":["session_id","topic_title","estimated_duration_minutes","websocket_url"],"title":"CreateSessionResponse"},"CreateTopicQuestionRequest":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"text":{"type":"string","title":"Text"},"theory_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theory Content"},"estimated_minutes":{"type":"integer","title":"Estimated Minutes","default":5}},"type":"object","required":["id","title","text"],"title":"CreateTopicQuestionRequest","description":"One question in the lesson plan."},"DeletePromptResponse":{"properties":{"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["deleted"],"title":"DeletePromptResponse","description":"Response after deleting a user prompt."},"DiaryEntryCreate":{"properties":{"student_id":{"type":"integer","title":"Student Id"},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"},"booking_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Booking Id"},"tutor_session_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Tutor Session Id"},"quiz_result_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quiz Result Id"},"lesson_date":{"type":"string","format":"date","title":"Lesson Date"},"entry_type":{"type":"string","enum":["manual_teacher","ai_session","quiz","exam"],"title":"Entry Type","default":"manual_teacher"},"topic_covered":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Topic Covered"},"lesson_notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Lesson Notes"},"grade":{"anyOf":[{"type":"integer","maximum":10.0,"minimum":1.0},{"type":"null"}],"title":"Grade"},"attendance":{"type":"string","enum":["present","absent","late"],"title":"Attendance","default":"present"},"sections":{"items":{"$ref":"#/components/schemas/DiarySection"},"type":"array","maxItems":20,"title":"Sections","default":[]}},"type":"object","required":["student_id","lesson_date"],"title":"DiaryEntryCreate"},"DiaryEntryListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DiaryEntryOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["items","total","page","limit"],"title":"DiaryEntryListOut","description":"Paginated list response for diary entries."},"DiaryEntryOut":{"properties":{"id":{"type":"integer","title":"Id"},"student_id":{"type":"integer","title":"Student Id"},"teacher_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Teacher Id"},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"},"lesson_date":{"type":"string","format":"date","title":"Lesson Date"},"entry_type":{"type":"string","title":"Entry Type"},"topic_covered":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic Covered"},"lesson_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Notes"},"is_completed":{"type":"boolean","title":"Is Completed"},"student_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Student Comment"},"grade":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grade"},"attendance":{"type":"string","title":"Attendance"},"ai_generated":{"type":"boolean","title":"Ai Generated"},"reviewed_by_teacher":{"type":"boolean","title":"Reviewed By Teacher"},"is_visible_to_student":{"type":"boolean","title":"Is Visible To Student"},"progress_delta":{"additionalProperties":true,"type":"object","title":"Progress Delta"},"version":{"type":"integer","title":"Version"},"sections":{"items":{"$ref":"#/components/schemas/DiarySectionOut"},"type":"array","title":"Sections","default":[]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","student_id","teacher_id","subject_id","lesson_date","entry_type","topic_covered","lesson_notes","is_completed","student_comment","grade","attendance","ai_generated","reviewed_by_teacher","is_visible_to_student","progress_delta","version","created_at","updated_at"],"title":"DiaryEntryOut"},"DiaryEntryStudentUpdate":{"properties":{"is_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Completed"},"student_comment":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Student Comment"}},"type":"object","title":"DiaryEntryStudentUpdate","description":"Fields editable by students only."},"DiaryEntryTeacherUpdate":{"properties":{"lesson_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Lesson Date"},"topic_covered":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Topic Covered"},"lesson_notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Lesson Notes"},"grade":{"anyOf":[{"type":"integer","maximum":10.0,"minimum":1.0},{"type":"null"}],"title":"Grade"},"attendance":{"anyOf":[{"type":"string","enum":["present","absent","late"]},{"type":"null"}],"title":"Attendance"},"sections":{"anyOf":[{"items":{"$ref":"#/components/schemas/DiarySection"},"type":"array","maxItems":20},{"type":"null"}],"title":"Sections"},"is_visible_to_student":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Visible To Student"},"reviewed_by_teacher":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reviewed By Teacher"}},"type":"object","title":"DiaryEntryTeacherUpdate"},"DiarySection":{"properties":{"section_name":{"type":"string","maxLength":200,"title":"Section Name"},"section_order":{"type":"integer","maximum":50.0,"minimum":0.0,"title":"Section Order","default":0},"strengths":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Strengths"},"weaknesses":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Weaknesses"},"recommendations":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Recommendations"}},"type":"object","required":["section_name"],"title":"DiarySection"},"DiarySectionOut":{"properties":{"section_name":{"type":"string","maxLength":200,"title":"Section Name"},"section_order":{"type":"integer","maximum":50.0,"minimum":0.0,"title":"Section Order","default":0},"strengths":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Strengths"},"weaknesses":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Weaknesses"},"recommendations":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Recommendations"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["section_name","id"],"title":"DiarySectionOut"},"DocumentExtractionResult":{"properties":{"filename":{"type":"string","title":"Filename"},"content_type":{"type":"string","title":"Content Type"},"char_count":{"type":"integer","title":"Char Count"},"page_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Count"},"text":{"type":"string","title":"Text"},"chunks":{"items":{"type":"string"},"type":"array","title":"Chunks"},"chunk_count":{"type":"integer","title":"Chunk Count"}},"type":"object","required":["filename","content_type","char_count","text","chunks","chunk_count"],"title":"DocumentExtractionResult","description":"Result of extracting text from an uploaded document."},"DocumentIngestToRAGResponse":{"properties":{"filename":{"type":"string","title":"Filename"},"topic":{"type":"string","title":"Topic"},"ingested_count":{"type":"integer","title":"Ingested Count"},"ingested_ids":{"items":{},"type":"array","title":"Ingested Ids"},"chunks_preview":{"items":{"type":"string"},"type":"array","title":"Chunks Preview"},"capabilities":{"additionalProperties":true,"type":"object","title":"Capabilities"}},"type":"object","required":["filename","topic","ingested_count","ingested_ids","chunks_preview","capabilities"],"title":"DocumentIngestToRAGResponse","description":"Response after ingesting document chunks into RAG knowledge base."},"ExportFormat":{"type":"string","enum":["json","markdown","code"],"title":"ExportFormat","description":"Export format for dialogs."},"ExportRequest":{"properties":{"format":{"$ref":"#/components/schemas/ExportFormat","default":"json"},"include_metadata":{"type":"boolean","title":"Include Metadata","default":true},"include_sources":{"type":"boolean","title":"Include Sources","default":false},"message_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Message Ids","description":"Specific messages to export (all if empty)"}},"type":"object","title":"ExportRequest","description":"Request to export chat dialog."},"ExportResponse":{"properties":{"format":{"$ref":"#/components/schemas/ExportFormat"},"content":{"type":"string","title":"Content"},"filename":{"type":"string","title":"Filename"},"size_bytes":{"type":"integer","title":"Size Bytes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["format","content","filename","size_bytes","created_at"],"title":"ExportResponse","description":"Response with exported dialog."},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"GenerateBlogPostRequest":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keywords"},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"language":{"type":"string","title":"Language","default":"ru"},"use_rag":{"type":"boolean","title":"Use Rag","default":true},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"final_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Final Prompt"},"rag_used":{"type":"boolean","title":"Rag Used","default":false}},"type":"object","title":"GenerateBlogPostRequest","description":"Request to generate a blog post in the background.\n\nEither ``topic`` (with optional ``keywords``) or ``custom_prompt`` must be\nprovided. The worker creates a draft post and fills in the AI-generated\ncontent asynchronously."},"GenerateBlogPostResponse":{"properties":{"task_id":{"type":"string","title":"Task Id"},"post_id":{"type":"integer","title":"Post Id"},"status":{"type":"string","title":"Status","default":"pending"}},"type":"object","required":["task_id","post_id"],"title":"GenerateBlogPostResponse","description":"Response returned right after enqueuing a generation task."},"GenerateContentRequest":{"properties":{"topic":{"type":"string","title":"Topic"},"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keywords"},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt"},"language":{"type":"string","title":"Language","default":"ru"},"use_rag":{"type":"boolean","title":"Use Rag","default":true},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"final_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Final Prompt"},"rag_used":{"type":"boolean","title":"Rag Used","default":false}},"type":"object","required":["topic"],"title":"GenerateContentRequest","description":"Request to generate blog post content."},"GenerateContentResponse":{"properties":{"content":{"type":"string","title":"Content"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"ai_usage":{"additionalProperties":true,"type":"object","title":"Ai Usage"}},"type":"object","required":["content"],"title":"GenerateContentResponse","description":"Response with generated content."},"GenerateExcerptRequest":{"properties":{"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["title","content"],"title":"GenerateExcerptRequest","description":"Request to generate blog post excerpt."},"GenerateExcerptResponse":{"properties":{"excerpt":{"type":"string","title":"Excerpt"}},"type":"object","required":["excerpt"],"title":"GenerateExcerptResponse","description":"Response with generated excerpt."},"GeneratePromptRequest":{"properties":{"description":{"type":"string","maxLength":2000,"minLength":5,"title":"Description"},"category":{"type":"string","enum":["general","blog","forum","tutor"],"title":"Category","default":"general"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["description"],"title":"GeneratePromptRequest","description":"Request to generate a prompt from a short description."},"GeneratePromptResponse":{"properties":{"prompt":{"type":"string","title":"Prompt"},"suggested_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Title"}},"type":"object","required":["prompt"],"title":"GeneratePromptResponse","description":"Response with AI-generated prompt text."},"GenerateSEOMetadataRequest":{"properties":{"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"language":{"type":"string","title":"Language","default":"ru"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt"}},"type":"object","required":["title","content"],"title":"GenerateSEOMetadataRequest","description":"Request to generate SEO metadata."},"GenerateSEOMetadataResponse":{"properties":{"seo_title":{"type":"string","title":"Seo Title"},"seo_description":{"type":"string","title":"Seo Description"},"seo_keywords":{"items":{"type":"string"},"type":"array","title":"Seo Keywords"}},"type":"object","required":["seo_title","seo_description","seo_keywords"],"title":"GenerateSEOMetadataResponse","description":"Response with generated SEO metadata."},"GenerateTitleRequest":{"properties":{"topic":{"type":"string","title":"Topic"},"language":{"type":"string","title":"Language","default":"ru"}},"type":"object","required":["topic"],"title":"GenerateTitleRequest","description":"Request to generate blog post title."},"GenerateTitleResponse":{"properties":{"title":{"type":"string","title":"Title"}},"type":"object","required":["title"],"title":"GenerateTitleResponse","description":"Response with generated title."},"GenerateWithPromptRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"language":{"type":"string","title":"Language","default":"ru"},"use_rag":{"type":"boolean","title":"Use Rag","default":true}},"type":"object","required":["prompt"],"title":"GenerateWithPromptRequest","description":"Request to generate content with custom prompt."},"GenerateWithPromptResponse":{"properties":{"content":{"type":"string","title":"Content"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},"type":"object","required":["content"],"title":"GenerateWithPromptResponse","description":"Response with generated content from custom prompt."},"GetUserPromptsResponse":{"properties":{"prompts":{"items":{"$ref":"#/components/schemas/UserPromptDto"},"type":"array","title":"Prompts"}},"type":"object","required":["prompts"],"title":"GetUserPromptsResponse","description":"Response with list of user's saved prompts."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageGenerationLimitResponse":{"properties":{"daily_limit":{"type":"integer","title":"Daily Limit"},"used_today":{"type":"integer","title":"Used Today"},"remaining":{"type":"integer","title":"Remaining"},"reset_at":{"type":"string","format":"date-time","title":"Reset At"}},"type":"object","required":["daily_limit","used_today","remaining","reset_at"],"title":"ImageGenerationLimitResponse","description":"Response with rate limit info."},"ImageGenerationRequest":{"properties":{"prompt":{"type":"string","maxLength":2000,"minLength":10,"title":"Prompt","description":"Image prompt"},"size":{"type":"string","title":"Size","description":"Image size (e.g., 1024x1024)","default":"1024x1024"},"style":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Style","description":"Art style"},"quality":{"type":"string","title":"Quality","description":"Quality level","default":"standard"}},"type":"object","required":["prompt"],"title":"ImageGenerationRequest","description":"Request for AI-generated image."},"ImageGenerationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"session_id":{"type":"string","format":"uuid","title":"Session Id"},"prompt":{"type":"string","title":"Prompt"},"image_url":{"type":"string","title":"Image Url"},"size":{"type":"string","title":"Size"},"status":{"$ref":"#/components/schemas/ImageGenerationStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","session_id","prompt","image_url","size","status","created_at"],"title":"ImageGenerationResponse","description":"Response with generated image."},"ImageGenerationStatus":{"type":"string","enum":["pending","processing","completed","failed"],"title":"ImageGenerationStatus","description":"Status of image generation request."},"ImproveContentRequest":{"properties":{"content":{"type":"string","title":"Content"},"language":{"type":"string","title":"Language","default":"ru"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt"}},"type":"object","required":["content"],"title":"ImproveContentRequest","description":"Request to improve blog post content."},"ImproveContentResponse":{"properties":{"improved_content":{"type":"string","title":"Improved Content"}},"type":"object","required":["improved_content"],"title":"ImproveContentResponse","description":"Response with improved content."},"InternalTransferRequest":{"properties":{"to_user_id":{"type":"integer","title":"To User Id"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"idempotency_key":{"type":"string","title":"Idempotency Key"}},"type":"object","required":["to_user_id","amount"],"title":"InternalTransferRequest","description":"Internal credit transfer between users (student → mentor or mentor → student)."},"LessonPhase":{"type":"string","enum":["intro","theory","dialog","quiz","summary"],"title":"LessonPhase"},"ListModelsResponse":{"properties":{"models":{"items":{"type":"string"},"type":"array","title":"Models"},"preferred_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Model"}},"type":"object","required":["models"],"title":"ListModelsResponse","description":"Response with available chat models for the current user."},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"captcha_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Captcha Answer"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"MessageCreate":{"properties":{"content":{"type":"string","title":"Content"},"author_name":{"type":"string","title":"Author Name"},"topic_id":{"type":"integer","title":"Topic Id"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},"type":"object","required":["content","author_name","topic_id"],"title":"MessageCreate"},"MessageRole":{"type":"string","enum":["user","assistant","system"],"title":"MessageRole"},"MessageType":{"type":"string","enum":["text","voice_transcript","theory","question","quiz","code","diagram"],"title":"MessageType"},"OllamaBaseUrlPayload":{"properties":{"base_url":{"type":"string","maxLength":500,"minLength":10,"title":"Base Url"}},"type":"object","required":["base_url"],"title":"OllamaBaseUrlPayload","description":"Request payload for runtime Ollama base URL update."},"OllamaChatPayload":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages"},"stream":{"type":"boolean","title":"Stream","default":false}},"type":"object","required":["model"],"title":"OllamaChatPayload","description":"Request payload for Ollama /api/chat."},"OllamaChatRequest":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"messages":{"items":{"$ref":"#/components/schemas/AdapterChatMessage"},"type":"array","title":"Messages"},"stream":{"type":"boolean","title":"Stream","default":false}},"type":"object","required":["model"],"title":"OllamaChatRequest"},"OllamaGeneratePayload":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"prompt":{"type":"string","maxLength":20000,"minLength":1,"title":"Prompt"},"system":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"System"},"stream":{"type":"boolean","title":"Stream","default":false}},"type":"object","required":["model","prompt"],"title":"OllamaGeneratePayload","description":"Request payload for Ollama /api/generate."},"OllamaGenerateRequest":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"prompt":{"type":"string","minLength":1,"title":"Prompt"},"stream":{"type":"boolean","title":"Stream","default":false},"system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System"}},"type":"object","required":["model","prompt"],"title":"OllamaGenerateRequest"},"OllamaModelsResponse":{"properties":{"models":{"items":{"type":"string"},"type":"array","title":"Models"}},"type":"object","required":["models"],"title":"OllamaModelsResponse","description":"Response with currently installed Ollama model names."},"PromptCreate":{"properties":{"prompt":{"type":"string","maxLength":10000,"minLength":10,"title":"Prompt"},"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"category":{"type":"string","enum":["general","blog","forum","tutor"],"title":"Category","default":"general"}},"type":"object","required":["prompt"],"title":"PromptCreate","description":"Schema for creating a new user prompt."},"PromptListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PromptOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["items","total","page","limit"],"title":"PromptListOut","description":"Paginated list of prompts."},"PromptOut":{"properties":{"id":{"type":"integer","title":"Id"},"prompt":{"type":"string","title":"Prompt"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"display_title":{"type":"string","title":"Display Title","description":"Return title if set, otherwise first 60 chars of prompt.","readOnly":true}},"type":"object","required":["id","prompt","title","category","is_active","created_at","updated_at","display_title"],"title":"PromptOut","description":"Schema for serialising a prompt to the API response."},"PromptUpdate":{"properties":{"prompt":{"anyOf":[{"type":"string","maxLength":10000,"minLength":10},{"type":"null"}],"title":"Prompt"},"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"category":{"anyOf":[{"type":"string","enum":["general","blog","forum","tutor"]},{"type":"null"}],"title":"Category"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"PromptUpdate","description":"Schema for updating an existing user prompt."},"ProviderConfigResponse":{"properties":{"provider":{"$ref":"#/components/schemas/ProviderType"},"available":{"type":"boolean","title":"Available"},"default_model":{"type":"string","title":"Default Model"},"available_models":{"items":{"type":"string"},"type":"array","title":"Available Models"}},"type":"object","required":["provider","available","default_model","available_models"],"title":"ProviderConfigResponse","description":"Available provider configuration."},"ProviderType":{"type":"string","enum":["openai","claude","gemini","deepseek","ollama","huggingface"],"title":"ProviderType","description":"AI Provider type."},"QuestionSchema":{"properties":{"id":{"type":"string","title":"Id","description":"Question identifier"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Short title for navigation"},"text":{"type":"string","title":"Text","description":"Question text"},"type":{"$ref":"#/components/schemas/QuestionType","default":"single_choice"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Additional details"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Optional image for the question"},"formula_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Formula Template","description":"Math/physics/chemistry formula stored as KaTeX"},"points":{"type":"integer","minimum":0.0,"title":"Points","description":"Points awarded for the question","default":1},"time_limit_seconds":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Time Limit Seconds","description":"Optional time limit for the question"},"shuffle_answers":{"type":"boolean","title":"Shuffle Answers","description":"Shuffle answers when rendering","default":true},"answers":{"items":{"$ref":"#/components/schemas/AnswerSchema"},"type":"array","title":"Answers"}},"type":"object","required":["id","text"],"title":"QuestionSchema","description":"Schema representing a quiz question."},"QuestionType":{"type":"string","enum":["single_choice","multiple_choice","text_input","image","formula"],"title":"QuestionType","description":"Supported question formats."},"QuizCreate":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"language":{"type":"string","title":"Language","default":"en"},"status":{"type":"string","title":"Status","default":"draft"},"access_type":{"type":"string","title":"Access Type","default":"public"},"result_mode":{"type":"string","title":"Result Mode","default":"final_summary"},"time_limit_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Limit Minutes"},"passing_score":{"type":"number","title":"Passing Score","default":70.0},"max_attempts":{"type":"integer","title":"Max Attempts","default":3},"show_correct_answers":{"type":"boolean","title":"Show Correct Answers","default":true},"randomize_questions":{"type":"boolean","title":"Randomize Questions","default":false},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"},"auto_assign_after_booking":{"type":"boolean","title":"Auto Assign After Booking","default":false},"anti_cheat_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Anti Cheat Config"},"questions":{"items":{"$ref":"#/components/schemas/QuestionSchema"},"type":"array","title":"Questions"}},"type":"object","required":["title"],"title":"QuizCreate","description":"Schema for creating a new quiz"},"QuizSubmission":{"properties":{"quiz_id":{"type":"integer","title":"Quiz Id"},"answers":{"items":{"$ref":"#/components/schemas/UserAnswerSubmission"},"type":"array","title":"Answers"}},"type":"object","required":["quiz_id","answers"],"title":"QuizSubmission","description":"Quiz submission with all answered questions"},"RAGDocumentListItemSchema":{"properties":{"document_id":{"type":"string","title":"Document Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"chunk_count":{"type":"integer","title":"Chunk Count"},"is_public":{"type":"boolean","title":"Is Public"},"shared_with_user_ids":{"items":{"type":"integer"},"type":"array","title":"Shared With User Ids"},"source_type":{"type":"string","title":"Source Type"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["document_id","title","domain","chunk_count","is_public","shared_with_user_ids","source_type","created_at"],"title":"RAGDocumentListItemSchema"},"RAGDocumentListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RAGDocumentListItemSchema"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"RAGDocumentListResponse"},"RAGFileIngestResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status","default":"pending"},"message":{"type":"string","title":"Message","default":"Файл поставлен в очередь на обработку"}},"type":"object","required":["job_id"],"title":"RAGFileIngestResponse","description":"202 Accepted — job was enqueued."},"RAGIngestJobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"ingested":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ingested"},"skipped":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Skipped"},"chunk_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chunk Ids"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["job_id","status"],"title":"RAGIngestJobStatusResponse","description":"Job status for a file ingest job."},"RAGIngestResponse":{"properties":{"ingested":{"type":"integer","title":"Ingested"},"skipped_duplicates":{"type":"integer","title":"Skipped Duplicates"},"chunk_ids":{"items":{"type":"string"},"type":"array","title":"Chunk Ids"}},"type":"object","required":["ingested","skipped_duplicates","chunk_ids"],"title":"RAGIngestResponse"},"RAGIngestTextRequest":{"properties":{"topic":{"type":"string","maxLength":255,"minLength":1,"title":"Topic"},"content":{"type":"string","minLength":1,"title":"Content"},"domain":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Domain"},"is_public":{"type":"boolean","title":"Is Public","default":false},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"},"chunk_strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunk Strategy"},"chunk_size":{"anyOf":[{"type":"integer","maximum":4096.0,"minimum":32.0},{"type":"null"}],"title":"Chunk Size"},"chunk_overlap":{"anyOf":[{"type":"integer","maximum":512.0,"minimum":0.0},{"type":"null"}],"title":"Chunk Overlap"}},"type":"object","required":["topic","content"],"title":"RAGIngestTextRequest"},"RAGKnowledgeIngestResponse":{"properties":{"ingested_count":{"type":"integer","title":"Ingested Count"},"ingested_ids":{"items":{},"type":"array","title":"Ingested Ids"},"capabilities":{"additionalProperties":true,"type":"object","title":"Capabilities"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"}},"type":"object","required":["ingested_count"],"title":"RAGKnowledgeIngestResponse"},"RAGKnowledgePreviewItem":{"properties":{"topic":{"type":"string","title":"Topic"},"source_type":{"type":"string","title":"Source Type"},"content":{"type":"string","title":"Content"}},"type":"object","required":["topic","source_type","content"],"title":"RAGKnowledgePreviewItem"},"RAGKnowledgePreviewResponse":{"properties":{"errors":{"items":{"type":"string"},"type":"array","title":"Errors"},"total_items":{"type":"integer","title":"Total Items","default":0},"shown_items":{"type":"integer","title":"Shown Items","default":0},"items":{"items":{"$ref":"#/components/schemas/RAGKnowledgePreviewItem"},"type":"array","title":"Items"},"limits":{"additionalProperties":{"type":"integer"},"type":"object","title":"Limits"},"capabilities":{"additionalProperties":true,"type":"object","title":"Capabilities"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id"}},"type":"object","title":"RAGKnowledgePreviewResponse"},"RAGQuotaSchema":{"properties":{"used":{"type":"integer","title":"Used"},"limit":{"type":"integer","title":"Limit"},"pct":{"type":"number","title":"Pct"}},"type":"object","required":["used","limit","pct"],"title":"RAGQuotaSchema"},"RAGSearchRequest":{"properties":{"query":{"type":"string","maxLength":2000,"minLength":1,"title":"Query"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"top_k":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Top K","default":5},"similarity_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Similarity Threshold","default":0.7},"context_module":{"type":"string","title":"Context Module","default":"generic"}},"type":"object","required":["query"],"title":"RAGSearchRequest"},"RAGSearchResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/RAGSearchResultItem"},"type":"array","title":"Results"},"query":{"type":"string","title":"Query"}},"type":"object","required":["results","query"],"title":"RAGSearchResponse"},"RAGSearchResultItem":{"properties":{"chunk_id":{"type":"string","title":"Chunk Id"},"content":{"type":"string","title":"Content"},"topic":{"type":"string","title":"Topic"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"similarity":{"type":"number","title":"Similarity"},"source_type":{"type":"string","title":"Source Type"}},"type":"object","required":["chunk_id","content","topic","domain","similarity","source_type"],"title":"RAGSearchResultItem"},"RAGSharingUpdateRequest":{"properties":{"is_public":{"type":"boolean","title":"Is Public","default":false},"shared_with_user_ids":{"items":{"type":"integer"},"type":"array","title":"Shared With User Ids"}},"type":"object","title":"RAGSharingUpdateRequest"},"RAGSharingUpdateResponse":{"properties":{"updated_chunks":{"type":"integer","title":"Updated Chunks"}},"type":"object","required":["updated_chunks"],"title":"RAGSharingUpdateResponse"},"RegisterRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"password_confirm":{"type":"string","title":"Password Confirm"},"email":{"type":"string","title":"Email"},"firstname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firstname"},"lastname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastname"},"user_type":{"anyOf":[{"$ref":"#/components/schemas/UserRole"},{"type":"null"}]},"accept_terms":{"type":"boolean","title":"Accept Terms"},"accept_privacy":{"type":"boolean","title":"Accept Privacy"}},"type":"object","required":["username","password","password_confirm","email","accept_terms","accept_privacy"],"title":"RegisterRequest"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"},"confirm_password":{"type":"string","title":"Confirm Password"}},"type":"object","required":["token","new_password","confirm_password"],"title":"ResetPasswordRequest"},"STTResponse":{"properties":{"transcript":{"type":"string","title":"Transcript","description":"Transcribed text from audio"},"language":{"type":"string","title":"Language","description":"Detected or requested language code"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds","description":"Duration of the audio in seconds (if available)"},"backend":{"type":"string","title":"Backend","description":"STT backend used for transcription"}},"type":"object","required":["transcript","language","backend"],"title":"STTResponse","description":"Response model for the speech-to-text endpoint."},"SavePromptRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"}},"type":"object","required":["prompt"],"title":"SavePromptRequest","description":"Request to save a user prompt for reuse."},"SavePromptResponse":{"properties":{"id":{"type":"integer","title":"Id"},"prompt":{"type":"string","title":"Prompt"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","prompt","created_at"],"title":"SavePromptResponse","description":"Response after saving a user prompt."},"ScopeSettingResponse":{"properties":{"scope":{"type":"string","enum":["global","forum","ai_tutor","ai_examiner"],"title":"Scope"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"provider":{"type":"string","title":"Provider","default":"litellm"}},"type":"object","required":["scope"],"title":"ScopeSettingResponse"},"ScopeSettingUpdateRequest":{"properties":{"model":{"type":"string","maxLength":200,"title":"Model"},"provider":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Provider"}},"type":"object","required":["model"],"title":"ScopeSettingUpdateRequest"},"SendPrivateMessageRequest":{"properties":{"receiver_id":{"type":"integer","title":"Receiver Id"},"message":{"type":"string","title":"Message"},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"}},"type":"object","required":["receiver_id","message"],"title":"SendPrivateMessageRequest"},"StudentExamStatsResponse":{"properties":{"student_id":{"type":"integer","title":"Student Id"},"attempts_count":{"type":"integer","title":"Attempts Count","default":0},"average_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Score"},"best_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Best Score"},"total_duration_seconds":{"type":"integer","title":"Total Duration Seconds","default":0},"last_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Score"},"last_completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Completed At"}},"type":"object","required":["student_id"],"title":"StudentExamStatsResponse"},"StudentProgressResponse":{"properties":{"user_id":{"type":"integer","title":"User Id"},"completed_topics":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Completed Topics","default":[]},"current_level":{"additionalProperties":true,"type":"object","title":"Current Level","default":{}},"total_sessions":{"type":"integer","title":"Total Sessions","default":0},"total_time_minutes":{"type":"integer","title":"Total Time Minutes","default":0},"strengths":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Strengths"},"weaknesses":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Weaknesses"}},"type":"object","required":["user_id"],"title":"StudentProgressResponse"},"TTSRequest":{"properties":{"text":{"type":"string","title":"Text","description":"Text to synthesise into speech"},"language":{"type":"string","title":"Language","description":"BCP-47 language code","default":"ru"},"voice":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice","description":"Optional voice identifier (backend-specific)"}},"type":"object","required":["text"],"title":"TTSRequest","description":"Request model for the text-to-speech endpoint."},"TaskType":{"type":"string","enum":["general","question","tutorial","code","moderate","moderation","ai_message","process_ai_session_result","send_lesson_reminder","create","help","blog_generation"],"title":"TaskType"},"TopicAccessLevel":{"type":"string","enum":["public","private","on_schedule"],"title":"TopicAccessLevel"},"TopicCreate":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"task_type":{"anyOf":[{"$ref":"#/components/schemas/TaskType"},{"type":"null"}],"default":"general"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subcategory Id"}},"type":"object","required":["title"],"title":"TopicCreate"},"TopicLevel":{"type":"string","enum":["beginner","intermediate","advanced"],"title":"TopicLevel"},"TopicList":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"task_type":{"anyOf":[{"$ref":"#/components/schemas/TaskType"},{"type":"null"}],"default":"general"},"id":{"type":"integer","title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subcategory Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"message_count":{"type":"integer","title":"Message Count","default":0},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["title","id","user_id","category_id","subcategory_id","created_at","is_active"],"title":"TopicList"},"TopicResponse":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"task_type":{"anyOf":[{"$ref":"#/components/schemas/TaskType"},{"type":"null"}],"default":"general"},"id":{"type":"integer","title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subcategory Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["title","id","user_id","category_id","subcategory_id","created_at","updated_at","is_active"],"title":"TopicResponse"},"TopicStatus":{"type":"string","enum":["draft","published","archived"],"title":"TopicStatus"},"TopicVoteResponse":{"properties":{"id":{"type":"integer","title":"Id"},"topic_id":{"type":"integer","title":"Topic Id"},"user_id":{"type":"integer","title":"User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"vote_count":{"type":"integer","title":"Vote Count","description":"Total votes for the topic at response time","default":0}},"type":"object","required":["id","topic_id","user_id","created_at"],"title":"TopicVoteResponse"},"TopicWithMessages":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"task_type":{"anyOf":[{"$ref":"#/components/schemas/TaskType"},{"type":"null"}],"default":"general"},"id":{"type":"integer","title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subcategory Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"is_active":{"type":"boolean","title":"Is Active"},"messages":{"items":{"$ref":"#/components/schemas/shared_models__schemas__MessageResponse"},"type":"array","title":"Messages","default":[]}},"type":"object","required":["title","id","user_id","category_id","subcategory_id","created_at","updated_at","is_active"],"title":"TopicWithMessages"},"TopupRequestCreate":{"properties":{"amount_requested":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount Requested"},"payment_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method"},"external_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Reference"}},"type":"object","required":["amount_requested"],"title":"TopupRequestCreate","description":"User creates a bank topup stub request."},"TopupRequestResponse":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"amount_requested":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount Requested"},"payment_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method"},"status":{"$ref":"#/components/schemas/WithdrawRequestStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"processed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Processed At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","user_id","amount_requested","status","created_at"],"title":"TopupRequestResponse"},"UnblockIPPayload":{"properties":{"ip_address":{"type":"string","maxLength":64,"minLength":3,"title":"Ip Address"}},"type":"object","required":["ip_address"],"title":"UnblockIPPayload","description":"Request payload for removing IP from security blocklist."},"UnblockUserAgentPayload":{"properties":{"pattern":{"type":"string","maxLength":255,"minLength":3,"title":"Pattern"}},"type":"object","required":["pattern"],"title":"UnblockUserAgentPayload","description":"Request payload for removing user-agent pattern from security blocklist."},"UserAnswerSubmission":{"properties":{"question_id":{"type":"string","title":"Question Id"},"answer_ids":{"items":{"type":"string"},"type":"array","title":"Answer Ids"},"text_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Answer"}},"type":"object","required":["question_id","answer_ids"],"title":"UserAnswerSubmission","description":"User's answer to a single question"},"UserPromptDto":{"properties":{"id":{"type":"integer","title":"Id"},"prompt":{"type":"string","title":"Prompt"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","prompt","created_at"],"title":"UserPromptDto","description":"Data transfer object for user saved prompts."},"UserRAGSettingsSchema":{"properties":{"default_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Domain"},"default_topics":{"items":{"type":"string"},"type":"array","title":"Default Topics"},"embedding_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embedding Model"},"chunk_strategy":{"type":"string","title":"Chunk Strategy","default":"paragraph"},"chunk_size":{"type":"integer","maximum":4096.0,"minimum":32.0,"title":"Chunk Size","default":512},"chunk_overlap":{"type":"integer","maximum":512.0,"minimum":0.0,"title":"Chunk Overlap","default":50},"quota_notifications":{"type":"boolean","title":"Quota Notifications","default":true}},"type":"object","title":"UserRAGSettingsSchema"},"UserRAGSettingsUpdateSchema":{"properties":{"default_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Domain"},"default_topics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Default Topics"},"embedding_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Embedding Model"},"chunk_strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunk Strategy"},"chunk_size":{"anyOf":[{"type":"integer","maximum":4096.0,"minimum":32.0},{"type":"null"}],"title":"Chunk Size"},"chunk_overlap":{"anyOf":[{"type":"integer","maximum":512.0,"minimum":0.0},{"type":"null"}],"title":"Chunk Overlap"},"quota_notifications":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Quota Notifications"}},"type":"object","title":"UserRAGSettingsUpdateSchema"},"UserRole":{"type":"string","enum":["admin","user","ai_bot","mixed","mentor","mentee"],"title":"UserRole"},"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"},"WebSearchRequest":{"properties":{"query":{"type":"string","title":"Query"}},"type":"object","required":["query"],"title":"WebSearchRequest"},"WithdrawRequestCreate":{"properties":{"amount_requested":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount Requested"},"payout_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payout Method"},"payout_details_masked":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Payout Details Masked","description":"Masked bank/card details, e.g. '**** 1234'. NEVER submit raw numbers."}},"type":"object","required":["amount_requested"],"title":"WithdrawRequestCreate","description":"User requests withdrawal to bank/card (stub MVP)."},"WithdrawRequestResponse":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"amount_requested":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount Requested"},"payout_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payout Method"},"payout_details_masked":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payout Details Masked"},"status":{"$ref":"#/components/schemas/WithdrawRequestStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"processed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Processed At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","user_id","amount_requested","status","created_at"],"title":"WithdrawRequestResponse"},"WithdrawRequestStatus":{"type":"string","enum":["pending","processing","completed","failed","canceled"],"title":"WithdrawRequestStatus","description":"Status of a topup or withdrawal stub request."},"shared_models__schemas__MessageResponse":{"properties":{"content":{"type":"string","title":"Content"},"author_name":{"type":"string","title":"Author Name"},"id":{"type":"integer","title":"Id"},"topic_id":{"type":"integer","title":"Topic Id"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"replies":{"items":{"$ref":"#/components/schemas/shared_models__schemas__MessageResponse"},"type":"array","title":"Replies","default":[]}},"type":"object","required":["content","author_name","id","topic_id","parent_id","user_id","created_at","updated_at"],"title":"MessageResponse"},"src__core__admin__routers__OllamaModelPayload":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"}},"type":"object","required":["model"],"title":"OllamaModelPayload","description":"Request payload for Ollama model lifecycle operations."},"src__core__services__ai_adapter__router__OllamaModelPayload":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"}},"type":"object","required":["model"],"title":"OllamaModelPayload"},"src__core__services__ai_examiner__schemas__CreateSessionRequest":{"properties":{"topic_id":{"type":"integer","title":"Topic Id"},"mode":{"type":"string","title":"Mode","default":"text"},"ai_teacher_profile_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Ai Teacher Profile Id"}},"type":"object","required":["topic_id"],"title":"CreateSessionRequest"},"src__core__services__ai_examiner__schemas__CreateTopicRequest":{"properties":{"title":{"type":"string","title":"Title"},"section":{"type":"string","title":"Section"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"level":{"$ref":"#/components/schemas/TopicLevel","default":"beginner"},"language":{"type":"string","title":"Language","default":"en"},"estimated_duration_minutes":{"type":"integer","title":"Estimated Duration Minutes","default":45},"status":{"$ref":"#/components/schemas/TopicStatus","default":"draft"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"intro_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intro Text"},"summary_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Prompt"},"system_prompt_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Template"},"questions":{"items":{"$ref":"#/components/schemas/CreateTopicQuestionRequest"},"type":"array","title":"Questions"},"anti_cheat_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Anti Cheat Config"},"linked_quiz_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Linked Quiz Ids"}},"type":"object","required":["title","section"],"title":"CreateTopicRequest","description":"Request body for creating a new ExaminerTopic."},"src__core__services__ai_examiner__schemas__MessageResponse":{"properties":{"id":{"type":"integer","title":"Id"},"role":{"$ref":"#/components/schemas/MessageRole"},"content":{"type":"string","title":"Content"},"message_type":{"$ref":"#/components/schemas/MessageType"},"phase":{"$ref":"#/components/schemas/LessonPhase"},"question_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","role","content","message_type","phase","created_at"],"title":"MessageResponse"},"src__core__services__ai_examiner__schemas__RAGKnowledgeIngestRequest":{"properties":{"topic":{"type":"string","title":"Topic"},"contents":{"items":{"type":"string"},"type":"array","title":"Contents"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["topic"],"title":"RAGKnowledgeIngestRequest","description":"Manual knowledge ingestion payload for AI Examiner RAG."},"src__core__services__ai_examiner__schemas__SessionDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"topic_id":{"type":"integer","title":"Topic Id"},"topic_title":{"type":"string","title":"Topic Title","default":""},"status":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__SessionStatus"},"current_phase":{"$ref":"#/components/schemas/LessonPhase"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"messages":{"items":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__MessageResponse"},"type":"array","title":"Messages","default":[]}},"type":"object","required":["id","topic_id","status","current_phase"],"title":"SessionDetailResponse"},"src__core__services__ai_examiner__schemas__SessionHistoryResponse":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__SessionResponse"},"type":"array","title":"Sessions"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["sessions","total"],"title":"SessionHistoryResponse"},"src__core__services__ai_examiner__schemas__SessionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"topic_id":{"type":"integer","title":"Topic Id"},"topic_title":{"type":"string","title":"Topic Title","default":""},"status":{"$ref":"#/components/schemas/src__core__services__ai_examiner__schemas__SessionStatus"},"current_phase":{"$ref":"#/components/schemas/LessonPhase"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"}},"type":"object","required":["id","topic_id","status","current_phase"],"title":"SessionResponse"},"src__core__services__ai_examiner__schemas__SessionStatus":{"type":"string","enum":["scheduled","in_progress","completed","abandoned"],"title":"SessionStatus"},"src__core__services__ai_examiner__schemas__TopicDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"section":{"type":"string","title":"Section"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"level":{"$ref":"#/components/schemas/TopicLevel"},"language":{"type":"string","title":"Language"},"estimated_duration_minutes":{"type":"integer","title":"Estimated Duration Minutes"},"tags":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tags"},"anti_cheat_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Anti Cheat Config"},"status":{"$ref":"#/components/schemas/TopicStatus"},"lesson_plan":{"additionalProperties":true,"type":"object","title":"Lesson Plan"},"prerequisites":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prerequisites"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","title","section","level","language","estimated_duration_minutes","status","lesson_plan","created_at"],"title":"TopicDetailResponse"},"src__core__services__ai_tutor__schemas__CreateSessionRequest":{"properties":{"topic_id":{"type":"integer","title":"Topic Id"},"mode":{"type":"string","title":"Mode","default":"text"},"ai_teacher_profile_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Ai Teacher Profile Id"},"booking_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Booking Id"}},"type":"object","required":["topic_id"],"title":"CreateSessionRequest"},"src__core__services__ai_tutor__schemas__CreateTopicRequest":{"properties":{"title":{"type":"string","title":"Title"},"section":{"type":"string","title":"Section"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"level":{"$ref":"#/components/schemas/TopicLevel","default":"beginner"},"language":{"type":"string","title":"Language","default":"en"},"estimated_duration_minutes":{"type":"integer","title":"Estimated Duration Minutes","default":45},"status":{"$ref":"#/components/schemas/TopicStatus","default":"draft"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"subject_id":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Subject Id"},"access_level":{"$ref":"#/components/schemas/TopicAccessLevel","default":"public"},"intro_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intro Text"},"summary_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Prompt"},"system_prompt_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Template"},"questions":{"items":{"$ref":"#/components/schemas/CreateTopicQuestionRequest"},"type":"array","title":"Questions"},"anti_cheat_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Anti Cheat Config"},"linked_quiz_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Linked Quiz Ids"}},"type":"object","required":["title","section"],"title":"CreateTopicRequest","description":"Request body for creating a new TutorTopic."},"src__core__services__ai_tutor__schemas__MessageResponse":{"properties":{"id":{"type":"integer","title":"Id"},"role":{"$ref":"#/components/schemas/MessageRole"},"content":{"type":"string","title":"Content"},"message_type":{"$ref":"#/components/schemas/MessageType"},"phase":{"$ref":"#/components/schemas/LessonPhase"},"question_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","role","content","message_type","phase","created_at"],"title":"MessageResponse"},"src__core__services__ai_tutor__schemas__RAGKnowledgeIngestRequest":{"properties":{"topic":{"type":"string","title":"Topic"},"contents":{"items":{"type":"string"},"type":"array","title":"Contents"},"source_type":{"type":"string","title":"Source Type","default":"manual"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["topic"],"title":"RAGKnowledgeIngestRequest","description":"Manual knowledge ingestion payload for AI Tutor RAG."},"src__core__services__ai_tutor__schemas__SessionDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"topic_id":{"type":"integer","title":"Topic Id"},"topic_title":{"type":"string","title":"Topic Title","default":""},"status":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__SessionStatus"},"current_phase":{"$ref":"#/components/schemas/LessonPhase"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"messages":{"items":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__MessageResponse"},"type":"array","title":"Messages","default":[]}},"type":"object","required":["id","topic_id","status","current_phase"],"title":"SessionDetailResponse"},"src__core__services__ai_tutor__schemas__SessionHistoryResponse":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__SessionResponse"},"type":"array","title":"Sessions"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["sessions","total"],"title":"SessionHistoryResponse"},"src__core__services__ai_tutor__schemas__SessionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"topic_id":{"type":"integer","title":"Topic Id"},"topic_title":{"type":"string","title":"Topic Title","default":""},"status":{"$ref":"#/components/schemas/src__core__services__ai_tutor__schemas__SessionStatus"},"current_phase":{"$ref":"#/components/schemas/LessonPhase"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"}},"type":"object","required":["id","topic_id","status","current_phase"],"title":"SessionResponse"},"src__core__services__ai_tutor__schemas__SessionStatus":{"type":"string","enum":["scheduled","in_progress","completed","abandoned","discarded"],"title":"SessionStatus"},"src__core__services__ai_tutor__schemas__TopicDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"section":{"type":"string","title":"Section"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"level":{"$ref":"#/components/schemas/TopicLevel"},"access_level":{"$ref":"#/components/schemas/TopicAccessLevel","default":"public"},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"},"language":{"type":"string","title":"Language"},"estimated_duration_minutes":{"type":"integer","title":"Estimated Duration Minutes"},"tags":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tags"},"anti_cheat_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Anti Cheat Config"},"status":{"$ref":"#/components/schemas/TopicStatus"},"lesson_plan":{"additionalProperties":true,"type":"object","title":"Lesson Plan"},"prerequisites":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prerequisites"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","title","section","level","language","estimated_duration_minutes","status","lesson_plan","created_at"],"title":"TopicDetailResponse"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"token"}}}}}}