Recevoir des événements Resamania sur votre endpoint de webhook
Écoutez les événements de Resamnia, survenants sur vos clientTokens/clubs, sur votre endpoint de webhook pour que votre intégration déclenche automatiquement les réactions appropriées.
Pourquoi utiliser des webhooks ?
Lors de la création d’intégrations Resamania, il est possible que vous souhaitiez que vos applications reçoivent les événements au fur et à mesure qu’ils se déclenchent sur les clientTokens/clubs sur lesquels vous opérez, afin que vos systèmes back-end exécutent des actions en conséquence.
La réception d’événements webhook est particulièrement utile lorsque vous avez besoin de connaître les changements d'états des entités en évitant d'avoir à appeler l'API de Resamania régulièrement.
Pour activer les événements webhook, contactez le support ou le service API en fournissant l'URL sur laquelle vous souhaitez recevoir les événements.
Une seule URL peut-être configurée, c'est elle qui recevra l'ensemble des événements.
Si vous utilisez notre API sur plusieurs environnements (prod, sandbox, dom-tom, ...) l'appel du webhook ne vous permets pas d'identifier de quel environnement l'evenement provient : Vous devez donc fournir une URL par environnement afin de pouvoir les différencier.
Aperçu de l’événement
Tous les événements ont la même représentation JSON. Elle est envoyée dans le body
de la requête, elle-même envoyée avec la méthode http POST
.
Structure de l'objet Event
Elle contient 2 propriétés :
event
qui est le nom de l'événement survenu (string)data
qui est un objet contenant 2 informations- Le
clubId
sur lequel l'événement est survenu - Le
{object}Id
dont le nom dépend de l'entité concernée : La valeur étant l'identifiant dudit objet
- Le
Exemple de charge utile d'un événement
L'événement suivant indique la prise d'une réservation.
{
"event": "attendee.booked",
"data": {"object":{"attendeeId":"/stadline/attendees/6", "clubId": "/stadline/clubs/1"}}
}
Les différents types d'événéments 3
A l'heure actuelle, 7 événements sont disponibles
La création d'un nouveau contact
Le data.object
contient alors le contactId
correspondant au contact créé
{
"event": "contact.created",
"data": {"object":{"contactId":"/stadline/contacts/2", "clubId": "/stadline/clubs/1"}}
}
La mise à jour d'un contact
Le data.object
contient alors le contactId
correspondant au contact mis à jour.
{
"event": "contact.updated",
"data": {"object":{"contactId":"/stadline/contacts/2", "clubId": "/stadline/clubs/1"}}
}
La suppression d'un contact
Le data.object
contient alors le contactId
correspondant au contact supprimé.
{
"event": "contact.deleted",
"data": {"object":{"contactId":"/stadline/contacts/2", "clubId": "/stadline/clubs/1"}}
}
La mise à jour des optin d'un contact (ses consentements en terme de communication)
Le data.object
contient alors le optinId
et le contactId
correspondant respectivement au consentement et au contact concerné.
{
"event": "optin.updated",
"data": {"object":{"optinId":"/stadline/optins/5", "contactId":"/stadline/contacts/2", "clubId": "/stadline/clubs/1"}}
}
L'enregistrement d'une nouvelle réservation
- Pour les réservataires qui passent de liste d’attente à liste principale
- Pour les réservataires qui passent directement en liste principale Le
data.object
contient alors leattendeeId
correspondant au réservataire qui est enregistré sur la réservation.
{
"event": "attendee.booked",
"data": {"object":{"attendeeId":"/stadline/attendees/6", "clubId": "/stadline/clubs/1"}}
}
L'annulation d'une réservation
Le data.object
contient alors le attendeeId
correspondant au réservataire qui s'est désisté de la réservation.
{
"event": "attendee.canceled",
"data": {"object": {"attendeeId": "/stadline/attendees/1", "clubId": "/stadline/clubs/1"}}
}
La création ou la mise à jour d'un cours collectif
Le data.object
contient alors le classEventId
correspondant au cours collectif annulé.
{
"event": "class_event.updated",
"data": {"object": "classEventId": "/stadline/class_events/1", "clubId": "/stadline/clubs/2"}
}
L'annulation d'un cours collectif
Le data.object
contient alors le classEventId
correspondant au cours collectif annulé.
{
"event": "class_event.canceled",
"data": {"object": "classEventId": "/stadline/class_events/2", "clubId": "/stadline/clubs/1"}
}
Mises en garde
Votre endpoint de webhook doit être ouvert
Votre URL doit être une URL publiquement ouverte sur le web, sans restriction d'accès aucune (authentification, rate limiting, ...).
Une seule chance de recevoir l'événement
Notre système ne fera pas de retry en cas d'echec de votre endpoint webhook : Si l'URL appellée répond mal (erreur 500, erreur 403, ...) nous ne tenterons pas de la rappeler automatiquement ultérieurement.
Celà implique que vous
- Devez idéalement monitorer votre endpoint pour vous assurer du bon traitement des événements reçus
- Devez réfléchir à un potentiel log des événements reçus et de l'état de leur traitement
- Pouvez conserver une stratégie de récupération régulière des données auprès de nos APIs, en complément des webhook
Pour ce dernier cas : Vous pouvez par exemple recevoir régulièrement les événements attendee.booked
et attendee.canceled
mais chercher à récupérer les GET /{client_token}/attendees
toutes les heures afin de confronter la liste avec celle que vous pourriez avoir.
Mise en place
Rapprochez vous des services support/api afin que votre URL soit configurée sur les environnements de Sandbox afin de faire vos premiers essais. Vous devrez alors vous-même déclencher les événements.
Une fois votre intégration validée, rapprochez-vous des services support/api afin que votre URL soit configurée sur les environnements de production.