Files
social-app/backend/src/v1/auth/schemas.py
T

61 lines
1.2 KiB
Python
Raw Normal View History

from __future__ import annotations
from typing import Literal
from pydantic import BaseModel, EmailStr, Field
class SignupRequest(BaseModel):
username: str = Field(min_length=3, max_length=30)
email: EmailStr
password: str = Field(min_length=6)
redirect_to: str | None = None
class LoginRequest(BaseModel):
email: EmailStr
password: str = Field(min_length=6)
class RefreshRequest(BaseModel):
refresh_token: str = Field(min_length=1)
class LogoutRequest(BaseModel):
refresh_token: str = Field(min_length=1)
class AuthUser(BaseModel):
id: str
email: EmailStr
class AuthTokenResponse(BaseModel):
access_token: str
refresh_token: str
expires_in: int
token_type: str
user: AuthUser
class AuthUserByEmailResponse(BaseModel):
id: str
email: EmailStr
created_at: str
email_confirmed_at: str | None = None
class SignupPendingResponse(BaseModel):
status: Literal["pending_verification"] = "pending_verification"
user: AuthUser
message: str = "Email confirmation required"
class PasswordResetRequest(BaseModel):
email: EmailStr
redirect_to: str | None = None
class PasswordResetResponse(BaseModel):
message: str = "Password reset email sent"