Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 5XX ou 4XX signifie 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 code 200 signifie 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ètreOptionnelDescription
kindOuiType d’erreur
parameterOuiLe paramètre ayant causé l’erreur
detailsOuiDé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 renvoient null si 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ètreDescription
entityLe type de l’entité introuvable
urnSon 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ètreOptionnelDescription
tableOuiTable SQL concernée
constraintOuiContrainte impliquée dans l’erreur
json_detailsOuiDé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ètreDescription
tableTable SQL concernée
constraintContrainte 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ètreDescription
attemptsLa 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ètreDescription
attemptsLa 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.

TypeDescription
CURRENT_YEARL’année scolaire ne peut pas être mise à jour. L’année courante est déjà la bonne
ODD_SEMESTER_STILL_ACTIVELe semestre pair ne peut être activé qu’à la nouvelle année civile