"""Common API models and response schemas.""" from pydantic import BaseModel from typing import Optional, Dict, Any, List from datetime import datetime class BaseResponse(BaseModel): """Base response model for all API responses.""" success: bool = True message: Optional[str] = None data: Optional[Dict[str, Any]] = None errors: Optional[List[str]] = None timestamp: datetime = datetime.utcnow() class Config: json_encoders = { datetime: lambda v: v.isoformat() } class ErrorResponse(BaseModel): """Error response model.""" error: str message: str code: Optional[str] = None details: Optional[Dict[str, Any]] = None class SuccessResponse(BaseModel): """Success response model.""" message: str data: Optional[Dict[str, Any]] = None class PaginationParams(BaseModel): """Pagination parameters.""" page: int = 1 page_size: int = 10 total: Optional[int] = None total_pages: Optional[int] = None class PaginatedResponse(BaseModel): """Paginated response model.""" items: List[Any] pagination: PaginationParams success: bool = True