Erreurs
Forme des erreurs et liste des codes.
La forme
Toute erreur renvoie le même objet, quel que soit le point d'entrée.
{
"error": {
"code": "invalid_amount",
"message": "Le montant doit etre un entier positif en FCFA.",
"param": "amount",
"hint": null
}
}
code est stable : branchez-vous dessus, jamais sur
message, dont la formulation peut changer. param
désigne le champ fautif quand il y en a un, et hint dit quoi
faire quand ce n'est pas évident.
Les codes
unauthenticated— 401, clé API absente.invalid_api_key— 401, clé inconnue ou révoquée.invalid_request— 422, un champ manque ou ne convient pas.invalid_amount— 422, montant nul, négatif ou non entier.idempotency_conflict— 409, clé réutilisée avec un autre corps.not_found— 404, objet inexistant ou appartenant à un autre compte.payout_rejected— 422, solde insuffisant, adresse non autorisée, cadence dépassée.approval_rejected— 422, déboursement déjà traité ou solde devenu insuffisant.plan_rejected— 422, échéancier non éligible.internal_error— 500, incident de notre côté.
Un objet d'un autre compte renvoie 404, pas 403
C'est délibéré. Un 403 confirmerait que l'identifiant existe ailleurs, ce qui permettrait de deviner les références d'un autre marchand. Pour vous, un objet qui n'est pas le vôtre n'existe pas.
Sur un 500, ne rejouez pas à l'aveugle
Une erreur interne sur une création ne dit pas si l'opération a eu lieu. Rejouez avec la même clé d'idempotence : si elle était passée, vous récupérez la réponse d'origine au lieu de créer un doublon.