Errores y reintentos
El formato de los errores de la API, todos sus códigos y la cabecera Idempotency-Key para reintentar un POST sin riesgo de duplicados.
El formato de un error
Un error responde con un estado HTTP 4xx o 5xx y siempre el mismo cuerpo:
{
"erreur": {
"code": "client_introuvable",
"message": "Ningún cliente coincide en este comercio."
}
}codees estable: es lo que tu programa debe comprobar.messagees una frase legible, para tus registros. Su texto puede cambiar.
Los códigos
| Estado | Códigos |
|---|---|
400 | requete_invalide (JSON ilegible), client_requis, recherche_requise, montant_invalide, quantite_invalide, points_invalide, email_invalide, telephone_invalide, idempotency_key_invalide |
401 | non_authentifie, cle_revoquee, signature_invalide (direcciones de entrada) |
403 | formule_requise (la API requiere el plan Crecimiento), interdit |
404 | introuvable (dirección), client_introuvable, passage_introuvable |
409 | trop_tot, pas_dernier, deja_annule, recompense_offerte, aucune_recompense, requete_en_cours |
422 | conditions_requises, montant_insuffisant |
429 | trop_de_requetes (ver el límite de peticiones) |
500 | interne: vuelve a intentarlo más tarde, con la misma Idempotency-Key |
Reintentar sin duplicados: Idempotency-Key
La red se corta en el peor momento y no sabes si la visita se ha registrado. Para reintentar sin riesgo, envía en cada POST (/clients, /passages, /recompenses) una cabecera Idempotency-Key: un valor único por operación, de 1 a 200 caracteres, por ejemplo el número del ticket.
curl https://app.stampywallet.com/v1/passages \
-H "Authorization: Bearer sw_live_votre_cle" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ticket-2026-10-25-0042" \
-d '{"client": {"telephone": "+33612345678"}, "montant": 12.50}'- La respuesta se guarda 24 horas. La misma clave repetida devuelve el mismo estado y el mismo cuerpo, con la cabecera
Idempotent-Replayed: true. - Un error
4xxtambién se guarda: repetirlo devuelve el mismo error. Un error500libera la clave, para que puedas reintentar. - Mientras la primera petición sigue en curso:
409 requete_en_cours.
Consejo : en POST /v1/passages, el campo reference (tu número de ticket) también protege: una misma referencia solo sella una vez por comercio, incluso sin Idempotency-Key.
Actualizado el