Errores

El proyecto ya responde con el formato de FastAPI. No se reemplazo por un sobre distinto para no romper clientes.

HTTPException (400, 401, 403, 404, 409)

{ "detail": "mensaje legible" }

Validacion (422)

{ "detail": [{ "loc": ["body", "curp"], "msg": "...", "type": "..." }] }

Error no controlado (500)

{
  "error": "Error interno del servidor",
  "detail": "Por favor contacte al administrador"
}

No incluye stack trace.

Limite de peticiones (429)

En /cliente el limite es por API key (120 por minuto). slowapi responde:

{ "error": "Rate limit exceeded: 120 per 1 minute" }

Codigos del contrato publico

CodigoUso
401API key ausente o invalida
403Empresa inactiva
404Caso no encontrado
400Caso no activo para reintento o baja
422JSON fuera de contrato
429Limite por API key superado
500Fallo al persistir o error no controlado

Recomendacion

Si mas adelante se unifica el sobre error.code + request_id, debe ser una version nueva del contrato. Hasta entonces, el campo estable es detail.