{"openapi":"3.1.0","info":{"title":"Edu App API","description":"Educational platform API","contact":{"name":"Akramjon"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"version":"v1"},"paths":{"/api/v1/auth/register":{"post":{"tags":["api","api","auth"],"summary":"Register","description":"Yangi foydalanuvchini email + parol bilan ro'yxatdan o'tkazadi.","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["api","api","auth"],"summary":"Login","description":"Email va parol orqali tizimga kiradi.","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/google":{"post":{"tags":["api","api","auth"],"summary":"Google Login","description":"Google Sign-In orqali tizimga kiradi yoki yangi hisob yaratadi.\n\nFrontend Google SDK dan olingan id_token ni yuboradi.\nBackend uni Google serverlarida tasdiqlaydi.\n\nUch holat:\n- Google ID mavjud → kirish\n- Email mavjud, Google ID yo'q → Google ulanadi va kirish\n- Yangi foydalanuvchi → hisob yaratiladi va kirish","operationId":"google_login_api_v1_auth_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["api","api","auth"],"summary":"Refresh","description":"Refresh token yordamida yangi access + refresh token oladi.","operationId":"refresh_api_v1_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["api","api","auth"],"summary":"Logout","description":"Tizimdan chiqadi — refresh token o'chiriladi.","operationId":"logout_api_v1_auth_logout_post","responses":{"204":{"description":"Successful Response"}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/me":{"get":{"tags":["api","api","auth"],"summary":"Me","description":"Joriy foydalanuvchi profilini (bog'langan profillar bilan) qaytaradi.","operationId":"me_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/me/update":{"patch":{"tags":["api","api","auth"],"summary":"Update Me","description":"Joriy foydalanuvchi o'z profilini yangilaydi (faqat uzatilgan maydonlar).","operationId":"update_me_api_v1_auth_me_update_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/me/credentials":{"patch":{"tags":["api","api","auth"],"summary":"Update My Credentials","description":"Joriy foydalanuvchi login (email) va/yoki parolini o'zgartiradi.\n\nParoli bor hisob uchun `current_password` majburiy.","operationId":"update_my_credentials_api_v1_auth_me_credentials_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialsUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/skills":{"get":{"tags":["api","api","users"],"summary":"Get Skills","description":"Barcha ko'nikmalarni (sertifikatlari bilan birga) qaytaradi.\n\nFoydalanuvchi profilida ko'nikma tanlash uchun ishlatiladi.","operationId":"get_skills_api_v1_users_skills_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SkillResponse"},"type":"array","title":"Response Get Skills Api V1 Users Skills Get"}}}}}}},"/api/v1/users/me/skills":{"get":{"tags":["api","api","users"],"summary":"List My Skills","operationId":"list_my_skills_api_v1_users_me_skills_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkillListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","users"],"summary":"Add My Skill","operationId":"add_my_skill_api_v1_users_me_skills_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkillCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkill"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/me/skills/{skill_id}":{"patch":{"tags":["api","api","users"],"summary":"Update My Skill","operationId":"update_my_skill_api_v1_users_me_skills__skill_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"integer","title":"Skill Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkillUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkill"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","users"],"summary":"Delete My Skill","operationId":"delete_my_skill_api_v1_users_me_skills__skill_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"integer","title":"Skill Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/skills/pending":{"get":{"tags":["api","api","users"],"summary":"List Pending Skills","operationId":"list_pending_skills_api_v1_users_skills_pending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkillListResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/skills/{skill_id}/approve":{"post":{"tags":["api","api","users"],"summary":"Approve Skill","operationId":"approve_skill_api_v1_users_skills__skill_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"integer","title":"Skill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkill"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/skills/{skill_id}/reject":{"post":{"tags":["api","api","users"],"summary":"Reject Skill","operationId":"reject_skill_api_v1_users_skills__skill_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"skill_id","in":"path","required":true,"schema":{"type":"integer","title":"Skill Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkill"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users":{"get":{"tags":["api","api","users"],"summary":"List Users","description":"Barcha foydalanuvchilar ro'yxati (skills + bloklash + telefon holati).","operationId":"list_users_api_v1_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserListResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/{user_id}/block":{"post":{"tags":["api","api","users"],"summary":"Block User","operationId":"block_user_api_v1_users__user_id__block_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/unblock":{"post":{"tags":["api","api","users"],"summary":"Unblock User","operationId":"unblock_user_api_v1_users__user_id__unblock_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/phone/approve":{"post":{"tags":["api","api","users"],"summary":"Approve Phone","operationId":"approve_phone_api_v1_users__user_id__phone_approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/phone/reject":{"post":{"tags":["api","api","users"],"summary":"Reject Phone","operationId":"reject_phone_api_v1_users__user_id__phone_reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/phone":{"patch":{"tags":["api","api","users"],"summary":"Update Phone","operationId":"update_phone_api_v1_users__user_id__phone_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/permissions":{"patch":{"tags":["api","api","users"],"summary":"Update Permissions","operationId":"update_permissions_api_v1_users__user_id__permissions_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/skills":{"post":{"tags":["api","api","users"],"summary":"Admin Add Skill","operationId":"admin_add_skill_api_v1_users__user_id__skills_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkillCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/skills/{skill_id}":{"patch":{"tags":["api","api","users"],"summary":"Admin Update Skill","operationId":"admin_update_skill_api_v1_users__user_id__skills__skill_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"integer","title":"Skill Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSkillUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","users"],"summary":"Admin Delete Skill","operationId":"admin_delete_skill_api_v1_users__user_id__skills__skill_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"integer","title":"Skill Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/skills/{skill_id}/status":{"post":{"tags":["api","api","users"],"summary":"Admin Set Skill Status","operationId":"admin_set_skill_status_api_v1_users__user_id__skills__skill_id__status_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"skill_id","in":"path","required":true,"schema":{"type":"integer","title":"Skill Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillStatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account-links/me":{"get":{"tags":["api","api","account-links"],"summary":"List My Links","description":"Joriy foydalanuvchining bog'langan profillari.","operationId":"list_my_links_api_v1_account_links_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedProfileListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","account-links"],"summary":"Create Link","description":"Email orqali yangi bog'lanish qo'shadi.","operationId":"create_link_api_v1_account_links_me_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedProfileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/account-links/{link_id}/confirm":{"post":{"tags":["api","api","account-links"],"summary":"Confirm Link","description":"Kiruvchi yangi so'rovni tasdiqlaydi va o'z rolini beradi.","operationId":"confirm_link_api_v1_account_links__link_id__confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkConfirmRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedProfileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account-links/{link_id}/cancel":{"post":{"tags":["api","api","account-links"],"summary":"Cancel Link","description":"Bog'lanishni bekor qilishni so'raydi (yoki yangi so'rovni bekor qiladi).","operationId":"cancel_link_api_v1_account_links__link_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedProfileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account-links/{link_id}/cancel/confirm":{"post":{"tags":["api","api","account-links"],"summary":"Confirm Cancel Link","description":"Narigi tomon bekor qilishni tasdiqlaydi.","operationId":"confirm_cancel_link_api_v1_account_links__link_id__cancel_confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedProfileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account-links/{link_id}/cancel/reject":{"post":{"tags":["api","api","account-links"],"summary":"Reject Cancel Link","description":"Narigi tomon bekor qilishni rad etadi.","operationId":"reject_cancel_link_api_v1_account_links__link_id__cancel_reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedProfileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/filter":{"get":{"tags":["api","api","media"],"summary":"Get Filters","description":"Mavjud filtr qiymatlarini (janrlar, kategoriyalar, teglar) qaytaradi.","operationId":"get_filters_api_v1_media_filter_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterData"}}}}}},"put":{"tags":["api","api","media"],"summary":"Replace Filters","description":"Barcha filtr qiymatlarini yangilari bilan to'liq almashtiradi.","operationId":"replace_filters_api_v1_media_filter_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterData"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterData"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","media"],"summary":"Update Filters","description":"Faqat uzatilgan filtr maydonlarini yangilaydi (qolganlarini saqlab qoladi).","operationId":"update_filters_api_v1_media_filter_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterData"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/categories":{"get":{"tags":["api","api","media"],"summary":"Get Categories","description":"Mavjud kategoriyalar ro'yxatini qaytaradi.","operationId":"get_categories_api_v1_media_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Get Categories Api V1 Media Categories Get"}}}}}},"put":{"tags":["api","api","media"],"summary":"Edit Categories","description":"Kategoriyalar ro'yxatini to'liq almashtiradi (tahrirlash).","operationId":"edit_categories_api_v1_media_categories_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriesUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Edit Categories Api V1 Media Categories Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/gener":{"get":{"tags":["api","api","media"],"summary":"Get Genres","description":"Mavjud janrlar ro'yxatini qaytaradi.","operationId":"get_genres_api_v1_media_gener_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Get Genres Api V1 Media Gener Get"}}}}}},"put":{"tags":["api","api","media"],"summary":"Edit Genres","description":"Janrlar ro'yxatini to'liq almashtiradi (tahrirlash).","operationId":"edit_genres_api_v1_media_gener_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenresUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response Edit Genres Api V1 Media Gener Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/{media_type}":{"get":{"tags":["api","api","media"],"summary":"List Media","description":"Tanlangan turdagi medialar ro'yxatini sahifalash va filtr bilan qaytaradi.\n\nscope=usable — faqat ishlata oladiganlari (o'ziniki, bepul, obuna bo'lgan\nmuallifniki, egasiz); scope=mine — boshqaruv ro'yxati; standart — katalog.","operationId":"list_media_api_v1_media__media_type__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/MediaTypePath"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sarlavha bo'yicha qidiruv","title":"Q"},"description":"Sarlavha bo'yicha qidiruv"},{"name":"categories","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Kategoriyalar (vergul bilan)","title":"Categories"},"description":"Kategoriyalar (vergul bilan)"},{"name":"genres","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Janrlar (vergul bilan)","title":"Genres"},"description":"Janrlar (vergul bilan)"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Teglar (vergul bilan)","title":"Tags"},"description":"Teglar (vergul bilan)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Sahifa raqami","default":1,"title":"Page"},"description":"Sahifa raqami"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Sahifadagi elementlar soni","default":10,"title":"Size"},"description":"Sahifadagi elementlar soni"},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"catalog (standart) — hammasi; usable — ishlata oladiganlarim; mine — o'zimniki + egasiz","title":"Scope"},"description":"catalog (standart) — hammasi; usable — ishlata oladiganlarim; mine — o'zimniki + egasiz"},{"name":"author_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Faqat shu muallifning resurslari","title":"Author Id"},"description":"Faqat shu muallifning resurslari"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","media"],"summary":"Create Media","description":"Yangi media yuklaydi — asosiy faylni (va video uchun muqovani) diskka saqlaydi.\n\nmultipart/form-data: `file` yoki (faqat video uchun) `video_url` majburiy.\n`video_url` — tashqi havola (YouTube yoki to'g'ridan-to'g'ri .mp4); fayl\nyuklangan bo'lsa, fayl ustun turadi. Fayl kengaytmasi media turiga mos\nkelishi kerak (masalan videos -> .mp4). Muqova (thumnail / thumbnail_url)\nfaqat video uchun saqlanadi; image va audio da null bo'ladi.","operationId":"create_media_api_v1_media__media_type__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/MediaTypePath"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_media_api_v1_media__media_type__post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/media/{media_type}/{media_id}":{"get":{"tags":["api","api","media"],"summary":"Get Media Detail","description":"ID bo'yicha bitta medianing to'liq ma'lumotini (MediaDetail) qaytaradi.\n\nvideo/audio/image — uchchalasi ham bir xil MediaDetail modelini qaytaradi.","operationId":"get_media_detail_api_v1_media__media_type___media_id__get","parameters":[{"name":"media_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/MediaTypePath"}},{"name":"media_id","in":"path","required":true,"schema":{"type":"integer","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","media"],"summary":"Update Media","description":"Mavjud mediani yangilaydi — faqat uzatilgan maydonlar o'zgartiriladi.\n\nmultipart/form-data. `file`/`thumnail` berilsa, eski fayl yangisi bilan\nalmashtiriladi (eskisi diskdan o'chiriladi). thumnail faqat video uchun.","operationId":"update_media_api_v1_media__media_type___media_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/MediaTypePath"}},{"name":"media_id","in":"path","required":true,"schema":{"type":"integer","title":"Media Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_update_media_api_v1_media__media_type___media_id__patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","media"],"summary":"Delete Media","description":"Mediani o'chiradi (faqat egasi, super_admin yoki egasiz media).","operationId":"delete_media_api_v1_media__media_type___media_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/MediaTypePath"}},{"name":"media_id","in":"path","required":true,"schema":{"type":"integer","title":"Media Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/my/exercises":{"get":{"tags":["api","api","exercises"],"summary":"List Exercises","operationId":"list_exercises_api_v1_my_exercises_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sarlavha bo'yicha qidiruv","title":"Q"},"description":"Sarlavha bo'yicha qidiruv"},{"name":"group_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Guruh kategoriyasi bo'yicha filtr","title":"Group Category"},"description":"Guruh kategoriyasi bo'yicha filtr"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Sahifa raqami","default":1,"title":"Page"},"description":"Sahifa raqami"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Sahifadagi elementlar soni","default":12,"title":"Size"},"description":"Sahifadagi elementlar soni"},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"usable (standart) — ishlata oladiganlarim; mine — o'zimniki + egasiz","title":"Scope"},"description":"usable (standart) — ishlata oladiganlarim; mine — o'zimniki + egasiz"},{"name":"author_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Faqat shu muallifning mashqlari","title":"Author Id"},"description":"Faqat shu muallifning mashqlari"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","exercises"],"summary":"Create Exercise","operationId":"create_exercise_api_v1_my_exercises_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/my/exercises/{exercise_id}":{"get":{"tags":["api","api","exercises"],"summary":"Get Exercise","operationId":"get_exercise_api_v1_my_exercises__exercise_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"exercise_id","in":"path","required":true,"schema":{"type":"integer","title":"Exercise Id"}},{"name":"share_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Muallif ulashgan havola tokeni (obunasiz ochish)","title":"Share Token"},"description":"Muallif ulashgan havola tokeni (obunasiz ochish)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","exercises"],"summary":"Update Exercise","operationId":"update_exercise_api_v1_my_exercises__exercise_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"exercise_id","in":"path","required":true,"schema":{"type":"integer","title":"Exercise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","exercises"],"summary":"Delete Exercise","operationId":"delete_exercise_api_v1_my_exercises__exercise_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"exercise_id","in":"path","required":true,"schema":{"type":"integer","title":"Exercise Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/my/exercises/{exercise_id}/share":{"get":{"tags":["api","api","exercises"],"summary":"Get Exercise Share","operationId":"get_exercise_share_api_v1_my_exercises__exercise_id__share_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"exercise_id","in":"path","required":true,"schema":{"type":"integer","title":"Exercise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseShare"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/my/exercises/{exercise_id}/usages":{"get":{"tags":["api","api","exercises"],"summary":"Get Exercise Usages","description":"Mashq ishlatilgan darslar, o'yinlar va tavsiyalar (saqlashdan oldin\nogohlantirish uchun — o'zgarish shu joylarning hammasida ko'rinadi).","operationId":"get_exercise_usages_api_v1_my_exercises__exercise_id__usages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"exercise_id","in":"path","required":true,"schema":{"type":"integer","title":"Exercise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExerciseUsageList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/filters":{"get":{"tags":["api","api","courses"],"summary":"Get Filters","operationId":"get_filters_api_v1_courses_filters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterUniverse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/courses":{"get":{"tags":["api","api","courses"],"summary":"List Courses","operationId":"list_courses_api_v1_courses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sarlavha/tavsif bo'yicha qidiruv","title":"Search"},"description":"Sarlavha/tavsif bo'yicha qidiruv"},{"name":"categories","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Kategoriyalar (AND)","title":"Categories"},"description":"Kategoriyalar (AND)"},{"name":"genres","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Janrlar (AND)","title":"Genres"},"description":"Janrlar (AND)"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Teglar (AND)","title":"Tags"},"description":"Teglar (AND)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Sahifa (hajmi 12)","default":1,"title":"Page"},"description":"Sahifa (hajmi 12)"},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"mine — faqat men boshqaradigan kurslar (muallif / kurs-admin); bo'sh — hammasi (katalog)","title":"Scope"},"description":"mine — faqat men boshqaradigan kurslar (muallif / kurs-admin); bo'sh — hammasi (katalog)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoursePage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","courses"],"summary":"Create Course","operationId":"create_course_api_v1_courses_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}":{"get":{"tags":["api","api","courses"],"summary":"Get Course","operationId":"get_course_api_v1_courses__course_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","courses"],"summary":"Update Course","operationId":"update_course_api_v1_courses__course_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","courses"],"summary":"Delete Course","operationId":"delete_course_api_v1_courses__course_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/duplicate":{"post":{"tags":["api","api","courses"],"summary":"Duplicate Course","operationId":"duplicate_course_api_v1_courses__course_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/lessons":{"post":{"tags":["api","api","courses"],"summary":"Add Lesson","operationId":"add_lesson_api_v1_courses__course_id__lessons_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LessonCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/lessons/order":{"put":{"tags":["api","api","courses"],"summary":"Reorder Lessons","operationId":"reorder_lessons_api_v1_courses__course_id__lessons_order_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LessonReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/lessons/{lesson_id}":{"patch":{"tags":["api","api","courses"],"summary":"Update Lesson","operationId":"update_lesson_api_v1_courses__course_id__lessons__lesson_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"lesson_id","in":"path","required":true,"schema":{"type":"string","title":"Lesson Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LessonUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","courses"],"summary":"Delete Lesson","operationId":"delete_lesson_api_v1_courses__course_id__lessons__lesson_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"lesson_id","in":"path","required":true,"schema":{"type":"string","title":"Lesson Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/enroll":{"post":{"tags":["api","api","courses"],"summary":"Enroll","description":"Joriy foydalanuvchi kurs guruhiga qo'shiladi: a'zolik SO'ROVI\n(status=request; kurs admini tasdiqlagach o'quvchiga aylanadi). Ochiq\ndarslar (is_public) uchun a'zolik shart emas.","operationId":"enroll_api_v1_courses__course_id__enroll_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseStudent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","courses"],"summary":"Unenroll","description":"Joriy foydalanuvchi kursdan chiqadi (yoki kutayotgan so'rovini bekor qiladi).","operationId":"unenroll_api_v1_courses__course_id__enroll_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/pricing":{"put":{"tags":["api","api","courses"],"summary":"Set Pricing","description":"Kurs obuna sozlamalari: obuna turlari (haftalik, 1 / 3 / 6 oylik, butun\nkurs — har biri o'z narxi va chegirmasi bilan) va izoh. Faqat kurs admini.","operationId":"set_pricing_api_v1_courses__course_id__pricing_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoursePricing-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/subscribe":{"post":{"tags":["api","api","courses"],"summary":"Subscribe","description":"Pulli kursga obuna: narx hamyondan yechiladi (komissiyadan keyin\nmuallifga), foydalanuvchi darhol kurs o'quvchisi bo'ladi.","operationId":"subscribe_api_v1_courses__course_id__subscribe_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseSubscribeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/subscription":{"patch":{"tags":["api","api","courses"],"summary":"Set Subscription Auto Renew","description":"Haftalik / oylik kurs obunasining avto-uzaytirishini yoqadi / o'chiradi.","operationId":"set_subscription_auto_renew_api_v1_courses__course_id__subscription_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseAutoRenewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Course"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students":{"get":{"tags":["api","api","courses"],"summary":"List Students","operationId":"list_students_api_v1_courses__course_id__students_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ism/email/telefon bo'yicha","title":"Search"},"description":"Ism/email/telefon bo'yicha"},{"name":"group_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Group Ids"}},{"name":"statuses","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Statuses"}},{"name":"subscriptions","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Subscriptions"}},{"name":"sort_field","in":"query","required":false,"schema":{"$ref":"#/components/schemas/StudentSortField","default":"name"}},{"name":"sort_ascending","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Sort Ascending"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/members":{"post":{"tags":["api","api","courses"],"summary":"Add Member","description":"Kurs-xodim kursga a'zo qo'shadi (o'quvchi/o'qituvchi/ota-ona/xodim…).","operationId":"add_member_api_v1_courses__course_id__members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseStudent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}":{"patch":{"tags":["api","api","courses"],"summary":"Update Student","operationId":"update_student_api_v1_courses__course_id__students__student_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseStudent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/user-lookup":{"get":{"tags":["api","api","courses"],"summary":"Lookup User","description":"A'zoga yaqin qo'shish uchun foydalanuvchini aniq moslik bilan topadi\n(ko'pi bilan bitta natija).","operationId":"lookup_user_api_v1_courses__course_id__user_lookup_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"ID, email yoki telefon (aniq moslik)","default":"","title":"Q"},"description":"ID, email yoki telefon (aniq moslik)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}/relatives":{"get":{"tags":["api","api","courses"],"summary":"List Relatives","description":"A'zoning yaqinlari (ota, ona, aka, tog'a, ...).","operationId":"list_relatives_api_v1_courses__course_id__students__student_id__relatives_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseRelativeList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","courses"],"summary":"Add Relative","operationId":"add_relative_api_v1_courses__course_id__students__student_id__relatives_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseRelativeCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseRelativeList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}/relatives/{relative_id}":{"delete":{"tags":["api","api","courses"],"summary":"Remove Relative","operationId":"remove_relative_api_v1_courses__course_id__students__student_id__relatives__relative_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}},{"name":"relative_id","in":"path","required":true,"schema":{"type":"string","title":"Relative Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseRelativeList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}/phone/approve":{"post":{"tags":["api","api","courses"],"summary":"Approve Student Phone","description":"O'qituvchi a'zo kiritgan telefon raqami haqiqiyligini tasdiqlaydi.","operationId":"approve_student_phone_api_v1_courses__course_id__students__student_id__phone_approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseStudent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}/phone/reject":{"post":{"tags":["api","api","courses"],"summary":"Reject Student Phone","description":"O'qituvchi raqamni rad etadi — ilova foydalanuvchidan yangisini so'raydi.","operationId":"reject_student_phone_api_v1_courses__course_id__students__student_id__phone_reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneRejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseStudent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/statistics":{"get":{"tags":["api","api","courses"],"summary":"Course Statistics","description":"A'zolar reytingi (o'zlashtirish bo'yicha) + agregat ko'rsatkichlar.","operationId":"course_statistics_api_v1_courses__course_id__statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/schedule/{schedule_id}/attendance":{"get":{"tags":["api","api","courses"],"summary":"Get Attendance","description":"Dars uchun guruh a'zolarining davomat/ball ro'yxati.","operationId":"get_attendance_api_v1_courses__course_id__schedule__schedule_id__attendance_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","title":"Schedule Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttendanceList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["api","api","courses"],"summary":"Set Attendance","description":"Davomat/ballni saqlaydi va o'quvchilar o'zlashtirishini qayta hisoblaydi.","operationId":"set_attendance_api_v1_courses__course_id__schedule__schedule_id__attendance_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttendanceList"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttendanceList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/grades":{"post":{"tags":["api","api","courses"],"summary":"Add Grade","description":"AI/o'qituvchi bahosini saqlaydi va o'quvchi mastery'sini qayta hisoblaydi.\n\nsource='exam' → kurs-admin (o'qituvchi) huquqi kerak.\nsource='exercise' → o'quvchi o'zi; student_id o'zining a'zo yozuvi bo'lishi shart.","operationId":"add_grade_api_v1_courses__course_id__grades_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseGrade"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}/grades":{"get":{"tags":["api","api","courses"],"summary":"List Grades","description":"O'quvchining baholari ro'yxati.","operationId":"list_grades_api_v1_courses__course_id__students__student_id__grades_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}/payments":{"post":{"tags":["api","api","courses"],"summary":"Record Payment","operationId":"record_payment_api_v1_courses__course_id__students__student_id__payments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseStudent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/groups":{"get":{"tags":["api","api","courses"],"summary":"List Groups","operationId":"list_groups_api_v1_courses__course_id__groups_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","courses"],"summary":"Create Group","operationId":"create_group_api_v1_courses__course_id__groups_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseGroupCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseGroup"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/groups/{group_id}":{"patch":{"tags":["api","api","courses"],"summary":"Update Group","operationId":"update_group_api_v1_courses__course_id__groups__group_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseGroup"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","courses"],"summary":"Delete Group","operationId":"delete_group_api_v1_courses__course_id__groups__group_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"group_id","in":"path","required":true,"schema":{"type":"string","title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/schedule":{"get":{"tags":["api","api","courses"],"summary":"List Schedule","operationId":"list_schedule_api_v1_courses__course_id__schedule_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","courses"],"summary":"Create Schedule","operationId":"create_schedule_api_v1_courses__course_id__schedule_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledLessonCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledLesson"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/schedule/{schedule_id}":{"patch":{"tags":["api","api","courses"],"summary":"Update Schedule","operationId":"update_schedule_api_v1_courses__course_id__schedule__schedule_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","title":"Schedule Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledLessonUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledLesson"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","courses"],"summary":"Delete Schedule","operationId":"delete_schedule_api_v1_courses__course_id__schedule__schedule_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"schedule_id","in":"path","required":true,"schema":{"type":"string","title":"Schedule Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recommendations":{"get":{"tags":["api","api","recommendations"],"summary":"Get Board","operationId":"get_board_api_v1_recommendations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Kalendar yili (standart: joriy)","title":"Year"},"description":"Kalendar yili (standart: joriy)"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tanlangan kun (dd.MM.yyyy) — items shu kun bo'yicha","title":"Date"},"description":"Tanlangan kun (dd.MM.yyyy) — items shu kun bo'yicha"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sarlavha/tavsif bo'yicha qidiruv","title":"Q"},"description":"Sarlavha/tavsif bo'yicha qidiruv"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationsBoard"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","recommendations"],"summary":"Create Recommendation","operationId":"create_recommendation_api_v1_recommendations_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recommendations/link-options":{"get":{"tags":["api","api","recommendations"],"summary":"Link Options","operationId":"link_options_api_v1_recommendations_link_options_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"type","in":"query","required":true,"schema":{"type":"string","description":"story|video|audio|course|exercise|lesson","title":"Type"},"description":"story|video|audio|course|exercise|lesson"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkOptionList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recommendations/{recommendation_id}":{"get":{"tags":["api","api","recommendations"],"summary":"Get Recommendation","operationId":"get_recommendation_api_v1_recommendations__recommendation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recommendation_id","in":"path","required":true,"schema":{"type":"string","title":"Recommendation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","recommendations"],"summary":"Update Recommendation","operationId":"update_recommendation_api_v1_recommendations__recommendation_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recommendation_id","in":"path","required":true,"schema":{"type":"string","title":"Recommendation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","recommendations"],"summary":"Delete Recommendation","operationId":"delete_recommendation_api_v1_recommendations__recommendation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recommendation_id","in":"path","required":true,"schema":{"type":"string","title":"Recommendation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/statistics":{"get":{"tags":["api","api","statistics"],"summary":"Get Statistics","operationId":"get_statistics_api_v1_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"day|week|month|year","title":"Period"},"description":"day|week|month|year"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatisticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/statistics/me":{"get":{"tags":["api","api","statistics"],"summary":"Get My Statistics","description":"Joriy foydalanuvchining o'z kurslaridagi o'zlashtirish/davomat/reyting.","operationId":"get_my_statistics_api_v1_statistics_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalStatsResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/stories":{"get":{"tags":["api","api","stories"],"summary":"List Stories","operationId":"list_stories_api_v1_stories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"genre","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genre"}},{"name":"theme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Story"},"title":"Response List Stories Api V1 Stories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","stories"],"summary":"Create Story","operationId":"create_story_api_v1_stories_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Story"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stories/{story_id}":{"patch":{"tags":["api","api","stories"],"summary":"Update Story","operationId":"update_story_api_v1_stories__story_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"story_id","in":"path","required":true,"schema":{"type":"string","title":"Story Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Story"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","stories"],"summary":"Delete Story","operationId":"delete_story_api_v1_stories__story_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"story_id","in":"path","required":true,"schema":{"type":"string","title":"Story Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies":{"get":{"tags":["api","api","strategies"],"summary":"List Strategies","operationId":"list_strategies_api_v1_strategies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","strategies"],"summary":"Create Strategy","operationId":"create_strategy_api_v1_strategies_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/strategies/recommendation-options":{"get":{"tags":["api","api","strategies"],"summary":"Recommendation Options","operationId":"recommendation_options_api_v1_strategies_recommendation_options_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationOptionList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies/{strategy_id}":{"get":{"tags":["api","api","strategies"],"summary":"Get Strategy","operationId":"get_strategy_api_v1_strategies__strategy_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","strategies"],"summary":"Update Strategy","operationId":"update_strategy_api_v1_strategies__strategy_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","strategies"],"summary":"Delete Strategy","operationId":"delete_strategy_api_v1_strategies__strategy_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies/{strategy_id}/stages":{"post":{"tags":["api","api","strategies"],"summary":"Add Stage","operationId":"add_stage_api_v1_strategies__strategy_id__stages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyStageCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyStageDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies/{strategy_id}/stages/recommendations":{"post":{"tags":["api","api","strategies"],"summary":"Add Recommendation Stages","operationId":"add_recommendation_stages_api_v1_strategies__strategy_id__stages_recommendations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StageRecommendationsAdd"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies/{strategy_id}/stages/order":{"put":{"tags":["api","api","strategies"],"summary":"Reorder Stages","operationId":"reorder_stages_api_v1_strategies__strategy_id__stages_order_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StageReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies/{strategy_id}/stages/{stage_id}":{"get":{"tags":["api","api","strategies"],"summary":"Get Stage","operationId":"get_stage_api_v1_strategies__strategy_id__stages__stage_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","title":"Stage Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyStageDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","strategies"],"summary":"Update Stage","operationId":"update_stage_api_v1_strategies__strategy_id__stages__stage_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","title":"Stage Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyStageUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyStageDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","strategies"],"summary":"Delete Stage","operationId":"delete_stage_api_v1_strategies__strategy_id__stages__stage_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","title":"Stage Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies/{strategy_id}/start":{"post":{"tags":["api","api","strategies"],"summary":"Start Strategy","operationId":"start_strategy_api_v1_strategies__strategy_id__start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyProgress"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","strategies"],"summary":"Leave Strategy","operationId":"leave_strategy_api_v1_strategies__strategy_id__start_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/strategies/{strategy_id}/stages/{stage_id}/complete":{"post":{"tags":["api","api","strategies"],"summary":"Complete Stage","operationId":"complete_stage_api_v1_strategies__strategy_id__stages__stage_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"string","title":"Strategy Id"}},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string","title":"Stage Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyProgress"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/home/tasks":{"get":{"tags":["api","api","home"],"summary":"Get Daily Tasks","operationId":"get_daily_tasks_api_v1_home_tasks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeTasksResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/home/dashboard":{"get":{"tags":["api","api","home"],"summary":"Get Dashboard","operationId":"get_dashboard_api_v1_home_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeDashboard"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/home/categories":{"get":{"tags":["api","api","home"],"summary":"List Categories","operationId":"list_categories_api_v1_home_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeCategoryListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","home"],"summary":"Create Category","operationId":"create_category_api_v1_home_categories_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeCategoryCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeCategoryAdmin"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/home/categories/{category_id}":{"patch":{"tags":["api","api","home"],"summary":"Update Category","operationId":"update_category_api_v1_home_categories__category_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeCategoryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeCategoryAdmin"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","home"],"summary":"Delete Category","operationId":"delete_category_api_v1_home_categories__category_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/games/browse":{"get":{"tags":["api","api","games"],"summary":"Browse","operationId":"browse_api_v1_games_browse_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Bo'sh — ildiz daraja","title":"Category Id"},"description":"Bo'sh — ildiz daraja"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameBrowse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/games/permissions":{"get":{"tags":["api","api","games"],"summary":"Permissions","operationId":"permissions_api_v1_games_permissions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GamePermissions"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/games/categories":{"get":{"tags":["api","api","games"],"summary":"List Categories","operationId":"list_categories_api_v1_games_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCategoryListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","games"],"summary":"Create Category","operationId":"create_category_api_v1_games_categories_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCategoryCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCategory"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/games/categories/{category_id}":{"patch":{"tags":["api","api","games"],"summary":"Update Category","operationId":"update_category_api_v1_games_categories__category_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCategoryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCategory"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","games"],"summary":"Delete Category","operationId":"delete_category_api_v1_games_categories__category_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/games/categories/{category_id}/move":{"post":{"tags":["api","api","games"],"summary":"Move Category","operationId":"move_category_api_v1_games_categories__category_id__move_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCategoryMove"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCategoryListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/games/items":{"get":{"tags":["api","api","games"],"summary":"List Games","operationId":"list_games_api_v1_games_items_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"query","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["api","api","games"],"summary":"Create Game","operationId":"create_game_api_v1_games_items_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Game"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/games/items/{game_id}":{"get":{"tags":["api","api","games"],"summary":"Get Game","operationId":"get_game_api_v1_games_items__game_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Game"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","games"],"summary":"Update Game","operationId":"update_game_api_v1_games_items__game_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Game"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","games"],"summary":"Delete Game","operationId":"delete_game_api_v1_games_items__game_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"integer","title":"Game Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/homework/limits":{"get":{"tags":["api","api","homework"],"summary":"Homework Limits","operationId":"homework_limits_api_v1_homework_limits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeworkLimits"}}}}}}},"/api/v1/courses/{course_id}/lessons/{lesson_id}/homework/me":{"get":{"tags":["api","api","homework"],"summary":"My Homework","operationId":"my_homework_api_v1_courses__course_id__lessons__lesson_id__homework_me_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"lesson_id","in":"path","required":true,"schema":{"type":"string","title":"Lesson Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/HomeworkSubmission"},{"type":"null"}],"title":"Response My Homework Api V1 Courses  Course Id  Lessons  Lesson Id  Homework Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/lessons/{lesson_id}/homework":{"post":{"tags":["api","api","homework"],"summary":"Submit Homework","operationId":"submit_homework_api_v1_courses__course_id__lessons__lesson_id__homework_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"lesson_id","in":"path","required":true,"schema":{"type":"string","title":"Lesson Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_homework_api_v1_courses__course_id__lessons__lesson_id__homework_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeworkSubmission"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/homework":{"get":{"tags":["api","api","homework"],"summary":"List Homework","operationId":"list_homework_api_v1_courses__course_id__homework_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"lesson_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(submitted|reviewed|returned)$"},{"type":"null"}],"title":"Status"}},{"name":"student_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Student Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeworkListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/students/{student_id}/results":{"get":{"tags":["api","api","homework"],"summary":"Member Results","operationId":"member_results_api_v1_courses__course_id__students__student_id__results_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"student_id","in":"path","required":true,"schema":{"type":"string","title":"Student Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyLessonResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/results/me":{"get":{"tags":["api","api","homework"],"summary":"My Results","operationId":"my_results_api_v1_courses__course_id__results_me_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyLessonResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/lessons/{lesson_id}/ranking":{"get":{"tags":["api","api","homework"],"summary":"Lesson Ranking","operationId":"lesson_ranking_api_v1_courses__course_id__lessons__lesson_id__ranking_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"lesson_id","in":"path","required":true,"schema":{"type":"string","title":"Lesson Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LessonRankingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/homework/{submission_id}":{"get":{"tags":["api","api","homework"],"summary":"Get Homework","operationId":"get_homework_api_v1_courses__course_id__homework__submission_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"submission_id","in":"path","required":true,"schema":{"type":"string","title":"Submission Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeworkSubmission"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/courses/{course_id}/homework/{submission_id}/review":{"patch":{"tags":["api","api","homework"],"summary":"Review Homework","operationId":"review_homework_api_v1_courses__course_id__homework__submission_id__review_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"submission_id","in":"path","required":true,"schema":{"type":"string","title":"Submission Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeworkReview"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeworkSubmission"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/homework/files/{submission_id}/{file_id}":{"get":{"tags":["api","api","homework"],"summary":"Homework File","operationId":"homework_file_api_v1_homework_files__submission_id___file_id__get","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"string","title":"Submission Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","title":"File Id"}},{"name":"exp","in":"query","required":true,"schema":{"type":"integer","title":"Exp"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","title":"Sig"}},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Download"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages":{"get":{"tags":["api","api","messages"],"summary":"List Messages","operationId":"list_messages_api_v1_messages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","messages"],"summary":"Create Message","operationId":"create_message_api_v1_messages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/{message_id}":{"get":{"tags":["api","api","messages"],"summary":"Get Message","operationId":"get_message_api_v1_messages__message_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["api","api","messages"],"summary":"Update Message","operationId":"update_message_api_v1_messages__message_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/{message_id}/replies":{"post":{"tags":["api","api","messages"],"summary":"Add Reply","operationId":"add_reply_api_v1_messages__message_id__replies_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications":{"get":{"tags":["api","api","notifications"],"summary":"List Notifications","operationId":"list_notifications_api_v1_notifications_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","notifications"],"summary":"Create Notification","operationId":"create_notification_api_v1_notifications_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notification"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/uploads/images":{"post":{"tags":["api","api","uploads"],"summary":"Upload Image","description":"Rasmni diskka saqlaydi va public URL qaytaradi.","operationId":"upload_image_api_v1_uploads_images_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_image_api_v1_uploads_images_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet":{"get":{"tags":["api","api","wallet"],"summary":"Get Wallet","operationId":"get_wallet_api_v1_wallet_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wallet"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet/transactions":{"get":{"tags":["api","api","wallet"],"summary":"Get Transactions","operationId":"get_transactions_api_v1_wallet_transactions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/top-up":{"post":{"tags":["api","api","wallet"],"summary":"Top Up","operationId":"top_up_api_v1_wallet_top_up_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wallet"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet/top-up/apple":{"post":{"tags":["api","api","wallet"],"summary":"Top Up Apple","description":"iOS: App Store xaridini tekshirib balansga qo'shadi (idempotent).","operationId":"top_up_apple_api_v1_wallet_top_up_apple_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleTopUpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wallet"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet/top-up/google":{"post":{"tags":["api","api","wallet"],"summary":"Top Up Google","description":"Android: Google Play xaridini imzo orqali tekshirib balansga qo'shadi\n(idempotent).","operationId":"top_up_google_api_v1_wallet_top_up_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleTopUpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wallet"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet/transfer":{"post":{"tags":["api","api","wallet"],"summary":"Transfer","description":"O'z balansidan boshqa foydalanuvchiga (email/telefon bo'yicha) o'tkazma.","operationId":"transfer_api_v1_wallet_transfer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wallet"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet/plans":{"get":{"tags":["api","api","wallet"],"summary":"List Plans","description":"Mobil balans oynasi uchun faol tariflar.","operationId":"list_plans_api_v1_wallet_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanListResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","wallet"],"summary":"Create Plan","operationId":"create_plan_api_v1_wallet_plans_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionPlanAdmin"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet/plans/all":{"get":{"tags":["api","api","wallet"],"summary":"List All Plans","description":"Admin: barcha tariflar (nofaollari ham).","operationId":"list_all_plans_api_v1_wallet_plans_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanAdminListResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/wallet/plans/{plan_id}":{"patch":{"tags":["api","api","wallet"],"summary":"Update Plan","operationId":"update_plan_api_v1_wallet_plans__plan_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionPlanAdmin"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","wallet"],"summary":"Delete Plan","operationId":"delete_plan_api_v1_wallet_plans__plan_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/plans/{plan_id}/subscribe":{"post":{"tags":["api","api","wallet"],"summary":"Subscribe","description":"Tarifga obuna — narx balansdan yechiladi (yetmasa 409).","operationId":"subscribe_api_v1_wallet_plans__plan_id__subscribe_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wallet"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/users/{user_id}/top-up":{"post":{"tags":["api","api","wallet"],"summary":"Admin Top Up","description":"Admin (finance huquqi bilan) foydalanuvchi balansini to'ldiradi.","operationId":"admin_top_up_api_v1_wallet_users__user_id__top_up_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTopUpRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wallet"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors":{"get":{"tags":["api","api","authors"],"summary":"List Authors","operationId":"list_authors_api_v1_authors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID, email yoki telefon (aniq moslik)","title":"Q"},"description":"ID, email yoki telefon (aniq moslik)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Author"},"title":"Response List Authors Api V1 Authors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/settings/commission":{"get":{"tags":["api","api","authors"],"summary":"Get Commission","operationId":"get_commission_api_v1_authors_settings_commission_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionSetting"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["api","api","authors"],"summary":"Set Commission","operationId":"set_commission_api_v1_authors_settings_commission_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionSetting"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionSetting"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/authors/me/plan":{"get":{"tags":["api","api","authors"],"summary":"Get My Plan","operationId":"get_my_plan_api_v1_authors_me_plan_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorPlan"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["api","api","authors"],"summary":"Update My Plan","operationId":"update_my_plan_api_v1_authors_me_plan_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorPlanUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorPlan"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/authors/me/custom-plans":{"get":{"tags":["api","api","authors"],"summary":"My Custom Plans","operationId":"my_custom_plans_api_v1_authors_me_custom_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CustomPlan"},"type":"array","title":"Response My Custom Plans Api V1 Authors Me Custom Plans Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","authors"],"summary":"Create Custom Plan","operationId":"create_custom_plan_api_v1_authors_me_custom_plans_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomPlanSave"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomPlan"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/authors/me/custom-plans/{plan_id}":{"put":{"tags":["api","api","authors"],"summary":"Update Custom Plan","operationId":"update_custom_plan_api_v1_authors_me_custom_plans__plan_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomPlanSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomPlan"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","authors"],"summary":"Delete Custom Plan","operationId":"delete_custom_plan_api_v1_authors_me_custom_plans__plan_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/me/resources":{"get":{"tags":["api","api","authors"],"summary":"My Resources","operationId":"my_resources_api_v1_authors_me_resources_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"enum":["exercise","video","audio","image"],"type":"string","default":"exercise","title":"Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorResourcePage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/me/resources/{resource_type}/{resource_id}":{"patch":{"tags":["api","api","authors"],"summary":"Set Resource Access","operationId":"set_resource_access_api_v1_authors_me_resources__resource_type___resource_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resource_type","in":"path","required":true,"schema":{"enum":["exercise","video","audio","image"],"type":"string","title":"Resource Type"}},{"name":"resource_id","in":"path","required":true,"schema":{"type":"integer","title":"Resource Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceAccessUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorResource"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/me/subscriptions":{"get":{"tags":["api","api","authors"],"summary":"My Subscriptions","operationId":"my_subscriptions_api_v1_authors_me_subscriptions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Subscription"},"type":"array","title":"Response My Subscriptions Api V1 Authors Me Subscriptions Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/authors/me/followers":{"get":{"tags":["api","api","authors"],"summary":"My Followers","description":"Ergashuvchilarim: kutayotgan so'rovlar birinchi.","operationId":"my_followers_api_v1_authors_me_followers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Follower"},"type":"array","title":"Response My Followers Api V1 Authors Me Followers Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/authors/me/followers/{follower_id}/approve":{"post":{"tags":["api","api","authors"],"summary":"Approve Follower","operationId":"approve_follower_api_v1_authors_me_followers__follower_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"follower_id","in":"path","required":true,"schema":{"type":"integer","title":"Follower Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Follower"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/me/followers/{follower_id}/reject":{"post":{"tags":["api","api","authors"],"summary":"Reject Follower","operationId":"reject_follower_api_v1_authors_me_followers__follower_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"follower_id","in":"path","required":true,"schema":{"type":"integer","title":"Follower Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Follower"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/me/followers/{follower_id}":{"patch":{"tags":["api","api","authors"],"summary":"Update Follower Terms","description":"Shaxsiy shart: narx foizi, doimiy tekin, N oy tekin.","operationId":"update_follower_terms_api_v1_authors_me_followers__follower_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"follower_id","in":"path","required":true,"schema":{"type":"integer","title":"Follower Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FollowerTermsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Follower"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/me/subscribers":{"get":{"tags":["api","api","authors"],"summary":"My Subscribers","operationId":"my_subscribers_api_v1_authors_me_subscribers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribersSummary"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/authors/{author_id}":{"get":{"tags":["api","api","authors"],"summary":"Get Author","operationId":"get_author_api_v1_authors__author_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Author"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/{author_id}/resources":{"get":{"tags":["api","api","authors"],"summary":"Author Resources","operationId":"author_resources_api_v1_authors__author_id__resources_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}},{"name":"type","in":"query","required":false,"schema":{"enum":["exercise","video","audio","image"],"type":"string","default":"exercise","title":"Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorResourcePage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/{author_id}/follow":{"post":{"tags":["api","api","authors"],"summary":"Follow","description":"Ergashish so'rovi (muallifda pullik tur bo'lsa — darhol tasdiqlanadi).","operationId":"follow_api_v1_authors__author_id__follow_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Author"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","authors"],"summary":"Unfollow","operationId":"unfollow_api_v1_authors__author_id__follow_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Author"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/{author_id}/subscribe":{"post":{"tags":["api","api","authors"],"summary":"Subscribe","operationId":"subscribe_api_v1_authors__author_id__subscribe_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Author"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/authors/{author_id}/auto-renew":{"post":{"tags":["api","api","authors"],"summary":"Set Auto Renew","operationId":"set_auto_renew_api_v1_authors__author_id__auto_renew_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}},{"name":"type","in":"query","required":true,"schema":{"anyOf":[{"enum":["exercise","video","audio","image","course"],"type":"string"},{"const":"plan","type":"string"}],"title":"Type"}},{"name":"enabled","in":"query","required":true,"schema":{"type":"boolean","title":"Enabled"}},{"name":"plan_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Author"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/subjects":{"get":{"tags":["api","api","catalog"],"summary":"List Subjects","operationId":"list_subjects_api_v1_catalog_subjects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCategoryList"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api","api","catalog"],"summary":"Create Subject","operationId":"create_subject_api_v1_catalog_subjects_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCategoryCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCategory"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/catalog/subjects/{category_id}":{"patch":{"tags":["api","api","catalog"],"summary":"Update Subject","operationId":"update_subject_api_v1_catalog_subjects__category_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCategoryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCategory"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api","api","catalog"],"summary":"Delete Subject","operationId":"delete_subject_api_v1_catalog_subjects__category_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/subjects/{category_id}/move":{"post":{"tags":["api","api","catalog"],"summary":"Move Subject","operationId":"move_subject_api_v1_catalog_subjects__category_id__move_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCategoryMove"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubjectCategoryList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/plans":{"get":{"tags":["api","api","catalog"],"summary":"Search Plans","operationId":"search_plans_api_v1_catalog_plans_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Q"}},{"name":"subject_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"}},{"name":"price","in":"query","required":false,"schema":{"enum":["all","free","paid"],"type":"string","default":"all","title":"Price"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["newest","popular","price_asc","price_desc","title"],"type":"string","default":"newest","title":"Sort"}},{"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":24,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogPlanPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/top-plans":{"get":{"tags":["api","api","catalog"],"summary":"Top Plans","operationId":"top_plans_api_v1_catalog_top_plans_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":8,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CatalogPlan"},"title":"Response Top Plans Api V1 Catalog Top Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/catalog/top-courses":{"get":{"tags":["api","api","catalog"],"summary":"Top Courses","operationId":"top_courses_api_v1_catalog_top_courses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":8,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopCourse"},"title":"Response Top Courses Api V1 Catalog Top Courses Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/extract-text":{"post":{"tags":["api","api","ai"],"summary":"Extract Text","description":"Yuklangan fayldan matnni ajratib qaytaradi. Fayl saqlanmaydi.","operationId":"extract_text_api_v1_ai_extract_text_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_extract_text_api_v1_ai_extract_text_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractedText"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/ai/{provider}/generate-exercises":{"post":{"tags":["api","api","ai"],"summary":"Generate Exercises","description":"Prompt (va ixtiyoriy hujjat) asosida special-tool bloklarini generatsiya qiladi.","operationId":"generate_exercises_api_v1_ai__provider__generate_exercises_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AIProviderName"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_generate_exercises_api_v1_ai__provider__generate_exercises_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/{provider}/describe-media":{"post":{"tags":["api","api","ai"],"summary":"Describe Media","description":"Metadata asosida media (video/audio/rasm) uchun tavsif yozadi (≤5000).","operationId":"describe_media_api_v1_ai__provider__describe_media_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AIProviderName"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DescribeMediaRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DescribeMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/{provider}/check-answers":{"post":{"tags":["api","api","ai"],"summary":"Check Answers","description":"O'quvchi javoblarini tekshirib, xatolarni tushuntiradi (tanlangan AI bilan).","operationId":"check_answers_api_v1_ai__provider__check_answers_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AIProviderName"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckAnswersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckAnswersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/{provider}/grade-writing":{"post":{"tags":["api","api","ai"],"summary":"Grade Writing","description":"Yozma matnni CEFR daraja bo'yicha baholaydi (tanlangan AI bilan).","operationId":"grade_writing_api_v1_ai__provider__grade_writing_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AIProviderName"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeWritingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeWritingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/{provider}/grade-writing-images":{"post":{"tags":["api","api","ai"],"summary":"Grade Writing Images","description":"Rasm(lar)dagi matnni OCR bilan o'qib, CEFR daraja bo'yicha baholaydi.\n\nMuallif ismi topilsa qaytaradi. Vision qo'llovchi provayder kerak (Gemini).\n`prompt` va `target_level` grammatika mashq sahifasidan keladi (ixtiyoriy).","operationId":"grade_writing_images_api_v1_ai__provider__grade_writing_images_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AIProviderName"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_grade_writing_images_api_v1_ai__provider__grade_writing_images_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GradeWritingImagesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AIProviderName":{"type":"string","enum":["claude","gpt","gemini","deepseek"],"title":"AIProviderName","description":"Qaysi AI provayderdan foydalanish.\n\nURL prefiksi sifatida ham ishlatiladi: /api/v1/ai/{provider}/..."},"AccountLinkRole":{"type":"string","enum":["ustoz","oquvchi","ota","ona","vasiy","yaqin_qarindosh","farzand","boshliq","yordamchi","administrator"],"title":"AccountLinkRole","description":"Bog'langan akkauntning (qarama-qarshi tomonning) roli.\n\nAccountLinkModel.role_of_addressee / role_of_requester ustunlarida string\nsifatida saqlanadi. Qiymatlar frontend `AccountLinkRole` enumi bilan AYNAN\nmos kelishi shart."},"AdminPermission":{"type":"string","enum":["statistics","suggestions","video","exercise","users","finance","games","admin","super_admin"],"title":"AdminPermission","description":"Admin foydalanuvchi ega bo'lishi mumkin bo'lgan huquqlar.\n\nUserModel.admin_permissions ustunida JSON massiv sifatida saqlanadi."},"AdminTopUpRequest":{"properties":{"amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["amount"],"title":"AdminTopUpRequest","description":"Admin tomonidan foydalanuvchi balansini to'ldirish."},"AdminUserListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AdminUserResponse"},"type":"array","title":"Items","default":[]}},"type":"object","title":"AdminUserListResponse"},"AdminUserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"second_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Second Name"},"third_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Third Name"},"email":{"type":"string","title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Birthday"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"},"admin_permissions":{"items":{"type":"string"},"type":"array","title":"Admin Permissions","default":[]},"phone_verification_status":{"type":"string","title":"Phone Verification Status","default":"approved"},"phone_rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Rejection Reason"},"skills":{"items":{"$ref":"#/components/schemas/UserSkill"},"type":"array","title":"Skills","default":[]},"is_blocked":{"type":"boolean","title":"Is Blocked","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","created_at"],"title":"AdminUserResponse","description":"Admin \"Foydalanuvchilar\" sahifasi uchun to'liq foydalanuvchi javobi.\n\nFlutter `AppUserModel.fromJson` + `UserData.fromJson` bilan mos (flat shakl):\nfoydalanuvchi maydonlari, moderatsiyali `skills`, `is_blocked` va `created_at`."},"AnswerFeedback":{"properties":{"question":{"type":"string","title":"Question"},"student_answer":{"type":"string","title":"Student Answer"},"is_correct":{"type":"boolean","title":"Is Correct"},"correct_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Correct Answer"},"error_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Type"},"explanation":{"type":"string","title":"Explanation"}},"type":"object","required":["question","student_answer","is_correct","explanation"],"title":"AnswerFeedback","description":"Bitta javob bo'yicha AI fikr-mulohazasi."},"AppleTopUpRequest":{"properties":{"product_id":{"type":"string","minLength":1,"title":"Product Id"},"transaction_id":{"type":"string","minLength":1,"title":"Transaction Id"},"receipt_data":{"type":"string","minLength":1,"title":"Receipt Data"}},"type":"object","required":["product_id","transaction_id","receipt_data"],"title":"AppleTopUpRequest","description":"Apple In-App Purchase orqali to'ldirish (iOS klientidan).\n\nreceipt_data — StoreKit bergan base64 kvitansiya\n(`verificationData.serverVerificationData`)."},"AttendanceList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AttendanceMark"},"type":"array","title":"Items","default":[]}},"type":"object","title":"AttendanceList","description":"PUT .../schedule/{id}/attendance tanasi + GET javobi."},"AttendanceMark":{"properties":{"student_id":{"type":"string","title":"Student Id"},"status":{"anyOf":[{"type":"string","enum":["present","late","absent"]},{"type":"null"}],"title":"Status"},"present":{"type":"boolean","title":"Present","default":true},"marked":{"type":"boolean","title":"Marked","default":true}},"type":"object","required":["student_id"],"title":"AttendanceMark","description":"Bitta o'quvchining dars davomati: qatnashdi / kech qoldi / qatnashmadi.\n`present` eski klientlar uchun (status berilmasa undan olinadi)."},"Author":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"counts":{"$ref":"#/components/schemas/ResourceCounts"},"subscription_counts":{"$ref":"#/components/schemas/ResourceCounts"},"plan":{"anyOf":[{"$ref":"#/components/schemas/AuthorPlan"},{"type":"null"}]},"subscribers_count":{"type":"integer","title":"Subscribers Count","default":0},"followers_count":{"type":"integer","title":"Followers Count","default":0},"my_follow":{"anyOf":[{"$ref":"#/components/schemas/FollowInfo"},{"type":"null"}]},"my_subscriptions":{"items":{"$ref":"#/components/schemas/TypeSubscriptionInfo"},"type":"array","title":"My Subscriptions","default":[]},"custom_plans":{"items":{"$ref":"#/components/schemas/CustomPlan"},"type":"array","title":"Custom Plans","default":[]}},"type":"object","required":["id","name","counts","subscription_counts"],"title":"Author"},"AuthorPlan":{"properties":{"prices":{"additionalProperties":{"type":"integer"},"type":"object","title":"Prices"},"description":{"type":"string","title":"Description","default":""},"is_active":{"type":"boolean","title":"Is Active","default":false}},"type":"object","title":"AuthorPlan"},"AuthorPlanUpdate":{"properties":{"prices":{"additionalProperties":{"type":"integer"},"propertyNames":{"enum":["exercise","video","audio","image","course"]},"type":"object","title":"Prices"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["prices"],"title":"AuthorPlanUpdate"},"AuthorResource":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","enum":["exercise","video","audio","image"],"title":"Type"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"thumbnail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail"},"access":{"type":"string","enum":["private","free","subscription"],"title":"Access"},"locked":{"type":"boolean","title":"Locked","default":false},"plan_ids":{"items":{"type":"string"},"type":"array","title":"Plan Ids","default":[]},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","type","title","access"],"title":"AuthorResource"},"AuthorResourcePage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AuthorResource"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"AuthorResourcePage"},"Body_create_media_api_v1_media__media_type__post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File","description":"Asosiy media fayl (video/audio/rasm)"},"thumnail":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Thumnail","description":"Muqova rasmi (faqat video uchun)"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url","description":"Fayl o'rniga tashqi havola (YouTube yoki .mp4)"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url","description":"Muqova fayli o'rniga tashqi havola"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genres","description":"Janrlar (vergul bilan)"},"isSeries":{"type":"boolean","title":"Isseries","default":false},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"categories":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Categories","description":"Kategoriyalar (vergul bilan)"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags","description":"Teglar (vergul bilan)"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"},"rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating"},"visibility":{"$ref":"#/components/schemas/MediaVisibility","default":"public"},"totalViews":{"type":"integer","title":"Totalviews","default":0},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"authorId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Authorid"},"access":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access","description":"private | free | subscription"},"plan_ids":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Ids","description":"Maxsus obunalar (vergul bilan; \"-\" — umumiy obuna)"}},"type":"object","required":["title"],"title":"Body_create_media_api_v1_media__media_type__post"},"Body_extract_text_api_v1_ai_extract_text_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"PDF, DOCX yoki TXT fayl (max 10 MB)"}},"type":"object","required":["file"],"title":"Body_extract_text_api_v1_ai_extract_text_post"},"Body_generate_exercises_api_v1_ai__provider__generate_exercises_post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File","description":"Manba hujjat (ixtiyoriy): PDF, DOCX yoki TXT"},"responce_type":{"type":"string","title":"Responce Type","default":"exercise_screen"},"prompt":{"type":"string","title":"Prompt"},"exercise_title":{"type":"string","title":"Exercise Title","default":""},"exercise_description":{"type":"string","title":"Exercise Description","default":""},"exercise_tags":{"items":{"type":"string"},"type":"array","title":"Exercise Tags","default":[]},"exercise_cefr_level":{"type":"string","title":"Exercise Cefr Level","default":"B1"},"format_spec":{"type":"string","title":"Format Spec","default":""}},"type":"object","required":["prompt"],"title":"Body_generate_exercises_api_v1_ai__provider__generate_exercises_post"},"Body_grade_writing_images_api_v1_ai__provider__grade_writing_images_post":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files","description":"Yozma ish rasmlari (bir yoki bir nechta)"},"language":{"type":"string","title":"Language","default":"uz"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Muallifning qo'shimcha baholash ko'rsatmasi"},"target_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Level","description":"Maqsad CEFR daraja (masalan B1)"}},"type":"object","required":["files"],"title":"Body_grade_writing_images_api_v1_ai__provider__grade_writing_images_post"},"Body_submit_homework_api_v1_courses__course_id__lessons__lesson_id__homework_post":{"properties":{"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"keep_file_ids":{"type":"string","title":"Keep File Ids","default":""},"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files","default":[]}},"type":"object","title":"Body_submit_homework_api_v1_courses__course_id__lessons__lesson_id__homework_post"},"Body_update_media_api_v1_media__media_type___media_id__patch":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File","description":"Yangi asosiy fayl (ixtiyoriy)"},"thumnail":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Thumnail","description":"Yangi muqova (faqat video uchun)"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url","description":"Fayl o'rniga tashqi havola (YouTube yoki .mp4)"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url","description":"Muqova fayli o'rniga tashqi havola"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"genres":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genres","description":"Janrlar (vergul bilan)"},"isSeries":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Isseries"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"categories":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Categories","description":"Kategoriyalar (vergul bilan)"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags","description":"Teglar (vergul bilan)"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"},"rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating"},"visibility":{"anyOf":[{"$ref":"#/components/schemas/MediaVisibility"},{"type":"null"}]},"totalViews":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totalviews"},"duration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duration"},"authorId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Authorid"},"access":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access","description":"private | free | subscription"},"plan_ids":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Ids","description":"Maxsus obunalar (vergul bilan; \"-\" — umumiy obuna)"}},"type":"object","title":"Body_update_media_api_v1_media__media_type___media_id__patch"},"Body_upload_image_api_v1_uploads_images_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"Rasm fayli (jpg/jpeg/png/webp/gif)"}},"type":"object","required":["file"],"title":"Body_upload_image_api_v1_uploads_images_post"},"BreakdownSlice":{"properties":{"name":{"type":"string","title":"Name"},"value":{"type":"number","title":"Value"},"color":{"type":"string","title":"Color"}},"type":"object","required":["name","value","color"],"title":"BreakdownSlice"},"CEFRLevel":{"type":"string","enum":["A1","A2","B1","B2","C1","C2"],"title":"CEFRLevel","description":"CEFR til darajasi (A1–C2).\n\nAI mashq generatsiyasida o'quvchining darajasini belgilash uchun ishlatiladi."},"CalendarEvent":{"properties":{"date":{"type":"string","title":"Date"},"status":{"type":"string","title":"Status"}},"type":"object","required":["date","status"],"title":"CalendarEvent","description":"A scheduled lesson reduced to a calendar dot for the mobile detail view.\n\nstatus: `completed` (o'tib ketgan), `ongoing` (bugun), `upcoming` (kelajak)."},"CatalogPlan":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"price":{"type":"integer","title":"Price","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"counts":{"$ref":"#/components/schemas/ResourceCounts"},"subscribers_count":{"type":"integer","title":"Subscribers Count","default":0},"my_subscription":{"anyOf":[{"$ref":"#/components/schemas/TypeSubscriptionInfo"},{"type":"null"}]},"image":{"type":"string","title":"Image","default":""},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"},"subject_name":{"type":"string","title":"Subject Name","default":""},"author_id":{"type":"integer","title":"Author Id"},"author_name":{"type":"string","title":"Author Name","default":""},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","title","author_id"],"title":"CatalogPlan","description":"Katalogdagi maxsus obuna — muallif ma'lumoti bilan."},"CatalogPlanPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CatalogPlan"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"CatalogPlanPage"},"CategoriesUpdate":{"properties":{"category":{"items":{"type":"string"},"type":"array","title":"Category"}},"type":"object","required":["category"],"title":"CategoriesUpdate","description":"media/categories — kategoriyalar ro'yxatini to'liq almashtirish."},"Certificate":{"properties":{"id":{"type":"integer","title":"Id","default":0},"level_type":{"type":"string","title":"Level Type","default":""},"name":{"type":"string","title":"Name","default":""},"value":{"type":"string","title":"Value","default":""},"doc":{"type":"string","title":"Doc","default":""}},"type":"object","title":"Certificate"},"CertificateLevelType":{"type":"string","enum":["from_A1_C2","from_1_9","from_D_A+"],"title":"CertificateLevelType","description":"Sertifikat darajasi tizimi.\n\nCertificateModel.level_type ustunida saqlanadi."},"CertificateResponse":{"properties":{"id":{"type":"integer","title":"Id"},"level_type":{"$ref":"#/components/schemas/CertificateLevelType"},"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"},"doc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc"}},"type":"object","required":["id","level_type","name","value"],"title":"CertificateResponse","description":"Sertifikat javob modeli — SkillResponse ichida ko'rinadi."},"ChartPoint":{"properties":{"label":{"type":"string","title":"Label"},"value":{"type":"number","title":"Value"}},"type":"object","required":["label","value"],"title":"ChartPoint"},"CheckAnswersRequest":{"properties":{"answers":{"items":{"$ref":"#/components/schemas/StudentAnswer"},"type":"array","maxItems":50,"minItems":1,"title":"Answers"},"level":{"$ref":"#/components/schemas/CEFRLevel"},"language":{"type":"string","title":"Language","description":"Tushuntirishlar qaysi tilda bo'lishi","default":"uz"}},"type":"object","required":["answers","level"],"title":"CheckAnswersRequest"},"CheckAnswersResponse":{"properties":{"total":{"type":"integer","title":"Total"},"correct":{"type":"integer","title":"Correct"},"score_percent":{"type":"number","title":"Score Percent"},"overall_feedback":{"type":"string","title":"Overall Feedback"},"feedback":{"items":{"$ref":"#/components/schemas/AnswerFeedback"},"type":"array","title":"Feedback"}},"type":"object","required":["total","correct","score_percent","overall_feedback","feedback"],"title":"CheckAnswersResponse"},"CommissionSetting":{"properties":{"percent":{"type":"integer","maximum":90.0,"minimum":0.0,"title":"Percent"}},"type":"object","required":["percent"],"title":"CommissionSetting"},"Course":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"genres":{"items":{"type":"string"},"type":"array","title":"Genres","default":[]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"is_active":{"type":"boolean","title":"Is Active","default":true},"student_count":{"type":"integer","title":"Student Count","default":0},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"lessons":{"items":{"$ref":"#/components/schemas/Lesson"},"type":"array","title":"Lessons","default":[]},"calendar_events":{"items":{"$ref":"#/components/schemas/CalendarEvent"},"type":"array","title":"Calendar Events","default":[]},"author_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author Id"},"author":{"anyOf":[{"$ref":"#/components/schemas/CourseAuthor"},{"type":"null"}]},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"age_min":{"type":"integer","title":"Age Min","default":0},"age_max":{"type":"integer","title":"Age Max","default":99},"rating":{"type":"number","title":"Rating","default":0.0},"price_type":{"type":"string","title":"Price Type","default":"free"},"price":{"type":"integer","title":"Price","default":0},"created_at":{"type":"string","title":"Created At"},"enrollment_status":{"anyOf":[{"$ref":"#/components/schemas/CourseStudentStatus"},{"type":"null"}]},"can_manage":{"type":"boolean","title":"Can Manage","default":false},"is_course_admin":{"type":"boolean","title":"Is Course Admin","default":false},"pricing":{"anyOf":[{"$ref":"#/components/schemas/CoursePricing-Output"},{"type":"null"}]},"my_subscription":{"anyOf":[{"$ref":"#/components/schemas/CourseSubscriptionInfo"},{"type":"null"}]},"has_access":{"type":"boolean","title":"Has Access","default":false},"children":{"items":{"$ref":"#/components/schemas/CourseChild"},"type":"array","title":"Children","default":[]}},"type":"object","required":["id","title","created_at"],"title":"Course"},"CourseAuthor":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name","default":""},"avatar":{"type":"string","title":"Avatar","default":""},"title":{"type":"string","title":"Title","default":""}},"type":"object","required":["id"],"title":"CourseAuthor"},"CourseAutoRenewRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"CourseAutoRenewRequest"},"CourseChild":{"properties":{"student_id":{"type":"string","title":"Student Id"},"full_name":{"type":"string","title":"Full Name"},"relation":{"type":"string","enum":["ota","ona","aka","opa","uka","singil","toga","amaki","amma","xola","bobo","buvi","vasiy","boshqa"],"title":"Relation"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"mastery_percent":{"type":"integer","title":"Mastery Percent","default":0},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"}},"type":"object","required":["student_id","full_name","relation"],"title":"CourseChild","description":"Joriy foydalanuvchi yaqini bo'lgan o'quvchi (kurs detali, `children`)."},"CourseCreate":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","default":""},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"genres":{"items":{"type":"string"},"type":"array","title":"Genres","default":[]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"is_active":{"type":"boolean","title":"Is Active","default":true},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"lessons":{"items":{"$ref":"#/components/schemas/LessonCreate"},"type":"array","title":"Lessons","default":[]},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"age_min":{"type":"integer","title":"Age Min","default":0},"age_max":{"type":"integer","title":"Age Max","default":99},"price_type":{"type":"string","title":"Price Type","default":"free"},"price":{"type":"integer","title":"Price","default":0}},"type":"object","required":["title"],"title":"CourseCreate"},"CourseGrade":{"properties":{"id":{"type":"string","title":"Id"},"course_id":{"type":"string","title":"Course Id"},"student_id":{"type":"string","title":"Student Id"},"lesson_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Id"},"source":{"type":"string","title":"Source"},"score":{"type":"integer","title":"Score"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"graded_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Graded By"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","course_id","student_id","source","score","created_at"],"title":"CourseGrade"},"CourseGroup":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"color":{"type":"integer","title":"Color"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"weekdays":{"items":{"type":"integer"},"type":"array","title":"Weekdays","default":[]},"start_date":{"type":"string","title":"Start Date"},"start_minute":{"type":"integer","title":"Start Minute","default":540},"lesson_duration":{"type":"integer","title":"Lesson Duration","default":60},"max_members":{"type":"integer","title":"Max Members","default":0},"join_fee":{"type":"integer","title":"Join Fee","default":0},"lesson_price":{"type":"integer","title":"Lesson Price","default":0}},"type":"object","required":["id","name","color","start_date"],"title":"CourseGroup"},"CourseGroupCreate":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"color":{"type":"integer","title":"Color"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"weekdays":{"items":{"type":"integer"},"type":"array","title":"Weekdays","default":[]},"start_date":{"type":"string","format":"date-time","title":"Start Date"},"start_minute":{"type":"integer","maximum":1439.0,"minimum":0.0,"title":"Start Minute","default":540},"lesson_duration":{"type":"integer","exclusiveMinimum":0.0,"title":"Lesson Duration","default":60},"max_members":{"type":"integer","minimum":0.0,"title":"Max Members","default":0},"join_fee":{"type":"integer","minimum":0.0,"title":"Join Fee","default":0},"lesson_price":{"type":"integer","minimum":0.0,"title":"Lesson Price","default":0}},"type":"object","required":["name","color","start_date"],"title":"CourseGroupCreate"},"CourseGroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"color":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Color"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"weekdays":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Weekdays"},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"},"start_minute":{"anyOf":[{"type":"integer","maximum":1439.0,"minimum":0.0},{"type":"null"}],"title":"Start Minute"},"lesson_duration":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Lesson Duration"},"max_members":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Members"},"join_fee":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Join Fee"},"lesson_price":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Lesson Price"}},"type":"object","title":"CourseGroupUpdate"},"CoursePage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Course"},"type":"array","title":"Items"},"page":{"type":"integer","title":"Page"},"pages_count":{"type":"integer","title":"Pages Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","page","pages_count","total"],"title":"CoursePage","description":"§1.1 standart paginatsiya javobi (items = Course[])."},"CoursePlan":{"properties":{"period":{"type":"string","enum":["week","month","month3","month6","full"],"title":"Period"},"price":{"type":"integer","minimum":0.0,"title":"Price","default":0},"discount_percent":{"type":"integer","maximum":90.0,"minimum":0.0,"title":"Discount Percent","default":0}},"type":"object","required":["period"],"title":"CoursePlan","description":"Bitta obuna turi: to'lov davri, narxi (so'm) va shu turning chegirmasi.\n`full` — butun kursni bir martalik sotib olish (muddatsiz)."},"CoursePricing-Input":{"properties":{"is_paid":{"type":"boolean","title":"Is Paid","default":false},"plans":{"items":{"$ref":"#/components/schemas/CoursePlan"},"type":"array","maxItems":5,"title":"Plans"},"note":{"type":"string","maxLength":500,"title":"Note","default":""}},"type":"object","title":"CoursePricing","description":"Kurs obuna sozlamalari (muallif belgilaydi). Muallif bir nechta obuna\nturini qo'shadi (`plans`) — har birining o'z davri (haftalik, 1 / 3 / 6\noylik yoki butun kurs), narxi va chegirmasi bor; bir davr bir marta.\nPulli kursda obunasiz faqat ochiq (`is_public`) darslar ko'rinadi."},"CoursePricing-Output":{"properties":{"is_paid":{"type":"boolean","title":"Is Paid","default":false},"plans":{"items":{"$ref":"#/components/schemas/CoursePlan"},"type":"array","maxItems":5,"title":"Plans"},"note":{"type":"string","maxLength":500,"title":"Note","default":""},"billing":{"type":"string","title":"Billing","readOnly":true},"price":{"type":"integer","title":"Price","readOnly":true},"full":{"type":"integer","title":"Full","readOnly":true},"discount_percent":{"type":"integer","title":"Discount Percent","readOnly":true},"trial_lessons":{"type":"integer","title":"Trial Lessons","readOnly":true}},"type":"object","required":["billing","price","full","discount_percent","trial_lessons"],"title":"CoursePricing","description":"Kurs obuna sozlamalari (muallif belgilaydi). Muallif bir nechta obuna\nturini qo'shadi (`plans`) — har birining o'z davri (haftalik, 1 / 3 / 6\noylik yoki butun kurs), narxi va chegirmasi bor; bir davr bir marta.\nPulli kursda obunasiz faqat ochiq (`is_public`) darslar ko'rinadi."},"CourseRelative":{"properties":{"id":{"type":"string","title":"Id"},"student_id":{"type":"string","title":"Student Id"},"user":{"$ref":"#/components/schemas/RelativeUser"},"relation":{"type":"string","enum":["ota","ona","aka","opa","uka","singil","toga","amaki","amma","xola","bobo","buvi","vasiy","boshqa"],"title":"Relation"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","student_id","user","relation","created_at"],"title":"CourseRelative"},"CourseRelativeCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"relation":{"type":"string","enum":["ota","ona","aka","opa","uka","singil","toga","amaki","amma","xola","bobo","buvi","vasiy","boshqa"],"title":"Relation"}},"type":"object","required":["user_id","relation"],"title":"CourseRelativeCreate"},"CourseRelativeList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CourseRelative"},"type":"array","title":"Items","default":[]}},"type":"object","title":"CourseRelativeList"},"CourseStatsResponse":{"properties":{"leaderboard":{"items":{"$ref":"#/components/schemas/CourseStudent"},"type":"array","title":"Leaderboard","default":[]},"avg_mastery":{"type":"integer","title":"Avg Mastery","default":0},"attendance_rate":{"type":"integer","title":"Attendance Rate","default":0},"member_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Member Counts","default":{}}},"type":"object","title":"CourseStatsResponse","description":"GET /courses/{id}/statistics — a'zolar reytingi + agregatlar."},"CourseStudent":{"properties":{"id":{"type":"string","title":"Id"},"full_name":{"type":"string","title":"Full Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"mastery_percent":{"type":"integer","title":"Mastery Percent","default":0},"has_debt":{"type":"boolean","title":"Has Debt","default":false},"status":{"$ref":"#/components/schemas/CourseStudentStatus","default":"student"},"subscription":{"$ref":"#/components/schemas/CourseSubscription","default":"active"},"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"is_course_admin":{"type":"boolean","title":"Is Course Admin","default":false},"parent_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Of"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"contacts":{"items":{"$ref":"#/components/schemas/StudentContact"},"type":"array","title":"Contacts","default":[]},"payments":{"items":{"$ref":"#/components/schemas/LessonPayment"},"type":"array","title":"Payments","default":[]},"phone_verification_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Verification Status"},"enrolled_at":{"type":"string","title":"Enrolled At"}},"type":"object","required":["id","full_name","enrolled_at"],"title":"CourseStudent"},"CourseStudentStatus":{"type":"string","enum":["request","student","teacher","supportTeacher","parent","staff","spam"],"title":"CourseStudentStatus","description":"Kurs o'quvchisining roli/holati (COURSES_API.md §3)."},"CourseSubscribeRequest":{"properties":{"period":{"type":"string","enum":["week","month","month3","month6","full"],"title":"Period"},"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"}},"type":"object","required":["period"],"title":"CourseSubscribeRequest"},"CourseSubscription":{"type":"string","enum":["active","trial","debtor","expired"],"title":"CourseSubscription","description":"Kurs o'quvchisining obuna (reja) holati (COURSES_API.md §3)."},"CourseSubscriptionInfo":{"properties":{"period":{"type":"string","enum":["week","month","month3","month6","full"],"title":"Period"},"price":{"type":"integer","title":"Price"},"status":{"type":"string","title":"Status"},"auto_renew":{"type":"boolean","title":"Auto Renew"},"started_at":{"type":"string","title":"Started At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["period","price","status","auto_renew","started_at"],"title":"CourseSubscriptionInfo","description":"Joriy foydalanuvchining shu kursdagi obunasi."},"CourseUpdate":{"properties":{"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Categories"},"genres":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Genres"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"age_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age Min"},"age_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age Max"},"price_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Type"},"price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price"}},"type":"object","title":"CourseUpdate","description":"Qisman update (PATCH). Faqat uzatilgan maydonlar o'zgaradi."},"CredentialsUpdateRequest":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"current_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Password"},"new_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Password"}},"type":"object","title":"CredentialsUpdateRequest","description":"Login (email) va/yoki parolni o'zgartirish so'rovi.\n\n- email: yangi login (ixtiyoriy).\n- new_password: yangi parol (ixtiyoriy, kamida 8 ta belgi).\n- current_password: joriy parol — paroli bor hisoblar uchun o'zgarishni\n  tasdiqlashda majburiy. Parolsiz (faqat Google) hisob birinchi marta parol\n  o'rnatganda current_password shart emas."},"CustomPlan":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"price":{"type":"integer","title":"Price","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"counts":{"$ref":"#/components/schemas/ResourceCounts"},"subscribers_count":{"type":"integer","title":"Subscribers Count","default":0},"my_subscription":{"anyOf":[{"$ref":"#/components/schemas/TypeSubscriptionInfo"},{"type":"null"}]},"image":{"type":"string","title":"Image","default":""},"subject_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subject Id"},"subject_name":{"type":"string","title":"Subject Name","default":""}},"type":"object","required":["id","title"],"title":"CustomPlan","description":"Muallifning maxsus (nomli) obunasi va unga biriktirilgan materiallar soni."},"CustomPlanSave":{"properties":{"title":{"type":"string","maxLength":100,"minLength":1,"title":"Title"},"description":{"type":"string","maxLength":1000,"title":"Description","default":""},"price":{"type":"integer","title":"Price","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"image":{"type":"string","maxLength":1000,"minLength":1,"title":"Image"},"subject_id":{"type":"integer","title":"Subject Id"}},"type":"object","required":["title","image","subject_id"],"title":"CustomPlanSave"},"DescribeMediaRequest":{"properties":{"media_type":{"type":"string","enum":["video","audio","image"],"title":"Media Type","default":"video"},"title":{"type":"string","minLength":1,"title":"Title","description":"Media sarlavhasi"},"current_description":{"type":"string","title":"Current Description","description":"Admin yozgan qoralama (bo'lsa, yaxshilanadi)","default":""},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"genres":{"items":{"type":"string"},"type":"array","title":"Genres","default":[]},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"language":{"type":"string","title":"Language","default":"uz"}},"type":"object","required":["title"],"title":"DescribeMediaRequest","description":"Metadata asosida media uchun tavsif generatsiyasi."},"DescribeMediaResponse":{"properties":{"description":{"type":"string","maxLength":5000,"title":"Description"}},"type":"object","required":["description"],"title":"DescribeMediaResponse"},"EnrollRequest":{"properties":{"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"}},"type":"object","title":"EnrollRequest","description":"O'quvchining kursga (guruhni tanlab) qo'shilishi — ilova foydalanuvchisi o'zi.\n\ngroup_id ixtiyoriy: berilmasa kursning birinchi guruhi tanlanadi (ochiq\nkursga havola orqali bir bosishda qo'shilish uchun)."},"ExerciseCreate":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"group_categories":{"items":{"type":"string"},"type":"array","title":"Group Categories","default":[]},"is_visible":{"type":"boolean","title":"Is Visible","default":true},"body":{"items":{},"type":"array","title":"Body","default":[]},"access":{"type":"string","title":"Access","default":"free"},"plan_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Plan Ids"}},"type":"object","required":["title"],"title":"ExerciseCreate"},"ExerciseDetail":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"group_categories":{"items":{"type":"string"},"type":"array","title":"Group Categories"},"is_visible":{"type":"boolean","title":"Is Visible"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"author_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author Id"},"access":{"type":"string","title":"Access","default":"free"},"body":{"items":{},"type":"array","title":"Body"},"plan_ids":{"items":{"type":"string"},"type":"array","title":"Plan Ids","default":[]}},"type":"object","required":["id","title","group_categories","is_visible","created_at","body"],"title":"ExerciseDetail"},"ExerciseListItem":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"group_categories":{"items":{"type":"string"},"type":"array","title":"Group Categories"},"is_visible":{"type":"boolean","title":"Is Visible"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"author_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author Id"},"access":{"type":"string","title":"Access","default":"free"}},"type":"object","required":["id","title","group_categories","is_visible","created_at"],"title":"ExerciseListItem"},"ExerciseListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ExerciseListItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"ExerciseListResponse"},"ExerciseShare":{"properties":{"exercise_id":{"type":"integer","title":"Exercise Id"},"token":{"type":"string","title":"Token"}},"type":"object","required":["exercise_id","token"],"title":"ExerciseShare","description":"Mashq havolasi tokeni — `?t=<token>` bilan ochilganda obunasiz ishlaydi."},"ExerciseType":{"type":"string","enum":["multiple_choice","fill_in_blank","true_false","short_answer","matching"],"title":"ExerciseType","description":"AI generatsiya qiladigan mashq turlari."},"ExerciseUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"group_categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Group Categories"},"is_visible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Visible"},"body":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Body"},"access":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access"},"plan_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Plan Ids"}},"type":"object","title":"ExerciseUpdate"},"ExerciseUsage":{"properties":{"place":{"type":"string","title":"Place"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["place","reason"],"title":"ExerciseUsage","description":"Mashq ishlatilgan bitta joy (dars, o'yin, tavsiya)."},"ExerciseUsageList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ExerciseUsage"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ExerciseUsageList","description":"Mashq ishlatilgan barcha joylar — tahrir shu joylarning hammasiga tushadi."},"ExtractedText":{"properties":{"filename":{"type":"string","title":"Filename"},"file_type":{"type":"string","enum":["pdf","docx","txt"],"title":"File Type"},"char_count":{"type":"integer","title":"Char Count"},"text":{"type":"string","title":"Text"}},"type":"object","required":["filename","file_type","char_count","text"],"title":"ExtractedText","description":"PDF/DOCX/TXT fayldan ajratilgan matn."},"FilterData":{"properties":{"genres":{"items":{"type":"string"},"type":"array","title":"Genres"},"category":{"items":{"type":"string"},"type":"array","title":"Category"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["genres","category","tags"],"title":"FilterData","description":"Filtr qiymatlari — frontend uchun mavjud tanlovlar ro'yxati."},"FilterUniverse":{"properties":{"genres":{"items":{"type":"string"},"type":"array","title":"Genres","default":[]},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]}},"type":"object","title":"FilterUniverse","description":"§4.1 GET /courses/filters — barcha kurslardagi distinct qiymatlar."},"FilterUpdate":{"properties":{"genres":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Genres"},"category":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Category"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"}},"type":"object","title":"FilterUpdate","description":"Filtrni qisman yangilash — faqat uzatilgan maydonlar o'zgaradi."},"FollowInfo":{"properties":{"status":{"type":"string","title":"Status"},"price_percent":{"type":"integer","title":"Price Percent","default":100},"free_forever":{"type":"boolean","title":"Free Forever","default":false},"free_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Free Until"},"is_free_now":{"type":"boolean","title":"Is Free Now","default":false}},"type":"object","required":["status"],"title":"FollowInfo","description":"Ergashish holati va muallif bergan shaxsiy shartlar."},"Follower":{"properties":{"follower_id":{"type":"integer","title":"Follower Id"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"follow":{"$ref":"#/components/schemas/FollowInfo"},"subscriptions":{"items":{"$ref":"#/components/schemas/TypeSubscriptionInfo"},"type":"array","title":"Subscriptions","default":[]},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["follower_id","name","follow","created_at"],"title":"Follower","description":"Muallifning ergashuvchisi (muallif ko'rinishi)."},"FollowerTermsUpdate":{"properties":{"price_percent":{"anyOf":[{"type":"integer","maximum":300.0,"minimum":0.0},{"type":"null"}],"title":"Price Percent"},"free_forever":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Free Forever"},"add_free_months":{"anyOf":[{"type":"integer","maximum":36.0,"minimum":1.0},{"type":"null"}],"title":"Add Free Months"},"clear_free_until":{"type":"boolean","title":"Clear Free Until","default":false}},"type":"object","title":"FollowerTermsUpdate","description":"Muallif bitta ergashuvchi uchun shartlarni o'zgartiradi."},"Game":{"properties":{"id":{"type":"integer","title":"Id"},"category_id":{"type":"integer","title":"Category Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"exercise_ids":{"items":{"type":"string"},"type":"array","title":"Exercise Ids","default":[]},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"author_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Author Id"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","category_id","title","created_at"],"title":"Game"},"GameBrowse":{"properties":{"category":{"anyOf":[{"$ref":"#/components/schemas/GameCategory"},{"type":"null"}]},"path":{"items":{"$ref":"#/components/schemas/GameCategory"},"type":"array","title":"Path","default":[]},"categories":{"items":{"$ref":"#/components/schemas/GameCategory"},"type":"array","title":"Categories","default":[]},"games":{"items":{"$ref":"#/components/schemas/Game"},"type":"array","title":"Games","default":[]}},"type":"object","title":"GameBrowse","description":"Mobil: bitta daraja — joriy kategoriya, yo'l (breadcrumbs), ichki\nkategoriyalar va shu kategoriyadagi o'yinlar."},"GameCategory":{"properties":{"id":{"type":"integer","title":"Id"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"children_count":{"type":"integer","title":"Children Count","default":0},"games_count":{"type":"integer","title":"Games Count","default":0}},"type":"object","required":["id","name"],"title":"GameCategory"},"GameCategoryCreate":{"properties":{"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"description":{"type":"string","maxLength":500,"title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name"],"title":"GameCategoryCreate"},"GameCategoryListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GameCategory"},"type":"array","title":"Items","default":[]}},"type":"object","title":"GameCategoryListResponse"},"GameCategoryMove":{"properties":{"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"index":{"type":"integer","minimum":0.0,"title":"Index","default":0}},"type":"object","title":"GameCategoryMove","description":"Kategoriyani boshqa ota ostiga va/yoki boshqa o'ringa ko'chirish."},"GameCategoryUpdate":{"properties":{"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"GameCategoryUpdate"},"GameCreate":{"properties":{"category_id":{"type":"integer","title":"Category Id"},"title":{"type":"string","maxLength":160,"minLength":1,"title":"Title"},"description":{"type":"string","maxLength":1000,"title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"exercise_ids":{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1,"title":"Exercise Ids"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["category_id","title","exercise_ids"],"title":"GameCreate"},"GameListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Game"},"type":"array","title":"Items","default":[]}},"type":"object","title":"GameListResponse"},"GamePermissions":{"properties":{"can_edit":{"type":"boolean","title":"Can Edit","default":false},"can_delete":{"type":"boolean","title":"Can Delete","default":false}},"type":"object","title":"GamePermissions","description":"Joriy foydalanuvchining o'yinlar bo'limidagi huquqlari (admin UI uchun)."},"GameUpdate":{"properties":{"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"title":{"anyOf":[{"type":"string","maxLength":160,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"exercise_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":20,"minItems":1},{"type":"null"}],"title":"Exercise Ids"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"GameUpdate"},"GenresUpdate":{"properties":{"genres":{"items":{"type":"string"},"type":"array","title":"Genres"}},"type":"object","required":["genres"],"title":"GenresUpdate","description":"media/gener — janrlar ro'yxatini to'liq almashtirish."},"GoogleLoginRequest":{"properties":{"id_token":{"type":"string","title":"Id Token"}},"type":"object","required":["id_token"],"title":"GoogleLoginRequest","description":"Google Sign-In so'rovi.\n\nFrontend Google SDK orqali olingan id_token ni shu yerga yuboradi.\nBackend tokenni Google serverlarida tasdiqlaydi.\n\nMisol:\n    POST /api/v1/auth/google\n    {\"id_token\": \"eyJhbGci...\"}"},"GoogleTopUpRequest":{"properties":{"product_id":{"type":"string","minLength":1,"title":"Product Id"},"purchase_token":{"type":"string","minLength":1,"title":"Purchase Token"},"purchase_data":{"type":"string","minLength":1,"title":"Purchase Data"},"signature":{"type":"string","minLength":1,"title":"Signature"}},"type":"object","required":["product_id","purchase_token","purchase_data","signature"],"title":"GoogleTopUpRequest","description":"Google Play Billing orqali to'ldirish (Android klientidan).\n\npurchase_data — Play imzolagan original JSON (`localVerificationData`),\nsignature — o'sha JSON ustidagi Base64 RSA imzo."},"GradeCreate":{"properties":{"student_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Student Id"},"lesson_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Id"},"source":{"type":"string","enum":["exam","exercise"],"title":"Source","default":"exercise"},"score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Score"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"}},"type":"object","required":["score"],"title":"GradeCreate","description":"Baholangan natijani saqlash.\n\nBaho client-tomonda `/ai/{provider}/grade-writing-images` orqali olinadi;\nbu endpoint faqat saqlaydi. source='exam' → o'qituvchi (kurs-admin kerak);\nsource='exercise' → o'quvchi o'zi (student_id o'zining a'zo yozuvi bo'lishi shart)."},"GradeListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CourseGrade"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"GradeListResponse"},"GradeWritingImagesResponse":{"properties":{"estimated_level":{"$ref":"#/components/schemas/CEFRLevel"},"score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Score"},"summary":{"type":"string","title":"Summary"},"strengths":{"items":{"type":"string"},"type":"array","title":"Strengths"},"areas_to_improve":{"items":{"type":"string"},"type":"array","title":"Areas To Improve"},"errors":{"items":{"$ref":"#/components/schemas/WritingErrorItem"},"type":"array","title":"Errors"},"writer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Writer Name"},"extracted_text":{"type":"string","title":"Extracted Text"}},"type":"object","required":["estimated_level","score","summary","strengths","areas_to_improve","errors","extracted_text"],"title":"GradeWritingImagesResponse","description":"Rasm(lar)dan OCR + CEFR baholash javobi.\n\n[GradeWritingResponse] ustiga ikki qo'shimcha maydon: rasmdan aniqlangan\nmuallif ismi (topilmasa null) va OCR bilan o'qilgan to'liq matn."},"GradeWritingRequest":{"properties":{"text":{"type":"string","minLength":20,"title":"Text","description":"O'quvchi yozgan matn"},"target_level":{"$ref":"#/components/schemas/CEFRLevel","description":"O'quvchining maqsad CEFR darajasi"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Topshiriq matni (mavzu yoki savol)"},"language":{"type":"string","title":"Language","description":"Fikr-mulohazalar tili","default":"uz"}},"type":"object","required":["text","target_level"],"title":"GradeWritingRequest"},"GradeWritingResponse":{"properties":{"estimated_level":{"$ref":"#/components/schemas/CEFRLevel"},"score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Score"},"summary":{"type":"string","title":"Summary"},"strengths":{"items":{"type":"string"},"type":"array","title":"Strengths"},"areas_to_improve":{"items":{"type":"string"},"type":"array","title":"Areas To Improve"},"errors":{"items":{"$ref":"#/components/schemas/WritingErrorItem"},"type":"array","title":"Errors"}},"type":"object","required":["estimated_level","score","summary","strengths","areas_to_improve","errors"],"title":"GradeWritingResponse"},"GroupListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CourseGroup"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"GroupListResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HomeCategory":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"type":{"type":"string","title":"Type"},"filter":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Filter","default":[]}},"type":"object","required":["id","name","type"],"title":"HomeCategory"},"HomeCategoryAdmin":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name","default":""},"description":{"type":"string","title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"type":{"type":"string","title":"Type","default":"edu"},"filter":{"items":{"$ref":"#/components/schemas/HomeCategoryFilter"},"type":"array","title":"Filter","default":[]},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["id"],"title":"HomeCategoryAdmin"},"HomeCategoryCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"type":{"type":"string","title":"Type","default":"edu"},"filter":{"items":{"$ref":"#/components/schemas/HomeCategoryFilter"},"type":"array","title":"Filter","default":[]},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name"],"title":"HomeCategoryCreate"},"HomeCategoryFilter":{"properties":{"key":{"type":"string","title":"Key","default":""},"name":{"type":"string","title":"Name","default":""}},"type":"object","title":"HomeCategoryFilter"},"HomeCategoryListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/HomeCategoryAdmin"},"type":"array","title":"Items","default":[]}},"type":"object","title":"HomeCategoryListResponse"},"HomeCategoryUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"filter":{"anyOf":[{"items":{"$ref":"#/components/schemas/HomeCategoryFilter"},"type":"array"},{"type":"null"}],"title":"Filter"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"HomeCategoryUpdate"},"HomeDailySummary":{"properties":{"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","title":"Name","default":""},"avatar":{"type":"string","title":"Avatar","default":""},"streak_days":{"type":"integer","title":"Streak Days","default":0},"today_completed_tasks":{"type":"integer","title":"Today Completed Tasks","default":0},"today_total_tasks":{"type":"integer","title":"Today Total Tasks","default":0},"today_minutes_spent":{"type":"integer","title":"Today Minutes Spent","default":0},"today_goal_minutes":{"type":"integer","title":"Today Goal Minutes","default":30},"weekly_progress_percent":{"type":"integer","title":"Weekly Progress Percent","default":0},"unread_notifications":{"type":"integer","title":"Unread Notifications","default":0}},"type":"object","required":["user_id"],"title":"HomeDailySummary"},"HomeDashboard":{"properties":{"summary":{"$ref":"#/components/schemas/HomeDailySummary"},"daily_tasks":{"items":{"$ref":"#/components/schemas/HomeTask"},"type":"array","title":"Daily Tasks","default":[]},"categories_shortcut":{"items":{"$ref":"#/components/schemas/HomeCategory"},"type":"array","title":"Categories Shortcut","default":[]}},"type":"object","required":["summary"],"title":"HomeDashboard"},"HomeTask":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"task_type":{"type":"string","title":"Task Type","default":"lesson"},"category_name":{"type":"string","title":"Category Name","default":""},"duration_minutes":{"type":"integer","title":"Duration Minutes","default":0},"is_completed":{"type":"boolean","title":"Is Completed","default":false},"progress_percent":{"type":"integer","title":"Progress Percent","default":0},"ref_type":{"type":"string","title":"Ref Type","default":""},"strategy_id":{"type":"string","title":"Strategy Id","default":""},"stage_id":{"type":"string","title":"Stage Id","default":""},"link_type":{"type":"string","title":"Link Type","default":""},"link_id":{"type":"string","title":"Link Id","default":""},"link_parent_id":{"type":"string","title":"Link Parent Id","default":""},"link_title":{"type":"string","title":"Link Title","default":""},"link_token":{"type":"string","title":"Link Token","default":""}},"type":"object","required":["id","title"],"title":"HomeTask"},"HomeTasksResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/HomeTask"},"type":"array","title":"Items","default":[]}},"type":"object","title":"HomeTasksResponse"},"HomeworkFile":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"mime":{"type":"string","title":"Mime"},"size":{"type":"integer","title":"Size"},"kind":{"type":"string","title":"Kind"},"url":{"type":"string","title":"Url"}},"type":"object","required":["id","name","mime","size","kind","url"],"title":"HomeworkFile"},"HomeworkLimits":{"properties":{"max_total_bytes":{"type":"integer","title":"Max Total Bytes"},"max_files":{"type":"integer","title":"Max Files"},"extensions":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Extensions"}},"type":"object","required":["max_total_bytes","max_files","extensions"],"title":"HomeworkLimits","description":"Klient yuklashdan oldin tekshirishi uchun cheklovlar."},"HomeworkListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/HomeworkSubmission"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"HomeworkListResponse"},"HomeworkReview":{"properties":{"status":{"type":"string","enum":["reviewed","returned"],"title":"Status","default":"reviewed"},"score":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Score"},"feedback":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Feedback"}},"type":"object","title":"HomeworkReview","description":"O'qituvchi tekshiruvi.\n\nstatus='reviewed' → baho (score) majburiy, o'zlashtirishga qo'shiladi.\nstatus='returned' → qayta ishlashga qaytariladi (feedback majburiy), baho ixtiyoriy."},"HomeworkSubmission":{"properties":{"id":{"type":"string","title":"Id"},"course_id":{"type":"string","title":"Course Id"},"lesson_id":{"type":"string","title":"Lesson Id"},"lesson_title":{"type":"string","title":"Lesson Title","default":""},"student_id":{"type":"string","title":"Student Id"},"student_name":{"type":"string","title":"Student Name","default":""},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"files":{"items":{"$ref":"#/components/schemas/HomeworkFile"},"type":"array","title":"Files","default":[]},"total_size":{"type":"integer","title":"Total Size","default":0},"status":{"type":"string","title":"Status"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"feedback":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feedback"},"reviewed_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reviewed By"},"reviewed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed At"},"submitted_at":{"type":"string","title":"Submitted At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","course_id","lesson_id","student_id","status","submitted_at","updated_at"],"title":"HomeworkSubmission"},"ImageUploadResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ImageUploadResponse"},"KpiCard":{"properties":{"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"value":{"type":"integer","title":"Value"},"formatted_value":{"type":"string","title":"Formatted Value"},"percent_change":{"type":"number","title":"Percent Change","default":0.0},"is_positive":{"type":"boolean","title":"Is Positive","default":true},"icon":{"type":"string","title":"Icon"},"accent":{"type":"string","title":"Accent"}},"type":"object","required":["key","title","value","formatted_value","icon","accent"],"title":"KpiCard"},"Lesson":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"exercise_ids":{"items":{"type":"string"},"type":"array","title":"Exercise Ids","default":[]},"is_public":{"type":"boolean","title":"Is Public","default":false},"progress_percentage":{"type":"integer","title":"Progress Percentage","default":0},"is_open":{"type":"boolean","title":"Is Open","default":false},"homework_enabled":{"type":"boolean","title":"Homework Enabled","default":false},"homework_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homework Description"},"homework_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homework Status"},"homework_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Homework Score"}},"type":"object","required":["id","title"],"title":"Lesson"},"LessonCreate":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"exercise_ids":{"items":{"type":"string"},"type":"array","maxItems":5,"title":"Exercise Ids"},"is_public":{"type":"boolean","title":"Is Public","default":true},"homework_enabled":{"type":"boolean","title":"Homework Enabled","default":false},"homework_description":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Homework Description"}},"type":"object","required":["title"],"title":"LessonCreate"},"LessonPayment":{"properties":{"lesson":{"type":"integer","title":"Lesson"},"due":{"type":"integer","title":"Due"},"paid":{"type":"integer","title":"Paid"}},"type":"object","required":["lesson","due","paid"],"title":"LessonPayment"},"LessonRankEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"student_id":{"type":"string","title":"Student Id"},"student_name":{"type":"string","title":"Student Name","default":""},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"submission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submission Id"},"attempts":{"type":"integer","title":"Attempts","default":0},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["rank","student_id"],"title":"LessonRankEntry","description":"Dars reytingidagi bitta o'quvchi qatori.\n\nVazifa reytingida: score — o'qituvchi bahosi (tekshirilmagan bo'lsa None),\nstatus — topshiriq holati, submission_id — topshiriqni ochish uchun.\nMashq reytingida: score — eng yaxshi natija, attempts — urinishlar soni."},"LessonRankingResponse":{"properties":{"homework":{"items":{"$ref":"#/components/schemas/LessonRankEntry"},"type":"array","title":"Homework"},"exercises":{"items":{"$ref":"#/components/schemas/LessonRankEntry"},"type":"array","title":"Exercises"}},"type":"object","required":["homework","exercises"],"title":"LessonRankingResponse","description":"Bitta dars bo'yicha ikki alohida reyting: uy vazifasi va dars mashqlari."},"LessonReorder":{"properties":{"ordered_ids":{"items":{"type":"string"},"type":"array","title":"Ordered Ids"}},"type":"object","required":["ordered_ids"],"title":"LessonReorder"},"LessonUpdate":{"properties":{"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"exercise_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":5},{"type":"null"}],"title":"Exercise Ids"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Public"},"homework_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Homework Enabled"},"homework_description":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Homework Description"}},"type":"object","title":"LessonUpdate"},"LinkConfirmRequest":{"properties":{"role":{"$ref":"#/components/schemas/AccountLinkRole"}},"type":"object","required":["role"],"title":"LinkConfirmRequest","description":"Kiruvchi so'rovni tasdiqlash — addressee requester uchun o'z rolini beradi."},"LinkCreateRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/AccountLinkRole"}},"type":"object","required":["email","role"],"title":"LinkCreateRequest","description":"Yangi bog'lanish — email orqali odam tanlanadi, unga rol beriladi."},"LinkOption":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"subtitle":{"type":"string","title":"Subtitle","default":""},"parent_id":{"type":"string","title":"Parent Id","default":""},"access":{"type":"string","title":"Access","default":"free"}},"type":"object","required":["id","title"],"title":"LinkOption","description":"Admin havola tanlovi uchun kontent elementi."},"LinkOptionList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LinkOption"},"type":"array","title":"Items","default":[]}},"type":"object","title":"LinkOptionList"},"LinkedProfileListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LinkedProfileResponse"},"type":"array","title":"Items","default":[]}},"type":"object","title":"LinkedProfileListResponse"},"LinkedProfileResponse":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"role":{"type":"string","title":"Role"},"counterpart_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Counterpart Role"},"status":{"type":"string","title":"Status"},"is_incoming":{"type":"boolean","title":"Is Incoming","default":false},"awaiting_my_cancel_confirm":{"type":"boolean","title":"Awaiting My Cancel Confirm","default":false},"can_cancel":{"type":"boolean","title":"Can Cancel","default":true},"cancel_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancel At"}},"type":"object","required":["id","email","role","status"],"title":"LinkedProfileResponse","description":"Bog'langan profil javobi (joriy foydalanuvchi nuqtai nazaridan)."},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest","description":"Tizimga kirish so'rovi."},"MeaningCategory":{"type":"string","enum":["mottivation","doingWork","havingRest","enjoying","learning","encorage","punishing","upbringing","phythicExercese","other"],"title":"MeaningCategory","description":"Tavsiya (recommendation) ma'no-kategoriyasi.\n\nQiymatlar frontend modeli bilan AYNAN mos kelishi shart (ba'zilari\nataylab \"xato\" yozilgan — mobil ilova shu satrlarga bog'langan):\n`RecommendationModel.meaning_category`."},"MediaDetail":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"url":{"type":"string","title":"Url"},"isSeries":{"type":"boolean","title":"Isseries"},"category":{"type":"string","title":"Category"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"},"rating":{"type":"number","title":"Rating"},"visibility":{"anyOf":[{"$ref":"#/components/schemas/MediaVisibility"},{"type":"null"}]},"totalViews":{"type":"integer","title":"Totalviews"},"uploadedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Uploadedat"},"thumnail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumnail"},"authorId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Authorid"},"access":{"type":"string","title":"Access","default":"free"},"plan_ids":{"items":{"type":"string"},"type":"array","title":"Plan Ids","default":[]}},"type":"object","required":["id","title","description","url","isSeries","category","rating","totalViews"],"title":"MediaDetail","description":"Bitta media to'liq javob modeli.\n\n/media/{videos|audios|images}/{id} — uchala tur ham shu modelni qaytaradi.\n\nFrontend kontrakti (Dart):\n    String id; String title; String description; String url;\n    bool isSeries; String category; int? year; double rating;\n    VideoVisibility? visibility; int totalViews;\n    DateTime? uploadedAt; String? thumnail;\n\nEslatma: thumnail faqat video uchun to'ldiriladi; image va audio da null."},"MediaListItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"genres":{"items":{"type":"string"},"type":"array","title":"Genres"},"url":{"type":"string","title":"Url"},"imageUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imageurl"},"isSeries":{"type":"boolean","title":"Isseries"},"authorId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Authorid"},"access":{"type":"string","title":"Access","default":"free"}},"type":"object","required":["id","title","description","genres","url","isSeries"],"title":"MediaListItem","description":"Sahifalangan ro'yxatda ko'rsatiladigan media elementi.\n\nFrontend kontrakti (Dart):\n    String id; String title; String description;\n    List<String> genres; String url; String? imageUrl; bool isSeries;"},"MediaListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MediaListItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"MediaListResponse","description":"Sahifalangan media ro'yxati javob modeli."},"MediaTypePath":{"type":"string","enum":["videos","audios","images"],"title":"MediaTypePath","description":"URL'dagi media turi (ko'plik shaklda)."},"MediaVisibility":{"type":"string","enum":["public","private"],"title":"MediaVisibility","description":"Media ko'rinishi — frontend VideoVisibility enumiga mos."},"MemberCreate":{"properties":{"full_name":{"type":"string","minLength":1,"title":"Full Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"status":{"$ref":"#/components/schemas/CourseStudentStatus","default":"student"},"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"parent_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Of"}},"type":"object","required":["full_name"],"title":"MemberCreate","description":"Admin/kurs-admin a'zo qo'shishi (har qanday rol). user_id ixtiyoriy —\nilova foydalanuvchisiga bog'lash uchun."},"Message":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"type":"string","title":"User Name","default":""},"user_avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Avatar"},"subject":{"type":"string","title":"Subject"},"category":{"type":"string","title":"Category","default":"general"},"complaint_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complaint Type"},"status":{"type":"string","title":"Status","default":"open"},"course_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Course Id"},"replies":{"items":{"$ref":"#/components/schemas/MessageReply"},"type":"array","title":"Replies","default":[]},"created_at":{"type":"string","title":"Created At"},"resolved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["id","user_id","subject","created_at"],"title":"Message"},"MessageCreate":{"properties":{"subject":{"type":"string","minLength":1,"title":"Subject"},"category":{"type":"string","title":"Category","default":"general"},"complaint_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complaint Type"},"course_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Course Id"}},"type":"object","required":["subject"],"title":"MessageCreate"},"MessageListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","title":"Items","default":[]}},"type":"object","title":"MessageListResponse"},"MessageReply":{"properties":{"id":{"type":"string","title":"Id"},"sender_id":{"type":"string","title":"Sender Id","default":""},"sender_name":{"type":"string","title":"Sender Name","default":""},"is_admin":{"type":"boolean","title":"Is Admin","default":false},"text":{"type":"string","title":"Text","default":""},"created_at":{"type":"string","title":"Created At","default":""}},"type":"object","required":["id"],"title":"MessageReply"},"MessageStatusUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"complaint_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complaint Type"}},"type":"object","title":"MessageStatusUpdate"},"MyLessonResult":{"properties":{"lesson_id":{"type":"string","title":"Lesson Id"},"lesson_title":{"type":"string","title":"Lesson Title","default":""},"position":{"type":"integer","title":"Position","default":0},"homework_enabled":{"type":"boolean","title":"Homework Enabled","default":false},"homework_submission_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homework Submission Id"},"homework_files":{"type":"integer","title":"Homework Files","default":0},"homework_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homework Status"},"homework_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Homework Score"},"homework_feedback":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homework Feedback"},"exercise_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exercise Score"},"exercise_attempts":{"type":"integer","title":"Exercise Attempts","default":0}},"type":"object","required":["lesson_id"],"title":"MyLessonResult","description":"O'quvchining bitta dars bo'yicha natijalari (o'zi ko'radi)."},"MyLessonResultsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MyLessonResult"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"MyLessonResultsResponse"},"Notification":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body","default":""},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"target_topic":{"type":"string","title":"Target Topic","default":"all_users"},"sent_at":{"type":"string","title":"Sent At"}},"type":"object","required":["id","title","sent_at"],"title":"Notification"},"NotificationCreate":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"body":{"type":"string","title":"Body","default":""},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"target_topic":{"type":"string","title":"Target Topic","default":"all_users"}},"type":"object","required":["title"],"title":"NotificationCreate"},"NotificationListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Notification"},"type":"array","title":"Items","default":[]}},"type":"object","title":"NotificationListResponse"},"OccupationIcon":{"type":"string","enum":["book","pen","graduation_cap","certificate","microscope","globe","music","code","palette","calculator"],"title":"OccupationIcon","description":"Ko'nikma kartasida ko'rsatiladigan ikonka.\n\nSkillModel.icon ustunida saqlanadi; frontend ushbu qiymat bo'yicha ikonka tanlaydi."},"PaymentCreate":{"properties":{"amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount","description":"To'lov summasi (so'm), > 0"}},"type":"object","required":["amount"],"title":"PaymentCreate"},"PermissionsUpdateRequest":{"properties":{"admin_permissions":{"items":{"$ref":"#/components/schemas/AdminPermission"},"type":"array","title":"Admin Permissions","default":[]}},"type":"object","title":"PermissionsUpdateRequest","description":"Admin huquqlarini (ruxsatlarni) yangilash."},"PersonalCourseStat":{"properties":{"course_id":{"type":"string","title":"Course Id"},"title":{"type":"string","title":"Title"},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"group_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Name"},"mastery_percent":{"type":"integer","title":"Mastery Percent","default":0},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"total_learners":{"type":"integer","title":"Total Learners","default":0},"attended_lessons":{"type":"integer","title":"Attended Lessons","default":0},"missed_lessons":{"type":"integer","title":"Missed Lessons","default":0},"next_lesson_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Lesson At"}},"type":"object","required":["course_id","title"],"title":"PersonalCourseStat","description":"Foydalanuvchining bitta kursdagi o'zlashtirish/davomat ko'rsatkichi."},"PersonalStatsResponse":{"properties":{"courses":{"items":{"$ref":"#/components/schemas/PersonalCourseStat"},"type":"array","title":"Courses","default":[]},"avg_mastery":{"type":"integer","title":"Avg Mastery","default":0},"active_courses":{"type":"integer","title":"Active Courses","default":0}},"type":"object","title":"PersonalStatsResponse"},"PhoneRejectRequest":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"PhoneRejectRequest"},"PhoneUpdateRequest":{"properties":{"phone":{"type":"string","title":"Phone"}},"type":"object","required":["phone"],"title":"PhoneUpdateRequest","description":"Admin tomonidan foydalanuvchi telefon raqamini o'zgartirish."},"PlanAdminListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SubscriptionPlanAdmin"},"type":"array","title":"Items","default":[]}},"type":"object","title":"PlanAdminListResponse"},"PlanCreateRequest":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"description":{"type":"string","title":"Description","default":""},"monthly_price":{"type":"integer","minimum":0.0,"title":"Monthly Price"},"months":{"type":"integer","minimum":1.0,"title":"Months","default":1},"features":{"items":{"type":"string"},"type":"array","title":"Features","default":[]},"is_popular":{"type":"boolean","title":"Is Popular","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["title","monthly_price"],"title":"PlanCreateRequest"},"PlanListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SubscriptionPlan"},"type":"array","title":"Items","default":[]}},"type":"object","title":"PlanListResponse"},"PlanUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"monthly_price":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Monthly Price"},"months":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Months"},"features":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Features"},"is_popular":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Popular"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"PlanUpdateRequest","description":"PATCH — faqat berilgan maydonlar yangilanadi."},"RecommendationCreate":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"description":{"type":"string","title":"Description","default":""},"body":{"items":{},"type":"array","title":"Body","default":[]},"is_visible":{"type":"boolean","title":"Is Visible","default":true},"doing_time":{"type":"integer","minimum":0.0,"title":"Doing Time","default":0},"meaning_category":{"$ref":"#/components/schemas/MeaningCategory","default":"other"},"start_age":{"type":"integer","minimum":0.0,"title":"Start Age","default":0},"end_age":{"type":"integer","minimum":0.0,"title":"End Age","default":18},"is_every_day":{"type":"boolean","title":"Is Every Day","default":true},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"begin_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Begin Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"excepts_days":{"items":{"type":"string","format":"date-time"},"type":"array","title":"Excepts Days","default":[]},"link_type":{"type":"string","enum":["","story","video","audio","course","exercise","lesson"],"title":"Link Type","default":""},"link_id":{"type":"string","title":"Link Id","default":""},"link_parent_id":{"type":"string","title":"Link Parent Id","default":""}},"type":"object","required":["title"],"title":"RecommendationCreate"},"RecommendationDetail":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"is_visible":{"type":"boolean","title":"Is Visible","default":true},"doing_time":{"type":"integer","title":"Doing Time","default":0},"meaning_category":{"$ref":"#/components/schemas/MeaningCategory","default":"other"},"start_age":{"type":"integer","title":"Start Age","default":0},"end_age":{"type":"integer","title":"End Age","default":18},"is_every_day":{"type":"boolean","title":"Is Every Day","default":true},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled At"},"begin_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Begin Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"link_type":{"type":"string","title":"Link Type","default":""},"link_id":{"type":"string","title":"Link Id","default":""},"link_parent_id":{"type":"string","title":"Link Parent Id","default":""},"link_title":{"type":"string","title":"Link Title","default":""},"created_at":{"type":"string","title":"Created At"},"body":{"items":{},"type":"array","title":"Body","default":[]},"excepts_days":{"items":{"type":"string"},"type":"array","title":"Excepts Days","default":[]}},"type":"object","required":["id","title","created_at"],"title":"RecommendationDetail","description":"Tahrirlash uchun to'liq tavsiya (body + chiqarilgan kunlar)."},"RecommendationListItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"is_visible":{"type":"boolean","title":"Is Visible","default":true},"doing_time":{"type":"integer","title":"Doing Time","default":0},"meaning_category":{"$ref":"#/components/schemas/MeaningCategory","default":"other"},"start_age":{"type":"integer","title":"Start Age","default":0},"end_age":{"type":"integer","title":"End Age","default":18},"is_every_day":{"type":"boolean","title":"Is Every Day","default":true},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled At"},"begin_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Begin Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"link_type":{"type":"string","title":"Link Type","default":""},"link_id":{"type":"string","title":"Link Id","default":""},"link_parent_id":{"type":"string","title":"Link Parent Id","default":""},"link_title":{"type":"string","title":"Link Title","default":""},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","title","created_at"],"title":"RecommendationListItem","description":"Ro'yxat kartasi uchun yetarli maydonlar (body yo'q)."},"RecommendationOption":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"doing_time":{"type":"integer","title":"Doing Time","default":0},"meaning_category":{"type":"string","title":"Meaning Category","default":"other"},"is_visible":{"type":"boolean","title":"Is Visible","default":true}},"type":"object","required":["id","title"],"title":"RecommendationOption","description":"Strategiyaga bosqich sifatida tanlash uchun tavsiya (body'siz)."},"RecommendationOptionList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RecommendationOption"},"type":"array","title":"Items","default":[]}},"type":"object","title":"RecommendationOptionList"},"RecommendationUpdate":{"properties":{"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"body":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Body"},"is_visible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Visible"},"doing_time":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Doing Time"},"meaning_category":{"anyOf":[{"$ref":"#/components/schemas/MeaningCategory"},{"type":"null"}]},"start_age":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Start Age"},"end_age":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"End Age"},"is_every_day":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Every Day"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"begin_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Begin Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"excepts_days":{"anyOf":[{"items":{"type":"string","format":"date-time"},"type":"array"},{"type":"null"}],"title":"Excepts Days"},"link_type":{"anyOf":[{"type":"string","enum":["","story","video","audio","course","exercise","lesson"]},{"type":"null"}],"title":"Link Type"},"link_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Id"},"link_parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Parent Id"}},"type":"object","title":"RecommendationUpdate","description":"Qisman update (PATCH). Faqat uzatilgan maydonlar o'zgaradi."},"RecommendationsBoard":{"properties":{"calendar":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Calendar","default":{}},"items":{"items":{"$ref":"#/components/schemas/RecommendationListItem"},"type":"array","title":"Items","default":[]}},"type":"object","title":"RecommendationsBoard","description":"`GET /recommendations` yagona javobi: kalendar HAR DOIM keladi,\n`items` esa so'ralgan kun (date) tavsiyalari (qidiruv bilan filtrlangan).\n\nAlohida /calendar endpoint yo'q — kalendar shu javob ichida keladi."},"RefreshRequest":{"properties":{"refresh_token":{"type":"string","title":"Refresh Token"}},"type":"object","required":["refresh_token"],"title":"RefreshRequest","description":"Token yangilash so'rovi."},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"RegisterRequest","description":"Ro'yxatdan o'tish so'rovi."},"RejectRequest":{"properties":{"reason":{"type":"string","title":"Reason","default":""}},"type":"object","title":"RejectRequest"},"RelativeUser":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","required":["id","name"],"title":"RelativeUser","description":"Qidiruvda topilgan ilova foydalanuvchisi (yaqin sifatida qo'shish uchun)."},"ReplyCreate":{"properties":{"text":{"type":"string","minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"ReplyCreate"},"ResourceAccessUpdate":{"properties":{"access":{"type":"string","enum":["private","free","subscription"],"title":"Access"},"plan_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Plan Ids"}},"type":"object","required":["access"],"title":"ResourceAccessUpdate"},"ResourceCounts":{"properties":{"exercise":{"type":"integer","title":"Exercise","default":0},"video":{"type":"integer","title":"Video","default":0},"audio":{"type":"integer","title":"Audio","default":0},"image":{"type":"integer","title":"Image","default":0}},"type":"object","title":"ResourceCounts"},"ScheduleListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ScheduledLesson"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ScheduleListResponse"},"ScheduledLesson":{"properties":{"id":{"type":"string","title":"Id"},"group_id":{"type":"string","title":"Group Id"},"title":{"type":"string","title":"Title"},"type":{"$ref":"#/components/schemas/ScheduledLessonType"},"start":{"type":"string","title":"Start"},"duration_minutes":{"type":"integer","title":"Duration Minutes","default":60},"lesson_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Id"},"teacher_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Teacher Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"auto_generated":{"type":"boolean","title":"Auto Generated","default":false},"is_past":{"type":"boolean","title":"Is Past","default":false}},"type":"object","required":["id","group_id","title","type","start"],"title":"ScheduledLesson"},"ScheduledLessonCreate":{"properties":{"group_id":{"type":"string","title":"Group Id"},"title":{"type":"string","minLength":1,"title":"Title"},"type":{"$ref":"#/components/schemas/ScheduledLessonType"},"start":{"type":"string","format":"date-time","title":"Start"},"duration_minutes":{"type":"integer","exclusiveMinimum":0.0,"title":"Duration Minutes","default":60},"lesson_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Id"},"teacher_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Teacher Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note","default":""},"auto_generated":{"type":"boolean","title":"Auto Generated","default":false}},"type":"object","required":["group_id","title","type","start"],"title":"ScheduledLessonCreate"},"ScheduledLessonType":{"type":"string","enum":["regular","additional"],"title":"ScheduledLessonType","description":"Kalendarga qo'yilgan dars turi (COURSES_API.md §3)."},"ScheduledLessonUpdate":{"properties":{"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"type":{"anyOf":[{"$ref":"#/components/schemas/ScheduledLessonType"},{"type":"null"}]},"start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"},"duration_minutes":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Duration Minutes"},"lesson_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lesson Id"},"teacher_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Teacher Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"ScheduledLessonUpdate"},"SkillResponse":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"$ref":"#/components/schemas/SkillType"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon":{"anyOf":[{"$ref":"#/components/schemas/OccupationIcon"},{"type":"null"}]},"certificate":{"anyOf":[{"$ref":"#/components/schemas/CertificateResponse"},{"type":"null"}]}},"type":"object","required":["id","type","name"],"title":"SkillResponse","description":"Ko'nikma javob modeli — /users/skills endpointida qaytariladi."},"SkillStatusRequest":{"properties":{"status":{"type":"string","title":"Status","default":"pending"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"SkillStatusRequest","description":"Ko'nikma moderatsiya holatini bevosita o'rnatish (approved/pending/rejected)."},"SkillType":{"type":"string","enum":["teacher","mentor","student","tutor","trainer"],"title":"SkillType","description":"Ko'nikmaning (skill) turi.\n\nSkillModel.type ustunida PostgreSQL Enum sifatida saqlanadi."},"StageRecommendationsAdd":{"properties":{"recommendation_ids":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Recommendation Ids"}},"type":"object","required":["recommendation_ids"],"title":"StageRecommendationsAdd","description":"Tanlangan tavsiyalarni bosqich sifatida (tartib bilan) oxiriga qo'shish."},"StageReorder":{"properties":{"ordered_ids":{"items":{"type":"string"},"type":"array","title":"Ordered Ids"}},"type":"object","required":["ordered_ids"],"title":"StageReorder"},"StatisticsResponse":{"properties":{"cards":{"items":{"$ref":"#/components/schemas/KpiCard"},"type":"array","title":"Cards","default":[]},"video_views":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"Video Views","default":[]},"user_growth":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"User Growth","default":[]},"content_breakdown":{"items":{"$ref":"#/components/schemas/BreakdownSlice"},"type":"array","title":"Content Breakdown","default":[]}},"type":"object","title":"StatisticsResponse"},"Story":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content","default":""},"type":{"type":"string","title":"Type","default":"shortStory"},"genre":{"type":"string","title":"Genre","default":""},"theme":{"type":"string","title":"Theme","default":""},"status":{"type":"string","title":"Status","default":"draft"},"author_name":{"type":"string","title":"Author Name","default":""},"audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","title","created_at"],"title":"Story"},"StoryCreate":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"content":{"type":"string","title":"Content","default":""},"type":{"type":"string","title":"Type","default":"shortStory"},"genre":{"type":"string","title":"Genre","default":""},"theme":{"type":"string","title":"Theme","default":""},"status":{"type":"string","title":"Status","default":"draft"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name"},"audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url"}},"type":"object","required":["title"],"title":"StoryCreate"},"StoryUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"genre":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genre"},"theme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name"},"audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Url"}},"type":"object","title":"StoryUpdate"},"Strategy":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"category":{"type":"string","title":"Category","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"stage_count":{"type":"integer","title":"Stage Count","default":0},"completed_count":{"type":"integer","title":"Completed Count","default":0},"is_started":{"type":"boolean","title":"Is Started","default":false},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","title","created_at"],"title":"Strategy"},"StrategyCreate":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"description":{"type":"string","title":"Description","default":""},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"category":{"type":"string","title":"Category","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["title"],"title":"StrategyCreate"},"StrategyDetail":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"category":{"type":"string","title":"Category","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true},"stage_count":{"type":"integer","title":"Stage Count","default":0},"completed_count":{"type":"integer","title":"Completed Count","default":0},"is_started":{"type":"boolean","title":"Is Started","default":false},"created_at":{"type":"string","title":"Created At"},"stages":{"items":{"$ref":"#/components/schemas/StrategyStageMeta"},"type":"array","title":"Stages","default":[]}},"type":"object","required":["id","title","created_at"],"title":"StrategyDetail"},"StrategyListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Strategy"},"type":"array","title":"Items","default":[]}},"type":"object","title":"StrategyListResponse"},"StrategyProgress":{"properties":{"strategy_id":{"type":"string","title":"Strategy Id"},"completed_count":{"type":"integer","title":"Completed Count"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["strategy_id","completed_count","total"],"title":"StrategyProgress"},"StrategyStageCreate":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"description":{"type":"string","title":"Description","default":""},"body":{"items":{},"type":"array","title":"Body","default":[]}},"type":"object","required":["title"],"title":"StrategyStageCreate"},"StrategyStageDetail":{"properties":{"id":{"type":"string","title":"Id"},"position":{"type":"integer","title":"Position"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"recommendation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recommendation Id"},"body":{"items":{},"type":"array","title":"Body","default":[]},"link_type":{"type":"string","title":"Link Type","default":""},"link_id":{"type":"string","title":"Link Id","default":""},"link_parent_id":{"type":"string","title":"Link Parent Id","default":""},"link_title":{"type":"string","title":"Link Title","default":""},"link_token":{"type":"string","title":"Link Token","default":""}},"type":"object","required":["id","position","title"],"title":"StrategyStageDetail","description":"To'liq bosqich (body bilan) — tahrirlash / bajarish uchun."},"StrategyStageMeta":{"properties":{"id":{"type":"string","title":"Id"},"position":{"type":"integer","title":"Position"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"recommendation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recommendation Id"}},"type":"object","required":["id","position","title"],"title":"StrategyStageMeta","description":"Bosqich metadatasi (body'siz) — ro'yxat / detal uchun."},"StrategyStageUpdate":{"properties":{"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"body":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Body"}},"type":"object","title":"StrategyStageUpdate"},"StrategyUpdate":{"properties":{"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"StrategyUpdate"},"StudentAnswer":{"properties":{"question":{"type":"string","title":"Question"},"student_answer":{"type":"string","title":"Student Answer"},"correct_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Correct Answer"},"exercise_type":{"anyOf":[{"$ref":"#/components/schemas/ExerciseType"},{"type":"null"}]}},"type":"object","required":["question","student_answer"],"title":"StudentAnswer","description":"Bitta o'quvchi javobi."},"StudentContact":{"properties":{"relation":{"type":"string","title":"Relation"},"phone":{"type":"string","title":"Phone"}},"type":"object","required":["relation","phone"],"title":"StudentContact"},"StudentListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CourseStudent"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"StudentListResponse"},"StudentSortField":{"type":"string","enum":["name","mastery","subscription","status"],"title":"StudentSortField","description":"O'quvchilarni saralash maydoni (COURSES_API.md §3)."},"StudentUpdate":{"properties":{"status":{"anyOf":[{"$ref":"#/components/schemas/CourseStudentStatus"},{"type":"null"}]},"subscription":{"anyOf":[{"$ref":"#/components/schemas/CourseSubscription"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"contacts":{"anyOf":[{"items":{"$ref":"#/components/schemas/StudentContact"},"type":"array"},{"type":"null"}],"title":"Contacts"},"group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Id"},"is_course_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Course Admin"},"parent_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Of"}},"type":"object","title":"StudentUpdate","description":"email O'ZGARMAYDI — bu modelda yo'q.\n\ngroup_id — admin o'quvchini shu kursning boshqa guruhiga ko'chirishi mumkin\n(null yuborilsa guruhdan chiqariladi). Guruh boshqa kursga tegishli bo'lsa rad etiladi.\nstatus — a'zoning rolini o'zgartiradi (student/teacher/supportTeacher/parent/staff/spam).\nis_course_admin — faqat kurs muallifi yoki kurs-admini o'zgartira oladi."},"SubjectCategory":{"properties":{"id":{"type":"integer","title":"Id"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"sort_order":{"type":"integer","title":"Sort Order","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"children_count":{"type":"integer","title":"Children Count","default":0},"plans_count":{"type":"integer","title":"Plans Count","default":0}},"type":"object","required":["id","name"],"title":"SubjectCategory"},"SubjectCategoryCreate":{"properties":{"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"description":{"type":"string","maxLength":500,"title":"Description","default":""},"image":{"type":"string","title":"Image","default":""},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name"],"title":"SubjectCategoryCreate"},"SubjectCategoryList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SubjectCategory"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"SubjectCategoryList"},"SubjectCategoryMove":{"properties":{"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"index":{"type":"integer","minimum":0.0,"title":"Index","default":0}},"type":"object","title":"SubjectCategoryMove","description":"Kategoriyani boshqa ota ostiga va/yoki boshqa o'ringa ko'chirish."},"SubjectCategoryUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"SubjectCategoryUpdate"},"SubscribeRequest":{"properties":{"type":{"anyOf":[{"type":"string","enum":["exercise","video","audio","image","course"]},{"type":"string","const":"plan"}],"title":"Type"},"plan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Id"}},"type":"object","required":["type"],"title":"SubscribeRequest"},"SubscribersSummary":{"properties":{"active_count":{"type":"integer","title":"Active Count","default":0},"total_earned":{"type":"integer","title":"Total Earned","default":0},"total_commission":{"type":"integer","title":"Total Commission","default":0},"items":{"items":{"$ref":"#/components/schemas/Subscription"},"type":"array","title":"Items","default":[]}},"type":"object","title":"SubscribersSummary"},"Subscription":{"properties":{"id":{"type":"string","title":"Id"},"author_id":{"type":"integer","title":"Author Id"},"author_name":{"type":"string","title":"Author Name"},"subscriber_id":{"type":"integer","title":"Subscriber Id"},"subscriber_name":{"type":"string","title":"Subscriber Name"},"resource_type":{"type":"string","title":"Resource Type","default":"all"},"plan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Id"},"plan_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Title"},"price":{"type":"integer","title":"Price"},"started_at":{"type":"string","format":"date-time","title":"Started At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"auto_renew":{"type":"boolean","title":"Auto Renew"},"status":{"type":"string","title":"Status"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","author_id","author_name","subscriber_id","subscriber_name","price","started_at","expires_at","auto_renew","status","is_active"],"title":"Subscription"},"SubscriptionPlan":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title","default":""},"description":{"type":"string","title":"Description","default":""},"monthly_price":{"type":"integer","title":"Monthly Price","default":0},"months":{"type":"integer","title":"Months","default":1},"features":{"items":{"type":"string"},"type":"array","title":"Features","default":[]},"is_popular":{"type":"boolean","title":"Is Popular","default":false}},"type":"object","required":["id"],"title":"SubscriptionPlan","description":"Mobil balans oynasidagi tarif kartasi (WALLET_API.md §4)."},"SubscriptionPlanAdmin":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title","default":""},"description":{"type":"string","title":"Description","default":""},"monthly_price":{"type":"integer","title":"Monthly Price","default":0},"months":{"type":"integer","title":"Months","default":1},"features":{"items":{"type":"string"},"type":"array","title":"Features","default":[]},"is_popular":{"type":"boolean","title":"Is Popular","default":false},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["id"],"title":"SubscriptionPlanAdmin","description":"Admin CRUD ko'rinishi — faollik va tartib bilan."},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token","refresh_token"],"title":"TokenResponse","description":"Token javob modeli — register, login, refresh va google login da qaytariladi."},"TopCourse":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"banner_url":{"type":"string","title":"Banner Url","default":""},"subject":{"type":"string","title":"Subject","default":""},"level":{"type":"string","title":"Level","default":""},"price_type":{"type":"string","title":"Price Type","default":"free"},"price":{"type":"integer","title":"Price","default":0},"lessons_count":{"type":"integer","title":"Lessons Count","default":0},"students_count":{"type":"integer","title":"Students Count","default":0},"author_name":{"type":"string","title":"Author Name","default":""}},"type":"object","required":["id","title"],"title":"TopCourse","description":"Landing uchun ommabop kurs (ochiq ma'lumotlar)."},"TopUpRequest":{"properties":{"amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount"},"method":{"type":"string","title":"Method","default":""}},"type":"object","required":["amount"],"title":"TopUpRequest"},"Transaction":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"status":{"type":"string","title":"Status","default":"success"},"amount":{"type":"integer","title":"Amount","default":0},"title":{"type":"string","title":"Title","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"method":{"type":"string","title":"Method","default":""},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","type","created_at"],"title":"Transaction"},"TransactionPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Transaction"},"type":"array","title":"Items","default":[]},"page":{"type":"integer","title":"Page","default":1},"size":{"type":"integer","title":"Size","default":10},"total_count":{"type":"integer","title":"Total Count","default":0},"total_pages":{"type":"integer","title":"Total Pages","default":0},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","title":"TransactionPage"},"TransferRequest":{"properties":{"recipient":{"type":"string","minLength":1,"title":"Recipient"},"amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount"}},"type":"object","required":["recipient","amount"],"title":"TransferRequest","description":"Foydalanuvchidan foydalanuvchiga o'tkazma.\n\nrecipient — qabul qiluvchining email yoki telefon raqami."},"TypeSubscriptionInfo":{"properties":{"type":{"type":"string","title":"Type"},"plan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Id"},"plan_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Title"},"price":{"type":"integer","title":"Price","default":0},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"auto_renew":{"type":"boolean","title":"Auto Renew"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["type","expires_at","auto_renew","is_active"],"title":"TypeSubscriptionInfo","description":"Bitta tur (yoki maxsus obuna) bo'yicha obuna — joriy foydalanuvchiniki\nyoki obunachiniki."},"UserLookupResponse":{"properties":{"user":{"anyOf":[{"$ref":"#/components/schemas/RelativeUser"},{"type":"null"}]}},"type":"object","title":"UserLookupResponse","description":"GET /courses/{id}/user-lookup — ID / email / telefon bo'yicha ANIQ\nmoslik; ko'pi bilan bitta natija."},"UserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"second_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Second Name"},"third_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Third Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"phone_verification_status":{"type":"string","title":"Phone Verification Status","default":"approved"},"phone_rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Rejection Reason"},"skills":{"items":{"type":"integer"},"type":"array","title":"Skills","default":[]},"admin_permissions":{"items":{"$ref":"#/components/schemas/AdminPermission"},"type":"array","title":"Admin Permissions","default":[]},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"has_password":{"type":"boolean","title":"Has Password","default":false},"has_google":{"type":"boolean","title":"Has Google","default":false},"linked_profiles":{"items":{"$ref":"#/components/schemas/LinkedProfileResponse"},"type":"array","title":"Linked Profiles","default":[]}},"type":"object","required":["id","email","is_active","created_at"],"title":"UserResponse","description":"Foydalanuvchi profili javob modeli.\n\nmodel_config from_attributes=True — SQLAlchemy modeli va domen ob'ektidan\nto'g'ridan-to'g'ri o'qiy oladi (model_validate() ishlatish uchun)."},"UserSkill":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type","default":"teacher"},"name":{"type":"string","title":"Name","default":""},"description":{"type":"string","title":"Description","default":""},"icon":{"type":"string","title":"Icon","default":""},"certificate":{"anyOf":[{"$ref":"#/components/schemas/Certificate"},{"type":"null"}]},"verification_status":{"type":"string","title":"Verification Status","default":"pending"},"rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejection Reason"}},"type":"object","required":["id"],"title":"UserSkill"},"UserSkillCreate":{"properties":{"type":{"type":"string","title":"Type","default":"teacher"},"name":{"type":"string","title":"Name","default":""},"description":{"type":"string","title":"Description","default":""},"icon":{"type":"string","title":"Icon","default":""},"certificate":{"anyOf":[{"$ref":"#/components/schemas/Certificate"},{"type":"null"}]}},"type":"object","title":"UserSkillCreate"},"UserSkillListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserSkill"},"type":"array","title":"Items","default":[]}},"type":"object","title":"UserSkillListResponse"},"UserSkillUpdate":{"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"certificate":{"anyOf":[{"$ref":"#/components/schemas/Certificate"},{"type":"null"}]}},"type":"object","title":"UserSkillUpdate"},"UserUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"second_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Second Name"},"third_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Third Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"phone_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Phone Verified"},"skills":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Skills"},"admin_permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/AdminPermission"},"type":"array"},{"type":"null"}],"title":"Admin Permissions"}},"type":"object","title":"UserUpdateRequest","description":"Profil yangilash so'rovi — barcha maydonlar ixtiyoriy.\n\nFaqat uzatilgan maydonlar yangilanadi (None bo'lmaganlar)."},"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"},"Wallet":{"properties":{"balance":{"type":"integer","title":"Balance","default":0},"total_top_up":{"type":"integer","title":"Total Top Up","default":0},"total_spent":{"type":"integer","title":"Total Spent","default":0},"currency":{"type":"string","title":"Currency","default":"so'm"}},"type":"object","title":"Wallet"},"WritingErrorItem":{"properties":{"excerpt":{"type":"string","title":"Excerpt"},"error_type":{"type":"string","title":"Error Type"},"suggestion":{"type":"string","title":"Suggestion"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"}},"type":"object","required":["excerpt","error_type","suggestion"],"title":"WritingErrorItem"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}