Structure des requêtes
Les requêtes BatchAvailabilityLookup peuvent concerner plusieurs services pour le même marchand, et les créneaux demandés peuvent s'étendre sur plusieurs ressources et jours. Nous vous recommandons d'utiliser un seul ID de service pour tous les marchands afin de simplifier votre intégration.
Temps de réponse
Les requêtes BatchAvailabilityLookup ont un seuil de latence de 1,5 seconde avant que la réponse ne soit considérée comme ayant échoué. Assurez-vous que votre réseau interne et votre routage DNS sont synchronisés afin de minimiser tout retard dans la requête qui atteint votre infrastructure. Si des erreurs de délai d'attente importantes se produisent, votre intégration peut être mise hors ligne jusqu'à ce que vous puissiez les résoudre.
Chaque réponse à une requête doit renvoyer l'état réel de votre inventaire à ce moment-là, et non au moment où le processus de réservation a été lancé. Si un créneau est complet, indiquez-le dans les réponses actuelles.
Définitions
La méthode BatchAvailabilityLookup vérifie que seuls les créneaux actuellement valides et disponibles sont présentés aux utilisateurs lors du processus de réservation.
Requête BatchAvailabilityLookup
message BatchAvailabilityLookupRequest {
// ID of the merchant.
string merchant_id = 1;
// Multiple slot times to be checked for availability. All queried times apply
// to the same merchant_id and service_id.
repeated SlotTime slot_time = 3;
reserved 2;
}
Réponse BatchAvailabilityLookup
// Response for the [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest]
// RPC with the availabilities of the appointment slots.
message BatchAvailabilityLookupResponse {
// The availabilities for the requested SlotTime entries. There must be
// exactly one slot_time_availability for each SlotTime entry in the
// [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest].
repeated SlotTimeAvailability slot_time_availability = 1;
}
SlotTime
// Identifies a Slot service_id and start time and optionally, the Slot duration
// and resources, for a specific merchant. Note that this differs from the
// definition of Slot, as it does not include merchant_id identifier.
message SlotTime {
// ID of the service. (required)
string service_id = 5;
// Start time of the appointment slot in seconds of UTC time since Unix epoch
// (required)
int64 start_sec = 1;
// Duration of the appointment slot in seconds (optional)
int64 duration_sec = 2;
// Opaque tag that identifies the availability slot and matches the value
// provided in the Availability Feed (optional)
string availability_tag = 3;
// The set of resources that specifies the appointment slot, e.g. by
// indicating the staff member and room selected by the user, or party size
// for dining slots (optional)
ResourceIds resource_ids = 4;
// Indicates whether bookings of this slot will be confirmed
// synchronously or asynchronously. (optional)
// An UNSPECIFIED value will be interpreted as synchronous.
ConfirmationMode confirmation_mode = 6;
}
SlotTimeAvailability
Si aucun créneau n'est trouvé, renvoyez une réponse vide. Ne renvoyez pas d'erreur 400. Vous pouvez renvoyer 204 ou un autre code 2xx. Cela permet de vérifier que la réponse est correctement reçue.
message SlotTimeAvailability {
// The SlotTime for which availability was checked.
SlotTime slot_time = 1;
// Whether the requested SlotTime is available
bool available = 2;
}
Exemples BatchAvailabilityLookup
Chargement de page
Lorsqu'un utilisateur clique sur Réserver en ligne pour lancer le processus de réservation, une requête BatchAvailabilityLookup est envoyée avec les créneaux disponibles connus pour le marchand. Pour chaque créneau envoyé dans la requête, votre serveur de réservation renvoie une réponse indiquant la disponibilité réelle et actuelle du créneau. Seuls les créneaux disponibles sont présentés à l'utilisateur dans l'interface.
Si un utilisateur modifie le nombre de personnes ou sélectionne une autre date, une autre requête de chargement de page peut être envoyée.
Requête de chargement de page
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
},
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606469400"
},
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606471200"
}
]
}
Réponse de chargement de page
{ "slot_time_availability" :
[
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606467600" }
},
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606469400" }
},
{
"available" : false,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606471200" }
}
]
}
Clic sur un créneau
Lorsqu'un utilisateur sélectionne un créneau réservable, une requête BatchAvailabilityLookup est envoyée pour ce créneau spécifique. Votre serveur de réservation renvoie une réponse indiquant la disponibilité réelle et actuelle du créneau. La réponse attendue est False pour la disponibilité si ce créneau est réservé par un autre utilisateur Google, en interne dans votre système ou entre les requêtes de chargement de page et de clic sur le créneau.
Requête de clic sur un créneau
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
]
}
Réponse de clic sur un créneau
{
"slot_time_availability" : [
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
}
]
}