{"openapi":"3.0.0","info":{"title":"Auth Service API","description":"Agroinspeksiya Auth Service - JWT Authentication API","contact":{"name":"Agroinspeksiya","email":"support@agroin.uz"},"version":"1.0.0"},"servers":[{"url":"https:\/\/backend.uzagroin.uz","description":"Current Server"}],"paths":{"\/api\/v1\/auth\/register":{"post":{"tags":["Authentication"],"summary":"Yangi foydalanuvchi ro'yxatdan o'tkazish","description":"Email yoki login (username) orqali ro'yxatdan o'tish. Ikkalasidan kamida bittasi yuborilishi kerak.","operationId":"ed42f392010c301892e640067141676e","requestBody":{"required":true,"content":{"application\/json":{"schema":{"required":["name","password","password_confirmation"],"properties":{"name":{"description":"Ism","type":"string","example":"Ali"},"lastname":{"description":"Familiya","type":"string","example":"Valiyev","nullable":true},"display_name":{"description":"Ko'rinadigan ism","type":"string","example":"Ali Valiyev","nullable":true},"login":{"description":"Login (username) \u2014 email o'rniga","type":"string","example":"ali_valiyev","nullable":true},"email":{"description":"Email manzil \u2014 login o'rniga","type":"string","format":"email","example":"ali@agroin.uz","nullable":true},"password":{"description":"Parol (min 8, katta+kichik harf+raqam)","type":"string","format":"password","example":"Password123"},"password_confirmation":{"description":"Parol tasdiqlash","type":"string","format":"password","example":"Password123"}},"type":"object"}}}},"responses":{"201":{"description":"Foydalanuvchi muvaffaqiyatli ro'yxatdan o'tdi"},"422":{"description":"Validatsiya xatosi"}}}},"\/api\/v1\/auth\/login":{"post":{"tags":["Authentication"],"summary":"Tizimga kirish","description":"Email yoki login (username) bilan tizimga kirish. Ikkalasidan kamida biri yuborilishi kerak.\n\n**Login qidirish tartibi:**\n1. `email` yuborilsa \u2014 email bo'yicha qidiriladi\n2. `login` yuborilsa \u2014 avval email sifatida, keyin display_name yoki name bo'yicha qidiriladi\n\nMuvaffaqiyatli bo'lsa JWT token qaytaradi (7 kun amal qiladi).","operationId":"8cb7742ae98d0990acb2907c4e00bf24","requestBody":{"required":true,"content":{"application\/json":{"schema":{"required":["password"],"properties":{"email":{"description":"Email manzil","type":"string","example":"superadmin@agroin.uz","nullable":true},"login":{"description":"Login (username yoki display_name)","type":"string","example":"toshkent_ostk","nullable":true},"password":{"description":"Parol","type":"string","format":"password","example":"password"}},"type":"object"}}}},"responses":{"200":{"description":"Muvaffaqiyatli kirish","content":{"application\/json":{"schema":{"properties":{"success":{"type":"boolean","example":true},"message":{"type":"string","example":"Tizimga muvaffaqiyatli kirdingiz"},"data":{"type":"object"}},"type":"object"}}}},"401":{"description":"Login yoki parol noto'g'ri"},"403":{"description":"Hisob faol emas"},"422":{"description":"Validatsiya xatosi"}}}},"\/api\/v1\/auth\/logout":{"post":{"tags":["Authentication"],"summary":"User logout","operationId":"0d29c740dc06d77602af8095bf4654cc","responses":{"200":{"description":"Logout successful"},"401":{"description":"Unauthorized"}},"security":[{"bearerAuth":[]}]}},"\/api\/v1\/auth\/refresh":{"post":{"tags":["Authentication"],"summary":"Refresh JWT token","operationId":"f6c9683ed975ace7d035a09e6e2a9332","responses":{"200":{"description":"Token refreshed successfully"},"401":{"description":"Token invalid or expired"}},"security":[{"bearerAuth":[]}]}},"\/api\/v1\/auth\/me":{"get":{"tags":["Authentication"],"summary":"Get current user","operationId":"a9c495788506b114956e3f509e5d90a2","responses":{"200":{"description":"User information retrieved successfully"},"401":{"description":"Unauthorized"}},"security":[{"bearerAuth":[]}]}},"\/api\/v1\/auth\/forgot-password":{"post":{"tags":["Authentication"],"summary":"Request password reset token","operationId":"b13d5efc90e1de6d4e9900240fce9b4d","requestBody":{"required":true,"content":{"application\/json":{"schema":{"required":["email"],"properties":{"email":{"type":"string","format":"email","example":"user@example.com"}},"type":"object"}}}},"responses":{"200":{"description":"Reset token generated","content":{"application\/json":{"schema":{"properties":{"success":{"type":"boolean","example":true},"message":{"type":"string"},"data":{"properties":{"email":{"type":"string"},"token":{"type":"string"},"expires_in":{"type":"integer","example":3600}},"type":"object"}},"type":"object"}}}},"404":{"description":"User not found"},"422":{"description":"Validation error"}}}},"\/api\/v1\/auth\/reset-password":{"post":{"tags":["Authentication"],"summary":"Reset password with token","operationId":"bbf02faac4cfbb998aad2b63a843b88c","requestBody":{"required":true,"content":{"application\/json":{"schema":{"required":["email","token","password","password_confirmation"],"properties":{"email":{"type":"string","format":"email","example":"user@example.com"},"token":{"type":"string","example":"reset-token"},"password":{"type":"string","format":"password","example":"NewPassword123"},"password_confirmation":{"type":"string","format":"password","example":"NewPassword123"}},"type":"object"}}}},"responses":{"200":{"description":"Password reset successfully"},"400":{"description":"Invalid or expired token"},"422":{"description":"Validation error"}}}},"\/api\/v1\/auth\/change-password":{"post":{"tags":["Authentication"],"summary":"Change password for authenticated user","operationId":"255dd8dc9b5174b7256349a2318e8c1e","requestBody":{"required":true,"content":{"application\/json":{"schema":{"required":["current_password","password","password_confirmation"],"properties":{"current_password":{"type":"string","format":"password","example":"OldPassword123"},"password":{"type":"string","format":"password","example":"NewPassword123"},"password_confirmation":{"type":"string","format":"password","example":"NewPassword123"}},"type":"object"}}}},"responses":{"200":{"description":"Password changed successfully"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"bearerAuth":[]}]}}},"components":{"schemas":{"ChangePasswordRequest":{"required":["current_password","password","password_confirmation"],"properties":{"current_password":{"type":"string","format":"password","example":"OldPassword123"},"password":{"type":"string","format":"password","minLength":8,"example":"NewPassword123"},"password_confirmation":{"type":"string","format":"password","example":"NewPassword123"}},"type":"object"},"ForgotPasswordRequest":{"required":["email"],"properties":{"email":{"type":"string","format":"email","example":"user@example.com"}},"type":"object"},"ResetPasswordRequest":{"required":["email","token","password","password_confirmation"],"properties":{"email":{"type":"string","format":"email","example":"user@example.com"},"token":{"type":"string","example":"reset-token-here"},"password":{"type":"string","format":"password","minLength":8,"example":"NewPassword123"},"password_confirmation":{"type":"string","format":"password","example":"NewPassword123"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"type":"http","description":"JWT autentifikatsiya tokeni","scheme":"bearer","bearerFormat":"JWT"}}},"tags":[{"name":"Authentication","description":"Login, Register, Logout, Token Refresh, Password Management"}],"security":[{"bearerAuth":[]}]}