Códigos de error
Si el servidor no puede completar una solicitud API, devuelve una respuesta JSON que contiene un código de error:
{"error":<code>}
El estado HTTP de dicha respuesta es 200 OK, el mismo que el de una solicitud exitosa. Para saber si una solicitud se realizó correctamente, revise el cuerpo de la respuesta, no el estado HTTP.
Para algunos errores, la respuesta también contiene el campo reason que explica la causa del error:
{"error":<code>,"reason":<text>}
Códigos de error generales
| Código de error | Descripción | Valor del campo reason |
|---|---|---|
| -100 | Error interno (tiempo de espera de red agotado). | |
| -101 | Error interno (respuesta de red incorrecta). | |
| 0 | Operación exitosa (por ejemplo, para cerrar sesión es una salida exitosa). | |
| 1 | Sesión no válida. | |
| 2 | Nombre de servicio API no válido. | |
| 3 | Resultado no válido. El plugin de la biblioteca de tipos no está habilitado, el elemento AVL Server no se encuentra o el archivo no se encuentra. | |
| 4 | Entrada no válida. La solicitud contiene un valor de parámetro incorrecto o una combinación incorrecta de parámetros, o el ID de un objeto no identifica ningún objeto existente dentro de un contenedor al que el usuario tiene acceso. | VALIDATE_PARAMS_ERROR: <text>: los parámetros no coinciden con el esquema esperado por el método, donde <text> es el esquema esperado. Devuelto por los métodos que utilizan la verificación general de parámetros.PARAMS_ERROR: <text>: la verificación de parámetros específica del método falló, donde <text> describe la causa.DRIVER_NOT_FOUND: el conductor especificado no se encuentra en el recurso (resource/driver_actions_list, resource/driver_actions_cleanup, resource/driver_actions_register, resource/bind_unit_driver).ROUTE_NOT_FOUND u ORDER_NOT_FOUND: la ruta o el pedido especificado no se encuentran (order/route_update, order/optimize, order/update).BATCH_INVALID_INTERNAL_REQUEST index=<i>: uno de los elementos de la matriz de la solicitud no es un método válido, donde <i> es la posición de este elemento empezando desde 0 (core/batch). |
| 5 | Error al ejecutar la solicitud. | EVENTS_ARE_DISABLED: el subsistema de eventos está desactivado para el detector solicitado (events/get_last, events/load, unit/get_events, resource/get_driver_bindings).EVENTS_ARE_INITIALIZING: el subsistema de eventos aún se está inicializando (resource/get_driver_bindings).TWILIO_REQUEST_FAILED: la solicitud HTTP a Twilio falló (accounts/get_twilio_templates).PARSING_ERROR o UNKNOWN_ERROR: el archivo no se puede analizar (exchange/convert_file). |
| 6 | Error desconocido. En muchos casos, la respuesta no contiene el campo reason. |
UNKNOWN_ERROR: la solicitud falla por una razón no especificada (unit/create_task, unit/update_task, gis_get_route, gis_get_many_to_many_route, gis_get_one_to_many_route, gis_get_route_via_waypoints).Internal server error: falló una operación interna de sesión, almacenamiento o construcción de respuesta (varios controladores).GET_MESSAGES_UNKNOWN_ERROR: el administrador de mensajes no puede devolver datos (resource/driver_actions_list, resource/driver_actions_cleanup, resource/driver_actions_register, resource/bind_unit_driver).Large response: la respuesta de core/batch es demasiado grande para generarse.ERROR_CREATING_RESOURCE_DUE_TO_BILLING_RULES: el recurso no se puede crear según las restricciones de facturación (core/create_resource).Internal error (http service unavailable): el servicio de cliente HTTP interno no está disponible mientras se verifica un token de autorización de terceros (user/bind_auth_service).Internal error (failed to connect to remote service): no se puede abrir una conexión con el proveedor de autorización (user/bind_auth_service).Internal error (bad http response <code>): el proveedor de autorización devuelve un estado HTTP distinto de 200, donde <code> es ese estado (user/bind_auth_service).Failed to parse remote response: la respuesta del proveedor de autorización no es JSON válido (user/bind_auth_service). |
| 7 | Acceso denegado. El usuario o token actual no tiene el acceso requerido al elemento u operación de destino, o un servicio de facturación requerido por el punto final está desactivado. Los métodos que crean o modifican elementos también devuelven este error mientras la cuenta del usuario se está trasladando a otro centro de datos, incluso si el usuario tiene todos los derechos de acceso requeridos. En este caso, repita la solicitud una vez que se complete el traslado. En la mayoría de los casos, la respuesta no contiene el campo reason. |
USER_DISABLED: el usuario está desactivado (token/login).Access denied: un servicio de facturación requerido por el punto final está desactivado para el usuario, por ejemplo, videomonitoring para videostorage_config, o billing_by_codes para los métodos unit/get_billing_code y codes/*.Unauthorized user: no hay usuario actual en la sesión (puntos finales de chat y sesión de conductor).Otras razones específicas del punto final están documentadas en las páginas del método respectivo. |
| 8 | Nombre de usuario o contraseña no válidos. Todos los siguientes valores de reason son devueltos por token/login. |
TOKEN_USER_NOT_FOUND: el GUID del usuario en el token no coincide con ningún usuario.INVALID_AUTH_TOKEN: la carga del token no se puede analizar.INVALID_AUHT_TOKEN: la sesión no se puede inicializar desde el token. OPERATE_AS_USER_NOT_FOUND: <login>: el usuario especificado en el parámetro operateAs no existe.OPERATE_AS_USER_NO_ACCESS: <login>: el propietario del token no tiene derecho de acceso OPERATE_AS al usuario especificado, o el usuario no está en la lista de elementos disponibles para el token.SOME_LOGIN_PROBLEMS: la sesión para el usuario especificado no se puede crear por una razón no especificada. |
| 9 | Servidor de autorización no disponible. En muchos casos, la respuesta no contiene el campo reason. |
INTERNAL_ERROR: no se puede encontrar la cuenta de nivel superior del usuario actual (user/share_billing_code, user/unshare_billing_code). |
| 10 | Demasiadas solicitudes del mismo tipo se están procesando al mismo tiempo, por ejemplo, 5 recálculos simultáneos. En core/batch, si el parámetro flags incluye el flag 0x01 (1), las solicitudes que siguen al primer error no se ejecutan. Lo mismo ocurre si la solicitud ha superado el límite de tiempo establecido en el servidor. Cada una de las solicitudes restantes devuelve el error 10 sin el campo reason. |
ERROR: simultaneous recalculations limit (<limit> simultaneuos recalculations) reached, donde <limit> es el número permitido de recálculos (admin/recalculate_history). |
| 11 | Error al restablecer la contraseña. En algunos casos, la respuesta no contiene el campo reason. Todos los siguientes valores de reason son devueltos por core/reset_password_request. |
USER_OR_EMAIL_NOT_CORRECT: el usuario no existe o la dirección de email no coincide con la especificada para el usuario.PASSWORD_IMMUTABLE: la contraseña del usuario no se puede cambiar.REQUEST_TOO_OFTEN: pasó menos de un minuto desde la solicitud anterior de restablecimiento de contraseña. |
| 12 | Subsistema Agro no cargado. | |
| 14 | Un servicio de facturación requerido por el método no está disponible. | Video service is not available: el servicio de vídeo no está habilitado para la cuenta del usuario o para sus cuentas padre (user/get_video_units). |
| 1001 | No hay mensajes para el intervalo seleccionado. | |
| 1002 | El elemento no se puede crear porque ya existe un elemento con el mismo nombre, debido a las restricciones de facturación o porque el identificador especificado ya está en uso. | NAME_ALREADY_EXISTS: ya existe un elemento con el mismo nombre (core/create_resource, core/create_user).ERROR_CREATING_RESOURCE_DUE_TO_BILLING_RULES: el recurso no se puede crear debido a las restricciones de facturación (core/create_resource).ERROR_CREATING_USER_DUE_TO_BILLING_RULES: el usuario no se puede crear debido a las restricciones de facturación (core/create_user).User already exists: el identificador de autorización de terceros ya está vinculado a otro usuario (user/bind_auth_service). |
| 1003 | Se alcanzó un límite o la solicitud no se puede procesar en este momento. | LIMIT <rule_name>: se alcanzó el límite especificado, por ejemplo, LIMIT api_concurrent o LIMIT invalid_logins (avl_evts, core/login, core/use_auth_hash, core/check_unique, token/login, token/update, report/apply_report_result).LOCKER_ERROR: un error interno del servicio que cuenta los límites. Devuelto por los mismos métodos, así como por user/update_password y user/verify_code.LAYERS_MAX_COUNT: se alcanzó el límite de 50 capas de mensajes (render/create_messages_layer).NO_SESSION: no se puede crear una nueva sesión (core/login, core/duplicate).Accept-Encoding is not gzip: la solicitud no utiliza codificación gzip (messages/load_interval). |
| 1004 | Se alcanzó un límite de mensajes. | LIMIT msgs_count: se alcanzó el límite de mensajes cargados (messages/load_interval, render/create_messages_layer, report/apply_report_result).LIMIT msgs_activity: se alcanzó el límite de mensajes cargados dentro de un período de tiempo (report/apply_report_result).EXCEEDS_LIMIT_MSGS_COUNT: el número de mensajes solicitados en el parámetro loadCount excede el máximo permitido para el método (messages/get_task_messages). |
| 1005 | El tiempo de ejecución del informe excedió el límite (report/exec_report), o la configuración de hardware es incorrecta (unit/update_hw_params). |
|
| 1006 | Se alcanzó un límite relacionado con la contraseña o con el código de autorización de dos factores. | LIMIT <rule_name> for password update: demasiados intentos de actualizar la contraseña (user/update_password).LIMIT <rule_name> for verify code: demasiados intentos de ingresar el código de autorización de dos factores (user/verify_code). |
| 1011 | Su dirección IP ha cambiado o la sesión ha expirado. |
Códigos de error de transferencia de elementos
Los siguientes códigos se devuelven cuando un elemento se mueve a otro recurso o cuenta. Los códigos 2001..2013 son devueltos por account/change_account.
| Código de error | Descripción |
|---|---|
| 2001 | Elemento o target_resource incorrecto. |
| 2002 | El target_resource no es una cuenta. |
| 2003 | Plugin de destino incorrecto. |
| 2004 | La cuenta de destino está bloqueada. |
| 2005 | Creador del target_resource no válido. |
| 2006 | El target_creator no tiene acceso al elemento. |
| 2007 | Recurso de origen incorrecto. |
| 2008 | El elemento ya está en el target_resource. |
| 2009 | El target_resource pertenece a un usuario principal diferente. |
| 2010 | La cuenta de destino no tiene suficiente cuota de recursos para aceptar el elemento. |
| 2011 | Plugin del elemento incorrecto. |
| 2012 | Error al cambiar el elemento de la cuenta de facturación a target_resource. |
| 2013 | Error al cambiar el creador del elemento. |
Otros errores de elementos y sensores
| Código de error | Descripción |
|---|---|
| 2014 | El usuario seleccionado es el creador de algunos objetos del sistema, por lo que este usuario no puede asignarse a una nueva cuenta (core/create_resource). |
| 2015 | El sensor no se puede eliminar porque se utiliza en otro sensor (como sensor de validación) o en las propiedades avanzadas de la unidad (sensor de estado de movimiento, colores de sensores, sensor de seguimiento) (unit/update_sensor). |