Webhooks
eldo wallet peut appeler votre serveur quand un événement se produit dans votre wallet.
Événements
| Événement | Déclencheur |
|---|---|
client.created | Client créé (API, opération en masse, formulaire d'inscription public, import CSV) |
client.updated | Client modifié, y compris ses points (gain) |
client.deleted | Client supprimé |
pass.installed | Un téléphone a ajouté le pass à Apple Wallet ou Google Wallet |
pass.uninstalled | Un téléphone a retiré le pass |
Configurer l'URL
Renseignez webHookUrl sur votre wallet avec PATCH/wallets. Plusieurs URL peuvent être séparées par des virgules.
- curl
- SDK Node.js
- nodejs
- php
- python
- java
- csharp
- go
- ruby
- CURL
curl -L -X PATCH 'https://api-v2.test.eldowallet.fr/wallets' \
-H 'Accept: application/json' \
-H 'x-lang: fr' \
-H 'Authorization: Bearer <token>' \
-F 'webHookUrl="https://votre-serveur.example.com/hooks/eldo\#headers=Authorization:Bearer%20mon-secret-partage"'
Authentifier les appels
Les webhooks ne sont pas signés. Pour vérifier qu'un appel vient d'eldo wallet, ajoutez vos propres en-têtes avec le fragment #headers= : Nom:Valeur, séparés par des virgules, valeurs encodées pour URL. eldo wallet les envoie à chaque appel, et ne les réaffiche jamais quand vous relisez le wallet.
Vérifiez cet en-tête côté serveur et refusez les appels qui ne le portent pas.
Format
POST, Content-Type: application/json :
{
"event": "pass.installed",
"walletId": "6650a0b1c2d3e4f5a6b7c8d9",
"timestamp": "2026-11-20T10:02:13.408Z",
"data": {
"pass": {"_id": "6651b2…", "kind": "TRANSIT", "status": "active", "barcode": "MRS-AJA-000123", "activeIOSDeviceCount": 1, "activeAndroidDeviceCount": 0},
"barcode": "MRS-AJA-000123",
"deviceType": "IOS"
}
}
Pour client.*, data.client contient le client complet (_id, firstName, lastName, email, phoneNumber, barcode, source, gain…).
Livraison et nouvelles tentatives
- Répondez par un 2xx en moins de 10 secondes. Faites le traitement lourd après avoir répondu.
- En cas d'échec, eldo wallet réessaie 3 fois avec un délai croissant (à partir de 2 s).
- Un même événement peut arriver plusieurs fois, et l'ordre n'est pas garanti : rendez votre traitement idempotent (par exemple sur
event+data.pass._id+timestamp).
// Express
app.post('/hooks/eldo', express.json(), (req, res) => {
if (req.get('Authorization') !== `Bearer ${process.env.ELDO_WEBHOOK_SECRET}`) return res.sendStatus(401);
res.sendStatus(204); // répondre tout de suite
queue.push(req.body); // traiter ensuite
});
Webhook de fin d'opération en masse
Les endpoints /bulk acceptent un webhookUrl propre à la requête, appelé une seule fois à la fin. Voir opérations en masse.