Pydantic Models
Create Pydantic models following the multi-model pattern for clean API contracts.
Quick Start
Copy the template from assets/template.py and replace placeholders:
-
{{ResourceName}} → PascalCase name (e.g., Project )
-
{{resource_name}} → snake_case name (e.g., project )
Multi-Model Pattern
Model Purpose
Base
Common fields shared across models
Create
Request body for creation (required fields)
Update
Request body for updates (all optional)
Response
API response with all fields
InDB
Database document with doc_type
camelCase Aliases
class MyModel(BaseModel): workspace_id: str = Field(..., alias="workspaceId") created_at: datetime = Field(..., alias="createdAt")
class Config:
populate_by_name = True # Accept both snake_case and camelCase
Optional Update Fields
class MyUpdate(BaseModel): """All fields optional for PATCH requests.""" name: Optional[str] = Field(None, min_length=1) description: Optional[str] = None
Database Document
class MyInDB(MyResponse): """Adds doc_type for Cosmos DB queries.""" doc_type: str = "my_resource"
Integration Steps
-
Create models in src/backend/app/models/
-
Export from src/backend/app/models/init.py
-
Add corresponding TypeScript types