Aller au contenu

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.

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.

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.

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.

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é.