L'objet événement de webhook
Un événement de webhook, c’est le corps JSON que Service POSTe à un point de terminaison que vous avez enregistré. L’objet concerné voyage à l’intérieur, d’où une enveloppe de forme identique pour tous les types d’événement.
Le tableau ci-dessous est généré depuis la spécification OpenAPI et reste en anglais, comme la référence de l'API : noms de champs, valeurs d'énumération et descriptions viennent du backend. Une traduction serait une copie qui ment dès la première évolution du contrat.
idstring
Opaque event id. Stable across endpoints and across delivery retries, so it is the key to deduplicate on.
objectstring
Valeurs possibles : event
The object type: always event.
typestring
Valeurs possibles : reservation.created reservation.pending reservation.confirmed reservation.declined reservation.updated reservation.partially_seated reservation.seated reservation.completed reservation.cancelled reservation.no_show reservation.guarantee_requested reservation.guarantee_charged reservation.guarantee_refunded reservation.guarantee_released reservation.guarantee_payment_failed guest.created guest.updated guest.deleted guest.merged guest.unmerged feedback.received waitlist_entry.created waitlist_entry.promoted waitlist_entry.updated waitlist_entry.cancelled waitlist_entry.expired hold.created hold.converted hold.released hold.expired
The event name, e.g. reservation.created. What each one means, and which object data.object then holds, is in the webhook event catalog.
createdstring (date-time)
When the event was generated: ISO 8601 in UTC (…Z), unlike the timestamps inside data.object, which carry the restaurant’s offset.
livemodeboolean
False for events generated by the back-office “send test event” action.
api_versionstring
The API version pinned on the endpoint that received this event.
dataobject
The object the event is about, and on *.updated events what it was before.
objectobject
The public resource the event is about, in the same shape the REST API returns for it.
previous_attributesobjectfacultatif
Changed fields mapped to their prior value. Present only on *.updated events, and only for fields whose previous value is derivable.
Vérifiez avant d’en lire quoi que ce soit
Section intitulée « Vérifiez avant d’en lire quoi que ce soit »Le corps n’est pas digne de confiance tant que l’en-tête Service-Signature n’a
pas été vérifié. Vérifier une
signature donne l’algorithme et une
implémentation testée à recopier.
id est stable d’une reprise à l’autre
Section intitulée « id est stable d’une reprise à l’autre »Le même changement livré deux fois porte le même id, ce qui en fait la clé de
déduplication — Sémantique de
livraison dit pourquoi il
le faut. Ce n’est pas l’evt_… de l’événement de
réservation qui décrit le même changement :
les deux sont numérotés séparément.
Deux horloges dans un même contenu
Section intitulée « Deux horloges dans un même contenu »created sur l’enveloppe est en ISO 8601 UTC, terminé par Z — l’instant où
l’événement a été émis. Tous les horodatages à l’intérieur de data.object —
starts_at, created_at, updated_at — portent en revanche le décalage UTC du
restaurant, comme l’API REST. Analysez chaque champ d’après son propre suffixe
plutôt que de présumer un seul fuseau pour tout le contenu.
data.object est la ressource entière
Section intitulée « data.object est la ressource entière »Ce dont l’événement parle arrive en entier, dans la forme que l’API REST renvoie
pour cette ressource — une réservation, un
client, une option, une
entrée de liste d’attente. Les données client
sont incluses sur toutes les livraisons, quelles que soient les portées de la
clé derrière le point de terminaison, et un client imbriqué est toujours son
identifiant gst_…. Le sens de chaque type est dans le catalogue
d’événements.
data.previous_attributes n’apparaît que sur les événements *.updated, et
seulement pour les champs dont la valeur précédente est déductible : son absence
n’affirme pas que rien n’a changé.