Você pode definir os modelos Pydantic para representar uma tarefa com os atributos título, descrição, prioridade e status da seguinte forma:
from pydantic import BaseModel, Field
from typing import Optional, Literal
class Task(BaseModel):
title: str = Field(..., description="Título da tarefa")
description: Optional[str] = Field(None, description="Descrição detalhada da tarefa")
priority: int = Field(..., ge=1, le=5, description="Prioridade da tarefa (1 a 5)")
status: Literal["pendente", "em andamento", "concluída"] = Field(..., description="Status da tarefa")
str
, representa o título da tarefa.str
, permite uma descrição detalhada.int
, pode ser validado para aceitar apenas valores de 1 a 5 (por exemplo, usando o parâmetro ge
e le
do Field
)123.Literal
, restringe os valores permitidos para “pendente”, “em andamento” ou “concluída”, garantindo maior segurança e clareza na API3.Você pode usar o recurso Field
do Pydantic para adicionar validações, descrições e exemplos aos campos, o que melhora a documentação automática da API12.
Esse modelo pode ser utilizado tanto para entrada (criação/atualização) quanto para resposta, conforme a necessidade dos endpoints43.