Skip to main content

Erreurs de l'API

Une requête en échec renvoie un code HTTP et un corps JSON qui porte un code numérique stable. Basez la logique de vos scripts sur le code HTTP et sur ce code numérique, jamais sur le texte du message, qui peut évoluer.


Format​

{
"requestId": "4bf92f3577b34da6a3ce929d0e0e4736",
"code": 30101,
"message": "invalid name: must start with a letter, end with a letter or digit, and contain only lowercase letters, digits, and hyphens",
"details": []
}
ChampTypeDescription
requestIdchaîneIdentifiant de la requête. Communiquez-le au support pour toute demande d'analyse
codeentierCode numérique de l'erreur (voir ci-dessous). Absent quand l'erreur n'a pas de code dédié
messagechaîneDescription lisible, en anglais. Pour une erreur de validation, il nomme le champ en cause
detailstableauInformations complémentaires, le plus souvent vide. Par exemple, la liste des VM qui utilisent encore un VPC, ou les types de GPU indisponibles

Codes HTTP​

Code HTTPSignificationQue faire
400Requête invalide : champ manquant ou mal formé, valeur hors limites, opération impossible dans l'état actuel de la ressourceCorrigez la requête d'après message ; ne réessayez pas à l'identique
401Aucune clé d'API présentéeAjoutez l'en-tête X-Hikube-Api-Key
403Accès refusé (code 10002)Voir Accès refusé
404Ressource introuvable dans le projetVérifiez le nom de la ressource dans le chemin
409Conflit : une ressource porte déjà ce nom, est encore utilisée, ou a été modifiée en même tempsChangez de nom, libérez la ressource, ou relisez-la avant de réessayer
500Erreur interneRéessayez plus tard ; si l'erreur persiste, contactez le support avec le requestId
503Service momentanément indisponibleRéessayez avec un délai croissant (par exemple 1 s, 2 s, 4 s…)

Accès refusé​

Tout refus d'accès lié à la clé renvoie la même réponse 403 avec le code 10002, quelle qu'en soit la raison :

  • clé mal formée, inconnue, révoquée ou expirée ;
  • clé d'un autre projet que celui du chemin, ou projet inexistant ;
  • scope insuffisant (par exemple une clé read pour une création) ;
  • opération non accessible aux clés d'API (gestion du compte, de l'organisation, des projets ou des clés).

Cette réponse uniforme est volontaire : elle ne révèle rien sur l'existence d'un projet ou d'une clé. Pour diagnostiquer, vérifiez dans l'ordre la clé (HIKUBE_API_KEY), l'identifiant du projet (PROJECT_ID), puis le scope nécessaire (voir Scopes).


Codes communs​

CodeHTTPSignification
10001401Authentification absente ou invalide
10002403Accès refusé (voir ci-dessus)
10004503La clé n'a pas pu être vérifiée pour le moment. Ce n'est pas un refus : la clé n'est pas en cause, réessayez
10005403 ou 400Refus d'une règle de la plateforme : le message nomme le champ refusé, details la règle et sa raison
10006400Un chemin de updateMask ne désigne aucun champ modifiable de la requête PATCH (voir Mises à jour partielles)

Un client qui annule sa requête ou dépasse son propre délai reçoit 499 ou 504, sans code numérique.


Codes des services​

Chaque service a sa plage de codes. Les derniers chiffres suivent la même logique partout :

Fin du codeCatégorieExemples
001 à 099État de la plateforme : introuvable (…001), existe déjà (…002), accès refusé (…003), indisponible (…005), échec du provisionnement (…006)30001 disque introuvable, 80002 cluster PostgreSQL déjà existant
100 à 199Validation de la requête : identifiant de projet invalide (…100), nom invalide (…101), puis un code par champ20103 type d'instance inconnu, 70103 version de Kubernetes non prise en charge
200 à 299Règle métier : opération impossible dans l'état actuel20200 disque déjà attaché à une autre VM, 20201 VM déjà démarrée
PréfixeService
20xxxMachines virtuelles
30xxxDisques
50xxxBuckets
60xxxClés d'API
70xxxKubernetes
80xxxPostgreSQL
110xxxMariaDB
120xxxRedis
140xxxRabbitMQ
150xxxMongoDB
160xxxRéseau
170xxxTarifs
180xxxSauvegardes

Quelques codes métier utiles :

CodeHTTPSignification
20200400Le disque est déjà attaché à une autre VM
20201 / 20202400La VM est déjà démarrée / déjà arrêtée
20204, 20205, 20207400GPU demandé indisponible, en quantité insuffisante, ou impossible à réunir sur un même serveur
20206400Plus d'adresse IPv4 publique disponible
30007400Le disque est attaché à une VM : détachez-le avant de le supprimer
80201, 110201, 120201, 140201, 150201400Passage d'une instance unique à un cluster répliqué (ou l'inverse) impossible après la création
80205, 110205, 120205, 140205, 150205400Redémarrage d'une base encore en cours de création : rien à redémarrer, réessayez une fois le cluster prêt
160003 / 160012409Le VPC / le sous-réseau est encore utilisé par des VM, listées dans details
160152400La plage d'adresses chevauche un sous-réseau existant
180200400La destination de sauvegarde n'est pas encore prête
180205400Une restauration est déjà en cours pour cette application
180214400L'instant de restauration demandé sort de la fenêtre de restauration

La référence de l'API indique les codes HTTP possibles pour chaque opération.


Codes liés aux clés d'API​

Ces codes concernent la gestion des clés (création, liste, révocation), réservée aux administrateurs du projet, depuis la console ou avec leur session utilisateur (voir Obtenir une clé).

CodeHTTPSignification
60003403Scope demandé supérieur aux droits de la personne qui crée la clé
60005503Limite de clés du projet momentanément illisible ; réessayez
60006404Clé introuvable dans ce projet
60007503Enregistrement momentanément impossible. Pour une révocation, elle a pu être appliquée : réessayez, l'opération peut être répétée sans risque
60008400Clés d'API non activées sur cet environnement
60009400Nombre maximal de clés actives atteint pour le projet
60106400Scope invalide (valeurs admises : read, write, admin, superadmin)
60107400Identifiant de clé invalide (32 caractères hexadécimaux minuscules)
60108400Nom de clé invalide (obligatoire, 255 caractères maximum, sans caractère de contrôle)
60109400Durée de validité invalide (valeurs admises : 1d, 7d, 30d, 90d, 180d, 365d)

Réessayer sans risque​

  • Réessayez les réponses 503 et 10004 avec un délai croissant et un nombre de tentatives borné.
  • Ne réessayez pas une 400 ou une 403 à l'identique : la requête ou la clé doit d'abord être corrigée.
  • Après une création qui a échoué par délai dépassé, consultez la ressource avec GET avant de la recréer : elle a pu être créée, et une nouvelle tentative renverrait 409.