MeetingHub MeetingHub Télécharger la collection Postman

Référence — erreurs

Le format des erreurs et chaque code de retour.

Comment l'API signale une erreur, et ce que veut dire chaque code de retour. Les messages propres à chaque route sont listés sur la page de la route.

Le corps d'une erreur

{ "error": "cet accès ne permet pas cela — il faut : schedule.read", "code": "forbidden" 
}
ChampTypeDescription
errorstringUn message en français, destiné à un humain
codestringCe que le programme lit. Voir Les valeurs de code. Absent des refus qui précèdent l'API elle-même : corps illisible, limite de débit, route inconnue, et les routes /api/auth

Décidez sur le code HTTP et sur code, jamais sur le texte : le texte des messages peut changer d'une version à l'autre, les codes non.

Deux cas n'ont pas ce corps : les réponses 204, qui n'ont pas de corps du tout — par exemple DELETE /api/partner/webhooks/:webhookId —, et les réponses CSV et HTML d'une feuille de présence, qui n'en ont un qu'en cas d'erreur.

Les codes de retour

CodeSignificationQue faire
200Réussite—
201Créé : une clé, un webhook, un établissement, un dépôt appliqué—
204Réussite, sans corps—
400La requête est invalide : un champ manque, a le mauvais type ou sort de ses bornesCorriger la requête. Ne pas réessayer telle quelle
401Pas d'authentification valideVoir 401
403Authentifié, mais pas autorisé : capacité absente, établissement en pause, route réservée à une autre sorte d'appelantChanger de clé ou de compte. Ne pas réessayer
404La ressource n'existe pas dans l'établissement, son identifiant est mal formé, ou l'appelant n'atteint pas cet établissementVérifier l'identifiant et l'établissement de l'adresse
409L'état de la ressource empêche l'opération : feuille pas encore arrêtée, cours déjà tenu, référence déjà priseAttendre le changement d'état, ou renoncer
413Le corps dépasse la taille maximale de la porteDécouper l'envoi. Voir Corps illisible ou trop gros
415Le corps est compressé ou encodé d'une façon que le serveur ne lit pasEnvoyer du JSON en UTF-8, sans Content-Encoding
429Limite de débit atteinteAttendre le nombre de secondes donné par l'en-tête Retry-After
500Erreur du serveurRéessayer plus tard
503Le service demandé n'est pas disponible sur cette instance, par exemple sans base de donnéesContacter l'exploitant de l'instance

Les valeurs de code

codeCode HTTPSens
auth.required401Aucun justificatif, sur une route qui demande un appelant ; ou, sur un ancien alias, pas la clé qu'il attend
auth.invalid-key401Clé présentée, mais illisible, inconnue, révoquée ou expirée
api.version400L'en-tête Api-Version demande une version que l'instance ne sert pas. Voir Version
auth.ambiguous400Cookie de session et en-tête Authorization dans la même requête
origin.refused403Écriture par cookie venue d'un autre site
institution.paused403L'établissement de la clé est en pause : rien n'est effacé, rien ne s'ouvre
forbidden403Capacité absente, ou route réservée à une autre sorte d'appelant
not-found404Ressource ou établissement introuvable pour l'appelant
invalid400Un champ de la requête ne respecte pas ses règles
conflict409L'état présent empêche l'opération
sheet.not-closed409La feuille de présence n'est pas encore arrêtée
sheet.empty409Un cours sans classe attendue ni présence n'a pas de feuille à arrêter
unavailable503Service indisponible sur cette instance

D'autres valeurs, plus précises, servent à l'application — par exemple series.until ou invite.already-member. Un programme qui ne les connaît pas s'en tient au code HTTP.

Corps illisible ou trop gros

Sur /api, le corps est lu avant que la clé soit vérifiée : une requête dont le corps est illisible est refusée, même sans clé.

CasCodeCorps
Le corps n'est pas du JSON valide400corps JSON illisible
Le corps dépasse la taille maximale — 4 Mo sur /api, 4 Ko sur /api/auth413corps trop volumineux — N octets au plus
Le corps est dans un jeu de caractères autre que l'UTF-8, ou compressé415jeu de caractères non pris en charge, ou encodage du corps non pris en charge

Un 413 sur un dépôt d'emploi du temps ou de liste d'inscrits se règle en découpant l'envoi en plusieurs dépôts. Chaque cours est reconnu par sa référence, chaque inscrit par son courriel ou son téléphone : un dépôt découpé, ou rejoué, ne crée pas de doublon.

401 : non authentifié

SituationCorpscodeEn-tête
/api, sans justificatif, sur une route qui demande un appelantidentification requiseauth.required—
/api, en-tête Authorization qui n'est pas Bearer …en-tête Authorization attendu : Bearer <clé>auth.invalid-keyWWW-Authenticate: Bearer error="invalid_token"
/api, clé d'établissement mal forméeclé d’intégration illisibleauth.invalid-keyWWW-Authenticate: Bearer error="invalid_token"
/api, clé d'établissement inconnue ou révoquéeclé d’intégration inconnue ou révoquéeauth.invalid-keyWWW-Authenticate: Bearer error="invalid_token"
/api, clé d'établissement expiréeclé d’intégration expiréeauth.invalid-keyWWW-Authenticate: Bearer error="invalid_token"
/api, clé d'éditeur partenaire mal forméeclé d’éditeur partenaire illisibleauth.invalid-keyWWW-Authenticate: Bearer error="invalid_token"
/api, clé d'éditeur partenaire inconnue ou révoquéeclé d’éditeur partenaire inconnue ou révoquéeauth.invalid-keyWWW-Authenticate: Bearer error="invalid_token"
Ancien alias /api/integration, sans clé d'établissementclé d’intégration requiseauth.requiredWWW-Authenticate: Bearer realm="MeetingHub"
Ancien alias /api/partner, sans clé d'éditeur partenaireclé d’éditeur partenaire requiseauth.requiredWWW-Authenticate: Bearer realm="MeetingHub partner"
POST /api/auth/signinidentifiants invalides——

Sous /api/institutions/:institutionId, une requête sans justificatif ne reçoit pas 401 mais 404 : pour qui n'est personne, l'établissement n'existe pas.

404 ou 409

Les deux codes ne disent pas la même chose, et la différence compte pour l'éditeur partenaire comme pour l'établissement :

Messages par route

PageSection
ConventionsConnexion, session d'administrateur
Clés d'intégrationCréation, révocation, journal, échecs d'authentification
Emploi du tempsLecture, dépôt, causes de refus d'une entrée, annulation
Listes d'inscritsDépôt et causes de refus d'une entrée
Feuilles de présenceLes trois formats, l'arrêt à la main
WebhooksCréation, modification, suppression, livraisons
Éditeurs partenairesÉtablissements, centres, liens d'entrée, webhooks, mesure d'usage