Клиент просит создать бронирование. Серверная часть партнера резервирует запрошенный слот и возвращает его в случае успеха или ошибки бизнес-логики (например, если слот стал недоступен, или платеж недействителен и т. д.) в случае сбоя.
Обратите внимание, что ошибки бизнес-логики следует возвращать в поле CreateBookingResponse.booking_failure
, а не через код ответа HTTP, отличный от 200.
Запрос
Создать запрос на бронирование
Возвращаемое значение
CreateBookingResponse
// Request to create a Booking for an inventory slot. Consumes the lease if
// provided.
message CreateBookingRequest {
// The inventory slot that is being requested to make this booking.
// If lease_ref is provided, slot must match the lease; slot is provided for
// the partner to verify the lease information.
// If lease_ref is absent, then create the booking for the slot. (required)
Slot slot = 1;
// Personal information of the user making the appointment (required)
UserInformation user_information = 3;
// Information about payments. When payment authorizations are handled by
// Google, if the booking request does not succeed, payment authorizations are
// automatically canceled. (optional)
PaymentInformation payment_information = 4;
// The parameters to be used if the payment is processed by the partner
// (i.e. payment_information.payment_processed_by is equal to
// PROCESSED_BY_PARTNER). (optional)
PaymentProcessingParameters payment_processing_parameters = 5;
// Idempotency token for CreateBooking requests. (required)
//
// This uniquely identifies a booking request. Specifically:
// - If a booking was already created for a CreateBooking request with this
// idempotency token, that booking should be returned.
// - If no booking has been created for a CreateBooking request with this
// idempotency token, this should be considered to be a request for a new
// booking, and **no previously-created booking may be returned**.
//
// If a partner considers the requested booking to be a duplicate of a
// previously-created booking, this request should fail with reason
// BookingFailure.OVERLAPPING_RESERVATION. The partner is responsible for
// determining whether this duplicates a previous booking, but for example the
// partner may consider a booking request to be a duplicate if an existing
// booking has the same party size, time, and email address.
string idempotency_token = 6;
// A string from the user which contains any special requests or additional
// information that they would like to notify the merchant about. (optional)
string additional_request = 7;
// Partner provided offer id associated with this slot. (optional)
//
// If the offer is no longer available, the booking should not be made, and in
// response.booking_failure should be set to OFFER_UNAVAILABLE.
string offer_id = 9;
}
// Response with the created Booking for an inventory slot.
message CreateBookingResponse {
// The created booking (required)
Booking booking = 1;
// The updated user payment option used in this booking.
// If a new payment option was purchased to pay for the booking, this should
// be a newly created user payment option.
// If an already purchased user payment option was used for this booking,
// this should reflect an updated version of that user payment option.
// (optional)
UserPaymentOption user_payment_option = 2;
// If creating a booking fails, this field should reflect the business logic
// error (e.g., slot has become unavailable) and all other fields in the
// CreateBookingResponse message are expected to be unset. (required if
// failure occurs)
BookingFailure booking_failure = 3;
}