from typing import Generic, List, Optional, TypeVar from pydantic import BaseModel, Field T = TypeVar('T') class PaginationParams(BaseModel): skip: int = Field(0, ge=0, description="Number of items to skip") limit: int = Field(100, gt=0, le=1000, description="Maximum number of items to return") class PaginatedResponse(BaseModel, Generic[T]): items: List[T] = Field(..., description="List of items") total: int = Field(..., description="Total number of items") skip: int = Field(..., description="Number of items skipped") limit: int = Field(..., description="Maximum number of items returned")