Saltar al contenido
Guías

Errores

Distingue errores de aplicación, OAuth e infraestructura antes de reintentar.

El formato depende de quién rechaza la petición. Los errores producidos por el flujo de aplicación usan Problem Details y un code; Auth, un limitador o un gateway pueden responder con otra estructura.

Errores de aplicación

Un error de dominio o aplicación usa Problem Details:

{
  "title": "Not Found",
  "detail": "Product 7204558912004325377 does not exist.",
  "status": 404,
  "code": "Catalog.ProductNotFound"
}
CampoUso
titleCategoría legible del error.
detailExplicación para diagnóstico; puede cambiar.
statusEstado HTTP asociado.
codeIdentificador de aplicación para manejar el caso cuando está presente.

Usa code para distinguir casos conocidos y conserva status como respaldo. No tomes decisiones con el texto de detail.

Validación

Los errores de validación pueden agregar errors con uno o más mensajes por campo:

{
  "title": "One or more validation errors occurred.",
  "status": 400,
  "code": "Common.Validation",
  "errors": {
    "limit": ["The limit must be between 1 and 200."]
  }
}

Muestra esos mensajes para corregir la entrada. No asumas que todos los endpoints aceptan el mismo rango o usan la misma clave.

Errores OAuth

POST /connect/token sigue el formato OAuth. Un fallo puede verse así:

{
  "error": "invalid_client",
  "error_description": "The client credentials are invalid."
}

Maneja error y el estado HTTP. No esperes title, status o code en esta respuesta.

Errores de infraestructura

Un gateway, un limitador de tasa o un limitador de concurrencia puede responder antes de llegar a la aplicación. Conserva el estado, los encabezados y un identificador de petición si existe.

No intentes deserializar todas las respuestas de error en un único modelo obligatorio. Valida el Content-Type y admite un cuerpo vacío o distinto.

Respuesta4xxla petición está mal429vas muy rápido5xxfalló el servicioCorrige y reenvíaEspera y reintentaReintenta con espera crecienteReintentar un 4xx repite el mismo error

Qué hacer según el estado

EstadoInterpretación habitualAcción inicial
400Cuerpo, parámetro o transición inválida.Corrige la petición; no la repitas sin cambios.
401Falta una credencial válida.Obtén otra credencial y reintenta una vez si la operación es segura.
403Una política, scope, permiso o contexto bloqueó la operación.Revisa autorización y contexto.
404El recurso no existe en el contexto visible.Verifica identificador, tienda y vendedor.
409El estado actual entra en conflicto con la operación.Lee el recurso y decide con el estado nuevo.
429Se alcanzó un límite de tasa o concurrencia.Respeta Retry-After si existe y aplica espera.
5xxFallo temporal o interno.Reintenta solo cuando repetir la operación sea seguro.

El significado específico de un code y las respuestas declaradas están en la referencia del endpoint.

Reintentos

Un estado reintentable no vuelve reintentable a la operación. Antes de repetir, confirma que el método sea idempotente, que exista una clave de idempotencia o que puedas comprobar si el primer intento terminó.

function mayRetry(response: Response, canReplay: boolean) {
  if (!canReplay) return false;
  return response.status === 429 || response.status >= 500;
}

Usa espera exponencial con variación aleatoria y un máximo de intentos. En un POST, evita el reintento automático salvo que el contrato documente idempotencia.

En esta página