| """API response wrapper models.""" | |
| from __future__ import annotations | |
| from typing import Any, List, Optional | |
| from pydantic import BaseModel, Field | |
| class APIResponse(BaseModel): | |
| """Standard envelope for successful responses.""" | |
| success: bool = True | |
| data: Any | |
| message: str = "" | |
| request_id: Optional[str] = None | |
| timestamp: Optional[str] = None | |
| class PaginatedResponse(BaseModel): | |
| success: bool = True | |
| data: List[Any] | |
| total: int | |
| page: int = 1 | |
| page_size: int = 50 | |
| request_id: Optional[str] = None | |
| class ErrorResponse(BaseModel): | |
| success: bool = False | |
| error: str | |
| error_type: str = "" | |
| details: Optional[dict] = None | |
| request_id: Optional[str] = None | |
| class HealthResponse(BaseModel): | |
| status: str | |
| version: str | |
| providers: List[dict] | |
| uptime_seconds: float | |