"""Auth schemas for VoIdea API.""" from datetime import datetime from pydantic import BaseModel, EmailStr, Field class RegisterRequest(BaseModel): email: EmailStr password: str = Field(min_length=8, max_length=128) display_name: str = Field(min_length=1, max_length=255) accepted_terms: bool = Field(default=True, description="Must accept Terms & Privacy Policy") class LoginRequest(BaseModel): email: EmailStr password: str class RefreshRequest(BaseModel): refresh_token: str class TokenResponse(BaseModel): access_token: str refresh_token: str token_type: str = "bearer" expires_at: datetime class OAuthUrlResponse(BaseModel): url: str provider: str class OAuthCallbackRequest(BaseModel): code: str class ForgotPasswordRequest(BaseModel): email: EmailStr class ResetPasswordRequest(BaseModel): token: str new_password: str = Field(min_length=8, max_length=128) class TwoFactorSetupResponse(BaseModel): secret: str uri: str qr_base64: str class TwoFactorVerifyRequest(BaseModel): token: str = Field(min_length=6, max_length=6) class TwoFactorLoginRequest(BaseModel): temp_token: str totp_code: str = Field(min_length=6, max_length=6) class TwoFactorLoginResponse(BaseModel): access_token: str refresh_token: str token_type: str = "bearer" expires_at: datetime