This documentation is currently under development. Certain sections are not yet complete and will be added shortly.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Webhooks

Recevez des événements en temps réel de The Wallet Crew via des webhooks HTTPS. Créez des points de terminaison, validez les signatures et traitez les charges utiles d’événements courantes.

Webhooks

Les webhooks permettent aux systèmes externes de recevoir des notifications en temps réel lorsqu’un événement se produit dans The Wallet Crew. Enregistrez un point de terminaison HTTPS, sélectionnez des événements, et The Wallet Crew envoie une POST requête chaque fois qu’un de ces événements se produit.

C’est le moyen le plus simple de synchroniser votre CRM, vos analyses ou vos systèmes opérationnels sans interroger les API en boucle.

Exemples concrets
  • Envoyez un événement « carte installée » à votre CRM pour mesurer l’adoption par campagne.

  • Déclenchez un parcours de bienvenue client lorsqu’un profil client est inséré ou mis à jour.

  • Journalisez les événements du cycle de vie de la carte (Carte:Created, Carte:Updated) dans votre entrepôt de données.

  • Suivez l’utilisation des QR en magasin en écoutant les événements de redirection (Redirect:Redirected).

Si vous appliquez également des restrictions réseau, vous pouvez autoriser dans la liste blanche les IP sortantes de The Wallet Crew. Ne vous fiez pas uniquement aux IP. Validez toujours x-neostore-signature.

Créer et gérer un webhook

Les webhooks peuvent être créés et gérés de deux façons : depuis la console d’administration (aucune API requise) ou via l’API REST.

Console d’administration (en libre-service) : Accédez à Paramètres → Général → Webhooks. Créez ou modifiez un webhook en renseignant les Description, Point de terminaison, et Événements champs. La console génère automatiquement un ID et un Secret (clé de signature HMAC). Copiez le Secret immédiatement après la création — il ne s’affiche plus en entier. Voir Webhooks (Configurer) pour la référence complète de la console.

API REST : Utilisez l’opération ci-dessous lorsque l’enregistrement des webhooks doit être automatisé dans un pipeline de déploiement. Un webhook définit trois éléments : où envoyer les requêtes, quels événements envoyer et si le webhook est activé.

Créer un webhook (API)

Lors de la création d’un webhook, envoyez :

  • endpoint: l’URL HTTPS qui recevra POST les requêtes.

  • events: les événements auxquels vous souhaitez vous abonner.

  • enabled: indique si la livraison est active.

Vous pouvez vous abonner à plusieurs événements dans un seul webhook. Vous pouvez également utiliser * pour vous abonner à tous les sous-événements d’une catégorie.

Creates a webhook subscription. The platform generates its identifier and signature secret.

post
/api/{tenantId}/webhooks

The subscription applies from the next matching event. The response carries the generated id and signatureSecret; the Location header points to the subscription.

Scopes requis
Cet endpoint nécessite les scopes suivants :
Autorisations
OAuth2implicitRequis
Authorization URL:
Paramètres de chemin
tenantIdstringRequis
Corps

The caller-editable part of a webhook subscription.

ou
Réponses
201

Subscription created.

A webhook subscription as stored, with the values the platform generated for it.

descriptionstring · nullableOptionnel

Free text to tell subscriptions apart; not used by the platform. Omitted on an update, the current description is cleared.

eventsstring[] · min: 1Requis

Event names that trigger a delivery. An entry matches its exact event name, or every event name starting with what precedes a trailing * (pass.*; * alone matches every event). A * anywhere else is taken literally.

endpointstring · uriRequis

URL that receives each matching event as a JSON POST, with the headers X-NEOSTORE-TENANTID, X-NEOSTORE-EVENTNAME and X-NEOSTORE-SIGNATURE.

enabledbooleanOptionnel

Whether events are delivered. A disabled subscription is kept but receives nothing. Defaults to false, including when omitted on an update.

Default: false
idstring · min: 1Requis

Identifier the platform assigns on creation. It never changes and is the id the other webhook routes take.

signatureSecretstring · min: 1Requis

Secret the platform generates on creation to sign every delivery. It never changes, not even on an update.

post/api/{tenantId}/webhooks
POST /api/{tenantId}/webhooks HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 87

{
  "description": null,
  "events": [
    "text"
  ],
  "endpoint": "https://example.com",
  "enabled": false
}
{
  "id": "text",
  "signatureSecret": "text",
  "description": null,
  "events": [
    "text"
  ],
  "endpoint": "https://example.com",
  "enabled": false
}

La réponse inclut le webhook id et signatureSecret.

Mettre à jour, lister et supprimer

Vous pouvez gérer les webhooks à l’aide de GET, PATCH, et DELETE sur la même ressource.

Pour la définition complète de l’API, utilisez la Référence de l'API.

Webhook configuration screen showing event subscriptions and endpoint URL.
Configurez quels événements sont envoyés à quel point de terminaison.

Ce que The Wallet Crew envoie

Chaque livraison de webhook est une POST requête HTTP avec des en-têtes et un corps JSON. Le corps dépend du type d’événement. Chaque charge utile inclut les champs de métadonnées d’événement préfixés par __.

