from typing import Literal from pydantic import BaseModel, Field class ContentPageIn(BaseModel): slug: str = Field(min_length=2, max_length=120) title: str = Field(min_length=2, max_length=200) body: str status: Literal["draft", "published"] = "draft" class ContentPagePatchIn(BaseModel): title: str | None = Field(default=None, min_length=2, max_length=200) body: str | None = None status: Literal["draft", "published"] | None = None class ContentPageOut(BaseModel): id: str slug: str title: str body: str status: str