""" Common Pydantic schemas for API responses. """ from typing import Generic, TypeVar, Optional from pydantic import BaseModel, Field T = TypeVar("T") class SuccessResponse(BaseModel, Generic[T]): """ Standard success response wrapper. """ code: int = Field(default=0, description="Response code, 0 for success") data: T = Field(description="Response data") message: str = Field(default="success", description="Response message") model_config = { "json_schema_extra": { "examples": [ { "code": 0, "data": {}, "message": "success" } ] } } class ErrorResponse(BaseModel): """ Standard error response wrapper. """ code: int = Field(description="Error code, non-zero for errors") message: str = Field(description="Error message") data: Optional[dict] = Field(default=None, description="Additional error data") model_config = { "json_schema_extra": { "examples": [ { "code": 400, "message": "Bad request", "data": None }, { "code": 404, "message": "Resource not found", "data": {"detail": "Item with id 123 not found"} } ] } }