Catalogue des erreurs
Tout échec v3 est un objet JSON avec un code lisible par une machine et un message lisible par un humain, tous deux imbriqués sous error. Cette page passe en revue chaque code : ce qu’il signifie le plus souvent, et ce qu’il faut vérifier en premier.
Vous cherchez le comportement des relances et des limites de débit ?
La comparaison des enveloppes v3 et 2.1, ainsi que les limites de débit communes, sont traitées dans la page de concept sur les erreurs et les relances. Cette page-ci recense les codes un par un. Erreurs, relances et limites de débit
L’enveloppe d’erreur
Tout échec v3 prend cette forme :
json
{
"error": {
"code": "NOT_FOUND",
"message": "Container not found"
}
}
Codes
Une ligne par code — sa cause la plus probable, et ce qu’il faut corriger.
| Code | Cause probable | Solution |
|---|---|---|
| NOT_FOUND | Le crid, l’identifiant de message ou une autre ressource du chemin n’existe pas. | Vérifiez l’identifiant envoyé — une faute de frappe ou un crid périmé en est la cause habituelle. |
| NO_MESSAGE | Le conteneur existe, mais aucun message n’y a encore été enregistré. | Attendez la fin de l’enregistrement, ou vérifiez que le widget a bien associé un message à ce crid. |
| MESSAGE_MISSING | L’opération appelée exige un message enregistré, et il n’y en a aucun. | Même cause que NO_MESSAGE, sur une opération qui ne peut pas aboutir sans message — vérifiez que l’enregistrement est terminé avant de l’appeler. |
| DATA_INVALID | Le corps de la requête ne correspond pas à la structure attendue par l’endpoint. | Comparez les champs requis et leurs types à la référence de cette opération, y compris les objets imbriqués comme sender ou recipient. |
| EMPTY_UPDATE | Une requête PATCH a été envoyée sans aucun champ à mettre à jour. | Incluez au moins un champ dans le corps de la requête — un corps vide ou absent est rejeté, et non traité comme une opération sans effet. |
| VALIDATION_ERROR | La requête a échoué à la validation pour une raison que DATA_INVALID ne couvre pas — souvent une valeur hors de la plage ou de l’énumération autorisée. | Lisez le champ message pour connaître la règle en échec ; il nomme le champ concerné. |
| FORBIDDEN | La clé s’est authentifiée, mais ses scopes ou sa contrainte de plateforme ne couvrent pas cette requête. | Vérifiez les scopes et la contrainte de plateforme de la clé — la clé elle-même est valide, elle n’a simplement pas le droit de faire cela. |
| UNAUTHORIZED | La clé est absente, inconnue, expirée ou révoquée. | Vérifiez que l’en-tête Authorization est présent et bien formé, puis consultez le statut de la clé dans le portail client. |
Ce qui peut être rejoué sans risque
Tous les appels ne se relancent pas avec la même assurance.
- La création de conteneur est idempotente sur le crid que vous fournissez — la rejouer renvoie les liens du conteneur existant, sans en créer un second ni le modifier.
- notify et unlock ne sont pas idempotents — rejouer l’un ou l’autre redéclenche son effet, au lieu de renvoyer sans conséquence le même résultat.