{"openapi":"3.0.3","info":{"title":"auth API","version":"1.0.0"},"components":{"schemas":{}},"paths":{"/api/auth/livez":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/api/auth/readyz":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/api/auth/health":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/api/auth/firebase":{"post":{"summary":"Login with Firebase ID token","tags":["Authentication"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idToken":{"type":"string","minLength":1}},"required":["idToken"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"},"refreshToken":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true},"provider":{"type":"string"}},"required":["id","email","name","avatarUrl","provider"],"additionalProperties":false}},"required":["accessToken","refreshToken","user"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false}}}}}}},"/api/auth/refresh":{"post":{"summary":"Refresh access token","tags":["Authentication"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refreshToken":{"type":"string","minLength":1}},"required":["refreshToken"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"accessToken":{"type":"string"}},"required":["accessToken"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false}}}}}}},"/api/auth/me":{"get":{"summary":"Get current user full profile","tags":["Authentication"],"parameters":[{"schema":{"type":"string","pattern":"^Bearer .+$"},"in":"header","name":"authorization","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true},"provider":{"type":"string"},"phone":{"type":"string","nullable":true},"gender":{"type":"string","nullable":true},"dateOfBirth":{"type":"string","nullable":true},"accountType":{"type":"string"},"language":{"type":"string","enum":["en","fr","de","ru"]},"onboardingCompleted":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","email","name","avatarUrl","provider","phone","gender","dateOfBirth","accountType","language","onboardingCompleted","createdAt"],"additionalProperties":false}},"required":["user"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"summary":"Update current user profile","tags":["Authentication"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":200},"phone":{"type":"string","pattern":"^[\\d\\s\\-()+]{7,20}$"},"gender":{"type":"string","enum":["MALE","FEMALE"]},"dateOfBirth":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"onboardingCompleted":{"type":"boolean"},"language":{"type":"string","enum":["en","fr","de","ru"]}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","pattern":"^Bearer .+$"},"in":"header","name":"authorization","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true},"provider":{"type":"string"},"phone":{"type":"string","nullable":true},"gender":{"type":"string","nullable":true},"dateOfBirth":{"type":"string","nullable":true},"accountType":{"type":"string"},"language":{"type":"string","enum":["en","fr","de","ru"]},"onboardingCompleted":{"type":"boolean"},"createdAt":{"type":"string"}},"required":["id","email","name","avatarUrl","provider","phone","gender","dateOfBirth","accountType","language","onboardingCompleted","createdAt"],"additionalProperties":false}},"required":["user"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false}}}}}}},"/api/auth/apple":{"post":{"summary":"Login with Apple identity token","tags":["Authentication"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"identityToken":{"type":"string","minLength":1},"fullName":{"type":"string"},"email":{"type":"string","format":"email"}},"required":["identityToken"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response"}}}},"/api/auth/google":{"post":{"summary":"Login with Google ID token from native sign-in","tags":["Authentication"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"idToken":{"type":"string","minLength":1}},"required":["idToken"],"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response"}}}},"/api/auth/{*}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"*","required":true}],"responses":{"200":{"description":"Default Response"}}},"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"*","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/users/me":{"get":{"summary":"Get current user profile","tags":["Users"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"emailVerified":{"type":"boolean"},"image":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"gender":{"type":"string","nullable":true},"dateOfBirth":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true},"accountType":{"type":"string"},"themeMode":{"type":"string"},"accentColor":{"type":"string"},"timezone":{"type":"string"},"onboardingCompleted":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","name","email","emailVerified","image","phone","gender","dateOfBirth","avatarUrl","accountType","themeMode","accentColor","timezone","onboardingCompleted","createdAt"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Update user profile","tags":["Users"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"phone":{"type":"string","maxLength":50},"gender":{"type":"string","enum":["MALE","FEMALE"]},"dateOfBirth":{"type":"string"},"timezone":{"type":"string","maxLength":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"emailVerified":{"type":"boolean"},"image":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"gender":{"type":"string","nullable":true},"dateOfBirth":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true},"accountType":{"type":"string"},"themeMode":{"type":"string"},"accentColor":{"type":"string"},"timezone":{"type":"string"},"onboardingCompleted":{"type":"boolean"},"createdAt":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","name","email","emailVerified","image","phone","gender","dateOfBirth","avatarUrl","accountType","themeMode","accentColor","timezone","onboardingCompleted","createdAt"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Delete user account","tags":["Users"],"responses":{"204":{"description":"Default Response","content":{"application/json":{"schema":{"enum":["null"],"nullable":true}}}}}}},"/api/users/me/settings":{"patch":{"summary":"Update user settings","tags":["Users"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"themeMode":{"type":"string","enum":["LIGHT","DARK","SYSTEM"]},"accentColor":{"type":"string","enum":["PINK","BLUE","GREEN","ORANGE","PURPLE"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"themeMode":{"type":"string"},"accentColor":{"type":"string"}},"required":["themeMode","accentColor"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}}}}