""" Pydantic schemas for authentication endpoints. """ from datetime import datetime from pydantic import BaseModel, EmailStr, Field class LoginRequest(BaseModel): """Login request schema.""" email: EmailStr password: str = Field(..., min_length=8) class RegisterRequest(BaseModel): """Self-registration request schema.""" email: EmailStr password: str = Field(..., min_length=8) full_name: str | None = None phone: str | None = None organization_name: str = Field(..., min_length=2) class TokenResponse(BaseModel): """Token response schema (login/refresh).""" access_token: str refresh_token: str token_type: str = "bearer" expires_in: int # seconds class RefreshRequest(BaseModel): """Refresh token request schema.""" refresh_token: str class LogoutRequest(BaseModel): """Logout request schema.""" refresh_token: str class UserInfo(BaseModel): """User information in token response.""" id: int email: str full_name: str | None role: str organization_id: int | None email_verified: bool status: str class Config: from_attributes = True class OrganizationInfo(BaseModel): """Organization information in token response.""" id: int name: str wifi_enabled: bool ble_enabled: bool status: str class Config: from_attributes = True class AuthResponse(BaseModel): """Complete auth response with tokens and user info.""" access_token: str refresh_token: str token_type: str = "bearer" expires_in: int user: UserInfo organization: OrganizationInfo | None class PasswordResetRequest(BaseModel): """Password reset request schema.""" email: EmailStr class PasswordResetConfirm(BaseModel): """Password reset confirmation schema.""" token: str new_password: str = Field(..., min_length=8) class EmailVerifyRequest(BaseModel): """Email verification request schema.""" token: str