Errores
Autoinspector usa las respuestas convencionales de HTTP para indicar si una solicitud fue procesada correctamente o no
Los códigos que se encuentren en el rango 4xx
indican un error relacionado con la información proporcionada en la request (un parámetro requerido no fue enviado, un parámetro no cumple con el tipo especificado en el contrato, etc)
Los códigos que se encuentran en el rango 5xx
indican un error en los servidores de Autoinspector (eston son mas raros)
Error Object
La respuesta de un error se encuentra en el formato JSON y tiene la siguiente estructura:
code
string
Código de error, una cadena corta con una explicación breve
description
string
Explicación detallada para brindar mayor contexto sobre el error
status
number
El status code de la request HTTP
errors
array
opcional
Una lista de errores sobre la validación de parámetros. La estructura de cada objeto de error es dinámica y varia en función de los parámetros enviados.
Validation Errors
Los errores de validación, o también llamados DTO Errors, tienen una respuesta con status 400 Bad Request
, la cual es dinámica y no estructurada
Esto permite poder retornar un objeto mucho mas complejo y rico en información para brindar un mejor contexto sobre que parte del contrato no se esta cumpliendo
Es por ello que recomendamos que la validación de información se haga previo a la solicitud HTTP, principalmente para:
- Brindar un feedback rápido al usuario en caso de ingresar datos no validos
- Evitar realizar una solicitud que se sabe previamente que fallara
- Continuar manejando el mismo lenguaje de validación de objetos en tu sistema
Error Handling
Nuestra API puede retornar diferentes errores dependiendo del endpoint, acción a realizar, recurso a obtener y otras variables. Recomendamos ampliamente realizar el manejo de errores basándose en el código único más que en el HTTP status retornado por la API.
La implementación más normal y eficiente es a través de un switch. En caso de no poder usarlo debido a limitaciones del lenguaje, puedes optar por un "if else statement".
- Node.JS
- PHP
switch (err.code) {
case 'inspection_not_found':
//Hacer algo
break
case 'idempotency_key_in_use':
//Hacer algo
break
case 'internal_server_error':
//Hacer algo
break
default:
break
}
switch ($response['code']) {
case "inspection_not_found":
//Hacer algo
break;
case "idempotency_key_in_use":
//Hacer algo
break;
case "internal_server_error":
//Hacer algo
break;
default:
break;
}
Errores Comunes
A continuación se presentan los errores comunes que pueden llegar a ocurrir dentro de Autoinspector API:
code | description | status |
---|---|---|
invalid_params | Los parámetros proporcionados no cumplen con el contrato | 400 |
invalid_idempotency_key | La clave de idempotencia no cumple con el formato preestablecido | 400 |
unauthorized | El token enviado no es valido | 401 |
invalid_subscription | La compañía no cuenta con una suscripción activa | 403 |
company_not_have_certain_abilities | La compañía no cuenta con los permisos suficientes para realizar dicha acción en la API | 403 |
reached_base_plan | La compañía llego al limite de inspecciones creadas para el plan base y no cuenta con inspecciones a demanda | 403 |
unpaid_invoice | La compañía cuenta con una factura vencida sin pagar | 403 |
company_reached_monthly_quota_testing_inspections | La compañía esta intentando crear una inspección de tipo test pero llego al limite mensual | 403 |
wrong_api_key_provided | La api key enviada esta intentando solicitar un recurso que no fue creada usando el mismo tipo de api key | 403 |
inspection_not_found | El id de inspección proporcionado no fue encontrado | 404 |
idempotency_key_in_use | Hay otra request de tu integración que esta usando la misma clave de idempotencia y se encuentra en progreso | 409 |
internal_server_error | Hay un error en los servidores de Autoinspector | 500 |
service_not_available | Hay un servicio fundamental en Autoinspector que no se encuentra disponible en este momento | 503 |