Примеры и определения BatchAvailabilityLookup, Примеры и определения BatchAvailabilityLookup

Структура запроса

Запросы BatchAvailabilityLookup могут охватывать несколько сервисов одного и того же продавца, а запрашиваемые интервалы могут охватывать несколько ресурсов и дней. Для упрощения интеграции мы рекомендуем использовать единый идентификатор сервиса для всех продавцов.

Время отклика

Запросы BatchAvailabilityLookup имеют порог задержки в 1,5 секунды, после чего ответ считается ошибочным. Убедитесь, что ваша внутренняя сеть и маршрутизация DNS синхронизированы, чтобы минимизировать задержку запроса, достигающего вашей инфраструктуры. При наличии существенных ошибок тайм-аута ваша интеграция может быть отключена до тех пор, пока вы не сможете их устранить.

Каждый ответ на запрос должен содержать информацию о текущем состоянии вашего инвентаря на данный момент, а не на момент начала процесса бронирования. Если слот забронирован, отразите это в текущих ответах.

Определения

Метод BatchAvailabilityLookup проверяет, что во время процесса бронирования пользователям предоставляются только текущие слоты.

Запрос 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;
}

Ответ 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

Если слоты не найдены, вернуть пустой ответ. Не возвращайте ошибку 400, вместо неё можно вернуть 204 или другой код 2xx. Это подтверждает, что ответ получен корректно.

message SlotTimeAvailability {
  // The SlotTime for which availability was checked.
  SlotTime slot_time = 1;

  // Whether the requested SlotTime is available
  bool available = 2;
}

Примеры поиска BatchAvailabilityLookup

Загрузка страницы

Когда пользователь нажимает кнопку «Забронировать онлайн» , чтобы начать процесс бронирования, отправляется запрос BatchAvailabilityLookup с известными доступными слотами для продавца. Для каждого слота, отправленного в запросе, ваш сервер бронирования возвращает ответ с актуальной текущей доступностью слота. В интерфейсе пользователя отображаются только доступные слоты.

Если пользователь изменит размер группы или выберет другую дату, можно отправить еще один запрос на загрузку страницы.

Запрос на загрузку страницы

 {
    "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"
       }
    ]
 }

Ответ на загрузку страницы

 { "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" }
       }
    ]
 }

щелчок слота

Когда пользователь выбирает доступный для бронирования слот, отправляется запрос BatchAvailabilityLookup для этого слота. Ваш сервер бронирования возвращает ответ с актуальной текущей доступностью слота. Ожидаемый ответ — False , если этот слот забронирован другим пользователем Google, внутри вашей системы или между запросами загрузки страницы и нажатия на слот.

Запрос на щелчок слота

 {
    "merchant_id" : "1234",
    "slot_time" : [
       {
          "duration_sec" : "1800",
          "resource_ids" : {
             "party_size" : 2
          },
          "service_id" : "1000",
          "start_sec" : "1606467600"
       }
    ]
 }

Ответ на щелчок слота

 {
    "slot_time_availability" : [
       {
          "available" : true,
          "slot_time" : {
           "duration_sec" : "1800",
             "resource_ids" : {
                "party_size" : 2
             },
             "service_id" : "1000",
             "start_sec" : "1606467600"
          }
       }
    ]
 }
,

Структура запроса

Запросы BatchAvailabilityLookup могут охватывать несколько сервисов одного и того же продавца, а запрашиваемые интервалы могут охватывать несколько ресурсов и дней. Для упрощения интеграции мы рекомендуем использовать единый идентификатор сервиса для всех продавцов.

Время отклика

Запросы BatchAvailabilityLookup имеют порог задержки в 1,5 секунды, после чего ответ считается ошибочным. Убедитесь, что ваша внутренняя сеть и маршрутизация DNS синхронизированы, чтобы минимизировать задержку запроса, достигающего вашей инфраструктуры. При наличии существенных ошибок тайм-аута ваша интеграция может быть отключена до тех пор, пока вы не сможете их устранить.

Каждый ответ на запрос должен содержать информацию о текущем состоянии вашего инвентаря на данный момент, а не на момент начала процесса бронирования. Если слот забронирован, отразите это в текущих ответах.

Определения

Метод BatchAvailabilityLookup проверяет, что во время процесса бронирования пользователям предоставляются только текущие слоты.

Запрос 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;
}

Ответ 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

Если слоты не найдены, вернуть пустой ответ. Не возвращайте ошибку 400, вместо неё можно вернуть 204 или другой код 2xx. Это подтверждает, что ответ получен корректно.

message SlotTimeAvailability {
  // The SlotTime for which availability was checked.
  SlotTime slot_time = 1;

  // Whether the requested SlotTime is available
  bool available = 2;
}

Примеры поиска BatchAvailabilityLookup

Загрузка страницы

Когда пользователь нажимает кнопку «Забронировать онлайн» , чтобы начать процесс бронирования, отправляется запрос BatchAvailabilityLookup с известными доступными слотами для продавца. Для каждого слота, отправленного в запросе, ваш сервер бронирования возвращает ответ с актуальной текущей доступностью слота. В интерфейсе пользователя отображаются только доступные слоты.

Если пользователь изменит размер группы или выберет другую дату, можно отправить еще один запрос на загрузку страницы.

Запрос на загрузку страницы

 {
    "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"
       }
    ]
 }

Ответ на загрузку страницы

 { "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" }
       }
    ]
 }

щелчок слота

Когда пользователь выбирает доступный для бронирования слот, отправляется запрос BatchAvailabilityLookup для этого слота. Ваш сервер бронирования возвращает ответ с актуальной текущей доступностью слота. Ожидаемый ответ — False , если этот слот забронирован другим пользователем Google, внутри вашей системы или между запросами загрузки страницы и нажатия на слот.

Запрос на щелчок слота

 {
    "merchant_id" : "1234",
    "slot_time" : [
       {
          "duration_sec" : "1800",
          "resource_ids" : {
             "party_size" : 2
          },
          "service_id" : "1000",
          "start_sec" : "1606467600"
       }
    ]
 }

Ответ на щелчок слота

 {
    "slot_time_availability" : [
       {
          "available" : true,
          "slot_time" : {
           "duration_sec" : "1800",
             "resource_ids" : {
                "party_size" : 2
             },
             "service_id" : "1000",
             "start_sec" : "1606467600"
          }
       }
    ]
 }