// API v3 public interface declaration syntax = "proto3"; package ext.maps.booking.partner.v3; // +------+------------------------------+----------------------------------+ // | Verb | HTTP Path | Request/Response Body | // +------+------------------------------+----------------------------------+ // | GET | /v3/HealthCheck | - | // | | | - | // +------+------------------------------+----------------------------------+ // | POST | /v3/BatchGetWaitEstimates | BatchGetWaitEstimatesRequest | // | | | BatchGetWaitEstimatesResponse | // +------+------------------------------+----------------------------------+ // | POST | /v3/CreateWaitlistEntry | CreateWaitlistEntryRequest | // | | | CreateWaitlistEntryResponse | // +------+------------------------------+----------------------------------+ // | POST | /v3/GetWaitlistEntry | GetWaitlistEntryRequest | // | | | GetWaitlistEntryResponse | // +------+------------------------------+----------------------------------+ // | POST | /v3/DeleteWaitlistEntry | DeleteWaitlistEntryRequest | // | | | google.protobuf.Empty | // +------+------------------------------+----------------------------------+ // BatchGetWaitEstimates method // Batch request for the wait estimates for the specified merchant, service and // party sizes. message BatchGetWaitEstimatesRequest { // Required. Partner-provided ID for the merchant. string merchant_id = 1; // Required. Partner-provided ID for the service. string service_id = 2; // Required. The different party sizes WaitEstimates are requested for. // WaitEstimates may differ with the number of people in the party. A single // request will not include duplicate party sizes. repeated int32 party_size = 3; } // Response for the BatchGetWaitEstimates RPC with the wait estimates of the // specified merchant, service and party sizes. message BatchGetWaitEstimatesResponse { // Required. A status for the waitlist that indicates whether new users can // join and what the reason is if they can’t join. If the waitlist is not // open, all other fields in the BatchGetWaitEstimatesResponse are expected to // be unset. WaitlistStatus waitlist_status = 1; // The wait estimates for each party size requested. The response should // contain exactly one wait estimate for each party size sent in the request. // If a party size is not available for some reason, prefer ommitting it // instead of returning an error so that the user will have some options to // choose from. repeated WaitEstimate wait_estimate = 2; } // A status for the waitlist that determines if new users can join and what // the reason is if they can’t join. enum WaitlistStatus { WAITLIST_STATUS_UNSPECIFIED = 0; // The waitlist is open and is accepting new users. OPEN = 1; // There is currently no wait and users should arrive at the merchant // without joining the waitlist. CLOSED_NO_WAIT = 2; // The waitlist is not currently accepting new users because it is full // or closed for other reasons. CLOSED_OTHER = 3; } // The range of time for the current estimated seat time for the user. Estimated // seat time range must change over time when the merchant or partner updates // their estimates. message EstimatedSeatTimeRange { // Required. The lower bound for the range. Expressed as the number of seconds // since the Unix epoch. int64 start_seconds = 1; // Required. The upper bound for the range. Expressed as the number of seconds // since the Unix epoch. int64 end_seconds = 2; } // Contains fields measuring how long (in time or # of people) until the // user is ready to leave the waitlist and be seated. message WaitLength { // The count of how many other parties are ahead of the user in the waitlist. // parties_ahead_count must change over time as parties ahead // in the waitlist are seated or leave the waitlist. Either // parties_ahead_count or estimated_seat_time_range must be populated. Both // should be populated. int32 parties_ahead_count = 1; // The range of time that the user is estimated to be seated in. Either // parties_ahead_count or estimated_seat_time_range must be populated. Both // should be populated. EstimatedSeatTimeRange estimated_seat_time_range = 2; } // The confirmation modes used when joining the waitlist. enum WaitlistConfirmationMode { // The confirmation mode was not specified. // Synchronous confirmation will be assumed. WAITLIST_CONFIRMATION_MODE_UNSPECIFIED = 0; // Waitlist entries will be confirmed synchronously. WAITLIST_CONFIRMATION_MODE_SYNCHRONOUS = 1; // Waitlist entries will be confirmed asynchronously. WAITLIST_CONFIRMATION_MODE_ASYNCHRONOUS = 2; } // The wait estimate for a particular party size, merchant and service. message WaitEstimate { // Required. The party size this wait estimate applies to. int32 party_size = 1; // Required. Contains fields measuring how long (in time or # of people) until // the user is ready to leave the waitlist and be seated. WaitLength wait_length = 2; // Required. Indicates whether waitlist entries for this wait estimate will be // confirmed synchronously or asynchronously. An UNSPECIFIED value will be // interpreted as synchronous. WaitlistConfirmationMode waitlist_confirmation_mode = 3; } // CreateWaitlistEntry method // Request for a user to join the waitlist. // // Reserve with Google may retry REST HTTP requests if no response is // received. If the exact same CreateWaitlistEntry is received a second time, // then the same CreateWaitlistResponse must be returned. A second waitlist // entry must not be created. message CreateWaitlistEntryRequest { // Required. Partner-provided ID for the merchant. string merchant_id = 1; // Required. Partner-provided ID for the service. string service_id = 2; // Required. The party size requested for the waitlist entry. int32 party_size = 3; // Required. Personal information of the user joining the waitlist. UserInformation user_information = 4; // A string from the user which contains any special requests or additional // information that they would like to notify the merchant about. // This will be populated when the user submits an additional request to // Reserve with Google. The partner can disable this functionality at the // service level by setting supports_additional_request to false in the // service feed. string additional_request = 5; // Required. Used to differentiate retries from separate requests. If the // exact same CreateWaitlistEntry is received a second time, (including // idempotency_token) then the same CreateWaitlistResponse must be returned. string idempotency_token = 6; } // Response for the CreateWaitlistEntry RPC with the waitlist entry ID or any // failing business logic information. message CreateWaitlistEntryResponse { // Unique partner-provided ID for the newly created entry in the waitlist. // Required if the waitlist entry was created successfully. Unique for all // time. string waitlist_entry_id = 1; WaitlistBusinessLogicFailure waitlist_business_logic_failure = 2; } // GetWaitlistEntry method // Get the waitlist entry corresponding to the provided waitlist entry ID. message GetWaitlistEntryRequest { // Required. The partner-provided waitlist entry ID to request info for. string waitlist_entry_id = 1; } // Response with the waitlist entry corresponding to the provided // waitlist entry ID. message GetWaitlistEntryResponse { // Required. The partner-provided information about a user’s waitlist entry. WaitlistEntry waitlist_entry = 1; } // DeleteWaitlistEntry method // Cancel the user's entry in the waitlist. message DeleteWaitlistEntryRequest { // Required. The partner-provided ID for the waitlist entry to be deleted. string waitlist_entry_id = 1; } // WaitlistEntry specification enum WaitlistEntryState { WAITLIST_ENTRY_STATE_UNSPECIFIED = 0; // The waitlist entry was created and the user is currently waiting in the // waitlist. WAITING = 1; // The waitlist entry is awaiting confirmation by the merchant. PENDING_MERCHANT_CONFIRMATION = 8; // The waitlist entry has been canceled by the user. Cancellation for no-shows // should use the NO_SHOW state. CANCELED = 2; // The waitlist entry has been declined by the merchant. DECLINED_BY_MERCHANT = 7; // The merchant is ready to serve the user. SERVICE_READY = 3; // The user has checked in with the host and is waiting to be seated. CHECKED_IN = 4; // The user has arrived and been seated by the merchant. SEATED = 5; // The user did not arrive at the merchant in time and lost their space. NO_SHOW = 6; } // The times at which the waitlist entry changed state. message WaitlistEntryStateTimes { // Required. The time at which the waitlist entry was created. // In seconds since Unix epoch. int64 created_time_seconds = 1; // The time that the waitlist entry was cancelled. Must be populated // when the waitlist entry has been canceled but not before. // In seconds since Unix epoch. int64 canceled_time_seconds = 2; // The time the merchant was ready to serve the user. // service_readied_time_seconds must be populated after the merchant is // ready to serve the user but not before. // In seconds since Unix epoch. int64 service_readied_time_seconds = 3; // The actual time the user checked in with the host. checked_in_time must be // populated after the user has checked in with the merchant but not before. // In seconds since Unix epoch. int64 checked_in_time_seconds = 4; // The seated time for the user. seated_time_seconds must be populated // when the user has been seated but not before. // In seconds since Unix epoch. int64 seated_time_seconds = 5; // The time that the user was marked as a no-show. marked_no_show_time_seconds // must be populated when the user has been marked a no-show but not before. // In seconds since Unix epoch. int64 marked_no_show_time_seconds = 6; } // An entry in the waitlist. message WaitlistEntry { // Required. WaitlistEntryState waitlist_entry_state = 1; // Required. The times at which the waitlist entry changed state. WaitlistEntryStateTimes waitlist_entry_state_times = 2; // Required. Contains fields measuring how long (in time or # of people) until // the user is ready to leave the waitlist and be seated. WaitEstimate wait_estimate = 3; } // WaitlistBusinessLogicFailure specification // Status data that conveys why creating a waitlist entry fails. // If there is a business logic error that is not captured here, please // reach out to the Reserve with Google team to add it to this list. Other // errors should be returned using standard HTTP error codes. message WaitlistBusinessLogicFailure { enum Cause { // Default value: Don't use; amounts to an "unknown error" // Unexpected errors must be returned using standard HTTP error codes. CAUSE_UNSPECIFIED = 0; // The user has already booked a waitlist entry with the partner. EXISTING_WAITLIST_ENTRY = 1; // The requested party size is below the merchant’s minimum. BELOW_MIN_PARTY_SIZE = 2; // The requested party size is above the merchant’s maximum. ABOVE_MAX_PARTY_SIZE = 3; // The requested merchant is currently closed. MERCHANT_CLOSED = 4; // There is currently no wait and the user should walk in without joining // the waitlist. NO_WAIT = 5; // The waitlist is at capacity and new users are not being accepted at this // time. WAITLIST_FULL = 6; // The country of the phone number is not supported. PHONE_NUMBER_COUNTRY_UNSUPPORTED = 7; // The waitlist is closed and not accepting new users. This is expected when // the waitlist enters state CLOSED_OTHER after the user has already seen a // wait estimate. WAITLIST_CLOSED = 8; } // Required. The reason why the booking failed. Cause cause = 1; // This optional field is used for the partner to include additional // information for debugging purposes only. string description = 2; } // User specification // Personal information about the person taking action (e.g. making a // booking, an order, or creates a parking session). 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) // Consistent with the international definition in ITU-T E.123 recommendation. // However, local conventions are also followed, such as using '-' instead of // a space as separator. For example, a phone number in the US can be // written as '+1 415-736-0000' string telephone = 5; // Email address of the user (required except for waitlists) string email = 6; // User's language code, in IETF BCP 47 format. It is sent only if a partner // is allowed to use this feature. Please contact Reserve with Google team // to be added to the allowlist and receive this code. (optional) string language_code = 7; reserved 8; } // The postal address for a merchant. message PostalAddress { // The country, using ISO 3166-1 alpha-2 country code, e.g. "US" (required) string country = 1; // The locality/city, e.g. "Mountain View". (required) string locality = 2; // The region/state/province, e.g. "CA". This field is only required in // countries where region is commonly a part of the address. (optional) 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; }
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2024-11-26 (世界標準時間)。
[null,null,["上次更新時間:2024-11-26 (世界標準時間)。"],[[["The Google Maps Booking Partner API v3 enables management of waitlists, providing methods for retrieving wait estimates, creating and managing waitlist entries, and checking service health."],["It defines data structures for waitlist requests, responses, statuses, estimates, user information, and potential business logic failures, ensuring detailed information exchange."],["User information for booking or ordering includes personal identifiers, contact details, and an optional address, with specific data types and constraints for consistency."],["Partners can use idempotency tokens to prevent duplicate entries from request retries, and Reserve with Google may retry requests if no response is received."],["While the API supports language customization via the `language_code` field, partners need explicit authorization from \"Reserve with Google\" to utilize this feature."]]],[]]