en-têtes HTTP

  • x-neostore-signature: signature HMAC SHA-256 du corps de la requête, générée à l’aide de votre signatureSecret.

  • x-neostore-eventname: nom de l’événement qui a déclenché le webhook (exemple : Customer:Upserted).

  • x-neostore-tenantid: identifiant du locataire dans The Wallet Crew.

Comment traiter les événements de manière fiable

Utilisation __id comme clé d’idempotence. Si votre point de terminaison reçoit deux fois la même charge utile, vous pouvez ignorer la duplication en toute sécurité.

Gardez votre gestionnaire rapide. Une pratique courante consiste à valider la signature, mettre l’événement en file d’attente en interne, puis renvoyer 2xx.

Vérifier l’authenticité du webhook

Validez chaque requête de webhook à l’aide de x-neostore-signature. Cela garantit que le corps de la requête a été envoyé par The Wallet Crew et n’a pas été modifié en transit.

Pour le valider, calculez un HMAC SHA-256 du corps brut de la requête à l’aide de votre signatureSecret, puis comparez-le à la valeur de l’en-tête.

Événements courants

La liste des événements évolue. Utilisez Référence de l'API comme source de vérité pour les noms d’événements et les structures des charges utiles.

Voici les événements les plus courants avec lesquels les équipes s’intègrent.

Événements client

Customer:Upserted est envoyé lorsqu’un client est créé ou mis à jour.

Événements du cycle de vie de la carte

Événements typiques du cycle de vie de la carte :

  • Carte:Created

  • Carte:Installed

  • Carte:Uninstalled

  • Carte:Updated

  • Carte:UpdateSent

  • Carte:ThemeChanged

Carte:Installed inclut des champs de l’appareil. Carte:ThemeChanged est envoyé lorsqu’une carte passe à un thème différent ou que son thème est supprimé, et transporte le thème avant et après le changement.

Les événements de carte n’ont aucun acteur : ni utilisateur ni clé API. Ils décrivent ce qui est arrivé à la carte, pas qui l’a provoqué.

Événements de thème

Theme:Created, Theme:Updated et Theme:Deleted sont envoyés lorsqu’un thème est ajouté, enregistré ou supprimé. Chacun transporte deux objets :

  • theme — themeId, name et tags. Sur Theme:Deleted, ceux-ci décrivent le thème tel qu’il était avant la suppression ; ses couleurs et ses images ne sont pas incluses.

  • user — qui a effectué la modification, décrit dans Identifier qui a effectué une modification.

Theme:Updated n’indique pas quelles parties du thème ont changé. Les règles du thème elles-mêmes sont décrites dans thèmes des cartes Wallet.

Événements de redirection

Redirect:Redirected est envoyé lorsqu’un utilisateur ouvre une URL minimisée (redirection).

Identifier qui a effectué une modification

Les événements de configuration nomment la personne ou la clé API à l’origine d’un changement, afin qu’une piste d’audit puisse être conservée en dehors de The Wallet Crew. Les événements de carte, eux, ne le font pas : ils ne transportent aucun acteur.

Événements de thème, d’automatisation et de modèle d’avantage (Theme:*, Automation:*, BenefitTemplate:*) transportent le même user objet, avec trois champs :

  • credentialType — User pour un utilisateur back-office connecté, ApiKey pour une clé API, Unknown lorsque le changement s’est produit en dehors d’une requête et ne porte aucune identité.

  • id — l’identifiant utilisateur chez le fournisseur d’identité pour un User, apiKey:{name} pour un ApiKey. Il peut être vide lorsque credentialType est Unknown. C’est le même identifiant que l’historique de configuration enregistre pour ce changement.

  • name — un nom d’affichage, lorsque l’identifiant d’authentification en comporte un. Pour une clé API, c’est le nom sous lequel la clé a été émise.

Aucun de ces objets n’inclut d’adresse e-mail : l’ API des utilisateurs associe un identifiant utilisateur à une personne, avec son e-mail et son nom.

FAQ

Puis-je m’abonner à tous les événements ?

Oui. Utilisez le * joker dans le events tableau, par exemple Customer:*, pour vous abonner à tous les sous-événements client.

Utilisez-le avec prudence. Vous pourriez recevoir plus d’événements qu’il ne vous en faut.

Mon point de terminaison doit-il être public ?

Oui. Le point de terminaison doit être accessible depuis The Wallet Crew via HTTPS.

Si vous restreignez le trafic entrant, autorisez dans la liste blanche les IP sortantes de The Wallet Crew et validez quand même la signature.

Où puis-je trouver le schéma exact de la charge utile pour un événement ?

Utilisez la référence de l’API. C’est la source de vérité pour les noms d’événements et les structures des charges utiles.

Commencez par Référence de l'API.

Pourquoi un événement de webhook n’inclut-il pas l’e-mail de la personne qui a effectué une modification ?

Les événements identifient un utilisateur uniquement par id seulement. Résolvez cet identifiant à l’aide de la API des utilisateurs pour obtenir la personne qui se cache derrière. Une valeur de la forme apiKey:{name} identifie une clé API plutôt qu’une personne, et credentialType: Unknown signifie qu’aucune identité n’était associée au changement. Les événements de carte n’identifient personne.

Mis à jour