Estrutura da solicitação
As solicitações de BatchAvailabilityLookup
podem abranger vários serviços para o mesmo comerciante, e os espaços solicitados podem abranger vários recursos e dias. Recomendamos que um único ID de serviço seja usado em todos os comerciantes para simplificar sua integração.
Tempos de resposta
As solicitações BatchAvailabilityLookup
têm um limite de latência de 1,5 segundo
antes que a resposta seja considerada uma falha. Verifique se o roteamento de DNS e de rede interna estão sincronizados para minimizar qualquer atraso na solicitação que chega à sua infraestrutura. Se houver erros de tempo limite significativos, sua
integração poderá ser desativada até que você resolva os problemas.
Cada resposta a uma solicitação precisa retornar o status real do seu inventário naquele momento, não quando o fluxo de reserva foi iniciado. Se um horário estiver reservado, reflita isso nas respostas atuais.
Definições
O método BatchAvailabilityLookup
verifica se apenas os espaços atuais são apresentados aos usuários durante o fluxo de reserva.
Solicitação 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;
}
Resposta de 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
Se nenhum slot for encontrado, retorne uma resposta vazia. Não retorne um erro 400. Em vez disso, retorne 204 ou outro código 2xx. Ele verifica se a resposta foi recebida corretamente.
message SlotTimeAvailability {
// The SlotTime for which availability was checked.
SlotTime slot_time = 1;
// Whether the requested SlotTime is available
bool available = 2;
}
Exemplos de BatchAvailabilityLookup
Carregamento de página
Quando um usuário clica em Reservar on-line para iniciar o fluxo de reserva, uma
solicitação BatchAvailabilityLookup
é enviada com horários disponíveis conhecidos para o
comerciante. Para cada horário enviado na solicitação, o servidor de agendamento retorna uma resposta com a disponibilidade real e atual do horário. Somente os horários disponíveis são apresentados ao usuário no front-end.
Se um usuário mudar o tamanho do grupo ou selecionar outra data, outra solicitação de carregamento de página poderá ser enviada.
Solicitação de carregamento de página
{
"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"
}
]
}
Resposta de carregamento de página
{ "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" }
}
]
}
Clique no espaço
Quando um usuário seleciona um horário disponível, uma solicitação BatchAvailabilityLookup
é enviada para o horário específico. O servidor de agendamento retorna uma resposta com a disponibilidade real e atual do horário. A resposta esperada é False para a disponibilidade se o horário for reservado por outro usuário do Google, internamente no seu sistema ou entre os pedidos de carregamento da página e clique no horário.
Solicitação de clique no slot.
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
]
}
Resposta de clique no slot
{
"slot_time_availability" : [
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
}
]
}