Les sections suivantes décrivent la gestion des erreurs pour les API Open Cloud. En raison des différences d'implémentation entre les points de terminaison et les couches de validation, les réponses d'erreur peuvent varier considérablement en format.
Erreurs de passerelle
Pour des problèmes d'authentification ou de routage, les API Open Cloud v1 et v2 peuvent retourner des erreurs dans ce format :
Exemple d'erreur de passerelle
{
"errors": [
{
"code": 0,
"message": "Clé API invalide"
}
]
}
Open Cloud v2
Les API Open Cloud v2 suivent généralement un format d'erreur cohérent lorsque l'erreur se produit au sein du point de terminaison de l'API.
Format d'erreur standard v2
Les API Open Cloud v2 retournent des erreurs dans ce format :
- code - Une chaîne représentant le type d'erreur (par exemple, INVALID_ARGUMENT, NOT_FOUND).
- message - Un message compréhensible expliquant l'erreur.
- details - Un tableau optionnel contenant des informations spécifiques à l'erreur.
Exemple d'erreur v2
{
"code": "INVALID_ARGUMENT",
"message": "Identifiant d'utilisateur invalide dans la demande."
}
Exemple d'erreur v2 avec détails
{
"code": "INVALID_ARGUMENT",
"message": "Le filtre fourni est invalide.",
"details": [
{
...
}
]
}
Codes d'erreur v2
Le tableau suivant décrit les valeurs possibles pour code dans les réponses d'API v2.
| Code | Statut HTTP | Description |
|---|---|---|
| INVALID_ARGUMENT | 400 | Vous avez passé un argument invalide, tel qu'un universeId invalide. Vous pourriez également avoir des en-têtes manquants ou invalides, comme Content-Length et Content-Type. |
| PERMISSION_DENIED | 403 | Votre demande n'a pas suffisamment de permissions ou de portées pour effectuer l'opération. |
| NOT_FOUND | 404 | Le système ne trouve pas vos ressources spécifiées, telles qu'une entrée de magasin de données. |
| ABORTED | 409 | L'opération a été avortée. |
| RESOURCE_EXHAUSTED | 429 | Vous n'avez pas suffisamment de quota pour effectuer l'opération, généralement en raison d'un trop grand nombre de demandes. |
| CANCELLED | 499 | Le système termine la demande, généralement en raison d'un délai d'attente côté client. |
| INTERNAL | 500 | Erreur de serveur interne, généralement due à un bug du serveur. |
| NOT_IMPLEMENTED | 501 | Le serveur n'implémente pas la méthode API. |
| UNAVAILABLE | 503 | Le service est indisponible, généralement retourné lorsque le serveur est en panne. |
Open Cloud v1
Les API Open Cloud v1 ont des formats de réponse d'erreur incohérents. Le format dépend du point de terminaison spécifique, du type d'erreur, et de l'endroit où l'erreur se produit dans le pipeline de traitement de la demande.
La plupart des points de terminaison v1 retournent des erreurs dans l'un de ces trois formats :
Exemple d'erreur v1 avec champ d'erreur
{
"error": "INVALID_ARGUMENT",
"message": "Curseur invalide.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
Exemple d'erreur v1 avec champ code
{
"code": "INVALID_ARGUMENT",
"message": "Curseur invalide."
}
Exemple d'erreur de validation détaillée v1
{
"errors": {
"assetId": ["La valeur 'a' n'est pas valide."]
},
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Une ou plusieurs erreurs de validation ont eu lieu.",
"status": 400,
"extensions": {
"traceId": "00-427917f0fc3b8375ee33e4603a7f0693-f3f6ad560ff1a122-00"
}
}
Codes d'erreur v1
Le tableau suivant décrit les valeurs possibles pour error ou code dans les réponses d'API v1 :
| Code de statut HTTP | Erreur | Descriptions |
|---|---|---|
| 400 | INVALID_ARGUMENT | Vous avez passé un argument invalide, tel qu'un universeId invalide. Vous pourriez également avoir des en-têtes manquants ou invalides, tels que Content-Length et Content-Type. |
| 403 | INSUFFICIENT_SCOPE | La demande nécessite des privilèges plus élevés que ceux fournis par le jeton d'accès. |
| 403 | PERMISSION_DENIED | Votre demande n'a pas suffisamment de portée pour effectuer l'opération. |
| 404 | NOT_FOUND | Le système ne trouve pas vos ressources spécifiées, telles qu'un magasin de données. |
| 409 | ABORTED | L'opération a été avortée en raison d'un conflit, comme la publication d'un lieu qui ne fait pas partie de l'univers. |
| 429 | RESOURCE_EXHAUSTED | Vous n'avez pas suffisamment de quota pour effectuer l'opération, généralement en raison d'un trop grand nombre de demandes. |
| 499 | CANCELLED | Le système termine la demande, généralement en raison d'un délai d'attente côté client. |
| 500 | INTERNAL | Erreur de serveur interne. Typiquement un bug serveurs. |
| 501 | NOT_IMPLEMENTED | Le serveur n'implémente pas la méthode API. |
| 503 | UNAVAILABLE | Service indisponible. Typiquement le serveur est en panne. |