Sécurité
La clé d’API n’existe que côté serveur, dans une variable d’environnement. Jamais dans une application mobile, une page web, un dépôt Git.
Chaque intégration a sa propre clé, avec le strict nécessaire de permissions.
Les clés sensibles sont restreintes à vos adresses IP et ont une date d’expiration.
Chaque envoi de Pulse est vérifié (signature + horodatage + corps brut + comparaison en temps constant).
Vos journaux ne contiennent ni clé, ni secret, ni e-mails de clients en clair.
Tout passe en HTTPS.
Résilience
Chaque
POST porte une Idempotency-Key stable pour une même action métier.Vos appels ont un délai maximal (8 à 10 secondes) : un appel sans limite finit par bloquer votre serveur.
Une 429 est réessayée après
Retry-After ; une 5xx avec attente croissante et aléatoire ; une 4xx (sauf 429) n’est jamais réessayée à l’identique.Votre récepteur de Pulses répond 200 tout de suite et traite ensuite, en dédoublonnant sur
event.id.Vous avez un plan de rattrapage : lister les ventes d’une période avec l’API après une panne.
Performance
per_page=100 pour les synchronisations.Les Pulses remplacent les interrogations répétées : n’appelez pas
GET /sales chaque minute pour détecter une vente.Les données stables (produits, boutique) sont mises en cache quelques minutes.
Vous surveillez
X-RateLimit-Remaining et ralentissez avant la limite plutôt qu’après.Paiements
Vous ne vous fiez jamais à la page de retour du client pour confirmer un paiement : seul
sale.completed (ou payment_status lu par l’API) fait foi.Vous traitez tous les états d’une commande : payée, en attente, échouée, abandonnée, remboursée.
Vous stockez l’identifiant de la vente dès sa création pour la rapprocher de vos commandes.
Tests
Vous envoyez un événement de test (
POST /pulses/{id}/test) avant d’activer le scénario réel.Vous testez les cas d’erreur : clé invalide, permission manquante, limite atteinte, validation refusée, serveur indisponible.
Vous testez la rotation d’une clé et d’un secret : une rotation ne doit jamais être un incident.
Quand quelque chose ne va pas
- Notez l’en-tête
X-Request-Idde la réponse en cause. - Lisez
codeeterrorsdans le corps : ils disent presque toujours exactement quoi corriger. Voir Erreurs. - Pour un Pulse, ouvrez l’historique des envois (
GET /pulses/{id}/deliveries) : vous y voyez le code HTTP reçu par votre serveur. - Si vous contactez le support, fournissez le
X-Request-Id.

