Structure de la requête
Les requêtes BatchAvailabilityLookup
peuvent s'étendre sur 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 un échec. Assurez-vous que votre réseau interne et le routage DNS sont synchronisés pour minimiser tout retard dans la requête qui atteint votre infrastructure. Si des erreurs de délai avant expiration importantes se produisent, votre intégration peut être désactivée 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 parcours 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
permet de vérifier 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 emplacement n'est trouvé, renvoyez une réponse vide. Ne renvoyez pas d'erreur 400. Vous pouvez renvoyer un code 204 ou un autre code 2xx. Elle vérifie que la réponse a été 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 de disponibilité 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é actuelle réelle du créneau. Seuls les créneaux disponibles sont présentés à l'utilisateur dans l'interface utilisateur.
Si un utilisateur modifie la taille de son groupe ou sélectionne une autre date, une autre demande de chargement de page peut être envoyée.
Demande 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 emplacement
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 le créneau est réservé par un autre utilisateur Google, en interne dans votre système ou entre le chargement de la page et les demandes de clic sur le créneau.
Demande de clic sur un emplacement
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
]
}
Réponse au clic sur un emplacement
{
"slot_time_availability" : [
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
}
]
}