Las siguientes secciones describen el manejo de errores para las APIs de Open Cloud. Debido a las diferencias de implementación entre los puntos finales y las capas de validación, las respuestas de error pueden variar significativamente en formato.
Errores de puerta de enlace
Para problemas de autenticación o enrutamiento, ambas APIs de Open Cloud v1 y v2 pueden devolver errores en este formato:
Ejemplo de error de puerta de enlace
{
"errors": [
{
"code": 0,
"message": "Clave de API inválida"
}
]
}
Open Cloud v2
Las APIs de Open Cloud v2 generalmente siguen un formato de error consistente cuando el error ocurre dentro del propio endpoint de la API.
Formato estándar de error v2
Las APIs de Open Cloud v2 devuelven errores en este formato:
- code - Una cadena que representa el tipo de error (por ejemplo, INVALID_ARGUMENT, NOT_FOUND).
- message - Un mensaje legible para humanos que explica el error.
- details - Un array opcional que contiene información adicional específica del error.
Ejemplo de error v2
{
"code": "INVALID_ARGUMENT",
"message": "ID de usuario inválido en la solicitud."
}
Ejemplo de error v2 con detalles
{
"code": "INVALID_ARGUMENT",
"message": "El filtro proporcionado no es válido.",
"details": [
{
...
}
]
}
Códigos de error v2
La siguiente tabla describe los posibles valores para code en las respuestas de la API v2.
| Código | Estado HTTP | Descripción |
|---|---|---|
| INVALID_ARGUMENT | 400 | Se pasó un argumento inválido, como un universeId inválido. También podría tener cabeceras faltantes o inválidas, como Content-Length y Content-Type. |
| PERMISSION_DENIED | 403 | Su solicitud no tiene los permisos o alcances suficientes para realizar la operación. |
| NOT_FOUND | 404 | El sistema no puede encontrar sus recursos específicos, como una entrada de base de datos. |
| ABORTED | 409 | La operación fue abortada. |
| RESOURCE_EXHAUSTED | 429 | No tiene suficiente cuota para realizar la operación, generalmente debido a enviar demasiadas solicitudes. |
| CANCELLED | 499 | El sistema termina la solicitud, generalmente debido a un tiempo de espera del lado del cliente. |
| INTERNAL | 500 | Error interno del servidor, generalmente debido a un error en el servidor. |
| NOT_IMPLEMENTED | 501 | El servidor no implementa el método de la API. |
| UNAVAILABLE | 503 | El servicio no está disponible, generalmente devuelto cuando el servidor está inactivo. |
Open Cloud v1
Las APIs de Open Cloud v1 tienen formatos de respuesta de error inconsistentes. El formato depende del endpoint específico, del tipo de error y de dónde ocurre el error en el proceso de procesamiento de la solicitud.
La mayoría de los endpoints v1 devuelven errores en uno de estos tres formatos:
Ejemplo de error v1 con campo de error
{
"error": "INVALID_ARGUMENT",
"message": "Cursor inválido.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
Ejemplo de error v1 con campo de código
{
"code": "INVALID_ARGUMENT",
"message": "Cursor inválido."
}
Ejemplo de error de validación detallado v1
{
"errors": {
"assetId": ["El valor 'a' no es válido."]
},
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Se produjo uno o más errores de validación.",
"status": 400,
"extensions": {
"traceId": "00-427917f0fc3b8375ee33e4603a7f0693-f3f6ad560ff1a122-00"
}
}
Códigos de error v1
La siguiente tabla describe los posibles valores para error o code en las respuestas de la API v1:
| Código de estado HTTP | Error | Descripciones |
|---|---|---|
| 400 | INVALID_ARGUMENT | Se pasó un argumento inválido, como un universeId inválido. También podría tener cabeceras faltantes o inválidas, como Content-Length y Content-Type. |
| 403 | INSUFFICIENT_SCOPE | La solicitud requiere mayores privilegios que los proporcionados por el token de acceso. |
| 403 | PERMISSION_DENIED | Su solicitud no tiene suficiente alcance para realizar la operación. |
| 404 | NOT_FOUND | El sistema no puede encontrar sus recursos específicos, como una base de datos. |
| 409 | ABORTED | La operación fue abortada debido a un conflicto, como publicar un lugar que no es parte del universo. |
| 429 | RESOURCE_EXHAUSTED | No tiene suficiente cuota para realizar la operación, generalmente debido a enviar demasiadas solicitudes. |
| 499 | CANCELLED | El sistema termina la solicitud, generalmente debido a un tiempo de espera del lado del cliente. |
| 500 | INTERNAL | Error interno del servidor. Típicamente un error del servidor. |
| 501 | NOT_IMPLEMENTED | El servidor no implementa el método de la API. |
| 503 | UNAVAILABLE | Servicio no disponible. Típicamente el servidor está inactivo. |