metis-desk/docs/arquitectura/contratos-http.md

20 lines
1008 B
Markdown
Raw Permalink Normal View History

# Contratos HTTP
Zod v4 es la fuente de verdad de los DTOs de entrada y salida.
Inferir todos sus tipos mediante z.infer<typeof Schema>; no escribir interfaces equivalentes.
Ubicación: modules/<module>/src/common/dto/request y response.
Crear shared solo cuando haya subcontratos estables usados por varias operaciones.
Los nombres expresan recurso y acción: GetHealthRequestSchema, GetHealthRequestDTO, GetHealthResponseSchema y GetHealthResponseDTO.
Distinguir campo omitido, null, cadena vacía y colección vacía.
Evitar default y transform en contratos de negocio salvo una necesidad justificada.
Usar schemas semánticos para UUID y timestamps ISO. Los decimales exactos viajan como cadenas.
La route valida la entrada una vez; el controller no repite Zod.
El navegador valida la respuesta externa antes de consumirla.
Los builders de respuesta se tipan con el DTO inferido exacto; no duplican interfaces Snapshot.
Son deterministas y no contienen lógica de negocio ni acceso a repositorios.