"""Pydantic schemas for User Session API requests/responses.""" from datetime import datetime from typing import Optional, List from pydantic import BaseModel, Field class SessionBase(BaseModel): """Base session schema.""" device_name: Optional[str] = Field(None, max_length=200) device_type: Optional[str] = Field(None, max_length=50) browser: Optional[str] = Field(None, max_length=100) os: Optional[str] = Field(None, max_length=100) ip_address: Optional[str] = Field(None, max_length=45) location: Optional[str] = Field(None, max_length=200) class SessionCreate(SessionBase): """Schema for creating a session.""" user_id: str token_hash: str user_agent: Optional[str] = None expires_at: Optional[datetime] = None class Session(BaseModel): """Schema for session response.""" id: str user_id: str device_name: Optional[str] = None device_type: Optional[str] = None browser: Optional[str] = None os: Optional[str] = None ip_address: Optional[str] = None location: Optional[str] = None is_active: bool is_current: bool created_at: datetime last_active_at: Optional[datetime] = None expires_at: Optional[datetime] = None class Config: from_attributes = True class SessionList(BaseModel): """Schema for session list.""" items: List[Session] total: int active_count: int class SessionRevokeRequest(BaseModel): """Schema for revoking sessions.""" session_ids: List[str]