Index
BadRequest(message)BadRequest.FieldViolation(message)Code(enum)ErrorInfo(message)Help(message)Help.Link(message)LocalizedMessage(message)PreconditionFailure(message)PreconditionFailure.Violation(message)QuotaFailure(message)QuotaFailure.Violation(message)RequestInfo(message)ResourceInfo(message)RetryInfo(message)Status(message)
BadRequest
Décrit les cas de non-respect dans une requête client. Ce type d'erreur se concentre sur les aspects syntaxiques de la requête.
| Champs | |
|---|---|
field_violations[] |
Décrit toutes les violations dans une requête client. |
FieldViolation
Type de message utilisé pour décrire un seul champ de requête incorrect.
| Champs | |
|---|---|
field |
Chemin d'accès à un champ du corps de la requête. La valeur sera une séquence d'identifiants séparés par des points, qui identifient un champ de tampon de protocole. Réfléchissez aux éléments suivants : Dans cet exemple, dans le fichier proto,
En JSON, les mêmes valeurs sont représentées comme suit :
|
description |
Description de la raison pour laquelle l'élément de la requête est incorrect. |
reason |
Raison de l'erreur au niveau du champ. Il s'agit d'une valeur constante qui identifie la cause immédiate de l'erreur au niveau du champ. Il doit identifier de manière unique le type de FieldViolation dans le champ d'application de google.rpc.ErrorInfo.domain. Il doit comporter 63 caractères maximum et correspondre à l'expression régulière |
localized_message |
Fournit un message d'erreur localisé pour les erreurs au niveau des champs, qui peut être renvoyé à l'utilisateur de l'API. |
Code
Les codes d'erreur canoniques pour les API de gRPC.
Parfois, plusieurs codes d'erreur peuvent s'appliquer. Les services doivent renvoyer le code d'erreur le plus spécifique qui s'applique. Par exemple, préférez OUT_OF_RANGE à FAILED_PRECONDITION si les deux codes s'appliquent. De même, préférez NOT_FOUND ou ALREADY_EXISTS à FAILED_PRECONDITION.
| Enums | |
|---|---|
OK |
Pas une erreur, affiché en cas de réussite. Mise en correspondance HTTP : 200 OK |
CANCELLED |
L'opération a été annulée, généralement par l'appelant. Mise en correspondance HTTP : 499 Le client a fermé la requête |
UNKNOWN |
Erreur inconnue. Par exemple, cette erreur peut s'afficher lorsqu'une valeur Mise en correspondance HTTP : 500 Erreur de serveur interne |
INVALID_ARGUMENT |
Le client a spécifié un argument non valide. Notez que cette erreur diffère de Mise en correspondance HTTP : 400 Requête incorrecte |
DEADLINE_EXCEEDED |
Le délai a expiré avant que l'opération puisse se terminer. Pour les opérations qui modifient l'état du système, cette erreur peut être affichée même si l'opération s'est terminée avec succès. Par exemple, une réponse réussie d'un serveur aurait pu être retardée suffisamment longtemps pour que le délai expire. Mappage HTTP : 504 Passerelle hors délai |
NOT_FOUND |
Une entité demandée (fichier ou répertoire, par exemple) est introuvable. Remarque pour les développeurs de serveurs : Mise en correspondance HTTP : 404 Page introuvable |
ALREADY_EXISTS |
L'entité qu'un client a tenté de créer (par exemple, un fichier ou un répertoire) existe déjà. Mise en correspondance HTTP : 409 Conflit |
PERMISSION_DENIED |
L'appelant n'a pas l'autorisation d'exécuter l'opération spécifiée. Mise en correspondance HTTP : 403 Accès interdit |
UNAUTHENTICATED |
La requête ne dispose pas d'identifiants d'authentification valides pour l'opération. Mise en correspondance HTTP : 401 Accès non autorisé |
RESOURCE_EXHAUSTED |
Certaines ressources ont été épuisées ; par exemple, un quota par utilisateur a été atteint ou le système de fichiers dans son intégralité manque d'espace. Mise en correspondance HTTP : 429 Requêtes trop nombreuses |
FAILED_PRECONDITION |
L'opération a été rejetée car le système n'est pas dans un état requis pour exécuter l'opération. Par exemple, le répertoire à supprimer n'est pas vide, une opération rmdir est appliquée à un emplacement qui n'est pas un répertoire, etc. Les développeurs de services peuvent suivre les instructions suivantes pour choisir entre Mise en correspondance HTTP : 400 Requête incorrecte |
ABORTED |
L'opération a été abandonnée, généralement en raison d'un problème de simultanéité, tel qu'un échec de vérification du séquenceur ou un abandon de transaction. Consultez les instructions ci-dessus pour choisir entre Mise en correspondance HTTP : 409 Conflit |
OUT_OF_RANGE |
L'opération a été tentée au-delà de la plage valide. Par exemple, rechercher ou lire après la fin du fichier. Contrairement à Il existe des cas où Mise en correspondance HTTP : 400 Requête incorrecte |
UNIMPLEMENTED |
L'opération n'est pas implémentée ou n'est pas prise en charge/activée dans ce service. Mise en correspondance HTTP : 501 Non implémenté |
INTERNAL |
Erreurs internes. Cela signifie que certains invariants attendus par le système sous-jacent n'ont pas été respectés. Ce code d'erreur est réservé aux erreurs graves. Mise en correspondance HTTP : 500 Erreur de serveur interne |
UNAVAILABLE |
Le service est actuellement indisponible. Il s'agit probablement d'une condition temporaire qui peut être corrigée en réessayant après avoir laissé passer un intervalle entre les tentatives. Notez qu'il n'est pas toujours sûr de relancer des opérations non idempotentes. Consultez les instructions ci-dessus pour choisir entre Mise en correspondance HTTP : 503 Service non disponible |
DATA_LOSS |
Perte ou corruption de données irrécupérable. Mise en correspondance HTTP : 500 Erreur de serveur interne |
Information sur l'erreur
Décrit la cause de l'erreur avec des détails structurés.
Voici un exemple d'erreur qui se produit lorsque vous contactez l'API "pubsub.googleapis.com" alors qu'elle n'est pas activée :
{ "reason": "API_DISABLED"
"domain": "googleapis.com"
"metadata": {
"resource": "projects/123",
"service": "pubsub.googleapis.com"
}
}
Cette réponse indique que l'API pubsub.googleapis.com n'est pas activée.
Voici un exemple d'erreur renvoyée lorsque vous essayez de créer une instance Spanner dans une région où le produit est en rupture de stock :
{ "reason": "STOCKOUT"
"domain": "spanner.googleapis.com",
"metadata": {
"availableRegions": "us-central1,us-east2"
}
}
| Champs | |
|---|---|
reason |
Raison de l'erreur. Il s'agit d'une valeur constante qui identifie la cause immédiate de l'erreur. Les raisons d'erreur sont uniques dans un domaine d'erreurs spécifique. Cette valeur ne doit pas comporter plus de 63 caractères et doit correspondre à l'expression régulière |
domain |
Regroupement logique auquel appartient la "raison". Le domaine d'erreur est généralement le nom de service enregistré de l'outil ou du produit qui génère l'erreur. Exemple : "pubsub.googleapis.com". Si l'erreur est générée par une infrastructure commune, le domaine d'erreur doit être une valeur unique au niveau mondial qui identifie l'infrastructure. Pour l'infrastructure des API Google, le domaine d'erreur est "googleapis.com". |
metadata |
Informations structurées supplémentaires sur cette erreur. Les clés doivent correspondre à une expression régulière de |
Aide
Fournit des liens vers la documentation ou pour effectuer une action hors bande.
Par exemple, si une vérification de quota a échoué avec une erreur indiquant que le projet appelant n'a pas activé le service auquel il accède, cela peut contenir une URL pointant directement vers le bon endroit dans la console de développement pour activer le bit.
| Champs | |
|---|---|
links[] |
URL(s) pointant vers des informations supplémentaires sur la gestion de l'erreur actuelle. |
Lien
Décrit un lien URL.
| Champs | |
|---|---|
description |
Décrit ce que propose le lien. |
url |
URL du lien. |
LocalizedMessage
Fournit un message d'erreur localisé qui peut être renvoyé à l'utilisateur et qui peut être associé à une erreur RPC.
| Champs | |
|---|---|
locale |
Paramètres régionaux utilisés conformément à la spécification définie sur https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Exemples : "en-US", "fr-CH", "es-MX" |
message |
Message d'erreur localisé dans les paramètres régionaux ci-dessus. |
PreconditionFailure
Décrit les conditions préalables qui n'ont pas été remplies.
Par exemple, si un RPC a échoué parce qu'il nécessitait l'acceptation des conditions d'utilisation, il peut lister la violation des conditions d'utilisation dans le message PreconditionFailure.
| Champs | |
|---|---|
violations[] |
Décrit tous les cas de non-respect des conditions préalables. |
Infraction
Type de message utilisé pour décrire un seul échec de précondition.
| Champs | |
|---|---|
type |
Type de PreconditionFailure. Nous vous recommandons d'utiliser un type d'énumération spécifique au service pour définir les sujets de non-respect des conditions préalables acceptés. Par exemple, "TOS" pour "Non-respect des conditions d'utilisation". |
subject |
Sujet, par rapport au type, qui a échoué. Par exemple, "google.com/cloud" par rapport au type "TOS" indiquerait les conditions d'utilisation auxquelles il est fait référence. |
description |
Description de l'échec de la condition préalable. Les développeurs peuvent utiliser cette description pour comprendre comment résoudre l'échec. Par exemple : "Conditions d'utilisation non acceptées". |
QuotaFailure
Décrit comment une vérification de quota a échoué.
Par exemple, si une limite quotidienne a été dépassée pour le projet appelant, un service peut répondre avec un détail QuotaFailure contenant l'ID du projet et la description de la limite de quota qui a été dépassée. Si le projet appelant n'a pas activé le service dans la console de développement, un service peut répondre avec l'ID du projet et définir service_disabled sur "true".
Consultez également les types RetryInfo et Help pour en savoir plus sur la gestion des échecs de quota.
| Champs | |
|---|---|
violations[] |
Décrit toutes les violations de quota. |
Infraction
Type de message utilisé pour décrire un seul cas de non-respect du quota. (par exemple, un quota quotidien ou personnalisé qui a été dépassé).
| Champs | |
|---|---|
subject |
Sujet pour lequel la vérification du quota a échoué. Par exemple, "clientip: |
description |
Description de l'échec de la vérification du quota. Les clients peuvent utiliser cette description pour en savoir plus sur la configuration des quotas dans la documentation publique du service ou trouver la limite de quota appropriée à ajuster dans la console de développement. Par exemple : "Service désactivé" ou "Limite quotidienne pour les opérations de lecture dépassée". |
api_service |
Service API à partir duquel provient Par exemple, si l'API appelée est l'API Kubernetes Engine (container.googleapis.com) et qu'un dépassement de quota se produit dans l'API Kubernetes Engine elle-même, ce champ sera "container.googleapis.com". En revanche, si le dépassement de quota se produit lorsque l'API Kubernetes Engine crée des VM dans l'API Compute Engine (compute.googleapis.com), ce champ sera "compute.googleapis.com". |
quota_metric |
Métrique du quota enfreint. Une métrique de quota est un compteur nommé permettant de mesurer l'utilisation, comme les requêtes API ou les processeurs. Lorsqu'une activité se produit dans un service, comme l'allocation de machines virtuelles, une ou plusieurs métriques de quota peuvent être affectées. Par exemple, "compute.googleapis.com/cpus_per_vm_family", "storage.googleapis.com/internet_egress_bandwidth". |
quota_id |
ID du quota enfreint. Également appelé "nom de la limite", il s'agit de l'identifiant unique d'un quota dans le contexte d'un service d'API. Par exemple, "CPUS-PER-VM-FAMILY-per-project-region". |
quota_dimensions |
Dimensions du quota enfreint. Chaque quota non global est appliqué à un ensemble de dimensions. Alors que la métrique de quota définit ce qu'il faut comptabiliser, les dimensions spécifient les aspects pour lesquels le compteur doit être incrémenté. Par exemple, le quota "Processeurs par région et par famille de VM" applique une limite à la métrique "compute.googleapis.com/cpus_per_vm_family" sur les dimensions "region" et "vm_family". Si le non-respect s'est produit dans la région "us-central1" et pour la famille de VM "n1", les quota_dimensions seraient les suivants : { "region": "us-central1", "vm_family": "n1", } Lorsqu'un quota est appliqué au niveau mondial, quota_dimensions est toujours vide. |
quota_value |
Valeur du quota appliqué au moment de l' Par exemple, si la valeur du quota appliqué au moment de l' |
future_quota_value |
La nouvelle valeur de quota déployée au moment de l'infraction. Une fois le déploiement terminé, cette valeur sera appliquée à la place de quota_value. Si aucun déploiement n'est en cours au moment de l'infraction, ce champ n'est pas défini. Par exemple, si au moment de l'infraction, un déploiement est en cours pour modifier le quota de nombre de processeurs de 10 à 20, la valeur de ce champ sera de 20. |
RequestInfo
Contient des métadonnées sur la requête que les clients peuvent joindre lorsqu'ils signalent un bug ou fournissent d'autres types de commentaires.
| Champs | |
|---|---|
request_id |
Chaîne opaque qui ne doit être interprétée que par le service qui la génère. Par exemple, il peut être utilisé pour identifier les requêtes dans les journaux du service. |
serving_data |
Toutes les données utilisées pour traiter cette demande. Par exemple, une trace de pile chiffrée qui peut être renvoyée au fournisseur de services pour le débogage. |
ResourceInfo
Décrit la ressource à laquelle l'utilisateur tente d'accéder.
| Champs | |
|---|---|
resource_type |
Nom du type de ressource auquel l'utilisateur accède (par exemple, "table SQL", "bucket Cloud Storage", "fichier" ou "agenda Google") ou URL du type de ressource (par exemple, "type.googleapis.com/google.pubsub.v1.Topic"). |
resource_name |
Nom de la ressource consultée. Par exemple, le nom d'un agenda partagé : "example.com_4fghdhgsrgh@group.calendar.google.com", si l'erreur actuelle est |
owner |
Propriétaire de la ressource (facultatif). Par exemple, "user: |
description |
Décrit l'erreur rencontrée lors de l'accès à cette ressource. Par exemple, la mise à jour d'un projet Cloud peut nécessiter l'autorisation |
RetryInfo
Décrit quand les clients peuvent réessayer une requête ayant échoué. Les clients peuvent ignorer la recommandation ici ou réessayer lorsque ces informations sont manquantes dans les réponses d'erreur.
Il est toujours recommandé aux clients d'utiliser un intervalle exponentiel entre les tentatives.
Les clients doivent attendre retry_delay avant de réessayer après avoir reçu la réponse d'erreur. Si les nouvelles tentatives de requête échouent également, les clients doivent utiliser un schéma d'intervalle exponentiel entre les tentatives pour augmenter progressivement le délai entre les tentatives en fonction de retry_delay, jusqu'à ce qu'un nombre maximal de tentatives ou un délai maximal entre les tentatives soient atteints.
| Champs | |
|---|---|
retry_delay |
Les clients doivent attendre au moins cette durée avant de réessayer la même requête. |
État
Le type Status définit un modèle d'erreur logique adapté aux différents environnements de programmation, y compris les API REST et RPC. Il est utilisé par le protocole gRPC. Chaque message Status contient trois éléments de données : un code d'erreur, un message d'erreur et les détails de l'erreur.
Pour en savoir plus sur ce modèle d'erreur et sur son utilisation, consultez le Guide de conception d'API.
| Champs | |
|---|---|
code |
Code d'état, qui doit être une valeur d'énumération de |
message |
Message d'erreur destiné au développeur, qui doit être en anglais. Tout message d'erreur destiné aux utilisateurs doit être localisé et envoyé dans le champ |
details[] |
Liste de messages comportant les détails de l'erreur. Il existe un ensemble commun de types de message utilisable par les API. |