Nên tách khi input và output không cùng shape: create cần password nhưng output không được trả password; internal fields như is_admin, deleted_at, version không nên client ghi; response cần computed fields hoặc nested objects.
Ví dụ các model riêng:
class UserCreate(BaseModel):
email: EmailStr
password: str
class UserRead(BaseModel):
id: int
email: EmailStrTách schema giúp OpenAPI rõ hơn và giảm rủi ro mass assignment hoặc data leak.
Separate them when input and output have different shapes: create input needs a password but output must not return it; internal fields such as is_admin, deleted_at, version should not be writable by clients; responses may need computed fields or nested objects.
Separate model example:
class UserCreate(BaseModel):
email: EmailStr
password: str
class UserRead(BaseModel):
id: int
email: EmailStrSeparate schemas make OpenAPI clearer and reduce mass assignment or data leak risk.