Skip to content

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 :

  1. event qui est le nom de l'événement survenu (string)
  2. data qui est un objet contenant 2 informations
    1. Le clubId sur lequel l'événement est survenu
    2. Le {object}Id dont le nom dépend de l'entité concernée : La valeur étant l'identifiant dudit objet

Exemple de charge utile d'un événement

L'événement suivant indique la prise d'une réservation.

json5
{
    "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éé

json5
{
    "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.

json5
{
    "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é.

json5
{
    "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é.

json5
{
    "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 le attendeeId correspondant au réservataire qui est enregistré sur la réservation.
json5
{
    "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.

json5
{
    "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é.

json5
{
    "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é.

json5
{
    "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.