InVeloz

Contenido

api

Errores

Errores

Cuando una solicitud falla, la API devuelve un objeto JSON de error consistente independientemente del endpoint. El código de estado HTTP indica la categoría de la falla; el cuerpo proporciona los detalles.

Estructura del Error

{
  "statusCode": 400,
  "error": "validation_error",
  "message": "Model validation failed.",
  "details": {
    "itemID": ["The itemID field is required."],
    "units": ["The field units must be greater than 0."]
  }
}
CampoTipoDescripción
statusCodeintegerCódigo de estado HTTP (refleja el estado de la respuesta)
errorstringCódigo de error legible por máquina (ver tabla a continuación)
messagestringDescripción legible por humanos de lo que salió mal
detailsobject o nullErrores de validación a nivel de campo (solo presentes en fallos de validación)

El objeto details mapea nombres de campo a arreglos de mensajes de error. Solo está presente cuando el código de error es validation_error.

Códigos de Error

CódigoEstado HTTPSignificado
bad_request400La solicitud está malformada o faltan datos requeridos
validation_error400Uno o más campos fallaron la validación (ver details)
unauthorized401Falta la autenticación o el token está expirado
forbidden403Autenticado pero sin permiso para esta acción
not_found404El recurso solicitado no existe
conflict409La solicitud conflictúa con el estado actual (ej., ShortID duplicado)
rate_limited429Demasiadas solicitudes — reduzca la velocidad y reintente
not_implemented501El endpoint existe pero la operación no está disponible
internal_error500Error inesperado del servidor

Códigos de Estado HTTP

EstadoCuando lo Verá
200 OKLectura o actualización exitosa
201 CreatedRecurso creado exitosamente
400 Bad RequestEntrada inválida, campos faltantes, JSON malformado
401 UnauthorizedSin token, token expirado, o token inválido
403 ForbiddenToken válido pero la acción no está permitida para este cliente
404 Not FoundEl ID del recurso no existe
409 ConflictDuplicado o conflicto de estado
429 Too Many RequestsLímite de tasa excedido
500 Internal Server ErrorFalla del lado del servidor (reporte a su administrador)

Errores de Validacion

Cuando envía datos inválidos, la API devuelve un 400 con detalle a nivel de campo:

curl -X POST https://su-host/api/v1/Item \
  -H "Authorization: Bearer ..." \
  -H "Content-Type: application/json" \
  -d '{}'
{
  "statusCode": 400,
  "error": "validation_error",
  "message": "Model validation failed.",
  "details": {
    "itemID": ["The itemID field is required."]
  }
}

Corrija los campos señalados y reintente.

Errores de Permisos

Si sus credenciales no incluyen el permiso requerido:

{
  "statusCode": 403,
  "error": "forbidden",
  "message": "Insufficient permissions."
}

Otras variantes de 403:

MensajeCausa
”Account is read-only.”El usuario de integración está marcado como solo lectura — no se permiten operaciones de escritura
”Warehouse is outside the client’s authorized scope.”El ID de almacén en su solicitud no está asignado a su usuario de integración
”Insufficient permissions.”Su grupo no otorga el permiso de seguridad para este endpoint
”Report access denied.”Su grupo no tiene acceso al reporte solicitado

Errores de Limite de Tasa

{
  "message": "Rate Limit Exceeded. 100 per Minute"
}

Nota: La respuesta de límite de tasa usa un formato más simple que la estructura estándar de error. Espere y reintente después de un intervalo razonable (30-60 segundos).

Manejo de Errores en Código

var response = await client.PostAsync(url, content);
if (!response.IsSuccessStatusCode)
{
    var body = await response.Content.ReadAsStringAsync();
    var error = JsonConvert.DeserializeObject<ApiError>(body);

    switch (error.Error)
    {
        case "validation_error":
            // Fix the fields listed in error.Details
            break;
        case "rate_limited":
            // Wait and retry
            break;
        case "unauthorized":
            // Token expired — refresh and retry
            break;
        default:
            // Log and alert
            break;
    }
}
$response = Invoke-WebRequest -Uri $url -Method Post -Body $json `
    -Headers @{ Authorization = "Bearer $token" } `
    -ContentType "application/json" -ErrorAction SilentlyContinue

if ($response.StatusCode -ge 400) {
    $error = $response.Content | ConvertFrom-Json
    Write-Warning "$($error.error): $($error.message)"
}

En esta página