| // API v3 public interface declaration | |
| syntax = "proto3"; | |
| package ext.maps.booking.partner.v3; | |
| // +------+------------------------------+----------------------------------+ | |
| // | Verb | HTTP Path | Request/Response Body | | |
| // +------+------------------------------+----------------------------------+ | |
| // | GET | /v3/HealthCheck | - | | |
| // | | | - | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/CheckAvailability | CheckAvailabilityRequest | | |
| // | | | CheckAvailabilityResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/CreateBooking | CreateBookingRequest | | |
| // | | | CreateBookingResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/UpdateBooking | UpdateBookingRequest | | |
| // | | | UpdateBookingResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/GetBookingStatus | GetBookingStatusRequest | | |
| // | | | GetBookingStatusResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/ListBookings | ListBookingsRequest | | |
| // | | | ListBookingsResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/CheckOrderFulfillability | CheckOrderFulfillabilityRequest | | |
| // | | | CheckOrderFulfillabilityResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/CreateOrder | CreateOrderRequest | | |
| // | | | CreateOrderResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // | POST | /v3/ListOrders | ListOrdersRequest | | |
| // | | | ListOrdersResponse | | |
| // +------+------------------------------+----------------------------------+ | |
| // CheckAvailability method | |
| // Request to check availability for a Slot. | |
| message CheckAvailabilityRequest { | |
| // The appointment slot that is being checked (required) | |
| Slot slot = 1; | |
| } | |
| // Response for the CheckAvailability RPC with the availability of the | |
| // appointment slot. | |
| message CheckAvailabilityResponse { | |
| // The requested slot. (required) | |
| Slot slot = 1; | |
| // Number of available spots. | |
| // 0 indicates that the appointment slot is not available. (required) | |
| int32 count_available = 2; | |
| // This enum indicates what requirements exist for the user to acknowledge or | |
| // view the requested slots duration/end time. | |
| enum DurationRequirement { | |
| // The handling of the end time is not specified. This is the default. | |
| DURATION_REQUIREMENT_UNSPECIFIED = 0; | |
| // The end time is not shown to the user. | |
| DO_NOT_SHOW_DURATION = 1; | |
| // The end time has to be shown to the user before an appointment can be | |
| // made. | |
| MUST_SHOW_DURATION = 2; | |
| } | |
| // The requirement to show the slots duration and/or endtime. This field will | |
| // be ignored if the slot is unavailable. (optional) | |
| DurationRequirement duration_requirement = 3; | |
| // Optionally, the partner can return additional updated information about the | |
| // availability for this merchant if this information is present when | |
| // responding to the CheckAvailabilityRequest and if there is no negative | |
| // impact on the CheckAvailability request latency. | |
| // For instance an entire day of merchant availability for a superset of | |
| // resources can be returned here. | |
| AvailabilityUpdate availability_update = 4; | |
| } | |
| // An update to one ore more slots indicating that the availability for the | |
| // associated time has potentially changed. | |
| message AvailabilityUpdate { | |
| repeated SlotAvailability slot_availability = 1; | |
| } | |
| // An inventory slot and associated count of open spots. | |
| message SlotAvailability { | |
| Slot slot = 1; | |
| // Number of available spots. | |
| // 0 indicates that the appointment slot is not available. (required) | |
| int32 count_available = 2; | |
| } | |
| // CheckOrderFulfillability method | |
| // Request to check the fulfillability of an order. | |
| message CheckOrderFulfillabilityRequest { | |
| // The merchant that this order is intended for. (required) | |
| string merchant_id = 1; | |
| // The line items in this order. All services requested must belong to the | |
| // specified merchant. (required) | |
| repeated LineItem item = 2; | |
| } | |
| // Response for the CheckOrderfulfillabilityRequest. | |
| message CheckOrderFulfillabilityResponse { | |
| // Fulfillability status of the order, potentially contains updated | |
| // availabilities and prices of the requested line item. (required) | |
| OrderFulfillability fulfillability = 1; | |
| // Total processing fees & taxes that need to be paid for this order. | |
| // (required) | |
| Price fees_and_taxes = 2; | |
| } | |
| // GetBookingStatus method | |
| // Request to get booking status and prepayment status for a Booking. | |
| message GetBookingStatusRequest { | |
| // ID of the existing booking (required) | |
| string booking_id = 1; | |
| } | |
| // Response for the GetBookingStatus RPC with booking status and prepayment | |
| // status. | |
| message GetBookingStatusResponse { | |
| // ID of the booking (required) | |
| string booking_id = 1; | |
| // Status of the booking (required) | |
| BookingStatus booking_status = 2; | |
| // Prepayment status of the booking (required) | |
| PrepaymentStatus prepayment_status = 3; | |
| } | |
| // CreateBooking method | |
| // 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; | |
| // The lease that is being confirmed to make this booking. | |
| // If lease_ref is provided, then create the booking using the lease. | |
| // (optional) | |
| LeaseReference lease_ref = 2; | |
| // 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) | |
| 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; | |
| } | |
| // 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; | |
| } | |
| // CreateLease method | |
| // Request to create a Lease for a slot in the inventory. The expiration time | |
| // in the returned Lease may be modified by the backend, e.g. if the requested | |
| // lease period is too long. | |
| message CreateLeaseRequest { | |
| // The lease to be created with information about the appointment slot | |
| // (required) | |
| Lease lease = 1; | |
| } | |
| // Response for the CreateLease RPC with the created Lease. | |
| message CreateLeaseResponse { | |
| // The created Lease (required) | |
| Lease lease = 1; | |
| // If creating a lease fails, this field should reflect the business logic | |
| // error (e.g., slot has become unavailable) and lease field is expected to be | |
| // unset. (required if failure occurs) | |
| BookingFailure booking_failure = 2; | |
| } | |
| // Temporary lease for an inventory slot | |
| message Lease { | |
| // ID of the lease. | |
| // Not populated in CreateLeaseRequest. The value is chosen by the partner and | |
| // has to be returned in the response of CreateLease. (required) | |
| string lease_id = 1; | |
| // The appointment slot that the lease is created for. (required) | |
| Slot slot = 2; | |
| // Unique identifier for this lease, chosen by Reserve with Google. Serves as | |
| // an idempotency token for CreateLease requests. (required) | |
| string user_reference = 3; | |
| // Expiration time of the lease in UTC Timestamp (required) | |
| int64 lease_expiration_time_sec = 4; | |
| } | |
| // Reference to a Lease that has been created via CreateLease. | |
| message LeaseReference { | |
| // Lease ID (required) | |
| string lease_id = 1; | |
| } | |
| // CreateOrder method | |
| // Request to create an order. | |
| message CreateOrderRequest { | |
| // The order to create. (required) | |
| Order order = 1; | |
| // The parameters to be used if the payment is processed by the partner | |
| // (i.e. order.payment_information.payment_processed_by is equal to | |
| // PROCESSED_BY_PARTNER). (required if payment is processed by the partner) | |
| PaymentProcessingParameters payment_processing_parameters = 2; | |
| // Idempotency token for CreateOrder requests. (required) | |
| string idempotency_token = 3; | |
| } | |
| // Response for the CreateOrderRequest. | |
| message CreateOrderResponse { | |
| // All line items in an order either fail or succeed together. | |
| // This means that if some of the items cannot be fulfilled, the entire | |
| // order must fail, the booking must not be made for any item, and the user | |
| // must not be charged. | |
| oneof result { | |
| // The order created. | |
| Order order = 1; | |
| // If creating an order fails, this field should reflect the business logic | |
| // error (e.g., slot has become unavailable or price has changed). | |
| OrderFailure order_failure = 2; | |
| } | |
| } | |
| // ListBookings method | |
| // Request to list all bookings for a user | |
| message ListBookingsRequest { | |
| // ID of the user (required) | |
| string user_id = 1; | |
| } | |
| // Response for the ListBookings RPC with all bookings for the requested user. | |
| message ListBookingsResponse { | |
| // All bookings of the user (required) | |
| repeated Booking bookings = 1; | |
| } | |
| // ListOrders method | |
| // Request to list orders. | |
| message ListOrdersRequest { | |
| message OrderIds { | |
| repeated string order_id = 1; | |
| } | |
| // Request of orders either by user ID, or by order ID. | |
| oneof ids { | |
| // If set, return all orders belong to the user. | |
| string user_id = 1; | |
| // If set, return the specified orders. | |
| OrderIds order_ids = 2; | |
| } | |
| } | |
| // Response for the ListOrders RPC. | |
| message ListOrdersResponse { | |
| // All requested orders (required) | |
| repeated Order order = 1; | |
| } | |
| // UpdateBooking method | |
| // Request to update a Booking. | |
| message UpdateBookingRequest { | |
| // The booking to be updated | |
| // The following fields can be set in a booking: | |
| // - status, to cancel a booking. | |
| // - start_time and duration in the slot, to reschedule a booking. (required) | |
| Booking booking = 1; | |
| } | |
| // Response with the updated Booking. | |
| message UpdateBookingResponse { | |
| // The updated booking (required) | |
| Booking booking = 1; | |
| // The updated user payment option originally used to pay for this booking. | |
| // This should be set if the UpdateBookingRequest results in a change to | |
| // the UserPaymentOption. | |
| // For instance, if the booking is canceled, the UserPaymentOption should | |
| // reflect an additional credit to the user. In the case of a multi-use | |
| // payment option, the current_count should be increased by one to | |
| // allow the user to create another booking with this payment option. In the | |
| // case of a single-use payment option, a new single-use user payment option | |
| // should be returned. (required if altered in update) | |
| UserPaymentOption user_payment_option = 2; | |
| // If updating a booking fails, this field should reflect the business logic | |
| // error (e.g., booking is not cancellable) (required if failure occurs) | |
| BookingFailure booking_failure = 3; | |
| } | |
| // Booking specification | |
| // A booking for an inventory slot | |
| message Booking { | |
| // ID of this booking (required) | |
| string booking_id = 1; | |
| // The appointment slot of this booking (required) | |
| Slot slot = 2; | |
| // Personal information of the user making the appointment (required) | |
| UserInformation user_information = 3; | |
| // Status of the booking (required) | |
| BookingStatus status = 4; | |
| // Information about payment transactions that relate to the booking. | |
| // (optional) | |
| PaymentInformation payment_information = 5; | |
| } | |
| // BookingStatus specification | |
| // Status of a booking. | |
| // | |
| // Updating booking status does not change the status of the associated payment. | |
| // Prepayment status updates should be done using the PrepaymentStatus enum. | |
| // | |
| // nextID: 6 | |
| enum BookingStatus { | |
| // Not specified. | |
| BOOKING_STATUS_UNSPECIFIED = 0; | |
| // Booking has been confirmed | |
| CONFIRMED = 1; | |
| // Booking is awaiting confirmation by the merchant before it can transition | |
| // into CONFIRMED status | |
| PENDING_MERCHANT_CONFIRMATION = 2; | |
| // Booking has been canceled on behalf of the user. | |
| // The merchant can still trigger a manual refund. | |
| CANCELED = 3; | |
| // User did not show for the appointment | |
| NO_SHOW = 4; | |
| // User did not show for the appointment in violation of the cancellation | |
| // policy. | |
| NO_SHOW_PENALIZED = 5; | |
| } | |
| // BookingFailure specification | |
| // Status data that conveys why (1) creating a lease or (2) creating or updating | |
| // a booking fails. | |
| // BookingFailure is intended to primarily capture business logic errors. | |
| message BookingFailure { | |
| enum Cause { | |
| // Default value: Don't use; amounts to an "unknown error" | |
| CAUSE_UNSPECIFIED = 0; | |
| // The referenced availability slot is not available any longer. | |
| SLOT_UNAVAILABLE = 1; | |
| // The user has already booked an appointment for the referenced | |
| // availability slot. | |
| SLOT_ALREADY_BOOKED_BY_USER = 2; | |
| // The lease (if provided) has expired and cannot be used any longer to | |
| // complete the requested booking. | |
| LEASE_EXPIRED = 3; | |
| // The requested cancellation cannot be performed at the current time due | |
| // to time restrictions in the merchant's cancellation policy. | |
| OUTSIDE_CANCELLATION_WINDOW = 4; | |
| // An error was encountered while processing the payment because the | |
| // provided credit card type was not accepted by the merchant. The credit | |
| // card type must be supplied in rejected_card_type. | |
| PAYMENT_ERROR_CARD_TYPE_REJECTED = 5; | |
| // An error was encountered while processing the payment because the | |
| // provided credit card was declined. | |
| PAYMENT_ERROR_CARD_DECLINED = 6; | |
| // An error was encountered with the pack/membership used to pay for the | |
| // booking. There could be no valid uses left, it could have expired, etc. | |
| PAYMENT_OPTION_NOT_VALID = 7; | |
| // An error was encountered while processing the payment for this booking. | |
| // Use this value to indicate a general payment related error, only if the | |
| // error does not match to a specific payment error above. | |
| PAYMENT_ERROR = 8; | |
| // User cannot use the given payment option (e.g. user trying to use a | |
| // first time price for the second time). | |
| USER_CANNOT_USE_PAYMENT_OPTION = 9; | |
| // A booking that the user tried to cancel has already been cancelled. | |
| BOOKING_ALREADY_CANCELLED = 10; | |
| // A booking that the user tried to cancel is not cancellable. | |
| BOOKING_NOT_CANCELLABLE = 11; | |
| // User has an existing reservation too close to this time. | |
| OVERLAPPING_RESERVATION = 12; | |
| } | |
| // The reason why the booking failed. (required) | |
| Cause cause = 1; | |
| // (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED) | |
| CreditCardType rejected_card_type = 2; | |
| // This optional field is used for the partner to include additional | |
| // information for debugging purpose only. (optional) | |
| string description = 3; | |
| } | |
| // Used when booking/order failure cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to | |
| // indicate the type of credit card that was rejected. | |
| enum CreditCardType { | |
| // Default value. Used if credit card type does not match to one below. | |
| CREDIT_CARD_TYPE_UNSPECIFIED = 0; | |
| VISA = 1; | |
| MASTERCARD = 2; | |
| AMERICAN_EXPRESS = 3; | |
| DISCOVER = 4; | |
| } | |
| // Order specification | |
| // An order for service appointments with a merchant. | |
| message Order { | |
| // ID of this Order, chosen by the booking partner who handles the order | |
| // (required in CreateOrderResponse and ListOrdersResponse, must not be set in | |
| // CreateOrderRequest) | |
| string order_id = 1; | |
| // Personal information of the user making the order (required) | |
| UserInformation user_information = 2; | |
| // Information about payment transactions that relate to the Order. | |
| // (optional) | |
| PaymentInformation payment_information = 3; | |
| // The merchant that all services in this Order belong to. | |
| string merchant_id = 4; | |
| // Line items in this order. | |
| repeated LineItem item = 5; | |
| } | |
| // A single item in an Order--the booking of a single service in a single time | |
| // slot. | |
| message LineItem { | |
| // ID of the merchant Service. (required) | |
| string service_id = 1; | |
| // Start time of the appointment slot in seconds of UTC time since Unix epoch. | |
| // (required) | |
| int64 start_sec = 2; | |
| // Duration of the appointment slot in seconds. (required) | |
| int64 duration_sec = 3; | |
| message OrderedTickets { | |
| string ticket_id = 1; | |
| int32 count = 2; | |
| } | |
| // Number of tickets ordered by Ticket Type. | |
| repeated OrderedTickets tickets = 4; | |
| // In handling CreateOrderRequest and CheckOrderFulfillabilityRequest, | |
| // the total price (excluding taxes) of the item must be verified to guard | |
| // against price changes. In CreateOrderResponse and | |
| // CheckOrderFulfillabilityResponse, the price should be updated to the | |
| // correct value if the value from the request was incorrect or outdated. | |
| // (reqired) | |
| Price price = 5; | |
| // Status of the Line Item. (required in CreateOrderResponse and | |
| // ListOrdersResponse; should not be set in requests) | |
| BookingStatus status = 6; | |
| } | |
| // Status data that conveys why creating an order fails. | |
| // OrderFailure is intended to primarily capture business logic errors. | |
| message OrderFailure { | |
| enum Cause { | |
| // Default value: Don't use; amounts to an "unknown error" | |
| CAUSE_UNSPECIFIED = 0; | |
| // The order is no longer fulfillable. | |
| ORDER_UNFULFILLABLE = 1; | |
| // An error was encountered while processing the payment because the | |
| // provided credit card type was not accepted by the merchant. The credit | |
| // card type must be supplied in rejected_card_type. | |
| PAYMENT_ERROR_CARD_TYPE_REJECTED = 2; | |
| // An error was encountered while processing the payment because the | |
| // provided credit card was declined. | |
| PAYMENT_ERROR_CARD_DECLINED = 3; | |
| // An error was encountered while processing the payment for this order. | |
| // Use this value to indicate a general payment related error, only if the | |
| // error does not match to a specific payment error above. | |
| PAYMENT_ERROR = 4; | |
| } | |
| // The reason why the order failed. (required) | |
| Cause cause = 1; | |
| // (required only if cause is ORDER_UNFULFILLABLE) | |
| OrderFulfillability fulfillability = 2; | |
| // (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED) | |
| CreditCardType rejected_card_type = 3; | |
| // This optional field is used for the partner to include additional | |
| // information for debugging purpose only. (optional) | |
| string description = 4; | |
| } | |
| // OrderFulfillability specification | |
| message OrderFulfillability { | |
| // The result of an order fulfillability check. | |
| enum OrderFulfillabilityResult { | |
| // Default value: Don't use. | |
| ORDER_FULFILLABILITY_RESULT_UNSPECIFIED = 0; | |
| // The order can be fulfilled. | |
| CAN_FULFILL = 1; | |
| // The order cannot be fulfilled due to one or more unfulfillable line | |
| // item(s). | |
| UNFULFILLABLE_LINE_ITEM = 2; | |
| // The combination of the line items requested cannot be fulfilled. | |
| UNFULFILLABLE_SERVICE_COMBINATION = 3; | |
| // The order cannot be fulfilled due to reasons that do not fall into the | |
| // categories above. | |
| ORDER_UNFULFILLABLE_OTHER_REASON = 4; | |
| } | |
| OrderFulfillabilityResult result = 1; | |
| // Fulfillability results of all line items in this order (required). | |
| repeated LineItemFulfillability item_fulfillability = 2; | |
| // Additional description of the reason if the item is unfulfillable. | |
| // (optional) | |
| string unfulfillable_reason = 3; | |
| } | |
| // Fulfillability of a line item. | |
| message LineItemFulfillability { | |
| // The line item of question. (required) | |
| LineItem item = 1; | |
| // The result of a line item fulfillability check. | |
| enum ItemFulfillabilityResult { | |
| // Default value: Don't use. | |
| ITEM_FULFILLABILITY_RESULT_UNSPECIFIED = 0; | |
| // This line item can be fulfilled. | |
| CAN_FULFILL = 1; | |
| // No adequate availability for the slot requested. | |
| SLOT_UNAVAILABLE = 2; | |
| // The combination of ticket types requested cannot be fulfilled. | |
| UNFULFILLABLE_TICKET_COMBINATION = 3; | |
| // The total price of this line item is not correct. | |
| INCORRECT_PRICE = 4; | |
| // The line item cannot be fulfilled for reasons that do not fall into | |
| // the categories above. | |
| ITEM_UNFULFILLABLE_OTHER_REASON = 5; | |
| } | |
| // (required) | |
| ItemFulfillabilityResult result = 2; | |
| // Additional description of the reason if the item is unfulfillable. | |
| // (optional) | |
| string unfulfillable_reason = 3; | |
| // Updated availability for this slot can be piggybacked in | |
| // CheckOrderFulfillabilityResponse. | |
| message UpdatedAvailability { | |
| // Number of available spots for the given slot. 0 indicates no | |
| // availability. (required) | |
| int32 spots_open = 1; | |
| } | |
| // (optional) | |
| UpdatedAvailability availability = 4; | |
| // Updated ticket types can be piggybacked in | |
| // CheckOrderFulfillabilityResponse. If non-empty, all available ticket types | |
| // for this slot with up-to-date prices should be listed without omitting any. | |
| // (optional) | |
| repeated TicketType ticket_type = 5; | |
| } | |
| // TicketType is used to differentiate among tickets (where a ticket can be a | |
| // spot on a raft trip, an admission to a museum, etc.) with different prices | |
| // and/or availabilities due to different user types or different service | |
| // attributes. | |
| message TicketType { | |
| // The ticket id is used to differentiate among different ticket types of the | |
| // same service, and is only expected to be unique within a service. | |
| string ticket_type_id = 1; | |
| // This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc. | |
| string short_description = 2; | |
| // The price of a single ticket of this type, exclusive of any taxes. The tax | |
| // rate of Service is applied to its tickets. | |
| Price price = 3; | |
| } | |
| // Other specifications | |
| // Resource specification that disambiguates an appointment slot | |
| message ResourceIds { | |
| // The staff ID as provided in the feed or empty if not applicable or no staff | |
| // was selected. (optional) | |
| string staff_id = 1; | |
| // The room ID as provided in the feed or empty if not applicable or no room | |
| // was selected. (optional) | |
| string room_id = 2; | |
| // For Dining Reservations only: the number of seats requested in the booking. | |
| // (optional) | |
| int32 party_size = 3; | |
| } | |
| // Payment specification | |
| message PaymentProcessingParameters { | |
| enum PaymentProcessor { | |
| PAYMENT_PROCESSOR_UNSPECIFIED = 0; | |
| PROCESSOR_STRIPE = 1; | |
| PROCESSOR_BRAINTREE = 2; | |
| } | |
| // The payment processor used to process payment for a given booking. | |
| // (required) | |
| // | |
| // Replaced by the payment_processor field. | |
| PaymentProcessor processor = 1 [deprecated = true]; | |
| // The token representing the payment method that will be used to pay | |
| // for this booking. This token can be only used once. This token can be | |
| // only used for the merchant associated with this booking. | |
| // | |
| // Each processor may choose its own format for this field. | |
| // An example of Stripe's token is "tok_1C3orL2eZvKYlo2CxReMgS4K". | |
| // | |
| // Replaced by unparsed_payment_method_token, which contains | |
| // payment_method_token as one of its fields. | |
| // For example, for Stripe, unparsed_payment_method_token is a serialized | |
| // JSON object documented at https://stripe.com/docs/api#token_object. | |
| // payment_method_token is the 'id' field parsed out of that. | |
| string payment_method_token = 2 [deprecated = true]; | |
| // The full token received from Google Payments. This is typically a | |
| // serialized JSON object. See documentation from Google Payments and your | |
| // payment processor for the JSON format of the token for your processor. | |
| // https://developers.google.com/pay/api/#participating-google-pay-processors | |
| // | |
| // This token can only be used once, and only for the merchant associated with | |
| // this booking. | |
| string unparsed_payment_method_token = 5; | |
| // The payment processor API version that the given payment token is valid | |
| // for. | |
| // | |
| // Each processor may choose its own format for this field. | |
| // Stripe uses a date (e.g. "2017-06-15"). (required) | |
| string version = 3; | |
| // The payment processor whose configuration was used to generate this token. | |
| // (required) | |
| string payment_processor = 4; | |
| } | |
| enum PaymentOptionType { | |
| PAYMENT_OPTION_TYPE_UNSPECIFIED = 0; | |
| PAYMENT_OPTION_SINGLE_USE = 1; | |
| PAYMENT_OPTION_MULTI_USE = 2; | |
| PAYMENT_OPTION_UNLIMITED_USE = 3; | |
| } | |
| // This describes a payment option, such as a pack, membership, or | |
| // single-session pass after it has been purchased by a user. It includes an | |
| // identifier for the user payment option, as well as some information about | |
| // the payment option with which it is associated. | |
| message UserPaymentOption { | |
| // A unique identifier for the user payment option. This Id MUST be unique | |
| // for all UserPaymentOptions across all merchants and users. (required) | |
| string user_payment_option_id = 1; | |
| // The user payment option will be valid (usable) between start_time and | |
| // end_time set in UTC. Attempts to use a user payment option to make a | |
| // booking outside of this interval will fail. (both optional) | |
| int64 valid_start_time_sec = 2; | |
| int64 valid_end_time_sec = 3; | |
| // The type of the payment option associated with this user payment option. | |
| // This can be unlimited for a membership or subscription, multi-use for a | |
| // pack, or single-use. (required) | |
| PaymentOptionType type = 4; | |
| // The original number of uses for this user payment option when it was | |
| // purchased. This value is ignored for unlimited payment options. (required) | |
| int32 original_count = 5; | |
| // The number of uses remaining for this user payment option. If this number | |
| // is 0 for a pack, attempts to use this payment option to make a booking will | |
| // fail. (required) | |
| int32 current_count = 6; | |
| // The id of the payment option that has been used to purchase this user | |
| // payment option. (required) | |
| string payment_option_id = 7; | |
| } | |
| // Payment details that are sent when creating a new booking. | |
| message PaymentInformation { | |
| // Prepayment status of the booking. | |
| // If the prepayment_status is PREPAYMENT_PROVIDED, then | |
| // payment_transaction_id contains the associated unique transaction id for | |
| // the purchase. | |
| // If the prepayment status is PREPAYMENT_REFUNDED, then | |
| // payment_transaction_id contains the associated unique transaction id for | |
| // the refund. (required) | |
| PrepaymentStatus prepayment_status = 1; | |
| // Unique identifier for a payment transaction associated with the booking. | |
| // If the payment is PROCESSED_BY_GOOGLE, this field will be set by Google. | |
| // If the payment is PROCESSED_BY_PARTNER, this field will be left empty in | |
| // Google's CreateBooking or CreateOrder requests to the partner, and it must | |
| // be set by the partner in their responses. | |
| string payment_transaction_id = 2; | |
| // These fields must match the service price (specified in the Services feed) | |
| // or the PaymentOption corresponding with this service. | |
| // They are included in the booking request and response to verify that | |
| // the price indicated in the feed has not changed since the last feed | |
| // update. | |
| // | |
| // The price of the booking or order, exclusive of any taxes. | |
| // Existence of price or taxes does not imply that they have been paid, | |
| // prepayment_state should be used for that purpose. (required) | |
| Price price = 3; | |
| // Taxes that are calculated to be paid for this booking. | |
| // This field can only be absent in one of the following cases: | |
| // (1) the price is exempt from or already inclusive of applicable taxes; or | |
| // (2) the break down between taxes and fees is not available. | |
| // (required when neither of the above holds) | |
| Price tax_amount = 4; | |
| // Who handles payment processing? | |
| // If payment is processed by the partner, CreateBooking request will | |
| // include additional parameters (PaymentProcessingParameters) indicating | |
| // the payment method to be used to process the payment. | |
| enum PaymentProcessedBy { | |
| PAYMENT_PROCESSED_BY_UNSPECIFIED = 0; | |
| PROCESSED_BY_GOOGLE = 1; | |
| PROCESSED_BY_PARTNER = 2; | |
| } | |
| // Whether the partner or Google processed the payment. (required) | |
| PaymentProcessedBy payment_processed_by = 5; | |
| // The id of the payment option or user payment option associated with the | |
| // booking. | |
| // If a payment option is purchased as part of a booking, payment_option_id | |
| // will be set with the id of that payment option. | |
| // If an already purchased user payment option is being used to pay for a | |
| // booking, user_payment_option_id will be set with the id of that user | |
| // payment option. | |
| // When included as part of a response proto, the user_payment_option_id | |
| // should be set and must match the UserPaymentOption that is returned in the | |
| // RPC response (e.g. the user_payment_option returned in | |
| // CreateBookingResponse). (one of these required) | |
| oneof payment_id { | |
| // The id of the payment option associated with this booking. If this field | |
| // is populated, price (and tax_amount, if applicable) must be populated as | |
| // well. | |
| string payment_option_id = 6; | |
| // The id of the user payment option used to pay for this booking. | |
| string user_payment_option_id = 7; | |
| } | |
| // Defines how a deposit may be charged to the user. If there is a deposit, | |
| // this field should be set. (optional) | |
| Deposit deposit = 8; | |
| // Defines a no show fee that may be charged to the user. If the user can be | |
| // charged a no show fee, this field should be set. (optional) | |
| NoShowFee no_show_fee = 9; | |
| // Total processing fees & taxes that the user needs to pay for the order; | |
| // only applicable to partners that handle order based booking (e.g., with | |
| // CreateOrder method). (optional) | |
| Price fees_and_taxes = 10; | |
| } | |
| // Prepayment status of a booking. | |
| // Updating payment status will trigger an update on the payment status of the | |
| // associated booking (if applicable). | |
| // Currently, the only supported transition is from PREPAYMENT_PROVIDED to | |
| // PREPAYMENT_REFUNDED, which will initiate a non-reversible refund on the | |
| // associated payment transaction. | |
| enum PrepaymentStatus { | |
| // Not specified, defaults to PREPAYMENT_NOT_PROVIDED. | |
| PREPAYMENT_STATUS_UNSPECIFIED = 0; | |
| // The fee for the booking has been paid in advance. | |
| PREPAYMENT_PROVIDED = 1; | |
| // The fee for the booking has not been paid in advance. | |
| PREPAYMENT_NOT_PROVIDED = 2; | |
| // The fee was previously PREPAYMENT_PROVIDED but has now been refunded. | |
| PREPAYMENT_REFUNDED = 3; | |
| // The fee was previously PREPAYMENT_PROVIDED but now has been credited | |
| // (user given a UserPaymentOption as a voucher for the booking). | |
| // If this is set, the response should also include the updated | |
| // UserPaymentOption. | |
| PREPAYMENT_CREDITED = 4; | |
| } | |
| // The price of a service or a fee. | |
| message Price { | |
| // The price in micro-units of the currency. | |
| // Fractions of smallest currency unit will be rounded using nearest even | |
| // rounding. (e.g. For USD 2.5 cents rounded to 2 cents, 3.5 cents rounded to | |
| // 4 cents, 0.5 cents rounded to 0 cents, 2.51 cents rounded to 3 cents). | |
| // (required) | |
| int64 price_micros = 1; | |
| // The currency of the price that is defined in ISO 4217. (required) | |
| string currency_code = 2; | |
| // An optional and opaque string that identifies the pricing option that is | |
| // associated with the extended price. (optional) | |
| string pricing_option_tag = 3; | |
| } | |
| // Defines how a total price is determined from an availability. | |
| enum PriceType { | |
| // The price is for a fixed amount. This is the default value if the field is | |
| // not set. | |
| FIXED_RATE_DEFAULT = 0; | |
| // The price specified is per person, and the total price is calculated | |
| // according to the party size specified in Resources as | |
| // price_micros * party_size. A PER_PERSON price must be accompanied by a | |
| // party size in the availability resources. If it is not, a party size of one | |
| // is used. | |
| PER_PERSON = 1; | |
| } | |
| // A fee that a user may be charged if they have made a booking but do not | |
| // show up. | |
| message NoShowFee { | |
| // The amount the user may be charged if they do not show up for their | |
| // reservation. | |
| Price fee = 1; | |
| // Defines how the fee is determined from the availability. | |
| PriceType fee_type = 3; | |
| } | |
| // A deposit that the user may be charged or have a hold on their credit card | |
| // for. | |
| message Deposit { | |
| // Deposit amount. | |
| Price deposit = 1; | |
| // Minimum advance cancellation for the deposit. | |
| int64 min_advance_cancellation_sec = 2; | |
| // Defines how the deposit is determined from the availability. | |
| PriceType deposit_type = 3; | |
| } | |
| // Slot specification | |
| // An inventory slot | |
| message Slot { | |
| // ID of the merchant for the slot (required) | |
| string merchant_id = 1; | |
| // ID of the merchant Service (required) | |
| string service_id = 2; | |
| // Start time of the appointment slot in seconds of UTC time since Unix epoch. | |
| // (required) | |
| int64 start_sec = 3; | |
| // Duration of the appointment slot (required) | |
| int64 duration_sec = 4; | |
| // Opaque tag that identifies the availability slot and matches the value | |
| // provided in the availability feed (optional) | |
| string availability_tag = 5; | |
| // The set of resources that disambiguates the appointment slot, e.g. by | |
| // indicating the staff member and room selected by the user (optional) | |
| ResourceIds resources = 6; | |
| } | |
| // User specification | |
| // Personal information about the person making a booking | |
| message UserInformation { | |
| // Unique ID of the user to the partner, chosen by Reserve with Google. | |
| // (required) | |
| string user_id = 1; | |
| // Given name of the user (maximum 40 characters) (required) | |
| string given_name = 2; | |
| // Family name of the user (maximum 40 characters) (required) | |
| string family_name = 3; | |
| // Address of the user (optional) | |
| PostalAddress address = 4; | |
| // Phone number of the user (required) | |
| string telephone = 5; | |
| // Email address of the user (required) | |
| string email = 6; | |
| } | |
| // The postal address for a merchant. | |
| message PostalAddress { | |
| // The country, e.g. "USA". (required) | |
| string country = 1; | |
| // The locality/city, e.g. "Mountain View". (required) | |
| string locality = 2; | |
| // The region/state/province, e.g. "CA". (required) | |
| string region = 3; | |
| // The postal code, e.g. "94043". (required) | |
| string postal_code = 4; | |
| // The street address, e.g. "1600 Amphitheatre Pkwy". (required) | |
| string street_address = 5; | |
| } |