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
| Codigo | Uso |
|---|---|
| 401 | API key ausente o invalida |
| 403 | Empresa inactiva |
| 404 | Caso no encontrado |
| 400 | Caso no activo para reintento o baja |
| 422 | JSON fuera de contrato |
| 429 | Limite por API key superado |
| 500 | Fallo 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.
