"""Pydantic request/response models for bincio-auth.""" from __future__ import annotations from pydantic import BaseModel, Field class LoginRequest(BaseModel): handle: str = Field(..., description="User handle") password: str = Field(..., description="User password") class LoginResponse(BaseModel): ok: bool = True handle: str display_name: str is_admin: bool wiki_access: bool activity_access: bool class RegisterRequest(BaseModel): code: str = Field(..., description="Invite code") handle: str = Field(..., description="Desired username (lowercase, 1–30 chars)") password: str = Field(..., description="Password (min 8 characters)") display_name: str = Field(default="", description="Full name (optional)") class RegisterResponse(BaseModel): ok: bool = True handle: str class ResetPasswordRequest(BaseModel): handle: str code: str = Field(..., description="One-time reset code (24 h TTL)") password: str = Field(..., description="New password (min 8 chars)") class CreateInviteRequest(BaseModel): grants_activity: bool = Field(default=False) class RequestResetRequest(BaseModel): email: str class ResetPasswordTokenRequest(BaseModel): token: str password: str = Field(..., min_length=8, description="New password (min 8 chars)") class SetEmailRequest(BaseModel): email: str class GenericResponse(BaseModel): ok: bool = True