Erreurs
Qu’est-ce qu’une erreur GraphQL ?
Lorsqu’un problème survient en GraphQL, le système ne s’arrête pas toujours complètement. Au lieu de cela, il renvoie :
- Certaines données (si possible) dans
data - Une section d’erreur expliquant ce qui n’a pas fonctionné dans
errors
Même si le statut HTTP est 200 OK, votre requête peut tout de même contenir des erreurs.
Les erreurs GraphQL comprennent :
message: une explication claire de ce qui a échoué.path: la partie de la requête qui a échoué.locations: la ligne et la colonne où le problème s’est produit.extensions: un objet structuré exploitable par une machine. Il contient toujours :code: un code décrivant le type d’erreur. La liste exhaustive est disponible plus bas.request_id: l’ID de la requête à fournir à ARISE lorsque l’erreur est un bug.
Important
Un code
5XXou4XXsignifie que le serveur web n’a pas pû traiter votre requête ou qu’elle n’est pas arrivée jusqu’au serveur GraphQL. Un code200signifie que la requête a été correctement traitée, mais pas forcément sans erreur !
Exemple de requête / réponse :
query {
profile {
id
}
}
{
"data": null,
"extensions": {
"analyzer": {
"complexity": 3,
"depth": 2
}
},
"errors": [
{
"message": "L'accès à la requête (profile) n'est pas autorisé avec les autorisations actuelles.",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"profile"
],
"extensions": {
"code": "FORBIDDEN",
"query": "profile",
"request_id": "8fb550b6-cc63-469b-b4d7-40eb684c5a1c"
}
}
]
}
Erreurs client
UNAUTHENTICATED
Cause : La requête a fourni des identifiants invalides.
EXPIRED_CREDENTIALS
Cause : Les identifiants fournis ne sont plus valables.
Dans le cas d’identifiants OAuth (Bearer), il faut rafraîchir le jeton.
BAD_REQUEST
Cause : Le client a fourni des paramètres incorrects dans la requête.
| Paramètre | Optionnel | Description |
|---|---|---|
kind | Oui | Type d’erreur |
parameter | Oui | Le paramètre ayant causé l’erreur |
details | Oui | Détails de l’erreur sous forme texte |
Les types d’erreur possible sont :
TOO_MUCH_PAGINATION_ARGUMENTS
Une requête paginée doit avoir un paramètre first ou last mais ils sont
exclusifs.
NO_PAGINATION_LIMIT_PROVIDED
Une requête paginée doit avoir au minimum un paramètre first ou last.
INVALID_CURSOR
Le curseur fourni n’est pas reconnu. Le paramètre parameter spécifie quel
argument fourni a causé l’erreur.
NOT_FOUND
Note
Cette erreur n’est pas renvoyée par les requêtes de recherche d’une seule entité (
user,group, etc.). À la place, ces requêtes renvoientnullsi l’entité n’est pas trouvée.
Lorsqu’une entité est fournie en paramètre (ajout d’un role de groupe par exemple),
mais que cette entité n’existe pas dans le système alors NOT_FOUND est renvoyé.
| Paramètre | Description |
|---|---|
entity | Le type de l’entité introuvable |
urn | Son Uniform Resource Name, permettant de l’identifier |
CHECK_VIOLATION
Si une contrainte n’est pas respectée, cette exception est levée.
Si l’origine de l’erreur viens de la base de donnée, la table et constraint
seront spécifiés. Sinon, json_details expliquera l’origine de l’erreur.
| Paramètre | Optionnel | Description |
|---|---|---|
table | Oui | Table SQL concernée |
constraint | Oui | Contrainte impliquée dans l’erreur |
json_details | Oui | Détails de l’erreur sous forme JSON |
UNIQUE_VIOLATION
Cette erreur est provoquée par un conflit de base de donnée. Deux entitées possèdent les mêmes clés primaires ou un attribut unique est partagé.
| Paramètre | Description |
|---|---|
table | Table SQL concernée |
constraint | Contrainte impliquée dans l’erreur |
Erreurs serveur
INTERNAL_SERVER_ERROR
Important
Cette erreur signifie qu’un comportement imprévu est apparu au sein de l’API. Il s’agit certainement d’un bug, merci de contacter ARISE en fournissant le
request_id!
Erreurs internes
ID_GENERATION_FAILURE
Le compte utilisateur n’a pas pu être créé car la liste des ID valables est épuisée. Cela arrive généralement quand le nom de famille est très court et que plusieurs élèves portant ce nom de famille arrivent la même année.
| Paramètre | Description |
|---|---|
attempts | La liste des ID précédemment générés |
UNIX_UID_GENERATION_FAILURE
Le compte utilisateur n’a pas pu être créé car la liste des UID valables est épuisée.
| Paramètre | Description |
|---|---|
attempts | La liste des UID précédemment générés |
GLOBAL_STATE_ERROR
L’état global (table globals) des données est incohérent. Le paramètre kind
précise la source de l’erreur.
| Type | Description |
|---|---|
CURRENT_YEAR | L’année scolaire ne peut pas être mise à jour. L’année courante est déjà la bonne |
ODD_SEMESTER_STILL_ACTIVE | Le semestre pair ne peut être activé qu’à la nouvelle année civile |