Merge sso://maps-booking.googlesource.com/maps-booking-v3
diff --git a/api/api.go b/api/api.go index 13b8573..be96742 100644 --- a/api/api.go +++ b/api/api.go
@@ -546,7 +546,7 @@ // UserId check first. reqPB := &mpb.ListOrdersRequest{ - UserId: userID, + Ids: &mpb.ListOrdersRequest_UserId{userID}, } respUser, err := sendListOrdersRequest(reqPB, conn) if err != nil { @@ -558,9 +558,12 @@ // Still here? OrderId check. reqPB.Reset() + var orderIDs mpb.ListOrdersRequest_OrderIds for _, order := range orders { - reqPB.OrderId = append(reqPB.OrderId, order.GetOrderId()) + orderIDs.OrderId = append(orderIDs.OrderId, order.GetOrderId()) } + reqPB.Ids = &mpb.ListOrdersRequest_OrderIds_{&orderIDs} + respOrder, err := sendListOrdersRequest(reqPB, conn) if err != nil { return err
diff --git a/proto/v3.proto b/proto/v3.proto index 1c217bb..c443878 100644 --- a/proto/v3.proto +++ b/proto/v3.proto
@@ -1,274 +1,219 @@ +// API v3 public interface declaration syntax = "proto3"; -package v3; +package ext.maps.booking.partner.v3; -// [START postaladdr_definition] -// 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; -} -// [END postaladdr_definition] +// +------+------------------------------+----------------------------------+ +// | 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 | +// +------+------------------------------+----------------------------------+ -// [START geocoord_definition] -// The Geo data of a location, including latitude, longitude, and address. -message GeoCoordinates { - double latitude = 1; // In degrees. (optional) - double longitude = 2; // In degrees. (optional) - PostalAddress address = 3; // (required) -} -// [END geocoord_definition] +// CheckAvailability method -// [START price_definition] -// 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; -} -// [END price_definition] - -// [START taxrate_definition] -// A tax rate applied when charging the user for a service, and which can be set -// on either a per merchant, or per service basis. -message TaxRate { - // A tax rate in millionths of one percent, effectively giving 6 decimals of - // precision. For example, if the tax rate is 7.253%, this field should be set - // to 7253000. - // - // If this field is left unset or set to 0, the total price charged to a user - // for any service provided by this merchant is the exact price specified by - // Service.price. The service price is assumed to be exempt from or already - // inclusive of applicable taxes. Taxes will not be shown to the user as a - // separate line item. - // - // If this field is set to any nonzero value, the total price charged to a - // user for any service provided by this merchant will include the service - // price plus the tax assessed using the tax rate provided here. Fractions of - // the smallest currency unit (for example, fractions of one cent) will be - // rounded using nearest even rounding. Taxes will be shown to the user as a - // separate line item. (required) - int32 micro_percent = 1; -} -// [END taxrate_definition] - -// [START schedulingrules_definition] -// The scheduling rules for a service. -message SchedulingRules { - // The minimum advance notice in seconds required to book an appointment. - // (optional) - int64 min_advance_booking = 1; - - // The minimum advance notice in seconds required to cancel a booked - // appointment online. (optional) - int64 min_advance_online_canceling = 2; - - // The fee for canceling within the minimum advance notice period. - Price late_cancellation_fee = 3 [deprecated = true]; - - // The fee for no-show without canceling. - Price noshow_fee = 4 [deprecated = true]; -} -// [END schedulingrules_definition] - -// This defines the ingestion source type. -enum IngestionSource { - SOURCE_UNKNOWN = 0; - - // This ingestion is from an uploaded feed file. - SOURCE_FEED = 1; - - // This ingestion is from an API call. - SOURCE_API = 2; +// Request to check availability for a Slot. +message CheckAvailabilityRequest { + // The appointment slot that is being checked (required) + Slot slot = 1; } -// An empty boilplate proto for the Ingestion Queue in Spanner. -message IngestionQueuePayload { -} +// 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 types of content that we can ingest through feeds or APIs. -enum ContentType { - CONTENT_UNKNOWN = 0; - CONTENT_MERCHANT = 1; - CONTENT_SERVICE = 2; - CONTENT_AVAILABILITY = 3; - CONTENT_PAYMENT_OPTION = 4; - CONTENT_PAYMENT_OPTION_SERVICE = 5; -} + // The end time is not shown to the user. + DO_NOT_SHOW_DURATION = 1; -message IngestionStatus { - // The status code of an Ingestion event: a feed upload or an API call. - // Only used for logging the ingestion status in the IngestionMetadata - // table, do NOT use it in the code's control flow. - enum Code { - // An unknown status for Ingestion, shouldn't use it. - STATUS_UNKNOWN = 0; - - // 1-99 for Feed upload. - // A feed has been uploaded. - STATUS_FEED_UPLOADED = 1; - // A feed has been added to the Ingestion Queue. - STATUS_FEED_ENQUEUED = 2; - // A feed has been picked up from the queue and started processing. - STATUS_FEED_PROCESSING_STARTED = 3; - // A feed has been processed successfully. - STATUS_FEED_PROCESSING_SUCCEEDED = 4; - // A feed has failed the processing. - STATUS_FEED_PROCESSING_FAILED = 5; - // A feed duplicate was uploaded. - STATUS_FEED_DUPLICATED = 6; - - // 101-199 for API. - // An API has been called. - STATUS_API_CALLED = 101; - // An API has been processed successfully. - STATUS_API_PROCESSING_SUCCEEDED = 102; - // An API has failed the processing. - STATUS_API_PROCESSING_FAILED = 103; + // 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; - // The code of the status. - Code code = 1; - - // Microseconds since epoch when the ingestion updates its status code. - int64 timestamp_micros = 2; - - // A human description of the error if any. - string internal_error_details = 3; - string partner_visible_error_details = 4; + // 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; } -// [START timerange_definition] -// A closed-open time range, i.e. [begin_sec, end_sec) -message TimeRange { - // Seconds of UTC time since Unix epoch (required) - int64 begin_sec = 1; - // Seconds of UTC time since Unix epoch (required) - int64 end_sec = 2; +// 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; } -// [END timerange_definition] -// [START pricetype_definition] -// 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; +// 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; } -// [END pricetype_definition] -// [START noshowfee_definition] -// 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; +// CheckOrderFulfillability method - // Defines how the fee is determined from the availability. - PriceType fee_type = 3; -} -// [END noshowfee_definition] - -// [START deposit_definition] -// 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; -} -// [END deposit_definition] - -// [START RequireCreditCard_definition] -// Defines whether a credit card is required in order to book an appointment. -enum RequireCreditCard { - // The credit card requirement is not explicitly specified and the - // behaviour is identical to the one specified for CONDITIONAL. - REQUIRE_CREDIT_CARD_UNSPECIFIED = 0; - - // Google will require a credit card for the booking if any of the following - // conditions are met: - // * the availability has a price and the prepayment_type is REQUIRED - // * the no_show_fee is set - // * the deposit field is set. - REQUIRE_CREDIT_CARD_CONDITIONAL = 1; - - // A credit card is always required in order to book this availability - // regardless of other field values. - REQUIRE_CREDIT_CARD_ALWAYS = 2; -} -// [END RequireCreditCard_definition] - -// [START ActionLink_definition] -// An action URL with associated language and list of countries restricted to. -message ActionLink { - // The entry point URL for this action link. - string url = 1; - - // The BCP-47 language tag identifying the language in which the content - // from this URI is available. - string language = 2; - - // ISO 3166-1 alpha-2 country code. Leave empty for unrestricted visibility. - repeated string restricted_country = 3; -} -// [END ActionLink_definition] - -// [START message_slot] -// An inventory slot -message Slot { - // ID of the merchant for the slot (required) +// Request to check the fulfillability of an order. +message CheckOrderFulfillabilityRequest { + // The merchant that this order is intended for. (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; + // The line items in this order. All services requested must belong to the + // specified merchant. (required) + repeated LineItem item = 2; } -// [END message_slot] -// [START message_lease] +// 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. @@ -292,9 +237,111 @@ // Lease ID (required) string lease_id = 1; } -// [END message_lease] -// [START message_booking] +// 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) @@ -313,33 +360,286 @@ // (optional) PaymentInformation payment_information = 5; } -// [END message_booking] -// [START user_definition] -// 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; +// BookingStatus specification - // Given name of the user (required) - string given_name = 2; - - // Family name of the user (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; +// 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; } -// [END user_definition] -// [START paymentprocessing_definition] +// 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; @@ -386,18 +686,14 @@ // (required) string payment_processor = 4; } -// [END paymentprocessing_definition] -// [START paymentoption_definition] enum PaymentOptionType { PAYMENT_OPTION_TYPE_UNSPECIFIED = 0; PAYMENT_OPTION_SINGLE_USE = 1; PAYMENT_OPTION_MULTI_USE = 2; PAYMENT_OPTION_UNLIMITED_USE = 3; } -// [END paymentoption_definition] -// [START userpaymentoption_definition] // 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 @@ -426,9 +722,7 @@ // payment option. (required) string payment_option_id = 7; } -// [END userpaymentoption_definition] -// [START paymentinfo_definition] // Payment details that are sent when creating a new booking. message PaymentInformation { // Prepayment status of the booking. @@ -441,7 +735,10 @@ PrepaymentStatus prepayment_status = 1; // Unique identifier for a payment transaction associated with the booking. - // Empty if not applicable. (required) + // 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) @@ -505,101 +802,7 @@ // CreateOrder method). (optional) Price fees_and_taxes = 10; } -// [END paymentinfo_definition] -// [START bookingstatus_definition] -// 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; -} -// [END bookingstatus_definition] - -// [START creditcardtype_definition] -// 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; -} -// [END creditcardtype_definition] - -// [START bookingfailure_definition] -// 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; - } - // 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; -} -// [END bookingfailure_definition] - -// [START prepaymentstatus_definition] // Prepayment status of a booking. // Updating payment status will trigger an update on the payment status of the // associated booking (if applicable). @@ -621,465 +824,119 @@ // UserPaymentOption. PREPAYMENT_CREDITED = 4; } -// [END prepaymentstatus_definition] -// [START message_slot_availability] -// 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; -} -// [END message_slot_availability] - -// [START message_availability_update] -// 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; -} -// [END message_availability_update] - -// [START resources_definition] -// 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; -} -// [END resources_definition] - -// [START tickettype_definition] -// 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; -} -// [END tickettype_definition] - -// [START lineitem_definition] -// 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. +// 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 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 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; -} -// [END lineitem_definition] - -// [START lineitemfulfillability_definition] -// 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 incorrect. - 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. (optional) - int32 spots_open = 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; -} -// [END lineitemfulfillability_definition] - -// [START orderfulfillability_definition] -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; -} -// [END orderfulfillability_definition] - -// [START order_definition] -// 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; -} -// [END order_definition] - -// [START orderfailure_definition] -// 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; -} -// [END orderfailure_definition] - -// [START method_check_availability] -// Request to check availability for a Slot. -message CheckAvailabilityRequest { - // The appointment slot that is being checked (required) - Slot slot = 1; + 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; } -// 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; -} -// [END method_check_availability] - -// [START method_get_booking_status] -// Request to get booking status and prepayment status for a Booking. -message GetBookingStatusRequest { - // ID of the existing booking (required) - string booking_id = 1; +// 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; } -// Response for the GetBookingStatus RPC with booking status and prepayment -// status. -message GetBookingStatusResponse { - // ID of the booking (required) - string booking_id = 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; - // Status of the booking (required) - BookingStatus booking_status = 2; - - // Prepayment status of the booking (required) - PrepaymentStatus prepayment_status = 3; + // Defines how the fee is determined from the availability. + PriceType fee_type = 3; } -// [END method_get_booking_status] -// [START method_check_order_fulfillability] -// Request to check the fulfillability of an order. -message CheckOrderFulfillabilityRequest { - // The merchant that this order is intended for. (required) +// 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; - // The line items in this order. All services requested must belong to the - // specified merchant. (required) - repeated LineItem item = 2; -} + // ID of the merchant Service (required) + string service_id = 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. + // Start time of the appointment slot in seconds of UTC time since Unix epoch. // (required) - Price fees_and_taxes = 2; -} -// [END method_check_order_fulfillability] + int64 start_sec = 3; -// [START method_create_booking] -// 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; + // Duration of the appointment slot (required) + int64 duration_sec = 4; - // 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; + // Opaque tag that identifies the availability slot and matches the value + // provided in the availability feed (optional) + string availability_tag = 5; - // 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; + // 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; } -// Response with the created Booking for an inventory slot. -message CreateBookingResponse { - // The created booking (required) - Booking booking = 1; +// User specification - // 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; -} -// [END method_create_booking] - -// [START method_create_order] -// 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 { - // The order created. (required) - 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) and all - // other fields in the CreateOrderResponse are expected to be unset. (required - // if failure occurs) - OrderFailure order_failure = 2; -} -// [END method_create_order] - -// [START method_create_lease] -// Request to create a Leaese 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 +// Personal information about the person making a booking +message UserInformation { + // Unique ID of the user to the partner, chosen by Reserve with Google. // (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; -} -// [END method_create_lease] - -// [START method_list_bookings] -// Request to list all bookings for a user -message ListBookingsRequest { - // ID of the user (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; } -// Response for the ListBookings RPC with all bookings for the requested user. -message ListBookingsResponse { - // All bookings of the user (required) - repeated Booking bookings = 1; -} -// [END method_list_bookings] - -// [START method_list_orders] -// Request to list orders. -message ListOrdersRequest { - // ID of the user (required only if order_id is not set). - string user_id = 1; - // If set, return only the specified orders; otherwise, return all orders of - // the user. (required only if user_id is not set). - repeated string order_id = 2; -} - -// Response for the ListOrders RPC. -message ListOrdersResponse { - // All requested orders (required) - repeated Order order = 1; -} -// [END method_list_orders] - -// [START method_update_booking] -// 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; -} -// [END method_update_booking] +// 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; +} \ No newline at end of file
diff --git a/testclient/bookingBasedTestClient.go b/testclient/bookingClient.go similarity index 100% rename from testclient/bookingBasedTestClient.go rename to testclient/bookingClient.go
diff --git a/testclient/orderBasedTestClient.go b/testclient/orderClient.go similarity index 100% rename from testclient/orderBasedTestClient.go rename to testclient/orderClient.go
diff --git a/v3/v3.pb.go b/v3/v3.pb.go index 2df1389..3db0270 100644 --- a/v3/v3.pb.go +++ b/v3/v3.pb.go
@@ -1,62 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: v3.proto -/* -Package v3 is a generated protocol buffer package. - -It is generated from these files: - v3.proto - -It has these top-level messages: - PostalAddress - GeoCoordinates - Price - TaxRate - SchedulingRules - IngestionQueuePayload - IngestionStatus - TimeRange - NoShowFee - Deposit - ActionLink - Slot - Lease - LeaseReference - Booking - UserInformation - PaymentProcessingParameters - UserPaymentOption - PaymentInformation - BookingFailure - SlotAvailability - AvailabilityUpdate - ResourceIds - TicketType - LineItem - LineItemFulfillability - OrderFulfillability - Order - OrderFailure - CheckAvailabilityRequest - CheckAvailabilityResponse - GetBookingStatusRequest - GetBookingStatusResponse - CheckOrderFulfillabilityRequest - CheckOrderFulfillabilityResponse - CreateBookingRequest - CreateBookingResponse - CreateOrderRequest - CreateOrderResponse - CreateLeaseRequest - CreateLeaseResponse - ListBookingsRequest - ListBookingsResponse - ListOrdersRequest - ListOrdersResponse - UpdateBookingRequest - UpdateBookingResponse -*/ -package v3 +package ext_maps_booking_partner_v3 import proto "github.com/golang/protobuf/proto" import fmt "fmt" @@ -73,161 +18,6 @@ // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package -// This defines the ingestion source type. -type IngestionSource int32 - -const ( - IngestionSource_SOURCE_UNKNOWN IngestionSource = 0 - // This ingestion is from an uploaded feed file. - IngestionSource_SOURCE_FEED IngestionSource = 1 - // This ingestion is from an API call. - IngestionSource_SOURCE_API IngestionSource = 2 -) - -var IngestionSource_name = map[int32]string{ - 0: "SOURCE_UNKNOWN", - 1: "SOURCE_FEED", - 2: "SOURCE_API", -} -var IngestionSource_value = map[string]int32{ - "SOURCE_UNKNOWN": 0, - "SOURCE_FEED": 1, - "SOURCE_API": 2, -} - -func (x IngestionSource) String() string { - return proto.EnumName(IngestionSource_name, int32(x)) -} -func (IngestionSource) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// The types of content that we can ingest through feeds or APIs. -type ContentType int32 - -const ( - ContentType_CONTENT_UNKNOWN ContentType = 0 - ContentType_CONTENT_MERCHANT ContentType = 1 - ContentType_CONTENT_SERVICE ContentType = 2 - ContentType_CONTENT_AVAILABILITY ContentType = 3 - ContentType_CONTENT_PAYMENT_OPTION ContentType = 4 - ContentType_CONTENT_PAYMENT_OPTION_SERVICE ContentType = 5 -) - -var ContentType_name = map[int32]string{ - 0: "CONTENT_UNKNOWN", - 1: "CONTENT_MERCHANT", - 2: "CONTENT_SERVICE", - 3: "CONTENT_AVAILABILITY", - 4: "CONTENT_PAYMENT_OPTION", - 5: "CONTENT_PAYMENT_OPTION_SERVICE", -} -var ContentType_value = map[string]int32{ - "CONTENT_UNKNOWN": 0, - "CONTENT_MERCHANT": 1, - "CONTENT_SERVICE": 2, - "CONTENT_AVAILABILITY": 3, - "CONTENT_PAYMENT_OPTION": 4, - "CONTENT_PAYMENT_OPTION_SERVICE": 5, -} - -func (x ContentType) String() string { - return proto.EnumName(ContentType_name, int32(x)) -} -func (ContentType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// [START pricetype_definition] -// Defines how a total price is determined from an availability. -type PriceType int32 - -const ( - // The price is for a fixed amount. This is the default value if the field is - // not set. - PriceType_FIXED_RATE_DEFAULT PriceType = 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. - PriceType_PER_PERSON PriceType = 1 -) - -var PriceType_name = map[int32]string{ - 0: "FIXED_RATE_DEFAULT", - 1: "PER_PERSON", -} -var PriceType_value = map[string]int32{ - "FIXED_RATE_DEFAULT": 0, - "PER_PERSON": 1, -} - -func (x PriceType) String() string { - return proto.EnumName(PriceType_name, int32(x)) -} -func (PriceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -// [START RequireCreditCard_definition] -// Defines whether a credit card is required in order to book an appointment. -type RequireCreditCard int32 - -const ( - // The credit card requirement is not explicitly specified and the - // behaviour is identical to the one specified for CONDITIONAL. - RequireCreditCard_REQUIRE_CREDIT_CARD_UNSPECIFIED RequireCreditCard = 0 - // Google will require a credit card for the booking if any of the following - // conditions are met: - // * the availability has a price and the prepayment_type is REQUIRED - // * the no_show_fee is set - // * the deposit field is set. - RequireCreditCard_REQUIRE_CREDIT_CARD_CONDITIONAL RequireCreditCard = 1 - // A credit card is always required in order to book this availability - // regardless of other field values. - RequireCreditCard_REQUIRE_CREDIT_CARD_ALWAYS RequireCreditCard = 2 -) - -var RequireCreditCard_name = map[int32]string{ - 0: "REQUIRE_CREDIT_CARD_UNSPECIFIED", - 1: "REQUIRE_CREDIT_CARD_CONDITIONAL", - 2: "REQUIRE_CREDIT_CARD_ALWAYS", -} -var RequireCreditCard_value = map[string]int32{ - "REQUIRE_CREDIT_CARD_UNSPECIFIED": 0, - "REQUIRE_CREDIT_CARD_CONDITIONAL": 1, - "REQUIRE_CREDIT_CARD_ALWAYS": 2, -} - -func (x RequireCreditCard) String() string { - return proto.EnumName(RequireCreditCard_name, int32(x)) -} -func (RequireCreditCard) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -// [START paymentoption_definition] -type PaymentOptionType int32 - -const ( - PaymentOptionType_PAYMENT_OPTION_TYPE_UNSPECIFIED PaymentOptionType = 0 - PaymentOptionType_PAYMENT_OPTION_SINGLE_USE PaymentOptionType = 1 - PaymentOptionType_PAYMENT_OPTION_MULTI_USE PaymentOptionType = 2 - PaymentOptionType_PAYMENT_OPTION_UNLIMITED_USE PaymentOptionType = 3 -) - -var PaymentOptionType_name = map[int32]string{ - 0: "PAYMENT_OPTION_TYPE_UNSPECIFIED", - 1: "PAYMENT_OPTION_SINGLE_USE", - 2: "PAYMENT_OPTION_MULTI_USE", - 3: "PAYMENT_OPTION_UNLIMITED_USE", -} -var PaymentOptionType_value = map[string]int32{ - "PAYMENT_OPTION_TYPE_UNSPECIFIED": 0, - "PAYMENT_OPTION_SINGLE_USE": 1, - "PAYMENT_OPTION_MULTI_USE": 2, - "PAYMENT_OPTION_UNLIMITED_USE": 3, -} - -func (x PaymentOptionType) String() string { - return proto.EnumName(PaymentOptionType_name, int32(x)) -} -func (PaymentOptionType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -// [START bookingstatus_definition] // Status of a booking. // // Updating booking status does not change the status of the associated payment. @@ -274,9 +64,10 @@ func (x BookingStatus) String() string { return proto.EnumName(BookingStatus_name, int32(x)) } -func (BookingStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } +func (BookingStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{0} +} -// [START creditcardtype_definition] // Used when booking/order failure cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to // indicate the type of credit card that was rejected. type CreditCardType int32 @@ -308,9 +99,39 @@ func (x CreditCardType) String() string { return proto.EnumName(CreditCardType_name, int32(x)) } -func (CreditCardType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } +func (CreditCardType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{1} +} -// [START prepaymentstatus_definition] +type PaymentOptionType int32 + +const ( + PaymentOptionType_PAYMENT_OPTION_TYPE_UNSPECIFIED PaymentOptionType = 0 + PaymentOptionType_PAYMENT_OPTION_SINGLE_USE PaymentOptionType = 1 + PaymentOptionType_PAYMENT_OPTION_MULTI_USE PaymentOptionType = 2 + PaymentOptionType_PAYMENT_OPTION_UNLIMITED_USE PaymentOptionType = 3 +) + +var PaymentOptionType_name = map[int32]string{ + 0: "PAYMENT_OPTION_TYPE_UNSPECIFIED", + 1: "PAYMENT_OPTION_SINGLE_USE", + 2: "PAYMENT_OPTION_MULTI_USE", + 3: "PAYMENT_OPTION_UNLIMITED_USE", +} +var PaymentOptionType_value = map[string]int32{ + "PAYMENT_OPTION_TYPE_UNSPECIFIED": 0, + "PAYMENT_OPTION_SINGLE_USE": 1, + "PAYMENT_OPTION_MULTI_USE": 2, + "PAYMENT_OPTION_UNLIMITED_USE": 3, +} + +func (x PaymentOptionType) String() string { + return proto.EnumName(PaymentOptionType_name, int32(x)) +} +func (PaymentOptionType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{2} +} + // Prepayment status of a booking. // Updating payment status will trigger an update on the payment status of the // associated booking (if applicable). @@ -353,122 +174,71 @@ func (x PrepaymentStatus) String() string { return proto.EnumName(PrepaymentStatus_name, int32(x)) } -func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } +func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{3} +} -// The status code of an Ingestion event: a feed upload or an API call. -// Only used for logging the ingestion status in the IngestionMetadata -// table, do NOT use it in the code's control flow. -type IngestionStatus_Code int32 +// Defines how a total price is determined from an availability. +type PriceType int32 const ( - // An unknown status for Ingestion, shouldn't use it. - IngestionStatus_STATUS_UNKNOWN IngestionStatus_Code = 0 - // 1-99 for Feed upload. - // A feed has been uploaded. - IngestionStatus_STATUS_FEED_UPLOADED IngestionStatus_Code = 1 - // A feed has been added to the Ingestion Queue. - IngestionStatus_STATUS_FEED_ENQUEUED IngestionStatus_Code = 2 - // A feed has been picked up from the queue and started processing. - IngestionStatus_STATUS_FEED_PROCESSING_STARTED IngestionStatus_Code = 3 - // A feed has been processed successfully. - IngestionStatus_STATUS_FEED_PROCESSING_SUCCEEDED IngestionStatus_Code = 4 - // A feed has failed the processing. - IngestionStatus_STATUS_FEED_PROCESSING_FAILED IngestionStatus_Code = 5 - // A feed duplicate was uploaded. - IngestionStatus_STATUS_FEED_DUPLICATED IngestionStatus_Code = 6 - // 101-199 for API. - // An API has been called. - IngestionStatus_STATUS_API_CALLED IngestionStatus_Code = 101 - // An API has been processed successfully. - IngestionStatus_STATUS_API_PROCESSING_SUCCEEDED IngestionStatus_Code = 102 - // An API has failed the processing. - IngestionStatus_STATUS_API_PROCESSING_FAILED IngestionStatus_Code = 103 + // The price is for a fixed amount. This is the default value if the field is + // not set. + PriceType_FIXED_RATE_DEFAULT PriceType = 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. + PriceType_PER_PERSON PriceType = 1 ) -var IngestionStatus_Code_name = map[int32]string{ - 0: "STATUS_UNKNOWN", - 1: "STATUS_FEED_UPLOADED", - 2: "STATUS_FEED_ENQUEUED", - 3: "STATUS_FEED_PROCESSING_STARTED", - 4: "STATUS_FEED_PROCESSING_SUCCEEDED", - 5: "STATUS_FEED_PROCESSING_FAILED", - 6: "STATUS_FEED_DUPLICATED", - 101: "STATUS_API_CALLED", - 102: "STATUS_API_PROCESSING_SUCCEEDED", - 103: "STATUS_API_PROCESSING_FAILED", +var PriceType_name = map[int32]string{ + 0: "FIXED_RATE_DEFAULT", + 1: "PER_PERSON", } -var IngestionStatus_Code_value = map[string]int32{ - "STATUS_UNKNOWN": 0, - "STATUS_FEED_UPLOADED": 1, - "STATUS_FEED_ENQUEUED": 2, - "STATUS_FEED_PROCESSING_STARTED": 3, - "STATUS_FEED_PROCESSING_SUCCEEDED": 4, - "STATUS_FEED_PROCESSING_FAILED": 5, - "STATUS_FEED_DUPLICATED": 6, - "STATUS_API_CALLED": 101, - "STATUS_API_PROCESSING_SUCCEEDED": 102, - "STATUS_API_PROCESSING_FAILED": 103, +var PriceType_value = map[string]int32{ + "FIXED_RATE_DEFAULT": 0, + "PER_PERSON": 1, } -func (x IngestionStatus_Code) String() string { - return proto.EnumName(IngestionStatus_Code_name, int32(x)) +func (x PriceType) String() string { + return proto.EnumName(PriceType_name, int32(x)) } -func (IngestionStatus_Code) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6, 0} } +func (PriceType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{4} +} -type PaymentProcessingParameters_PaymentProcessor int32 +// This enum indicates what requirements exist for the user to acknowledge or +// view the requested slots duration/end time. +type CheckAvailabilityResponse_DurationRequirement int32 const ( - PaymentProcessingParameters_PAYMENT_PROCESSOR_UNSPECIFIED PaymentProcessingParameters_PaymentProcessor = 0 - PaymentProcessingParameters_PROCESSOR_STRIPE PaymentProcessingParameters_PaymentProcessor = 1 - PaymentProcessingParameters_PROCESSOR_BRAINTREE PaymentProcessingParameters_PaymentProcessor = 2 + // The handling of the end time is not specified. This is the default. + CheckAvailabilityResponse_DURATION_REQUIREMENT_UNSPECIFIED CheckAvailabilityResponse_DurationRequirement = 0 + // The end time is not shown to the user. + CheckAvailabilityResponse_DO_NOT_SHOW_DURATION CheckAvailabilityResponse_DurationRequirement = 1 + // The end time has to be shown to the user before an appointment can be + // made. + CheckAvailabilityResponse_MUST_SHOW_DURATION CheckAvailabilityResponse_DurationRequirement = 2 ) -var PaymentProcessingParameters_PaymentProcessor_name = map[int32]string{ - 0: "PAYMENT_PROCESSOR_UNSPECIFIED", - 1: "PROCESSOR_STRIPE", - 2: "PROCESSOR_BRAINTREE", +var CheckAvailabilityResponse_DurationRequirement_name = map[int32]string{ + 0: "DURATION_REQUIREMENT_UNSPECIFIED", + 1: "DO_NOT_SHOW_DURATION", + 2: "MUST_SHOW_DURATION", } -var PaymentProcessingParameters_PaymentProcessor_value = map[string]int32{ - "PAYMENT_PROCESSOR_UNSPECIFIED": 0, - "PROCESSOR_STRIPE": 1, - "PROCESSOR_BRAINTREE": 2, +var CheckAvailabilityResponse_DurationRequirement_value = map[string]int32{ + "DURATION_REQUIREMENT_UNSPECIFIED": 0, + "DO_NOT_SHOW_DURATION": 1, + "MUST_SHOW_DURATION": 2, } -func (x PaymentProcessingParameters_PaymentProcessor) String() string { - return proto.EnumName(PaymentProcessingParameters_PaymentProcessor_name, int32(x)) +func (x CheckAvailabilityResponse_DurationRequirement) String() string { + return proto.EnumName(CheckAvailabilityResponse_DurationRequirement_name, int32(x)) } -func (PaymentProcessingParameters_PaymentProcessor) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{16, 0} -} - -// 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. -type PaymentInformation_PaymentProcessedBy int32 - -const ( - PaymentInformation_PAYMENT_PROCESSED_BY_UNSPECIFIED PaymentInformation_PaymentProcessedBy = 0 - PaymentInformation_PROCESSED_BY_GOOGLE PaymentInformation_PaymentProcessedBy = 1 - PaymentInformation_PROCESSED_BY_PARTNER PaymentInformation_PaymentProcessedBy = 2 -) - -var PaymentInformation_PaymentProcessedBy_name = map[int32]string{ - 0: "PAYMENT_PROCESSED_BY_UNSPECIFIED", - 1: "PROCESSED_BY_GOOGLE", - 2: "PROCESSED_BY_PARTNER", -} -var PaymentInformation_PaymentProcessedBy_value = map[string]int32{ - "PAYMENT_PROCESSED_BY_UNSPECIFIED": 0, - "PROCESSED_BY_GOOGLE": 1, - "PROCESSED_BY_PARTNER": 2, -} - -func (x PaymentInformation_PaymentProcessedBy) String() string { - return proto.EnumName(PaymentInformation_PaymentProcessedBy_name, int32(x)) -} -func (PaymentInformation_PaymentProcessedBy) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{18, 0} +func (CheckAvailabilityResponse_DurationRequirement) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{1, 0} } type BookingFailure_Cause int32 @@ -508,6 +278,8 @@ BookingFailure_BOOKING_ALREADY_CANCELLED BookingFailure_Cause = 10 // A booking that the user tried to cancel is not cancellable. BookingFailure_BOOKING_NOT_CANCELLABLE BookingFailure_Cause = 11 + // User has an existing reservation too close to this time. + BookingFailure_OVERLAPPING_RESERVATION BookingFailure_Cause = 12 ) var BookingFailure_Cause_name = map[int32]string{ @@ -523,6 +295,7 @@ 9: "USER_CANNOT_USE_PAYMENT_OPTION", 10: "BOOKING_ALREADY_CANCELLED", 11: "BOOKING_NOT_CANCELLABLE", + 12: "OVERLAPPING_RESERVATION", } var BookingFailure_Cause_value = map[string]int32{ "CAUSE_UNSPECIFIED": 0, @@ -537,94 +310,14 @@ "USER_CANNOT_USE_PAYMENT_OPTION": 9, "BOOKING_ALREADY_CANCELLED": 10, "BOOKING_NOT_CANCELLABLE": 11, + "OVERLAPPING_RESERVATION": 12, } func (x BookingFailure_Cause) String() string { return proto.EnumName(BookingFailure_Cause_name, int32(x)) } -func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{19, 0} } - -// The result of a line item fulfillability check. -type LineItemFulfillability_ItemFulfillabilityResult int32 - -const ( - // Default value: Don't use. - LineItemFulfillability_ITEM_FULFILLABILITY_RESULT_UNSPECIFIED LineItemFulfillability_ItemFulfillabilityResult = 0 - // This line item can be fulfilled. - LineItemFulfillability_CAN_FULFILL LineItemFulfillability_ItemFulfillabilityResult = 1 - // No adequate availability for the slot requested. - LineItemFulfillability_SLOT_UNAVAILABLE LineItemFulfillability_ItemFulfillabilityResult = 2 - // The combination of ticket types requested cannot be fulfilled. - LineItemFulfillability_UNFULFILLABLE_TICKET_COMBINATION LineItemFulfillability_ItemFulfillabilityResult = 3 - // The total price of this line item is not incorrect. - LineItemFulfillability_INCORRECT_PRICE LineItemFulfillability_ItemFulfillabilityResult = 4 - // The line item cannot be fulfilled for reasons that do not fall into - // the categories above. - LineItemFulfillability_ITEM_UNFULFILLABLE_OTHER_REASON LineItemFulfillability_ItemFulfillabilityResult = 5 -) - -var LineItemFulfillability_ItemFulfillabilityResult_name = map[int32]string{ - 0: "ITEM_FULFILLABILITY_RESULT_UNSPECIFIED", - 1: "CAN_FULFILL", - 2: "SLOT_UNAVAILABLE", - 3: "UNFULFILLABLE_TICKET_COMBINATION", - 4: "INCORRECT_PRICE", - 5: "ITEM_UNFULFILLABLE_OTHER_REASON", -} -var LineItemFulfillability_ItemFulfillabilityResult_value = map[string]int32{ - "ITEM_FULFILLABILITY_RESULT_UNSPECIFIED": 0, - "CAN_FULFILL": 1, - "SLOT_UNAVAILABLE": 2, - "UNFULFILLABLE_TICKET_COMBINATION": 3, - "INCORRECT_PRICE": 4, - "ITEM_UNFULFILLABLE_OTHER_REASON": 5, -} - -func (x LineItemFulfillability_ItemFulfillabilityResult) String() string { - return proto.EnumName(LineItemFulfillability_ItemFulfillabilityResult_name, int32(x)) -} -func (LineItemFulfillability_ItemFulfillabilityResult) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{25, 0} -} - -// The result of an order fulfillability check. -type OrderFulfillability_OrderFulfillabilityResult int32 - -const ( - // Default value: Don't use. - OrderFulfillability_ORDER_FULFILLABILITY_RESULT_UNSPECIFIED OrderFulfillability_OrderFulfillabilityResult = 0 - // The order can be fulfilled. - OrderFulfillability_CAN_FULFILL OrderFulfillability_OrderFulfillabilityResult = 1 - // The order cannot be fulfilled due to one or more unfulfillable line - // item(s). - OrderFulfillability_UNFULFILLABLE_LINE_ITEM OrderFulfillability_OrderFulfillabilityResult = 2 - // The combination of the line items requested cannot be fulfilled. - OrderFulfillability_UNFULFILLABLE_SERVICE_COMBINATION OrderFulfillability_OrderFulfillabilityResult = 3 - // The order cannot be fulfilled due to reasons that do not fall into the - // categories above. - OrderFulfillability_ORDER_UNFULFILLABLE_OTHER_REASON OrderFulfillability_OrderFulfillabilityResult = 4 -) - -var OrderFulfillability_OrderFulfillabilityResult_name = map[int32]string{ - 0: "ORDER_FULFILLABILITY_RESULT_UNSPECIFIED", - 1: "CAN_FULFILL", - 2: "UNFULFILLABLE_LINE_ITEM", - 3: "UNFULFILLABLE_SERVICE_COMBINATION", - 4: "ORDER_UNFULFILLABLE_OTHER_REASON", -} -var OrderFulfillability_OrderFulfillabilityResult_value = map[string]int32{ - "ORDER_FULFILLABILITY_RESULT_UNSPECIFIED": 0, - "CAN_FULFILL": 1, - "UNFULFILLABLE_LINE_ITEM": 2, - "UNFULFILLABLE_SERVICE_COMBINATION": 3, - "ORDER_UNFULFILLABLE_OTHER_REASON": 4, -} - -func (x OrderFulfillability_OrderFulfillabilityResult) String() string { - return proto.EnumName(OrderFulfillability_OrderFulfillabilityResult_name, int32(x)) -} -func (OrderFulfillability_OrderFulfillabilityResult) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{26, 0} +func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{23, 0} } type OrderFailure_Cause int32 @@ -665,527 +358,859 @@ func (x OrderFailure_Cause) String() string { return proto.EnumName(OrderFailure_Cause_name, int32(x)) } -func (OrderFailure_Cause) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{28, 0} } +func (OrderFailure_Cause) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{26, 0} +} -// This enum indicates what requirements exist for the user to acknowledge or -// view the requested slots duration/end time. -type CheckAvailabilityResponse_DurationRequirement int32 +// The result of an order fulfillability check. +type OrderFulfillability_OrderFulfillabilityResult int32 const ( - // The handling of the end time is not specified. This is the default. - CheckAvailabilityResponse_DURATION_REQUIREMENT_UNSPECIFIED CheckAvailabilityResponse_DurationRequirement = 0 - // The end time is not shown to the user. - CheckAvailabilityResponse_DO_NOT_SHOW_DURATION CheckAvailabilityResponse_DurationRequirement = 1 - // The end time has to be shown to the user before an appointment can be - // made. - CheckAvailabilityResponse_MUST_SHOW_DURATION CheckAvailabilityResponse_DurationRequirement = 2 + // Default value: Don't use. + OrderFulfillability_ORDER_FULFILLABILITY_RESULT_UNSPECIFIED OrderFulfillability_OrderFulfillabilityResult = 0 + // The order can be fulfilled. + OrderFulfillability_CAN_FULFILL OrderFulfillability_OrderFulfillabilityResult = 1 + // The order cannot be fulfilled due to one or more unfulfillable line + // item(s). + OrderFulfillability_UNFULFILLABLE_LINE_ITEM OrderFulfillability_OrderFulfillabilityResult = 2 + // The combination of the line items requested cannot be fulfilled. + OrderFulfillability_UNFULFILLABLE_SERVICE_COMBINATION OrderFulfillability_OrderFulfillabilityResult = 3 + // The order cannot be fulfilled due to reasons that do not fall into the + // categories above. + OrderFulfillability_ORDER_UNFULFILLABLE_OTHER_REASON OrderFulfillability_OrderFulfillabilityResult = 4 ) -var CheckAvailabilityResponse_DurationRequirement_name = map[int32]string{ - 0: "DURATION_REQUIREMENT_UNSPECIFIED", - 1: "DO_NOT_SHOW_DURATION", - 2: "MUST_SHOW_DURATION", +var OrderFulfillability_OrderFulfillabilityResult_name = map[int32]string{ + 0: "ORDER_FULFILLABILITY_RESULT_UNSPECIFIED", + 1: "CAN_FULFILL", + 2: "UNFULFILLABLE_LINE_ITEM", + 3: "UNFULFILLABLE_SERVICE_COMBINATION", + 4: "ORDER_UNFULFILLABLE_OTHER_REASON", } -var CheckAvailabilityResponse_DurationRequirement_value = map[string]int32{ - "DURATION_REQUIREMENT_UNSPECIFIED": 0, - "DO_NOT_SHOW_DURATION": 1, - "MUST_SHOW_DURATION": 2, +var OrderFulfillability_OrderFulfillabilityResult_value = map[string]int32{ + "ORDER_FULFILLABILITY_RESULT_UNSPECIFIED": 0, + "CAN_FULFILL": 1, + "UNFULFILLABLE_LINE_ITEM": 2, + "UNFULFILLABLE_SERVICE_COMBINATION": 3, + "ORDER_UNFULFILLABLE_OTHER_REASON": 4, } -func (x CheckAvailabilityResponse_DurationRequirement) String() string { - return proto.EnumName(CheckAvailabilityResponse_DurationRequirement_name, int32(x)) +func (x OrderFulfillability_OrderFulfillabilityResult) String() string { + return proto.EnumName(OrderFulfillability_OrderFulfillabilityResult_name, int32(x)) } -func (CheckAvailabilityResponse_DurationRequirement) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{30, 0} +func (OrderFulfillability_OrderFulfillabilityResult) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{27, 0} } -// [START postaladdr_definition] -// The postal address for a merchant. -type PostalAddress struct { - // The country, e.g. "USA". (required) - Country string `protobuf:"bytes,1,opt,name=country" json:"country,omitempty"` - // The locality/city, e.g. "Mountain View". (required) - Locality string `protobuf:"bytes,2,opt,name=locality" json:"locality,omitempty"` - // The region/state/province, e.g. "CA". (required) - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // The postal code, e.g. "94043". (required) - PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode" json:"postal_code,omitempty"` - // The street address, e.g. "1600 Amphitheatre Pkwy". (required) - StreetAddress string `protobuf:"bytes,5,opt,name=street_address,json=streetAddress" json:"street_address,omitempty"` +// The result of a line item fulfillability check. +type LineItemFulfillability_ItemFulfillabilityResult int32 + +const ( + // Default value: Don't use. + LineItemFulfillability_ITEM_FULFILLABILITY_RESULT_UNSPECIFIED LineItemFulfillability_ItemFulfillabilityResult = 0 + // This line item can be fulfilled. + LineItemFulfillability_CAN_FULFILL LineItemFulfillability_ItemFulfillabilityResult = 1 + // No adequate availability for the slot requested. + LineItemFulfillability_SLOT_UNAVAILABLE LineItemFulfillability_ItemFulfillabilityResult = 2 + // The combination of ticket types requested cannot be fulfilled. + LineItemFulfillability_UNFULFILLABLE_TICKET_COMBINATION LineItemFulfillability_ItemFulfillabilityResult = 3 + // The total price of this line item is not correct. + LineItemFulfillability_INCORRECT_PRICE LineItemFulfillability_ItemFulfillabilityResult = 4 + // The line item cannot be fulfilled for reasons that do not fall into + // the categories above. + LineItemFulfillability_ITEM_UNFULFILLABLE_OTHER_REASON LineItemFulfillability_ItemFulfillabilityResult = 5 +) + +var LineItemFulfillability_ItemFulfillabilityResult_name = map[int32]string{ + 0: "ITEM_FULFILLABILITY_RESULT_UNSPECIFIED", + 1: "CAN_FULFILL", + 2: "SLOT_UNAVAILABLE", + 3: "UNFULFILLABLE_TICKET_COMBINATION", + 4: "INCORRECT_PRICE", + 5: "ITEM_UNFULFILLABLE_OTHER_REASON", +} +var LineItemFulfillability_ItemFulfillabilityResult_value = map[string]int32{ + "ITEM_FULFILLABILITY_RESULT_UNSPECIFIED": 0, + "CAN_FULFILL": 1, + "SLOT_UNAVAILABLE": 2, + "UNFULFILLABLE_TICKET_COMBINATION": 3, + "INCORRECT_PRICE": 4, + "ITEM_UNFULFILLABLE_OTHER_REASON": 5, } -func (m *PostalAddress) Reset() { *m = PostalAddress{} } -func (m *PostalAddress) String() string { return proto.CompactTextString(m) } -func (*PostalAddress) ProtoMessage() {} -func (*PostalAddress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } +func (x LineItemFulfillability_ItemFulfillabilityResult) String() string { + return proto.EnumName(LineItemFulfillability_ItemFulfillabilityResult_name, int32(x)) +} +func (LineItemFulfillability_ItemFulfillabilityResult) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{28, 0} +} -func (m *PostalAddress) GetCountry() string { +type PaymentProcessingParameters_PaymentProcessor int32 + +const ( + PaymentProcessingParameters_PAYMENT_PROCESSOR_UNSPECIFIED PaymentProcessingParameters_PaymentProcessor = 0 + PaymentProcessingParameters_PROCESSOR_STRIPE PaymentProcessingParameters_PaymentProcessor = 1 + PaymentProcessingParameters_PROCESSOR_BRAINTREE PaymentProcessingParameters_PaymentProcessor = 2 +) + +var PaymentProcessingParameters_PaymentProcessor_name = map[int32]string{ + 0: "PAYMENT_PROCESSOR_UNSPECIFIED", + 1: "PROCESSOR_STRIPE", + 2: "PROCESSOR_BRAINTREE", +} +var PaymentProcessingParameters_PaymentProcessor_value = map[string]int32{ + "PAYMENT_PROCESSOR_UNSPECIFIED": 0, + "PROCESSOR_STRIPE": 1, + "PROCESSOR_BRAINTREE": 2, +} + +func (x PaymentProcessingParameters_PaymentProcessor) String() string { + return proto.EnumName(PaymentProcessingParameters_PaymentProcessor_name, int32(x)) +} +func (PaymentProcessingParameters_PaymentProcessor) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{31, 0} +} + +// 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. +type PaymentInformation_PaymentProcessedBy int32 + +const ( + PaymentInformation_PAYMENT_PROCESSED_BY_UNSPECIFIED PaymentInformation_PaymentProcessedBy = 0 + PaymentInformation_PROCESSED_BY_GOOGLE PaymentInformation_PaymentProcessedBy = 1 + PaymentInformation_PROCESSED_BY_PARTNER PaymentInformation_PaymentProcessedBy = 2 +) + +var PaymentInformation_PaymentProcessedBy_name = map[int32]string{ + 0: "PAYMENT_PROCESSED_BY_UNSPECIFIED", + 1: "PROCESSED_BY_GOOGLE", + 2: "PROCESSED_BY_PARTNER", +} +var PaymentInformation_PaymentProcessedBy_value = map[string]int32{ + "PAYMENT_PROCESSED_BY_UNSPECIFIED": 0, + "PROCESSED_BY_GOOGLE": 1, + "PROCESSED_BY_PARTNER": 2, +} + +func (x PaymentInformation_PaymentProcessedBy) String() string { + return proto.EnumName(PaymentInformation_PaymentProcessedBy_name, int32(x)) +} +func (PaymentInformation_PaymentProcessedBy) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{33, 0} +} + +// Request to check availability for a Slot. +type CheckAvailabilityRequest struct { + // The appointment slot that is being checked (required) + Slot *Slot `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CheckAvailabilityRequest) Reset() { *m = CheckAvailabilityRequest{} } +func (m *CheckAvailabilityRequest) String() string { return proto.CompactTextString(m) } +func (*CheckAvailabilityRequest) ProtoMessage() {} +func (*CheckAvailabilityRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{0} +} +func (m *CheckAvailabilityRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CheckAvailabilityRequest.Unmarshal(m, b) +} +func (m *CheckAvailabilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CheckAvailabilityRequest.Marshal(b, m, deterministic) +} +func (dst *CheckAvailabilityRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckAvailabilityRequest.Merge(dst, src) +} +func (m *CheckAvailabilityRequest) XXX_Size() int { + return xxx_messageInfo_CheckAvailabilityRequest.Size(m) +} +func (m *CheckAvailabilityRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CheckAvailabilityRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckAvailabilityRequest proto.InternalMessageInfo + +func (m *CheckAvailabilityRequest) GetSlot() *Slot { if m != nil { - return m.Country - } - return "" -} - -func (m *PostalAddress) GetLocality() string { - if m != nil { - return m.Locality - } - return "" -} - -func (m *PostalAddress) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *PostalAddress) GetPostalCode() string { - if m != nil { - return m.PostalCode - } - return "" -} - -func (m *PostalAddress) GetStreetAddress() string { - if m != nil { - return m.StreetAddress - } - return "" -} - -// [START geocoord_definition] -// The Geo data of a location, including latitude, longitude, and address. -type GeoCoordinates struct { - Latitude float64 `protobuf:"fixed64,1,opt,name=latitude" json:"latitude,omitempty"` - Longitude float64 `protobuf:"fixed64,2,opt,name=longitude" json:"longitude,omitempty"` - Address *PostalAddress `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"` -} - -func (m *GeoCoordinates) Reset() { *m = GeoCoordinates{} } -func (m *GeoCoordinates) String() string { return proto.CompactTextString(m) } -func (*GeoCoordinates) ProtoMessage() {} -func (*GeoCoordinates) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GeoCoordinates) GetLatitude() float64 { - if m != nil { - return m.Latitude - } - return 0 -} - -func (m *GeoCoordinates) GetLongitude() float64 { - if m != nil { - return m.Longitude - } - return 0 -} - -func (m *GeoCoordinates) GetAddress() *PostalAddress { - if m != nil { - return m.Address + return m.Slot } return nil } -// [START price_definition] -// The price of a service or a fee. -type Price struct { - // 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) - PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros" json:"price_micros,omitempty"` - // The currency of the price that is defined in ISO 4217. (required) - CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode" json:"currency_code,omitempty"` - // An optional and opaque string that identifies the pricing option that is - // associated with the extended price. (optional) - PricingOptionTag string `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag" json:"pricing_option_tag,omitempty"` +// Response for the CheckAvailability RPC with the availability of the +// appointment slot. +type CheckAvailabilityResponse struct { + // The requested slot. (required) + Slot *Slot `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + // Number of available spots. + // 0 indicates that the appointment slot is not available. (required) + CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable,proto3" json:"count_available,omitempty"` + // The requirement to show the slots duration and/or endtime. This field will + // be ignored if the slot is unavailable. (optional) + DurationRequirement CheckAvailabilityResponse_DurationRequirement `protobuf:"varint,3,opt,name=duration_requirement,json=durationRequirement,proto3,enum=ext.maps.booking.partner.v3.CheckAvailabilityResponse_DurationRequirement" json:"duration_requirement,omitempty"` + // 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 *AvailabilityUpdate `protobuf:"bytes,4,opt,name=availability_update,json=availabilityUpdate,proto3" json:"availability_update,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Price) Reset() { *m = Price{} } -func (m *Price) String() string { return proto.CompactTextString(m) } -func (*Price) ProtoMessage() {} -func (*Price) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (m *CheckAvailabilityResponse) Reset() { *m = CheckAvailabilityResponse{} } +func (m *CheckAvailabilityResponse) String() string { return proto.CompactTextString(m) } +func (*CheckAvailabilityResponse) ProtoMessage() {} +func (*CheckAvailabilityResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{1} +} +func (m *CheckAvailabilityResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CheckAvailabilityResponse.Unmarshal(m, b) +} +func (m *CheckAvailabilityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CheckAvailabilityResponse.Marshal(b, m, deterministic) +} +func (dst *CheckAvailabilityResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckAvailabilityResponse.Merge(dst, src) +} +func (m *CheckAvailabilityResponse) XXX_Size() int { + return xxx_messageInfo_CheckAvailabilityResponse.Size(m) +} +func (m *CheckAvailabilityResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CheckAvailabilityResponse.DiscardUnknown(m) +} -func (m *Price) GetPriceMicros() int64 { +var xxx_messageInfo_CheckAvailabilityResponse proto.InternalMessageInfo + +func (m *CheckAvailabilityResponse) GetSlot() *Slot { if m != nil { - return m.PriceMicros - } - return 0 -} - -func (m *Price) GetCurrencyCode() string { - if m != nil { - return m.CurrencyCode - } - return "" -} - -func (m *Price) GetPricingOptionTag() string { - if m != nil { - return m.PricingOptionTag - } - return "" -} - -// [START taxrate_definition] -// A tax rate applied when charging the user for a service, and which can be set -// on either a per merchant, or per service basis. -type TaxRate struct { - // A tax rate in millionths of one percent, effectively giving 6 decimals of - // precision. For example, if the tax rate is 7.253%, this field should be set - // to 7253000. - // - // If this field is left unset or set to 0, the total price charged to a user - // for any service provided by this merchant is the exact price specified by - // Service.price. The service price is assumed to be exempt from or already - // inclusive of applicable taxes. Taxes will not be shown to the user as a - // separate line item. - // - // If this field is set to any nonzero value, the total price charged to a - // user for any service provided by this merchant will include the service - // price plus the tax assessed using the tax rate provided here. Fractions of - // the smallest currency unit (for example, fractions of one cent) will be - // rounded using nearest even rounding. Taxes will be shown to the user as a - // separate line item. (required) - MicroPercent int32 `protobuf:"varint,1,opt,name=micro_percent,json=microPercent" json:"micro_percent,omitempty"` -} - -func (m *TaxRate) Reset() { *m = TaxRate{} } -func (m *TaxRate) String() string { return proto.CompactTextString(m) } -func (*TaxRate) ProtoMessage() {} -func (*TaxRate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *TaxRate) GetMicroPercent() int32 { - if m != nil { - return m.MicroPercent - } - return 0 -} - -// [START schedulingrules_definition] -// The scheduling rules for a service. -type SchedulingRules struct { - // The minimum advance notice in seconds required to book an appointment. - // (optional) - MinAdvanceBooking int64 `protobuf:"varint,1,opt,name=min_advance_booking,json=minAdvanceBooking" json:"min_advance_booking,omitempty"` - // The minimum advance notice in seconds required to cancel a booked - // appointment online. (optional) - MinAdvanceOnlineCanceling int64 `protobuf:"varint,2,opt,name=min_advance_online_canceling,json=minAdvanceOnlineCanceling" json:"min_advance_online_canceling,omitempty"` - // The fee for canceling within the minimum advance notice period. - LateCancellationFee *Price `protobuf:"bytes,3,opt,name=late_cancellation_fee,json=lateCancellationFee" json:"late_cancellation_fee,omitempty"` - // The fee for no-show without canceling. - NoshowFee *Price `protobuf:"bytes,4,opt,name=noshow_fee,json=noshowFee" json:"noshow_fee,omitempty"` -} - -func (m *SchedulingRules) Reset() { *m = SchedulingRules{} } -func (m *SchedulingRules) String() string { return proto.CompactTextString(m) } -func (*SchedulingRules) ProtoMessage() {} -func (*SchedulingRules) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *SchedulingRules) GetMinAdvanceBooking() int64 { - if m != nil { - return m.MinAdvanceBooking - } - return 0 -} - -func (m *SchedulingRules) GetMinAdvanceOnlineCanceling() int64 { - if m != nil { - return m.MinAdvanceOnlineCanceling - } - return 0 -} - -func (m *SchedulingRules) GetLateCancellationFee() *Price { - if m != nil { - return m.LateCancellationFee + return m.Slot } return nil } -func (m *SchedulingRules) GetNoshowFee() *Price { +func (m *CheckAvailabilityResponse) GetCountAvailable() int32 { if m != nil { - return m.NoshowFee - } - return nil -} - -// An empty boilplate proto for the Ingestion Queue in Spanner. -type IngestionQueuePayload struct { -} - -func (m *IngestionQueuePayload) Reset() { *m = IngestionQueuePayload{} } -func (m *IngestionQueuePayload) String() string { return proto.CompactTextString(m) } -func (*IngestionQueuePayload) ProtoMessage() {} -func (*IngestionQueuePayload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -type IngestionStatus struct { - // The code of the status. - Code IngestionStatus_Code `protobuf:"varint,1,opt,name=code,enum=v3.IngestionStatus_Code" json:"code,omitempty"` - // Microseconds since epoch when the ingestion updates its status code. - TimestampMicros int64 `protobuf:"varint,2,opt,name=timestamp_micros,json=timestampMicros" json:"timestamp_micros,omitempty"` - // A human description of the error if any. - InternalErrorDetails string `protobuf:"bytes,3,opt,name=internal_error_details,json=internalErrorDetails" json:"internal_error_details,omitempty"` - PartnerVisibleErrorDetails string `protobuf:"bytes,4,opt,name=partner_visible_error_details,json=partnerVisibleErrorDetails" json:"partner_visible_error_details,omitempty"` -} - -func (m *IngestionStatus) Reset() { *m = IngestionStatus{} } -func (m *IngestionStatus) String() string { return proto.CompactTextString(m) } -func (*IngestionStatus) ProtoMessage() {} -func (*IngestionStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *IngestionStatus) GetCode() IngestionStatus_Code { - if m != nil { - return m.Code - } - return IngestionStatus_STATUS_UNKNOWN -} - -func (m *IngestionStatus) GetTimestampMicros() int64 { - if m != nil { - return m.TimestampMicros + return m.CountAvailable } return 0 } -func (m *IngestionStatus) GetInternalErrorDetails() string { +func (m *CheckAvailabilityResponse) GetDurationRequirement() CheckAvailabilityResponse_DurationRequirement { if m != nil { - return m.InternalErrorDetails + return m.DurationRequirement } - return "" + return CheckAvailabilityResponse_DURATION_REQUIREMENT_UNSPECIFIED } -func (m *IngestionStatus) GetPartnerVisibleErrorDetails() string { +func (m *CheckAvailabilityResponse) GetAvailabilityUpdate() *AvailabilityUpdate { if m != nil { - return m.PartnerVisibleErrorDetails - } - return "" -} - -// [START timerange_definition] -// A closed-open time range, i.e. [begin_sec, end_sec) -type TimeRange struct { - // Seconds of UTC time since Unix epoch (required) - BeginSec int64 `protobuf:"varint,1,opt,name=begin_sec,json=beginSec" json:"begin_sec,omitempty"` - // Seconds of UTC time since Unix epoch (required) - EndSec int64 `protobuf:"varint,2,opt,name=end_sec,json=endSec" json:"end_sec,omitempty"` -} - -func (m *TimeRange) Reset() { *m = TimeRange{} } -func (m *TimeRange) String() string { return proto.CompactTextString(m) } -func (*TimeRange) ProtoMessage() {} -func (*TimeRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *TimeRange) GetBeginSec() int64 { - if m != nil { - return m.BeginSec - } - return 0 -} - -func (m *TimeRange) GetEndSec() int64 { - if m != nil { - return m.EndSec - } - return 0 -} - -// [START noshowfee_definition] -// A fee that a user may be charged if they have made a booking but do not -// show up. -type NoShowFee struct { - // The amount the user may be charged if they do not show up for their - // reservation. - Fee *Price `protobuf:"bytes,1,opt,name=fee" json:"fee,omitempty"` - // Defines how the fee is determined from the availability. - FeeType PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,enum=v3.PriceType" json:"fee_type,omitempty"` -} - -func (m *NoShowFee) Reset() { *m = NoShowFee{} } -func (m *NoShowFee) String() string { return proto.CompactTextString(m) } -func (*NoShowFee) ProtoMessage() {} -func (*NoShowFee) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *NoShowFee) GetFee() *Price { - if m != nil { - return m.Fee + return m.AvailabilityUpdate } return nil } -func (m *NoShowFee) GetFeeType() PriceType { - if m != nil { - return m.FeeType - } - return PriceType_FIXED_RATE_DEFAULT +// An update to one ore more slots indicating that the availability for the +// associated time has potentially changed. +type AvailabilityUpdate struct { + SlotAvailability []*SlotAvailability `protobuf:"bytes,1,rep,name=slot_availability,json=slotAvailability,proto3" json:"slot_availability,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// [START deposit_definition] -// A deposit that the user may be charged or have a hold on their credit card -// for. -type Deposit struct { - // Deposit amount. - Deposit *Price `protobuf:"bytes,1,opt,name=deposit" json:"deposit,omitempty"` - // Minimum advance cancellation for the deposit. - MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec" json:"min_advance_cancellation_sec,omitempty"` - // Defines how the deposit is determined from the availability. - DepositType PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,enum=v3.PriceType" json:"deposit_type,omitempty"` +func (m *AvailabilityUpdate) Reset() { *m = AvailabilityUpdate{} } +func (m *AvailabilityUpdate) String() string { return proto.CompactTextString(m) } +func (*AvailabilityUpdate) ProtoMessage() {} +func (*AvailabilityUpdate) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{2} +} +func (m *AvailabilityUpdate) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_AvailabilityUpdate.Unmarshal(m, b) +} +func (m *AvailabilityUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_AvailabilityUpdate.Marshal(b, m, deterministic) +} +func (dst *AvailabilityUpdate) XXX_Merge(src proto.Message) { + xxx_messageInfo_AvailabilityUpdate.Merge(dst, src) +} +func (m *AvailabilityUpdate) XXX_Size() int { + return xxx_messageInfo_AvailabilityUpdate.Size(m) +} +func (m *AvailabilityUpdate) XXX_DiscardUnknown() { + xxx_messageInfo_AvailabilityUpdate.DiscardUnknown(m) } -func (m *Deposit) Reset() { *m = Deposit{} } -func (m *Deposit) String() string { return proto.CompactTextString(m) } -func (*Deposit) ProtoMessage() {} -func (*Deposit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } +var xxx_messageInfo_AvailabilityUpdate proto.InternalMessageInfo -func (m *Deposit) GetDeposit() *Price { +func (m *AvailabilityUpdate) GetSlotAvailability() []*SlotAvailability { if m != nil { - return m.Deposit + return m.SlotAvailability } return nil } -func (m *Deposit) GetMinAdvanceCancellationSec() int64 { +// An inventory slot and associated count of open spots. +type SlotAvailability struct { + Slot *Slot `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + // Number of available spots. + // 0 indicates that the appointment slot is not available. (required) + CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable,proto3" json:"count_available,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SlotAvailability) Reset() { *m = SlotAvailability{} } +func (m *SlotAvailability) String() string { return proto.CompactTextString(m) } +func (*SlotAvailability) ProtoMessage() {} +func (*SlotAvailability) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{3} +} +func (m *SlotAvailability) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SlotAvailability.Unmarshal(m, b) +} +func (m *SlotAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SlotAvailability.Marshal(b, m, deterministic) +} +func (dst *SlotAvailability) XXX_Merge(src proto.Message) { + xxx_messageInfo_SlotAvailability.Merge(dst, src) +} +func (m *SlotAvailability) XXX_Size() int { + return xxx_messageInfo_SlotAvailability.Size(m) +} +func (m *SlotAvailability) XXX_DiscardUnknown() { + xxx_messageInfo_SlotAvailability.DiscardUnknown(m) +} + +var xxx_messageInfo_SlotAvailability proto.InternalMessageInfo + +func (m *SlotAvailability) GetSlot() *Slot { if m != nil { - return m.MinAdvanceCancellationSec + return m.Slot + } + return nil +} + +func (m *SlotAvailability) GetCountAvailable() int32 { + if m != nil { + return m.CountAvailable } return 0 } -func (m *Deposit) GetDepositType() PriceType { - if m != nil { - return m.DepositType - } - return PriceType_FIXED_RATE_DEFAULT +// Request to check the fulfillability of an order. +type CheckOrderFulfillabilityRequest struct { + // The merchant that this order is intended for. (required) + MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"` + // The line items in this order. All services requested must belong to the + // specified merchant. (required) + Item []*LineItem `protobuf:"bytes,2,rep,name=item,proto3" json:"item,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// [START ActionLink_definition] -// An action URL with associated language and list of countries restricted to. -type ActionLink struct { - // The entry point URL for this action link. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // The BCP-47 language tag identifying the language in which the content - // from this URI is available. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` - // ISO 3166-1 alpha-2 country code. Leave empty for unrestricted visibility. - RestrictedCountry []string `protobuf:"bytes,3,rep,name=restricted_country,json=restrictedCountry" json:"restricted_country,omitempty"` +func (m *CheckOrderFulfillabilityRequest) Reset() { *m = CheckOrderFulfillabilityRequest{} } +func (m *CheckOrderFulfillabilityRequest) String() string { return proto.CompactTextString(m) } +func (*CheckOrderFulfillabilityRequest) ProtoMessage() {} +func (*CheckOrderFulfillabilityRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{4} +} +func (m *CheckOrderFulfillabilityRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CheckOrderFulfillabilityRequest.Unmarshal(m, b) +} +func (m *CheckOrderFulfillabilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CheckOrderFulfillabilityRequest.Marshal(b, m, deterministic) +} +func (dst *CheckOrderFulfillabilityRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckOrderFulfillabilityRequest.Merge(dst, src) +} +func (m *CheckOrderFulfillabilityRequest) XXX_Size() int { + return xxx_messageInfo_CheckOrderFulfillabilityRequest.Size(m) +} +func (m *CheckOrderFulfillabilityRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CheckOrderFulfillabilityRequest.DiscardUnknown(m) } -func (m *ActionLink) Reset() { *m = ActionLink{} } -func (m *ActionLink) String() string { return proto.CompactTextString(m) } -func (*ActionLink) ProtoMessage() {} -func (*ActionLink) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } +var xxx_messageInfo_CheckOrderFulfillabilityRequest proto.InternalMessageInfo -func (m *ActionLink) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *ActionLink) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -func (m *ActionLink) GetRestrictedCountry() []string { - if m != nil { - return m.RestrictedCountry - } - return nil -} - -// [START message_slot] -// An inventory slot -type Slot struct { - // ID of the merchant for the slot (required) - MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"` - // ID of the merchant service (required) - ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"` - // Start time of the appointment slot in seconds of UTC time since Unix epoch. - // (required) - StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec" json:"start_sec,omitempty"` - // Duration of the appointment slot (required) - DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"` - // Opaque tag that identifies the availability slot and matches the value - // provided in the availability feed (optional) - AvailabilityTag string `protobuf:"bytes,5,opt,name=availability_tag,json=availabilityTag" json:"availability_tag,omitempty"` - // The set of resources that disambiguates the appointment slot, e.g. by - // indicating the staff member and room selected by the user (optional) - Resources *ResourceIds `protobuf:"bytes,6,opt,name=resources" json:"resources,omitempty"` -} - -func (m *Slot) Reset() { *m = Slot{} } -func (m *Slot) String() string { return proto.CompactTextString(m) } -func (*Slot) ProtoMessage() {} -func (*Slot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *Slot) GetMerchantId() string { +func (m *CheckOrderFulfillabilityRequest) GetMerchantId() string { if m != nil { return m.MerchantId } return "" } -func (m *Slot) GetServiceId() string { +func (m *CheckOrderFulfillabilityRequest) GetItem() []*LineItem { if m != nil { - return m.ServiceId - } - return "" -} - -func (m *Slot) GetStartSec() int64 { - if m != nil { - return m.StartSec - } - return 0 -} - -func (m *Slot) GetDurationSec() int64 { - if m != nil { - return m.DurationSec - } - return 0 -} - -func (m *Slot) GetAvailabilityTag() string { - if m != nil { - return m.AvailabilityTag - } - return "" -} - -func (m *Slot) GetResources() *ResourceIds { - if m != nil { - return m.Resources + return m.Item } return nil } -// [START message_lease] +// Response for the CheckOrderfulfillabilityRequest. +type CheckOrderFulfillabilityResponse struct { + // Fulfillability status of the order, potentially contains updated + // availabilities and prices of the requested line item. (required) + Fulfillability *OrderFulfillability `protobuf:"bytes,1,opt,name=fulfillability,proto3" json:"fulfillability,omitempty"` + // Total processing fees & taxes that need to be paid for this order. + // (required) + FeesAndTaxes *Price `protobuf:"bytes,2,opt,name=fees_and_taxes,json=feesAndTaxes,proto3" json:"fees_and_taxes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CheckOrderFulfillabilityResponse) Reset() { *m = CheckOrderFulfillabilityResponse{} } +func (m *CheckOrderFulfillabilityResponse) String() string { return proto.CompactTextString(m) } +func (*CheckOrderFulfillabilityResponse) ProtoMessage() {} +func (*CheckOrderFulfillabilityResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{5} +} +func (m *CheckOrderFulfillabilityResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CheckOrderFulfillabilityResponse.Unmarshal(m, b) +} +func (m *CheckOrderFulfillabilityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CheckOrderFulfillabilityResponse.Marshal(b, m, deterministic) +} +func (dst *CheckOrderFulfillabilityResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckOrderFulfillabilityResponse.Merge(dst, src) +} +func (m *CheckOrderFulfillabilityResponse) XXX_Size() int { + return xxx_messageInfo_CheckOrderFulfillabilityResponse.Size(m) +} +func (m *CheckOrderFulfillabilityResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CheckOrderFulfillabilityResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckOrderFulfillabilityResponse proto.InternalMessageInfo + +func (m *CheckOrderFulfillabilityResponse) GetFulfillability() *OrderFulfillability { + if m != nil { + return m.Fulfillability + } + return nil +} + +func (m *CheckOrderFulfillabilityResponse) GetFeesAndTaxes() *Price { + if m != nil { + return m.FeesAndTaxes + } + return nil +} + +// Request to get booking status and prepayment status for a Booking. +type GetBookingStatusRequest struct { + // ID of the existing booking (required) + BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId,proto3" json:"booking_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetBookingStatusRequest) Reset() { *m = GetBookingStatusRequest{} } +func (m *GetBookingStatusRequest) String() string { return proto.CompactTextString(m) } +func (*GetBookingStatusRequest) ProtoMessage() {} +func (*GetBookingStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{6} +} +func (m *GetBookingStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetBookingStatusRequest.Unmarshal(m, b) +} +func (m *GetBookingStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetBookingStatusRequest.Marshal(b, m, deterministic) +} +func (dst *GetBookingStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBookingStatusRequest.Merge(dst, src) +} +func (m *GetBookingStatusRequest) XXX_Size() int { + return xxx_messageInfo_GetBookingStatusRequest.Size(m) +} +func (m *GetBookingStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetBookingStatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBookingStatusRequest proto.InternalMessageInfo + +func (m *GetBookingStatusRequest) GetBookingId() string { + if m != nil { + return m.BookingId + } + return "" +} + +// Response for the GetBookingStatus RPC with booking status and prepayment +// status. +type GetBookingStatusResponse struct { + // ID of the booking (required) + BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId,proto3" json:"booking_id,omitempty"` + // Status of the booking (required) + BookingStatus BookingStatus `protobuf:"varint,2,opt,name=booking_status,json=bookingStatus,proto3,enum=ext.maps.booking.partner.v3.BookingStatus" json:"booking_status,omitempty"` + // Prepayment status of the booking (required) + PrepaymentStatus PrepaymentStatus `protobuf:"varint,3,opt,name=prepayment_status,json=prepaymentStatus,proto3,enum=ext.maps.booking.partner.v3.PrepaymentStatus" json:"prepayment_status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetBookingStatusResponse) Reset() { *m = GetBookingStatusResponse{} } +func (m *GetBookingStatusResponse) String() string { return proto.CompactTextString(m) } +func (*GetBookingStatusResponse) ProtoMessage() {} +func (*GetBookingStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{7} +} +func (m *GetBookingStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetBookingStatusResponse.Unmarshal(m, b) +} +func (m *GetBookingStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetBookingStatusResponse.Marshal(b, m, deterministic) +} +func (dst *GetBookingStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBookingStatusResponse.Merge(dst, src) +} +func (m *GetBookingStatusResponse) XXX_Size() int { + return xxx_messageInfo_GetBookingStatusResponse.Size(m) +} +func (m *GetBookingStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetBookingStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBookingStatusResponse proto.InternalMessageInfo + +func (m *GetBookingStatusResponse) GetBookingId() string { + if m != nil { + return m.BookingId + } + return "" +} + +func (m *GetBookingStatusResponse) GetBookingStatus() BookingStatus { + if m != nil { + return m.BookingStatus + } + return BookingStatus_BOOKING_STATUS_UNSPECIFIED +} + +func (m *GetBookingStatusResponse) GetPrepaymentStatus() PrepaymentStatus { + if m != nil { + return m.PrepaymentStatus + } + return PrepaymentStatus_PREPAYMENT_STATUS_UNSPECIFIED +} + +// Request to create a Booking for an inventory slot. Consumes the lease if +// provided. +type CreateBookingRequest struct { + // 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 `protobuf:"bytes,1,opt,name=slot,proto3" json:"slot,omitempty"` + // The lease that is being confirmed to make this booking. + // If lease_ref is provided, then create the booking using the lease. + // (optional) + LeaseRef *LeaseReference `protobuf:"bytes,2,opt,name=lease_ref,json=leaseRef,proto3" json:"lease_ref,omitempty"` + // Personal information of the user making the appointment (required) + UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"` + // Information about payments. When payment authorizations are handled by + // Google, if the booking request does not succeed, payment authorizations are + // automatically canceled. (optional) + PaymentInformation *PaymentInformation `protobuf:"bytes,4,opt,name=payment_information,json=paymentInformation,proto3" json:"payment_information,omitempty"` + // 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 *PaymentProcessingParameters `protobuf:"bytes,5,opt,name=payment_processing_parameters,json=paymentProcessingParameters,proto3" json:"payment_processing_parameters,omitempty"` + // Idempotency token for CreateBooking requests. (required) + IdempotencyToken string `protobuf:"bytes,6,opt,name=idempotency_token,json=idempotencyToken,proto3" json:"idempotency_token,omitempty"` + // A string from the user which contains any special requests or additional + // information that they would like to notify the merchant about. (optional) + AdditionalRequest string `protobuf:"bytes,7,opt,name=additional_request,json=additionalRequest,proto3" json:"additional_request,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateBookingRequest) Reset() { *m = CreateBookingRequest{} } +func (m *CreateBookingRequest) String() string { return proto.CompactTextString(m) } +func (*CreateBookingRequest) ProtoMessage() {} +func (*CreateBookingRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{8} +} +func (m *CreateBookingRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateBookingRequest.Unmarshal(m, b) +} +func (m *CreateBookingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateBookingRequest.Marshal(b, m, deterministic) +} +func (dst *CreateBookingRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateBookingRequest.Merge(dst, src) +} +func (m *CreateBookingRequest) XXX_Size() int { + return xxx_messageInfo_CreateBookingRequest.Size(m) +} +func (m *CreateBookingRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateBookingRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateBookingRequest proto.InternalMessageInfo + +func (m *CreateBookingRequest) GetSlot() *Slot { + if m != nil { + return m.Slot + } + return nil +} + +func (m *CreateBookingRequest) GetLeaseRef() *LeaseReference { + if m != nil { + return m.LeaseRef + } + return nil +} + +func (m *CreateBookingRequest) GetUserInformation() *UserInformation { + if m != nil { + return m.UserInformation + } + return nil +} + +func (m *CreateBookingRequest) GetPaymentInformation() *PaymentInformation { + if m != nil { + return m.PaymentInformation + } + return nil +} + +func (m *CreateBookingRequest) GetPaymentProcessingParameters() *PaymentProcessingParameters { + if m != nil { + return m.PaymentProcessingParameters + } + return nil +} + +func (m *CreateBookingRequest) GetIdempotencyToken() string { + if m != nil { + return m.IdempotencyToken + } + return "" +} + +func (m *CreateBookingRequest) GetAdditionalRequest() string { + if m != nil { + return m.AdditionalRequest + } + return "" +} + +// Response with the created Booking for an inventory slot. +type CreateBookingResponse struct { + // The created booking (required) + Booking *Booking `protobuf:"bytes,1,opt,name=booking,proto3" json:"booking,omitempty"` + // 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 *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption,proto3" json:"user_payment_option,omitempty"` + // 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 *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure,proto3" json:"booking_failure,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateBookingResponse) Reset() { *m = CreateBookingResponse{} } +func (m *CreateBookingResponse) String() string { return proto.CompactTextString(m) } +func (*CreateBookingResponse) ProtoMessage() {} +func (*CreateBookingResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{9} +} +func (m *CreateBookingResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateBookingResponse.Unmarshal(m, b) +} +func (m *CreateBookingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateBookingResponse.Marshal(b, m, deterministic) +} +func (dst *CreateBookingResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateBookingResponse.Merge(dst, src) +} +func (m *CreateBookingResponse) XXX_Size() int { + return xxx_messageInfo_CreateBookingResponse.Size(m) +} +func (m *CreateBookingResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CreateBookingResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateBookingResponse proto.InternalMessageInfo + +func (m *CreateBookingResponse) GetBooking() *Booking { + if m != nil { + return m.Booking + } + return nil +} + +func (m *CreateBookingResponse) GetUserPaymentOption() *UserPaymentOption { + if m != nil { + return m.UserPaymentOption + } + return nil +} + +func (m *CreateBookingResponse) GetBookingFailure() *BookingFailure { + if m != nil { + return m.BookingFailure + } + return nil +} + +// 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. +type CreateLeaseRequest struct { + // The lease to be created with information about the appointment slot + // (required) + Lease *Lease `protobuf:"bytes,1,opt,name=lease,proto3" json:"lease,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateLeaseRequest) Reset() { *m = CreateLeaseRequest{} } +func (m *CreateLeaseRequest) String() string { return proto.CompactTextString(m) } +func (*CreateLeaseRequest) ProtoMessage() {} +func (*CreateLeaseRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{10} +} +func (m *CreateLeaseRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateLeaseRequest.Unmarshal(m, b) +} +func (m *CreateLeaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateLeaseRequest.Marshal(b, m, deterministic) +} +func (dst *CreateLeaseRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateLeaseRequest.Merge(dst, src) +} +func (m *CreateLeaseRequest) XXX_Size() int { + return xxx_messageInfo_CreateLeaseRequest.Size(m) +} +func (m *CreateLeaseRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateLeaseRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateLeaseRequest proto.InternalMessageInfo + +func (m *CreateLeaseRequest) GetLease() *Lease { + if m != nil { + return m.Lease + } + return nil +} + +// Response for the CreateLease RPC with the created Lease. +type CreateLeaseResponse struct { + // The created Lease (required) + Lease *Lease `protobuf:"bytes,1,opt,name=lease,proto3" json:"lease,omitempty"` + // 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 *BookingFailure `protobuf:"bytes,2,opt,name=booking_failure,json=bookingFailure,proto3" json:"booking_failure,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateLeaseResponse) Reset() { *m = CreateLeaseResponse{} } +func (m *CreateLeaseResponse) String() string { return proto.CompactTextString(m) } +func (*CreateLeaseResponse) ProtoMessage() {} +func (*CreateLeaseResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{11} +} +func (m *CreateLeaseResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateLeaseResponse.Unmarshal(m, b) +} +func (m *CreateLeaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateLeaseResponse.Marshal(b, m, deterministic) +} +func (dst *CreateLeaseResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateLeaseResponse.Merge(dst, src) +} +func (m *CreateLeaseResponse) XXX_Size() int { + return xxx_messageInfo_CreateLeaseResponse.Size(m) +} +func (m *CreateLeaseResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CreateLeaseResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateLeaseResponse proto.InternalMessageInfo + +func (m *CreateLeaseResponse) GetLease() *Lease { + if m != nil { + return m.Lease + } + return nil +} + +func (m *CreateLeaseResponse) GetBookingFailure() *BookingFailure { + if m != nil { + return m.BookingFailure + } + return nil +} + // Temporary lease for an inventory slot type Lease struct { // 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) - LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId" json:"lease_id,omitempty"` + LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` // The appointment slot that the lease is created for. (required) - Slot *Slot `protobuf:"bytes,2,opt,name=slot" json:"slot,omitempty"` + Slot *Slot `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` // Unique identifier for this lease, chosen by Reserve with Google. Serves as // an idempotency token for CreateLease requests. (required) - UserReference string `protobuf:"bytes,3,opt,name=user_reference,json=userReference" json:"user_reference,omitempty"` + UserReference string `protobuf:"bytes,3,opt,name=user_reference,json=userReference,proto3" json:"user_reference,omitempty"` // Expiration time of the lease in UTC Timestamp (required) - LeaseExpirationTimeSec int64 `protobuf:"varint,4,opt,name=lease_expiration_time_sec,json=leaseExpirationTimeSec" json:"lease_expiration_time_sec,omitempty"` + LeaseExpirationTimeSec int64 `protobuf:"varint,4,opt,name=lease_expiration_time_sec,json=leaseExpirationTimeSec,proto3" json:"lease_expiration_time_sec,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Lease) Reset() { *m = Lease{} } -func (m *Lease) String() string { return proto.CompactTextString(m) } -func (*Lease) ProtoMessage() {} -func (*Lease) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } +func (m *Lease) Reset() { *m = Lease{} } +func (m *Lease) String() string { return proto.CompactTextString(m) } +func (*Lease) ProtoMessage() {} +func (*Lease) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{12} +} +func (m *Lease) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Lease.Unmarshal(m, b) +} +func (m *Lease) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Lease.Marshal(b, m, deterministic) +} +func (dst *Lease) XXX_Merge(src proto.Message) { + xxx_messageInfo_Lease.Merge(dst, src) +} +func (m *Lease) XXX_Size() int { + return xxx_messageInfo_Lease.Size(m) +} +func (m *Lease) XXX_DiscardUnknown() { + xxx_messageInfo_Lease.DiscardUnknown(m) +} + +var xxx_messageInfo_Lease proto.InternalMessageInfo func (m *Lease) GetLeaseId() string { if m != nil { @@ -1218,13 +1243,35 @@ // Reference to a Lease that has been created via CreateLease. type LeaseReference struct { // Lease ID (required) - LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId" json:"lease_id,omitempty"` + LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *LeaseReference) Reset() { *m = LeaseReference{} } -func (m *LeaseReference) String() string { return proto.CompactTextString(m) } -func (*LeaseReference) ProtoMessage() {} -func (*LeaseReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } +func (m *LeaseReference) Reset() { *m = LeaseReference{} } +func (m *LeaseReference) String() string { return proto.CompactTextString(m) } +func (*LeaseReference) ProtoMessage() {} +func (*LeaseReference) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{13} +} +func (m *LeaseReference) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LeaseReference.Unmarshal(m, b) +} +func (m *LeaseReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LeaseReference.Marshal(b, m, deterministic) +} +func (dst *LeaseReference) XXX_Merge(src proto.Message) { + xxx_messageInfo_LeaseReference.Merge(dst, src) +} +func (m *LeaseReference) XXX_Size() int { + return xxx_messageInfo_LeaseReference.Size(m) +} +func (m *LeaseReference) XXX_DiscardUnknown() { + xxx_messageInfo_LeaseReference.DiscardUnknown(m) +} + +var xxx_messageInfo_LeaseReference proto.InternalMessageInfo func (m *LeaseReference) GetLeaseId() string { if m != nil { @@ -1233,26 +1280,666 @@ return "" } -// [START message_booking] +// Request to create an order. +type CreateOrderRequest struct { + // The order to create. (required) + Order *Order `protobuf:"bytes,1,opt,name=order,proto3" json:"order,omitempty"` + // 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 *PaymentProcessingParameters `protobuf:"bytes,2,opt,name=payment_processing_parameters,json=paymentProcessingParameters,proto3" json:"payment_processing_parameters,omitempty"` + // Idempotency token for CreateOrder requests. (required) + IdempotencyToken string `protobuf:"bytes,3,opt,name=idempotency_token,json=idempotencyToken,proto3" json:"idempotency_token,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOrderRequest) Reset() { *m = CreateOrderRequest{} } +func (m *CreateOrderRequest) String() string { return proto.CompactTextString(m) } +func (*CreateOrderRequest) ProtoMessage() {} +func (*CreateOrderRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{14} +} +func (m *CreateOrderRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOrderRequest.Unmarshal(m, b) +} +func (m *CreateOrderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOrderRequest.Marshal(b, m, deterministic) +} +func (dst *CreateOrderRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrderRequest.Merge(dst, src) +} +func (m *CreateOrderRequest) XXX_Size() int { + return xxx_messageInfo_CreateOrderRequest.Size(m) +} +func (m *CreateOrderRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOrderRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOrderRequest proto.InternalMessageInfo + +func (m *CreateOrderRequest) GetOrder() *Order { + if m != nil { + return m.Order + } + return nil +} + +func (m *CreateOrderRequest) GetPaymentProcessingParameters() *PaymentProcessingParameters { + if m != nil { + return m.PaymentProcessingParameters + } + return nil +} + +func (m *CreateOrderRequest) GetIdempotencyToken() string { + if m != nil { + return m.IdempotencyToken + } + return "" +} + +// Response for the CreateOrderRequest. +type CreateOrderResponse struct { + // 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. + // + // Types that are valid to be assigned to Result: + // *CreateOrderResponse_Order + // *CreateOrderResponse_OrderFailure + Result isCreateOrderResponse_Result `protobuf_oneof:"result"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOrderResponse) Reset() { *m = CreateOrderResponse{} } +func (m *CreateOrderResponse) String() string { return proto.CompactTextString(m) } +func (*CreateOrderResponse) ProtoMessage() {} +func (*CreateOrderResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{15} +} +func (m *CreateOrderResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOrderResponse.Unmarshal(m, b) +} +func (m *CreateOrderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOrderResponse.Marshal(b, m, deterministic) +} +func (dst *CreateOrderResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrderResponse.Merge(dst, src) +} +func (m *CreateOrderResponse) XXX_Size() int { + return xxx_messageInfo_CreateOrderResponse.Size(m) +} +func (m *CreateOrderResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOrderResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOrderResponse proto.InternalMessageInfo + +type isCreateOrderResponse_Result interface { + isCreateOrderResponse_Result() +} + +type CreateOrderResponse_Order struct { + Order *Order `protobuf:"bytes,1,opt,name=order,proto3,oneof"` +} +type CreateOrderResponse_OrderFailure struct { + OrderFailure *OrderFailure `protobuf:"bytes,2,opt,name=order_failure,json=orderFailure,proto3,oneof"` +} + +func (*CreateOrderResponse_Order) isCreateOrderResponse_Result() {} +func (*CreateOrderResponse_OrderFailure) isCreateOrderResponse_Result() {} + +func (m *CreateOrderResponse) GetResult() isCreateOrderResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (m *CreateOrderResponse) GetOrder() *Order { + if x, ok := m.GetResult().(*CreateOrderResponse_Order); ok { + return x.Order + } + return nil +} + +func (m *CreateOrderResponse) GetOrderFailure() *OrderFailure { + if x, ok := m.GetResult().(*CreateOrderResponse_OrderFailure); ok { + return x.OrderFailure + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*CreateOrderResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _CreateOrderResponse_OneofMarshaler, _CreateOrderResponse_OneofUnmarshaler, _CreateOrderResponse_OneofSizer, []interface{}{ + (*CreateOrderResponse_Order)(nil), + (*CreateOrderResponse_OrderFailure)(nil), + } +} + +func _CreateOrderResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*CreateOrderResponse) + // result + switch x := m.Result.(type) { + case *CreateOrderResponse_Order: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Order); err != nil { + return err + } + case *CreateOrderResponse_OrderFailure: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.OrderFailure); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("CreateOrderResponse.Result has unexpected type %T", x) + } + return nil +} + +func _CreateOrderResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*CreateOrderResponse) + switch tag { + case 1: // result.order + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Order) + err := b.DecodeMessage(msg) + m.Result = &CreateOrderResponse_Order{msg} + return true, err + case 2: // result.order_failure + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(OrderFailure) + err := b.DecodeMessage(msg) + m.Result = &CreateOrderResponse_OrderFailure{msg} + return true, err + default: + return false, nil + } +} + +func _CreateOrderResponse_OneofSizer(msg proto.Message) (n int) { + m := msg.(*CreateOrderResponse) + // result + switch x := m.Result.(type) { + case *CreateOrderResponse_Order: + s := proto.Size(x.Order) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *CreateOrderResponse_OrderFailure: + s := proto.Size(x.OrderFailure) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +// Request to list all bookings for a user +type ListBookingsRequest struct { + // ID of the user (required) + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListBookingsRequest) Reset() { *m = ListBookingsRequest{} } +func (m *ListBookingsRequest) String() string { return proto.CompactTextString(m) } +func (*ListBookingsRequest) ProtoMessage() {} +func (*ListBookingsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{16} +} +func (m *ListBookingsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListBookingsRequest.Unmarshal(m, b) +} +func (m *ListBookingsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListBookingsRequest.Marshal(b, m, deterministic) +} +func (dst *ListBookingsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListBookingsRequest.Merge(dst, src) +} +func (m *ListBookingsRequest) XXX_Size() int { + return xxx_messageInfo_ListBookingsRequest.Size(m) +} +func (m *ListBookingsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListBookingsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListBookingsRequest proto.InternalMessageInfo + +func (m *ListBookingsRequest) GetUserId() string { + if m != nil { + return m.UserId + } + return "" +} + +// Response for the ListBookings RPC with all bookings for the requested user. +type ListBookingsResponse struct { + // All bookings of the user (required) + Bookings []*Booking `protobuf:"bytes,1,rep,name=bookings,proto3" json:"bookings,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListBookingsResponse) Reset() { *m = ListBookingsResponse{} } +func (m *ListBookingsResponse) String() string { return proto.CompactTextString(m) } +func (*ListBookingsResponse) ProtoMessage() {} +func (*ListBookingsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{17} +} +func (m *ListBookingsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListBookingsResponse.Unmarshal(m, b) +} +func (m *ListBookingsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListBookingsResponse.Marshal(b, m, deterministic) +} +func (dst *ListBookingsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListBookingsResponse.Merge(dst, src) +} +func (m *ListBookingsResponse) XXX_Size() int { + return xxx_messageInfo_ListBookingsResponse.Size(m) +} +func (m *ListBookingsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListBookingsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListBookingsResponse proto.InternalMessageInfo + +func (m *ListBookingsResponse) GetBookings() []*Booking { + if m != nil { + return m.Bookings + } + return nil +} + +// Request to list orders. +type ListOrdersRequest struct { + // Request of orders either by user ID, or by order ID. + // + // Types that are valid to be assigned to Ids: + // *ListOrdersRequest_UserId + // *ListOrdersRequest_OrderIds_ + Ids isListOrdersRequest_Ids `protobuf_oneof:"ids"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListOrdersRequest) Reset() { *m = ListOrdersRequest{} } +func (m *ListOrdersRequest) String() string { return proto.CompactTextString(m) } +func (*ListOrdersRequest) ProtoMessage() {} +func (*ListOrdersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{18} +} +func (m *ListOrdersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListOrdersRequest.Unmarshal(m, b) +} +func (m *ListOrdersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListOrdersRequest.Marshal(b, m, deterministic) +} +func (dst *ListOrdersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListOrdersRequest.Merge(dst, src) +} +func (m *ListOrdersRequest) XXX_Size() int { + return xxx_messageInfo_ListOrdersRequest.Size(m) +} +func (m *ListOrdersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListOrdersRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListOrdersRequest proto.InternalMessageInfo + +type isListOrdersRequest_Ids interface { + isListOrdersRequest_Ids() +} + +type ListOrdersRequest_UserId struct { + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3,oneof"` +} +type ListOrdersRequest_OrderIds_ struct { + OrderIds *ListOrdersRequest_OrderIds `protobuf:"bytes,2,opt,name=order_ids,json=orderIds,proto3,oneof"` +} + +func (*ListOrdersRequest_UserId) isListOrdersRequest_Ids() {} +func (*ListOrdersRequest_OrderIds_) isListOrdersRequest_Ids() {} + +func (m *ListOrdersRequest) GetIds() isListOrdersRequest_Ids { + if m != nil { + return m.Ids + } + return nil +} + +func (m *ListOrdersRequest) GetUserId() string { + if x, ok := m.GetIds().(*ListOrdersRequest_UserId); ok { + return x.UserId + } + return "" +} + +func (m *ListOrdersRequest) GetOrderIds() *ListOrdersRequest_OrderIds { + if x, ok := m.GetIds().(*ListOrdersRequest_OrderIds_); ok { + return x.OrderIds + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ListOrdersRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ListOrdersRequest_OneofMarshaler, _ListOrdersRequest_OneofUnmarshaler, _ListOrdersRequest_OneofSizer, []interface{}{ + (*ListOrdersRequest_UserId)(nil), + (*ListOrdersRequest_OrderIds_)(nil), + } +} + +func _ListOrdersRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ListOrdersRequest) + // ids + switch x := m.Ids.(type) { + case *ListOrdersRequest_UserId: + b.EncodeVarint(1<<3 | proto.WireBytes) + b.EncodeStringBytes(x.UserId) + case *ListOrdersRequest_OrderIds_: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.OrderIds); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ListOrdersRequest.Ids has unexpected type %T", x) + } + return nil +} + +func _ListOrdersRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ListOrdersRequest) + switch tag { + case 1: // ids.user_id + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.Ids = &ListOrdersRequest_UserId{x} + return true, err + case 2: // ids.order_ids + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ListOrdersRequest_OrderIds) + err := b.DecodeMessage(msg) + m.Ids = &ListOrdersRequest_OrderIds_{msg} + return true, err + default: + return false, nil + } +} + +func _ListOrdersRequest_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ListOrdersRequest) + // ids + switch x := m.Ids.(type) { + case *ListOrdersRequest_UserId: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(len(x.UserId))) + n += len(x.UserId) + case *ListOrdersRequest_OrderIds_: + s := proto.Size(x.OrderIds) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type ListOrdersRequest_OrderIds struct { + OrderId []string `protobuf:"bytes,1,rep,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListOrdersRequest_OrderIds) Reset() { *m = ListOrdersRequest_OrderIds{} } +func (m *ListOrdersRequest_OrderIds) String() string { return proto.CompactTextString(m) } +func (*ListOrdersRequest_OrderIds) ProtoMessage() {} +func (*ListOrdersRequest_OrderIds) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{18, 0} +} +func (m *ListOrdersRequest_OrderIds) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListOrdersRequest_OrderIds.Unmarshal(m, b) +} +func (m *ListOrdersRequest_OrderIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListOrdersRequest_OrderIds.Marshal(b, m, deterministic) +} +func (dst *ListOrdersRequest_OrderIds) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListOrdersRequest_OrderIds.Merge(dst, src) +} +func (m *ListOrdersRequest_OrderIds) XXX_Size() int { + return xxx_messageInfo_ListOrdersRequest_OrderIds.Size(m) +} +func (m *ListOrdersRequest_OrderIds) XXX_DiscardUnknown() { + xxx_messageInfo_ListOrdersRequest_OrderIds.DiscardUnknown(m) +} + +var xxx_messageInfo_ListOrdersRequest_OrderIds proto.InternalMessageInfo + +func (m *ListOrdersRequest_OrderIds) GetOrderId() []string { + if m != nil { + return m.OrderId + } + return nil +} + +// Response for the ListOrders RPC. +type ListOrdersResponse struct { + // All requested orders (required) + Order []*Order `protobuf:"bytes,1,rep,name=order,proto3" json:"order,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListOrdersResponse) Reset() { *m = ListOrdersResponse{} } +func (m *ListOrdersResponse) String() string { return proto.CompactTextString(m) } +func (*ListOrdersResponse) ProtoMessage() {} +func (*ListOrdersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{19} +} +func (m *ListOrdersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListOrdersResponse.Unmarshal(m, b) +} +func (m *ListOrdersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListOrdersResponse.Marshal(b, m, deterministic) +} +func (dst *ListOrdersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListOrdersResponse.Merge(dst, src) +} +func (m *ListOrdersResponse) XXX_Size() int { + return xxx_messageInfo_ListOrdersResponse.Size(m) +} +func (m *ListOrdersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListOrdersResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListOrdersResponse proto.InternalMessageInfo + +func (m *ListOrdersResponse) GetOrder() []*Order { + if m != nil { + return m.Order + } + return nil +} + +// Request to update a Booking. +type UpdateBookingRequest struct { + // 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 `protobuf:"bytes,1,opt,name=booking,proto3" json:"booking,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateBookingRequest) Reset() { *m = UpdateBookingRequest{} } +func (m *UpdateBookingRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateBookingRequest) ProtoMessage() {} +func (*UpdateBookingRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{20} +} +func (m *UpdateBookingRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateBookingRequest.Unmarshal(m, b) +} +func (m *UpdateBookingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateBookingRequest.Marshal(b, m, deterministic) +} +func (dst *UpdateBookingRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateBookingRequest.Merge(dst, src) +} +func (m *UpdateBookingRequest) XXX_Size() int { + return xxx_messageInfo_UpdateBookingRequest.Size(m) +} +func (m *UpdateBookingRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateBookingRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateBookingRequest proto.InternalMessageInfo + +func (m *UpdateBookingRequest) GetBooking() *Booking { + if m != nil { + return m.Booking + } + return nil +} + +// Response with the updated Booking. +type UpdateBookingResponse struct { + // The updated booking (required) + Booking *Booking `protobuf:"bytes,1,opt,name=booking,proto3" json:"booking,omitempty"` + // 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 *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption,proto3" json:"user_payment_option,omitempty"` + // If updating a booking fails, this field should reflect the business logic + // error (e.g., booking is not cancellable) (required if failure occurs) + BookingFailure *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure,proto3" json:"booking_failure,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateBookingResponse) Reset() { *m = UpdateBookingResponse{} } +func (m *UpdateBookingResponse) String() string { return proto.CompactTextString(m) } +func (*UpdateBookingResponse) ProtoMessage() {} +func (*UpdateBookingResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{21} +} +func (m *UpdateBookingResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateBookingResponse.Unmarshal(m, b) +} +func (m *UpdateBookingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateBookingResponse.Marshal(b, m, deterministic) +} +func (dst *UpdateBookingResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateBookingResponse.Merge(dst, src) +} +func (m *UpdateBookingResponse) XXX_Size() int { + return xxx_messageInfo_UpdateBookingResponse.Size(m) +} +func (m *UpdateBookingResponse) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateBookingResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateBookingResponse proto.InternalMessageInfo + +func (m *UpdateBookingResponse) GetBooking() *Booking { + if m != nil { + return m.Booking + } + return nil +} + +func (m *UpdateBookingResponse) GetUserPaymentOption() *UserPaymentOption { + if m != nil { + return m.UserPaymentOption + } + return nil +} + +func (m *UpdateBookingResponse) GetBookingFailure() *BookingFailure { + if m != nil { + return m.BookingFailure + } + return nil +} + // A booking for an inventory slot type Booking struct { // ID of this booking (required) - BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"` + BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId,proto3" json:"booking_id,omitempty"` // The appointment slot of this booking (required) - Slot *Slot `protobuf:"bytes,2,opt,name=slot" json:"slot,omitempty"` + Slot *Slot `protobuf:"bytes,2,opt,name=slot,proto3" json:"slot,omitempty"` // Personal information of the user making the appointment (required) - UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation" json:"user_information,omitempty"` + UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"` // Status of the booking (required) - Status BookingStatus `protobuf:"varint,4,opt,name=status,enum=v3.BookingStatus" json:"status,omitempty"` + Status BookingStatus `protobuf:"varint,4,opt,name=status,proto3,enum=ext.maps.booking.partner.v3.BookingStatus" json:"status,omitempty"` // Information about payment transactions that relate to the booking. // (optional) - PaymentInformation *PaymentInformation `protobuf:"bytes,5,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"` + PaymentInformation *PaymentInformation `protobuf:"bytes,5,opt,name=payment_information,json=paymentInformation,proto3" json:"payment_information,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Booking) Reset() { *m = Booking{} } -func (m *Booking) String() string { return proto.CompactTextString(m) } -func (*Booking) ProtoMessage() {} -func (*Booking) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } +func (m *Booking) Reset() { *m = Booking{} } +func (m *Booking) String() string { return proto.CompactTextString(m) } +func (*Booking) ProtoMessage() {} +func (*Booking) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{22} +} +func (m *Booking) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Booking.Unmarshal(m, b) +} +func (m *Booking) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Booking.Marshal(b, m, deterministic) +} +func (dst *Booking) XXX_Merge(src proto.Message) { + xxx_messageInfo_Booking.Merge(dst, src) +} +func (m *Booking) XXX_Size() int { + return xxx_messageInfo_Booking.Size(m) +} +func (m *Booking) XXX_DiscardUnknown() { + xxx_messageInfo_Booking.DiscardUnknown(m) +} + +var xxx_messageInfo_Booking proto.InternalMessageInfo func (m *Booking) GetBookingId() string { if m != nil { @@ -1289,78 +1976,667 @@ return nil } -// [START user_definition] -// Personal information about the person making a booking -type UserInformation struct { - // Unique ID of the user to the partner, chosen by Reserve with Google. - // (required) - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId" json:"user_id,omitempty"` - // Given name of the user (required) - GivenName string `protobuf:"bytes,2,opt,name=given_name,json=givenName" json:"given_name,omitempty"` - // Family name of the user (required) - FamilyName string `protobuf:"bytes,3,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // Address of the user (optional) - Address *PostalAddress `protobuf:"bytes,4,opt,name=address" json:"address,omitempty"` - // Phone number of the user (required) - Telephone string `protobuf:"bytes,5,opt,name=telephone" json:"telephone,omitempty"` - // Email address of the user (required) - Email string `protobuf:"bytes,6,opt,name=email" json:"email,omitempty"` +// 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. +type BookingFailure struct { + // The reason why the booking failed. (required) + Cause BookingFailure_Cause `protobuf:"varint,1,opt,name=cause,proto3,enum=ext.maps.booking.partner.v3.BookingFailure_Cause" json:"cause,omitempty"` + // (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED) + RejectedCardType CreditCardType `protobuf:"varint,2,opt,name=rejected_card_type,json=rejectedCardType,proto3,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"` + // This optional field is used for the partner to include additional + // information for debugging purpose only. (optional) + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *UserInformation) Reset() { *m = UserInformation{} } -func (m *UserInformation) String() string { return proto.CompactTextString(m) } -func (*UserInformation) ProtoMessage() {} -func (*UserInformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } +func (m *BookingFailure) Reset() { *m = BookingFailure{} } +func (m *BookingFailure) String() string { return proto.CompactTextString(m) } +func (*BookingFailure) ProtoMessage() {} +func (*BookingFailure) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{23} +} +func (m *BookingFailure) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BookingFailure.Unmarshal(m, b) +} +func (m *BookingFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BookingFailure.Marshal(b, m, deterministic) +} +func (dst *BookingFailure) XXX_Merge(src proto.Message) { + xxx_messageInfo_BookingFailure.Merge(dst, src) +} +func (m *BookingFailure) XXX_Size() int { + return xxx_messageInfo_BookingFailure.Size(m) +} +func (m *BookingFailure) XXX_DiscardUnknown() { + xxx_messageInfo_BookingFailure.DiscardUnknown(m) +} -func (m *UserInformation) GetUserId() string { +var xxx_messageInfo_BookingFailure proto.InternalMessageInfo + +func (m *BookingFailure) GetCause() BookingFailure_Cause { if m != nil { - return m.UserId + return m.Cause + } + return BookingFailure_CAUSE_UNSPECIFIED +} + +func (m *BookingFailure) GetRejectedCardType() CreditCardType { + if m != nil { + return m.RejectedCardType + } + return CreditCardType_CREDIT_CARD_TYPE_UNSPECIFIED +} + +func (m *BookingFailure) GetDescription() string { + if m != nil { + return m.Description } return "" } -func (m *UserInformation) GetGivenName() string { +// An order for service appointments with a merchant. +type Order struct { + // ID of this Order, chosen by the booking partner who handles the order + // (required in CreateOrderResponse and ListOrdersResponse, must not be set in + // CreateOrderRequest) + OrderId string `protobuf:"bytes,1,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` + // Personal information of the user making the order (required) + UserInformation *UserInformation `protobuf:"bytes,2,opt,name=user_information,json=userInformation,proto3" json:"user_information,omitempty"` + // Information about payment transactions that relate to the Order. + // (optional) + PaymentInformation *PaymentInformation `protobuf:"bytes,3,opt,name=payment_information,json=paymentInformation,proto3" json:"payment_information,omitempty"` + // The merchant that all services in this Order belong to. + MerchantId string `protobuf:"bytes,4,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"` + // Line items in this order. + Item []*LineItem `protobuf:"bytes,5,rep,name=item,proto3" json:"item,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Order) Reset() { *m = Order{} } +func (m *Order) String() string { return proto.CompactTextString(m) } +func (*Order) ProtoMessage() {} +func (*Order) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{24} +} +func (m *Order) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Order.Unmarshal(m, b) +} +func (m *Order) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Order.Marshal(b, m, deterministic) +} +func (dst *Order) XXX_Merge(src proto.Message) { + xxx_messageInfo_Order.Merge(dst, src) +} +func (m *Order) XXX_Size() int { + return xxx_messageInfo_Order.Size(m) +} +func (m *Order) XXX_DiscardUnknown() { + xxx_messageInfo_Order.DiscardUnknown(m) +} + +var xxx_messageInfo_Order proto.InternalMessageInfo + +func (m *Order) GetOrderId() string { if m != nil { - return m.GivenName + return m.OrderId } return "" } -func (m *UserInformation) GetFamilyName() string { +func (m *Order) GetUserInformation() *UserInformation { if m != nil { - return m.FamilyName - } - return "" -} - -func (m *UserInformation) GetAddress() *PostalAddress { - if m != nil { - return m.Address + return m.UserInformation } return nil } -func (m *UserInformation) GetTelephone() string { +func (m *Order) GetPaymentInformation() *PaymentInformation { if m != nil { - return m.Telephone + return m.PaymentInformation + } + return nil +} + +func (m *Order) GetMerchantId() string { + if m != nil { + return m.MerchantId } return "" } -func (m *UserInformation) GetEmail() string { +func (m *Order) GetItem() []*LineItem { if m != nil { - return m.Email + return m.Item + } + return nil +} + +// A single item in an Order--the booking of a single service in a single time +// slot. +type LineItem struct { + // ID of the merchant Service. (required) + ServiceId string `protobuf:"bytes,1,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + // Start time of the appointment slot in seconds of UTC time since Unix epoch. + // (required) + StartSec int64 `protobuf:"varint,2,opt,name=start_sec,json=startSec,proto3" json:"start_sec,omitempty"` + // Duration of the appointment slot in seconds. (required) + DurationSec int64 `protobuf:"varint,3,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` + // Number of tickets ordered by Ticket Type. + Tickets []*LineItem_OrderedTickets `protobuf:"bytes,4,rep,name=tickets,proto3" json:"tickets,omitempty"` + // 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 `protobuf:"bytes,5,opt,name=price,proto3" json:"price,omitempty"` + // Status of the Line Item. (required in CreateOrderResponse and + // ListOrdersResponse; should not be set in requests) + Status BookingStatus `protobuf:"varint,6,opt,name=status,proto3,enum=ext.maps.booking.partner.v3.BookingStatus" json:"status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LineItem) Reset() { *m = LineItem{} } +func (m *LineItem) String() string { return proto.CompactTextString(m) } +func (*LineItem) ProtoMessage() {} +func (*LineItem) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{25} +} +func (m *LineItem) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LineItem.Unmarshal(m, b) +} +func (m *LineItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LineItem.Marshal(b, m, deterministic) +} +func (dst *LineItem) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItem.Merge(dst, src) +} +func (m *LineItem) XXX_Size() int { + return xxx_messageInfo_LineItem.Size(m) +} +func (m *LineItem) XXX_DiscardUnknown() { + xxx_messageInfo_LineItem.DiscardUnknown(m) +} + +var xxx_messageInfo_LineItem proto.InternalMessageInfo + +func (m *LineItem) GetServiceId() string { + if m != nil { + return m.ServiceId } return "" } -// [START paymentprocessing_definition] +func (m *LineItem) GetStartSec() int64 { + if m != nil { + return m.StartSec + } + return 0 +} + +func (m *LineItem) GetDurationSec() int64 { + if m != nil { + return m.DurationSec + } + return 0 +} + +func (m *LineItem) GetTickets() []*LineItem_OrderedTickets { + if m != nil { + return m.Tickets + } + return nil +} + +func (m *LineItem) GetPrice() *Price { + if m != nil { + return m.Price + } + return nil +} + +func (m *LineItem) GetStatus() BookingStatus { + if m != nil { + return m.Status + } + return BookingStatus_BOOKING_STATUS_UNSPECIFIED +} + +type LineItem_OrderedTickets struct { + TicketId string `protobuf:"bytes,1,opt,name=ticket_id,json=ticketId,proto3" json:"ticket_id,omitempty"` + Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LineItem_OrderedTickets) Reset() { *m = LineItem_OrderedTickets{} } +func (m *LineItem_OrderedTickets) String() string { return proto.CompactTextString(m) } +func (*LineItem_OrderedTickets) ProtoMessage() {} +func (*LineItem_OrderedTickets) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{25, 0} +} +func (m *LineItem_OrderedTickets) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LineItem_OrderedTickets.Unmarshal(m, b) +} +func (m *LineItem_OrderedTickets) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LineItem_OrderedTickets.Marshal(b, m, deterministic) +} +func (dst *LineItem_OrderedTickets) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItem_OrderedTickets.Merge(dst, src) +} +func (m *LineItem_OrderedTickets) XXX_Size() int { + return xxx_messageInfo_LineItem_OrderedTickets.Size(m) +} +func (m *LineItem_OrderedTickets) XXX_DiscardUnknown() { + xxx_messageInfo_LineItem_OrderedTickets.DiscardUnknown(m) +} + +var xxx_messageInfo_LineItem_OrderedTickets proto.InternalMessageInfo + +func (m *LineItem_OrderedTickets) GetTicketId() string { + if m != nil { + return m.TicketId + } + return "" +} + +func (m *LineItem_OrderedTickets) GetCount() int32 { + if m != nil { + return m.Count + } + return 0 +} + +// Status data that conveys why creating an order fails. +// OrderFailure is intended to primarily capture business logic errors. +type OrderFailure struct { + // The reason why the order failed. (required) + Cause OrderFailure_Cause `protobuf:"varint,1,opt,name=cause,proto3,enum=ext.maps.booking.partner.v3.OrderFailure_Cause" json:"cause,omitempty"` + // (required only if cause is ORDER_UNFULFILLABLE) + Fulfillability *OrderFulfillability `protobuf:"bytes,2,opt,name=fulfillability,proto3" json:"fulfillability,omitempty"` + // (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED) + RejectedCardType CreditCardType `protobuf:"varint,3,opt,name=rejected_card_type,json=rejectedCardType,proto3,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"` + // This optional field is used for the partner to include additional + // information for debugging purpose only. (optional) + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OrderFailure) Reset() { *m = OrderFailure{} } +func (m *OrderFailure) String() string { return proto.CompactTextString(m) } +func (*OrderFailure) ProtoMessage() {} +func (*OrderFailure) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{26} +} +func (m *OrderFailure) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OrderFailure.Unmarshal(m, b) +} +func (m *OrderFailure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OrderFailure.Marshal(b, m, deterministic) +} +func (dst *OrderFailure) XXX_Merge(src proto.Message) { + xxx_messageInfo_OrderFailure.Merge(dst, src) +} +func (m *OrderFailure) XXX_Size() int { + return xxx_messageInfo_OrderFailure.Size(m) +} +func (m *OrderFailure) XXX_DiscardUnknown() { + xxx_messageInfo_OrderFailure.DiscardUnknown(m) +} + +var xxx_messageInfo_OrderFailure proto.InternalMessageInfo + +func (m *OrderFailure) GetCause() OrderFailure_Cause { + if m != nil { + return m.Cause + } + return OrderFailure_CAUSE_UNSPECIFIED +} + +func (m *OrderFailure) GetFulfillability() *OrderFulfillability { + if m != nil { + return m.Fulfillability + } + return nil +} + +func (m *OrderFailure) GetRejectedCardType() CreditCardType { + if m != nil { + return m.RejectedCardType + } + return CreditCardType_CREDIT_CARD_TYPE_UNSPECIFIED +} + +func (m *OrderFailure) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type OrderFulfillability struct { + Result OrderFulfillability_OrderFulfillabilityResult `protobuf:"varint,1,opt,name=result,proto3,enum=ext.maps.booking.partner.v3.OrderFulfillability_OrderFulfillabilityResult" json:"result,omitempty"` + // Fulfillability results of all line items in this order (required). + ItemFulfillability []*LineItemFulfillability `protobuf:"bytes,2,rep,name=item_fulfillability,json=itemFulfillability,proto3" json:"item_fulfillability,omitempty"` + // Additional description of the reason if the item is unfulfillable. + // (optional) + UnfulfillableReason string `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason,proto3" json:"unfulfillable_reason,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OrderFulfillability) Reset() { *m = OrderFulfillability{} } +func (m *OrderFulfillability) String() string { return proto.CompactTextString(m) } +func (*OrderFulfillability) ProtoMessage() {} +func (*OrderFulfillability) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{27} +} +func (m *OrderFulfillability) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OrderFulfillability.Unmarshal(m, b) +} +func (m *OrderFulfillability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OrderFulfillability.Marshal(b, m, deterministic) +} +func (dst *OrderFulfillability) XXX_Merge(src proto.Message) { + xxx_messageInfo_OrderFulfillability.Merge(dst, src) +} +func (m *OrderFulfillability) XXX_Size() int { + return xxx_messageInfo_OrderFulfillability.Size(m) +} +func (m *OrderFulfillability) XXX_DiscardUnknown() { + xxx_messageInfo_OrderFulfillability.DiscardUnknown(m) +} + +var xxx_messageInfo_OrderFulfillability proto.InternalMessageInfo + +func (m *OrderFulfillability) GetResult() OrderFulfillability_OrderFulfillabilityResult { + if m != nil { + return m.Result + } + return OrderFulfillability_ORDER_FULFILLABILITY_RESULT_UNSPECIFIED +} + +func (m *OrderFulfillability) GetItemFulfillability() []*LineItemFulfillability { + if m != nil { + return m.ItemFulfillability + } + return nil +} + +func (m *OrderFulfillability) GetUnfulfillableReason() string { + if m != nil { + return m.UnfulfillableReason + } + return "" +} + +// Fulfillability of a line item. +type LineItemFulfillability struct { + // The line item of question. (required) + Item *LineItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + // (required) + Result LineItemFulfillability_ItemFulfillabilityResult `protobuf:"varint,2,opt,name=result,proto3,enum=ext.maps.booking.partner.v3.LineItemFulfillability_ItemFulfillabilityResult" json:"result,omitempty"` + // Additional description of the reason if the item is unfulfillable. + // (optional) + UnfulfillableReason string `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason,proto3" json:"unfulfillable_reason,omitempty"` + // (optional) + Availability *LineItemFulfillability_UpdatedAvailability `protobuf:"bytes,4,opt,name=availability,proto3" json:"availability,omitempty"` + // 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) + TicketType []*TicketType `protobuf:"bytes,5,rep,name=ticket_type,json=ticketType,proto3" json:"ticket_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LineItemFulfillability) Reset() { *m = LineItemFulfillability{} } +func (m *LineItemFulfillability) String() string { return proto.CompactTextString(m) } +func (*LineItemFulfillability) ProtoMessage() {} +func (*LineItemFulfillability) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{28} +} +func (m *LineItemFulfillability) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LineItemFulfillability.Unmarshal(m, b) +} +func (m *LineItemFulfillability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LineItemFulfillability.Marshal(b, m, deterministic) +} +func (dst *LineItemFulfillability) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItemFulfillability.Merge(dst, src) +} +func (m *LineItemFulfillability) XXX_Size() int { + return xxx_messageInfo_LineItemFulfillability.Size(m) +} +func (m *LineItemFulfillability) XXX_DiscardUnknown() { + xxx_messageInfo_LineItemFulfillability.DiscardUnknown(m) +} + +var xxx_messageInfo_LineItemFulfillability proto.InternalMessageInfo + +func (m *LineItemFulfillability) GetItem() *LineItem { + if m != nil { + return m.Item + } + return nil +} + +func (m *LineItemFulfillability) GetResult() LineItemFulfillability_ItemFulfillabilityResult { + if m != nil { + return m.Result + } + return LineItemFulfillability_ITEM_FULFILLABILITY_RESULT_UNSPECIFIED +} + +func (m *LineItemFulfillability) GetUnfulfillableReason() string { + if m != nil { + return m.UnfulfillableReason + } + return "" +} + +func (m *LineItemFulfillability) GetAvailability() *LineItemFulfillability_UpdatedAvailability { + if m != nil { + return m.Availability + } + return nil +} + +func (m *LineItemFulfillability) GetTicketType() []*TicketType { + if m != nil { + return m.TicketType + } + return nil +} + +// Updated availability for this slot can be piggybacked in +// CheckOrderFulfillabilityResponse. +type LineItemFulfillability_UpdatedAvailability struct { + // Number of available spots for the given slot. 0 indicates no + // availability. (required) + SpotsOpen int32 `protobuf:"varint,1,opt,name=spots_open,json=spotsOpen,proto3" json:"spots_open,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LineItemFulfillability_UpdatedAvailability) Reset() { + *m = LineItemFulfillability_UpdatedAvailability{} +} +func (m *LineItemFulfillability_UpdatedAvailability) String() string { + return proto.CompactTextString(m) +} +func (*LineItemFulfillability_UpdatedAvailability) ProtoMessage() {} +func (*LineItemFulfillability_UpdatedAvailability) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{28, 0} +} +func (m *LineItemFulfillability_UpdatedAvailability) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Unmarshal(m, b) +} +func (m *LineItemFulfillability_UpdatedAvailability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Marshal(b, m, deterministic) +} +func (dst *LineItemFulfillability_UpdatedAvailability) XXX_Merge(src proto.Message) { + xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Merge(dst, src) +} +func (m *LineItemFulfillability_UpdatedAvailability) XXX_Size() int { + return xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.Size(m) +} +func (m *LineItemFulfillability_UpdatedAvailability) XXX_DiscardUnknown() { + xxx_messageInfo_LineItemFulfillability_UpdatedAvailability.DiscardUnknown(m) +} + +var xxx_messageInfo_LineItemFulfillability_UpdatedAvailability proto.InternalMessageInfo + +func (m *LineItemFulfillability_UpdatedAvailability) GetSpotsOpen() int32 { + if m != nil { + return m.SpotsOpen + } + return 0 +} + +// 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. +type TicketType struct { + // 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. + TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId,proto3" json:"ticket_type_id,omitempty"` + // This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc. + ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` + // 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 `protobuf:"bytes,3,opt,name=price,proto3" json:"price,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TicketType) Reset() { *m = TicketType{} } +func (m *TicketType) String() string { return proto.CompactTextString(m) } +func (*TicketType) ProtoMessage() {} +func (*TicketType) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{29} +} +func (m *TicketType) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TicketType.Unmarshal(m, b) +} +func (m *TicketType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TicketType.Marshal(b, m, deterministic) +} +func (dst *TicketType) XXX_Merge(src proto.Message) { + xxx_messageInfo_TicketType.Merge(dst, src) +} +func (m *TicketType) XXX_Size() int { + return xxx_messageInfo_TicketType.Size(m) +} +func (m *TicketType) XXX_DiscardUnknown() { + xxx_messageInfo_TicketType.DiscardUnknown(m) +} + +var xxx_messageInfo_TicketType proto.InternalMessageInfo + +func (m *TicketType) GetTicketTypeId() string { + if m != nil { + return m.TicketTypeId + } + return "" +} + +func (m *TicketType) GetShortDescription() string { + if m != nil { + return m.ShortDescription + } + return "" +} + +func (m *TicketType) GetPrice() *Price { + if m != nil { + return m.Price + } + return nil +} + +// Resource specification that disambiguates an appointment slot +type ResourceIds struct { + // The staff ID as provided in the feed or empty if not applicable or no staff + // was selected. (optional) + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + // The room ID as provided in the feed or empty if not applicable or no room + // was selected. (optional) + RoomId string `protobuf:"bytes,2,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"` + // For Dining Reservations only: the number of seats requested in the booking. + // (optional) + PartySize int32 `protobuf:"varint,3,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ResourceIds) Reset() { *m = ResourceIds{} } +func (m *ResourceIds) String() string { return proto.CompactTextString(m) } +func (*ResourceIds) ProtoMessage() {} +func (*ResourceIds) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{30} +} +func (m *ResourceIds) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ResourceIds.Unmarshal(m, b) +} +func (m *ResourceIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ResourceIds.Marshal(b, m, deterministic) +} +func (dst *ResourceIds) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResourceIds.Merge(dst, src) +} +func (m *ResourceIds) XXX_Size() int { + return xxx_messageInfo_ResourceIds.Size(m) +} +func (m *ResourceIds) XXX_DiscardUnknown() { + xxx_messageInfo_ResourceIds.DiscardUnknown(m) +} + +var xxx_messageInfo_ResourceIds proto.InternalMessageInfo + +func (m *ResourceIds) GetStaffId() string { + if m != nil { + return m.StaffId + } + return "" +} + +func (m *ResourceIds) GetRoomId() string { + if m != nil { + return m.RoomId + } + return "" +} + +func (m *ResourceIds) GetPartySize() int32 { + if m != nil { + return m.PartySize + } + return 0 +} + type PaymentProcessingParameters struct { // The payment processor used to process payment for a given booking. // (required) // // Replaced by the payment_processor field. - Processor PaymentProcessingParameters_PaymentProcessor `protobuf:"varint,1,opt,name=processor,enum=v3.PaymentProcessingParameters_PaymentProcessor" json:"processor,omitempty"` + Processor PaymentProcessingParameters_PaymentProcessor `protobuf:"varint,1,opt,name=processor,proto3,enum=ext.maps.booking.partner.v3.PaymentProcessingParameters_PaymentProcessor" json:"processor,omitempty"` // Deprecated: Do not use. // 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. @@ -1373,7 +2649,7 @@ // 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. - PaymentMethodToken string `protobuf:"bytes,2,opt,name=payment_method_token,json=paymentMethodToken" json:"payment_method_token,omitempty"` + PaymentMethodToken string `protobuf:"bytes,2,opt,name=payment_method_token,json=paymentMethodToken,proto3" json:"payment_method_token,omitempty"` // Deprecated: Do not use. // 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. @@ -1381,23 +2657,46 @@ // // This token can only be used once, and only for the merchant associated with // this booking. - UnparsedPaymentMethodToken string `protobuf:"bytes,5,opt,name=unparsed_payment_method_token,json=unparsedPaymentMethodToken" json:"unparsed_payment_method_token,omitempty"` + UnparsedPaymentMethodToken string `protobuf:"bytes,5,opt,name=unparsed_payment_method_token,json=unparsedPaymentMethodToken,proto3" json:"unparsed_payment_method_token,omitempty"` // 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) - Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` // The payment processor whose configuration was used to generate this token. // (required) - PaymentProcessor string `protobuf:"bytes,4,opt,name=payment_processor,json=paymentProcessor" json:"payment_processor,omitempty"` + PaymentProcessor string `protobuf:"bytes,4,opt,name=payment_processor,json=paymentProcessor,proto3" json:"payment_processor,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *PaymentProcessingParameters) Reset() { *m = PaymentProcessingParameters{} } -func (m *PaymentProcessingParameters) String() string { return proto.CompactTextString(m) } -func (*PaymentProcessingParameters) ProtoMessage() {} -func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } +func (m *PaymentProcessingParameters) Reset() { *m = PaymentProcessingParameters{} } +func (m *PaymentProcessingParameters) String() string { return proto.CompactTextString(m) } +func (*PaymentProcessingParameters) ProtoMessage() {} +func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{31} +} +func (m *PaymentProcessingParameters) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PaymentProcessingParameters.Unmarshal(m, b) +} +func (m *PaymentProcessingParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PaymentProcessingParameters.Marshal(b, m, deterministic) +} +func (dst *PaymentProcessingParameters) XXX_Merge(src proto.Message) { + xxx_messageInfo_PaymentProcessingParameters.Merge(dst, src) +} +func (m *PaymentProcessingParameters) XXX_Size() int { + return xxx_messageInfo_PaymentProcessingParameters.Size(m) +} +func (m *PaymentProcessingParameters) XXX_DiscardUnknown() { + xxx_messageInfo_PaymentProcessingParameters.DiscardUnknown(m) +} +var xxx_messageInfo_PaymentProcessingParameters proto.InternalMessageInfo + +// Deprecated: Do not use. func (m *PaymentProcessingParameters) GetProcessor() PaymentProcessingParameters_PaymentProcessor { if m != nil { return m.Processor @@ -1405,6 +2704,7 @@ return PaymentProcessingParameters_PAYMENT_PROCESSOR_UNSPECIFIED } +// Deprecated: Do not use. func (m *PaymentProcessingParameters) GetPaymentMethodToken() string { if m != nil { return m.PaymentMethodToken @@ -1433,7 +2733,6 @@ return "" } -// [START userpaymentoption_definition] // 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 @@ -1441,32 +2740,54 @@ type UserPaymentOption struct { // A unique identifier for the user payment option. This Id MUST be unique // for all UserPaymentOptions across all merchants and users. (required) - UserPaymentOptionId string `protobuf:"bytes,1,opt,name=user_payment_option_id,json=userPaymentOptionId" json:"user_payment_option_id,omitempty"` + UserPaymentOptionId string `protobuf:"bytes,1,opt,name=user_payment_option_id,json=userPaymentOptionId,proto3" json:"user_payment_option_id,omitempty"` // 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) - ValidStartTimeSec int64 `protobuf:"varint,2,opt,name=valid_start_time_sec,json=validStartTimeSec" json:"valid_start_time_sec,omitempty"` - ValidEndTimeSec int64 `protobuf:"varint,3,opt,name=valid_end_time_sec,json=validEndTimeSec" json:"valid_end_time_sec,omitempty"` + ValidStartTimeSec int64 `protobuf:"varint,2,opt,name=valid_start_time_sec,json=validStartTimeSec,proto3" json:"valid_start_time_sec,omitempty"` + ValidEndTimeSec int64 `protobuf:"varint,3,opt,name=valid_end_time_sec,json=validEndTimeSec,proto3" json:"valid_end_time_sec,omitempty"` // 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) - Type PaymentOptionType `protobuf:"varint,4,opt,name=type,enum=v3.PaymentOptionType" json:"type,omitempty"` + Type PaymentOptionType `protobuf:"varint,4,opt,name=type,proto3,enum=ext.maps.booking.partner.v3.PaymentOptionType" json:"type,omitempty"` // The original number of uses for this user payment option when it was // purchased. This value is ignored for unlimited payment options. (required) - OriginalCount int32 `protobuf:"varint,5,opt,name=original_count,json=originalCount" json:"original_count,omitempty"` + OriginalCount int32 `protobuf:"varint,5,opt,name=original_count,json=originalCount,proto3" json:"original_count,omitempty"` // 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) - CurrentCount int32 `protobuf:"varint,6,opt,name=current_count,json=currentCount" json:"current_count,omitempty"` + CurrentCount int32 `protobuf:"varint,6,opt,name=current_count,json=currentCount,proto3" json:"current_count,omitempty"` // The id of the payment option that has been used to purchase this user // payment option. (required) - PaymentOptionId string `protobuf:"bytes,7,opt,name=payment_option_id,json=paymentOptionId" json:"payment_option_id,omitempty"` + PaymentOptionId string `protobuf:"bytes,7,opt,name=payment_option_id,json=paymentOptionId,proto3" json:"payment_option_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *UserPaymentOption) Reset() { *m = UserPaymentOption{} } -func (m *UserPaymentOption) String() string { return proto.CompactTextString(m) } -func (*UserPaymentOption) ProtoMessage() {} -func (*UserPaymentOption) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } +func (m *UserPaymentOption) Reset() { *m = UserPaymentOption{} } +func (m *UserPaymentOption) String() string { return proto.CompactTextString(m) } +func (*UserPaymentOption) ProtoMessage() {} +func (*UserPaymentOption) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{32} +} +func (m *UserPaymentOption) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserPaymentOption.Unmarshal(m, b) +} +func (m *UserPaymentOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserPaymentOption.Marshal(b, m, deterministic) +} +func (dst *UserPaymentOption) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserPaymentOption.Merge(dst, src) +} +func (m *UserPaymentOption) XXX_Size() int { + return xxx_messageInfo_UserPaymentOption.Size(m) +} +func (m *UserPaymentOption) XXX_DiscardUnknown() { + xxx_messageInfo_UserPaymentOption.DiscardUnknown(m) +} + +var xxx_messageInfo_UserPaymentOption proto.InternalMessageInfo func (m *UserPaymentOption) GetUserPaymentOptionId() string { if m != nil { @@ -1517,7 +2838,6 @@ return "" } -// [START paymentinfo_definition] // Payment details that are sent when creating a new booking. type PaymentInformation struct { // Prepayment status of the booking. @@ -1527,10 +2847,13 @@ // If the prepayment status is PREPAYMENT_REFUNDED, then // payment_transaction_id contains the associated unique transaction id for // the refund. (required) - PrepaymentStatus PrepaymentStatus `protobuf:"varint,1,opt,name=prepayment_status,json=prepaymentStatus,enum=v3.PrepaymentStatus" json:"prepayment_status,omitempty"` + PrepaymentStatus PrepaymentStatus `protobuf:"varint,1,opt,name=prepayment_status,json=prepaymentStatus,proto3,enum=ext.maps.booking.partner.v3.PrepaymentStatus" json:"prepayment_status,omitempty"` // Unique identifier for a payment transaction associated with the booking. - // Empty if not applicable. (required) - PaymentTransactionId string `protobuf:"bytes,2,opt,name=payment_transaction_id,json=paymentTransactionId" json:"payment_transaction_id,omitempty"` + // 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. + PaymentTransactionId string `protobuf:"bytes,2,opt,name=payment_transaction_id,json=paymentTransactionId,proto3" json:"payment_transaction_id,omitempty"` // 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 @@ -1540,15 +2863,15 @@ // 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 `protobuf:"bytes,3,opt,name=price" json:"price,omitempty"` + Price *Price `protobuf:"bytes,3,opt,name=price,proto3" json:"price,omitempty"` // 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) - TaxAmount *Price `protobuf:"bytes,4,opt,name=tax_amount,json=taxAmount" json:"tax_amount,omitempty"` + TaxAmount *Price `protobuf:"bytes,4,opt,name=tax_amount,json=taxAmount,proto3" json:"tax_amount,omitempty"` // Whether the partner or Google processed the payment. (required) - PaymentProcessedBy PaymentInformation_PaymentProcessedBy `protobuf:"varint,5,opt,name=payment_processed_by,json=paymentProcessedBy,enum=v3.PaymentInformation_PaymentProcessedBy" json:"payment_processed_by,omitempty"` + PaymentProcessedBy PaymentInformation_PaymentProcessedBy `protobuf:"varint,5,opt,name=payment_processed_by,json=paymentProcessedBy,proto3,enum=ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy" json:"payment_processed_by,omitempty"` // 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 @@ -1567,30 +2890,52 @@ PaymentId isPaymentInformation_PaymentId `protobuf_oneof:"payment_id"` // Defines how a deposit may be charged to the user. If there is a deposit, // this field should be set. (optional) - Deposit *Deposit `protobuf:"bytes,8,opt,name=deposit" json:"deposit,omitempty"` + Deposit *Deposit `protobuf:"bytes,8,opt,name=deposit,proto3" json:"deposit,omitempty"` // 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 *NoShowFee `protobuf:"bytes,9,opt,name=no_show_fee,json=noShowFee" json:"no_show_fee,omitempty"` + NoShowFee *NoShowFee `protobuf:"bytes,9,opt,name=no_show_fee,json=noShowFee,proto3" json:"no_show_fee,omitempty"` // 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) - FeesAndTaxes *Price `protobuf:"bytes,10,opt,name=fees_and_taxes,json=feesAndTaxes" json:"fees_and_taxes,omitempty"` + FeesAndTaxes *Price `protobuf:"bytes,10,opt,name=fees_and_taxes,json=feesAndTaxes,proto3" json:"fees_and_taxes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *PaymentInformation) Reset() { *m = PaymentInformation{} } -func (m *PaymentInformation) String() string { return proto.CompactTextString(m) } -func (*PaymentInformation) ProtoMessage() {} -func (*PaymentInformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } +func (m *PaymentInformation) Reset() { *m = PaymentInformation{} } +func (m *PaymentInformation) String() string { return proto.CompactTextString(m) } +func (*PaymentInformation) ProtoMessage() {} +func (*PaymentInformation) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{33} +} +func (m *PaymentInformation) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PaymentInformation.Unmarshal(m, b) +} +func (m *PaymentInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PaymentInformation.Marshal(b, m, deterministic) +} +func (dst *PaymentInformation) XXX_Merge(src proto.Message) { + xxx_messageInfo_PaymentInformation.Merge(dst, src) +} +func (m *PaymentInformation) XXX_Size() int { + return xxx_messageInfo_PaymentInformation.Size(m) +} +func (m *PaymentInformation) XXX_DiscardUnknown() { + xxx_messageInfo_PaymentInformation.DiscardUnknown(m) +} + +var xxx_messageInfo_PaymentInformation proto.InternalMessageInfo type isPaymentInformation_PaymentId interface { isPaymentInformation_PaymentId() } type PaymentInformation_PaymentOptionId struct { - PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,oneof"` + PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,proto3,oneof"` } type PaymentInformation_UserPaymentOptionId struct { - UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,oneof"` + UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,proto3,oneof"` } func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId() {} @@ -1725,11 +3070,11 @@ // payment_id switch x := m.PaymentId.(type) { case *PaymentInformation_PaymentOptionId: - n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.PaymentOptionId))) n += len(x.PaymentOptionId) case *PaymentInformation_UserPaymentOptionId: - n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.UserPaymentOptionId))) n += len(x.UserPaymentOptionId) case nil: @@ -1739,1365 +3084,694 @@ return n } -// [START bookingfailure_definition] -// 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. -type BookingFailure struct { - // The reason why the booking failed. (required) - Cause BookingFailure_Cause `protobuf:"varint,1,opt,name=cause,enum=v3.BookingFailure_Cause" json:"cause,omitempty"` - // (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED) - RejectedCardType CreditCardType `protobuf:"varint,2,opt,name=rejected_card_type,json=rejectedCardType,enum=v3.CreditCardType" json:"rejected_card_type,omitempty"` - // This optional field is used for the partner to include additional - // information for debugging purpose only. (optional) - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` +// The price of a service or a fee. +type Price struct { + // 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) + PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros,proto3" json:"price_micros,omitempty"` + // The currency of the price that is defined in ISO 4217. (required) + CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode,proto3" json:"currency_code,omitempty"` + // An optional and opaque string that identifies the pricing option that is + // associated with the extended price. (optional) + PricingOptionTag string `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag,proto3" json:"pricing_option_tag,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *BookingFailure) Reset() { *m = BookingFailure{} } -func (m *BookingFailure) String() string { return proto.CompactTextString(m) } -func (*BookingFailure) ProtoMessage() {} -func (*BookingFailure) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } +func (m *Price) Reset() { *m = Price{} } +func (m *Price) String() string { return proto.CompactTextString(m) } +func (*Price) ProtoMessage() {} +func (*Price) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{34} +} +func (m *Price) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Price.Unmarshal(m, b) +} +func (m *Price) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Price.Marshal(b, m, deterministic) +} +func (dst *Price) XXX_Merge(src proto.Message) { + xxx_messageInfo_Price.Merge(dst, src) +} +func (m *Price) XXX_Size() int { + return xxx_messageInfo_Price.Size(m) +} +func (m *Price) XXX_DiscardUnknown() { + xxx_messageInfo_Price.DiscardUnknown(m) +} -func (m *BookingFailure) GetCause() BookingFailure_Cause { +var xxx_messageInfo_Price proto.InternalMessageInfo + +func (m *Price) GetPriceMicros() int64 { if m != nil { - return m.Cause - } - return BookingFailure_CAUSE_UNSPECIFIED -} - -func (m *BookingFailure) GetRejectedCardType() CreditCardType { - if m != nil { - return m.RejectedCardType - } - return CreditCardType_CREDIT_CARD_TYPE_UNSPECIFIED -} - -func (m *BookingFailure) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// [START message_slot_availability] -// An inventory slot and associated count of open spots. -type SlotAvailability struct { - Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"` - // Number of available spots. - // 0 indicates that the appointment slot is not available. (required) - CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable" json:"count_available,omitempty"` -} - -func (m *SlotAvailability) Reset() { *m = SlotAvailability{} } -func (m *SlotAvailability) String() string { return proto.CompactTextString(m) } -func (*SlotAvailability) ProtoMessage() {} -func (*SlotAvailability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *SlotAvailability) GetSlot() *Slot { - if m != nil { - return m.Slot - } - return nil -} - -func (m *SlotAvailability) GetCountAvailable() int32 { - if m != nil { - return m.CountAvailable + return m.PriceMicros } return 0 } -// [START message_availability_update] -// An update to one ore more slots indicating that the availability for the -// associated time has potentially changed. -type AvailabilityUpdate struct { - SlotAvailability []*SlotAvailability `protobuf:"bytes,1,rep,name=slot_availability,json=slotAvailability" json:"slot_availability,omitempty"` +func (m *Price) GetCurrencyCode() string { + if m != nil { + return m.CurrencyCode + } + return "" } -func (m *AvailabilityUpdate) Reset() { *m = AvailabilityUpdate{} } -func (m *AvailabilityUpdate) String() string { return proto.CompactTextString(m) } -func (*AvailabilityUpdate) ProtoMessage() {} -func (*AvailabilityUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *AvailabilityUpdate) GetSlotAvailability() []*SlotAvailability { +func (m *Price) GetPricingOptionTag() string { if m != nil { - return m.SlotAvailability + return m.PricingOptionTag + } + return "" +} + +// A fee that a user may be charged if they have made a booking but do not +// show up. +type NoShowFee struct { + // The amount the user may be charged if they do not show up for their + // reservation. + Fee *Price `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"` + // Defines how the fee is determined from the availability. + FeeType PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,proto3,enum=ext.maps.booking.partner.v3.PriceType" json:"fee_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NoShowFee) Reset() { *m = NoShowFee{} } +func (m *NoShowFee) String() string { return proto.CompactTextString(m) } +func (*NoShowFee) ProtoMessage() {} +func (*NoShowFee) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{35} +} +func (m *NoShowFee) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NoShowFee.Unmarshal(m, b) +} +func (m *NoShowFee) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NoShowFee.Marshal(b, m, deterministic) +} +func (dst *NoShowFee) XXX_Merge(src proto.Message) { + xxx_messageInfo_NoShowFee.Merge(dst, src) +} +func (m *NoShowFee) XXX_Size() int { + return xxx_messageInfo_NoShowFee.Size(m) +} +func (m *NoShowFee) XXX_DiscardUnknown() { + xxx_messageInfo_NoShowFee.DiscardUnknown(m) +} + +var xxx_messageInfo_NoShowFee proto.InternalMessageInfo + +func (m *NoShowFee) GetFee() *Price { + if m != nil { + return m.Fee } return nil } -// [START resources_definition] -// Resource specification that disambiguates an appointment slot -type ResourceIds struct { - // The staff ID as provided in the feed or empty if not applicable or no staff - // was selected. (optional) - StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId" json:"staff_id,omitempty"` - // The room ID as provided in the feed or empty if not applicable or no room - // was selected. (optional) - RoomId string `protobuf:"bytes,2,opt,name=room_id,json=roomId" json:"room_id,omitempty"` - // For Dining Reservations only: the number of seats requested in the booking. - // (optional) - PartySize int32 `protobuf:"varint,3,opt,name=party_size,json=partySize" json:"party_size,omitempty"` -} - -func (m *ResourceIds) Reset() { *m = ResourceIds{} } -func (m *ResourceIds) String() string { return proto.CompactTextString(m) } -func (*ResourceIds) ProtoMessage() {} -func (*ResourceIds) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *ResourceIds) GetStaffId() string { +func (m *NoShowFee) GetFeeType() PriceType { if m != nil { - return m.StaffId + return m.FeeType } - return "" + return PriceType_FIXED_RATE_DEFAULT } -func (m *ResourceIds) GetRoomId() string { +// A deposit that the user may be charged or have a hold on their credit card +// for. +type Deposit struct { + // Deposit amount. + Deposit *Price `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"` + // Minimum advance cancellation for the deposit. + MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec,proto3" json:"min_advance_cancellation_sec,omitempty"` + // Defines how the deposit is determined from the availability. + DepositType PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,proto3,enum=ext.maps.booking.partner.v3.PriceType" json:"deposit_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Deposit) Reset() { *m = Deposit{} } +func (m *Deposit) String() string { return proto.CompactTextString(m) } +func (*Deposit) ProtoMessage() {} +func (*Deposit) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{36} +} +func (m *Deposit) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Deposit.Unmarshal(m, b) +} +func (m *Deposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Deposit.Marshal(b, m, deterministic) +} +func (dst *Deposit) XXX_Merge(src proto.Message) { + xxx_messageInfo_Deposit.Merge(dst, src) +} +func (m *Deposit) XXX_Size() int { + return xxx_messageInfo_Deposit.Size(m) +} +func (m *Deposit) XXX_DiscardUnknown() { + xxx_messageInfo_Deposit.DiscardUnknown(m) +} + +var xxx_messageInfo_Deposit proto.InternalMessageInfo + +func (m *Deposit) GetDeposit() *Price { if m != nil { - return m.RoomId + return m.Deposit } - return "" + return nil } -func (m *ResourceIds) GetPartySize() int32 { +func (m *Deposit) GetMinAdvanceCancellationSec() int64 { if m != nil { - return m.PartySize + return m.MinAdvanceCancellationSec } return 0 } -// [START tickettype_definition] -// 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. -type TicketType struct { - // 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. - TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId" json:"ticket_type_id,omitempty"` - // This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc. - ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription" json:"short_description,omitempty"` - // 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 `protobuf:"bytes,3,opt,name=price" json:"price,omitempty"` -} - -func (m *TicketType) Reset() { *m = TicketType{} } -func (m *TicketType) String() string { return proto.CompactTextString(m) } -func (*TicketType) ProtoMessage() {} -func (*TicketType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *TicketType) GetTicketTypeId() string { +func (m *Deposit) GetDepositType() PriceType { if m != nil { - return m.TicketTypeId + return m.DepositType } - return "" + return PriceType_FIXED_RATE_DEFAULT } -func (m *TicketType) GetShortDescription() string { - if m != nil { - return m.ShortDescription - } - return "" -} - -func (m *TicketType) GetPrice() *Price { - if m != nil { - return m.Price - } - return nil -} - -// [START lineitem_definition] -// A single item in an order--the booking of a single service in a single time -// slot. -type LineItem struct { - // ID of the merchant service. (required) - ServiceId string `protobuf:"bytes,1,opt,name=service_id,json=serviceId" json:"service_id,omitempty"` +// An inventory slot +type Slot struct { + // ID of the merchant for the slot (required) + MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"` + // ID of the merchant Service (required) + ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` // Start time of the appointment slot in seconds of UTC time since Unix epoch. // (required) - StartSec int64 `protobuf:"varint,2,opt,name=start_sec,json=startSec" json:"start_sec,omitempty"` - // Duration of the appointment slot in seconds. (required) - DurationSec int64 `protobuf:"varint,3,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"` - // Number of tickets ordered by type. - Tickets []*LineItem_OrderedTickets `protobuf:"bytes,4,rep,name=tickets" json:"tickets,omitempty"` - // 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 `protobuf:"bytes,5,opt,name=price" json:"price,omitempty"` - // Status of the line item. (required in CreateOrderResponse and - // ListOrdersResponse; should not be set in requests) - Status BookingStatus `protobuf:"varint,6,opt,name=status,enum=v3.BookingStatus" json:"status,omitempty"` + StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec,proto3" json:"start_sec,omitempty"` + // Duration of the appointment slot (required) + DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` + // Opaque tag that identifies the availability slot and matches the value + // provided in the availability feed (optional) + AvailabilityTag string `protobuf:"bytes,5,opt,name=availability_tag,json=availabilityTag,proto3" json:"availability_tag,omitempty"` + // The set of resources that disambiguates the appointment slot, e.g. by + // indicating the staff member and room selected by the user (optional) + Resources *ResourceIds `protobuf:"bytes,6,opt,name=resources,proto3" json:"resources,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *LineItem) Reset() { *m = LineItem{} } -func (m *LineItem) String() string { return proto.CompactTextString(m) } -func (*LineItem) ProtoMessage() {} -func (*LineItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } +func (m *Slot) Reset() { *m = Slot{} } +func (m *Slot) String() string { return proto.CompactTextString(m) } +func (*Slot) ProtoMessage() {} +func (*Slot) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{37} +} +func (m *Slot) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Slot.Unmarshal(m, b) +} +func (m *Slot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Slot.Marshal(b, m, deterministic) +} +func (dst *Slot) XXX_Merge(src proto.Message) { + xxx_messageInfo_Slot.Merge(dst, src) +} +func (m *Slot) XXX_Size() int { + return xxx_messageInfo_Slot.Size(m) +} +func (m *Slot) XXX_DiscardUnknown() { + xxx_messageInfo_Slot.DiscardUnknown(m) +} -func (m *LineItem) GetServiceId() string { +var xxx_messageInfo_Slot proto.InternalMessageInfo + +func (m *Slot) GetMerchantId() string { + if m != nil { + return m.MerchantId + } + return "" +} + +func (m *Slot) GetServiceId() string { if m != nil { return m.ServiceId } return "" } -func (m *LineItem) GetStartSec() int64 { +func (m *Slot) GetStartSec() int64 { if m != nil { return m.StartSec } return 0 } -func (m *LineItem) GetDurationSec() int64 { +func (m *Slot) GetDurationSec() int64 { if m != nil { return m.DurationSec } return 0 } -func (m *LineItem) GetTickets() []*LineItem_OrderedTickets { +func (m *Slot) GetAvailabilityTag() string { if m != nil { - return m.Tickets - } - return nil -} - -func (m *LineItem) GetPrice() *Price { - if m != nil { - return m.Price - } - return nil -} - -func (m *LineItem) GetStatus() BookingStatus { - if m != nil { - return m.Status - } - return BookingStatus_BOOKING_STATUS_UNSPECIFIED -} - -type LineItem_OrderedTickets struct { - TicketId string `protobuf:"bytes,1,opt,name=ticket_id,json=ticketId" json:"ticket_id,omitempty"` - Count int32 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` -} - -func (m *LineItem_OrderedTickets) Reset() { *m = LineItem_OrderedTickets{} } -func (m *LineItem_OrderedTickets) String() string { return proto.CompactTextString(m) } -func (*LineItem_OrderedTickets) ProtoMessage() {} -func (*LineItem_OrderedTickets) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24, 0} } - -func (m *LineItem_OrderedTickets) GetTicketId() string { - if m != nil { - return m.TicketId + return m.AvailabilityTag } return "" } -func (m *LineItem_OrderedTickets) GetCount() int32 { +func (m *Slot) GetResources() *ResourceIds { if m != nil { - return m.Count + return m.Resources } - return 0 + return nil } -// [START lineitemfulfillability_definition] -// Fulfillability of a line item. -type LineItemFulfillability struct { - // The line item of question. (required) - Item *LineItem `protobuf:"bytes,1,opt,name=item" json:"item,omitempty"` +// Personal information about the person making a booking +type UserInformation struct { + // Unique ID of the user to the partner, chosen by Reserve with Google. // (required) - Result LineItemFulfillability_ItemFulfillabilityResult `protobuf:"varint,2,opt,name=result,enum=v3.LineItemFulfillability_ItemFulfillabilityResult" json:"result,omitempty"` - // Additional description of the reason if the item is unfulfillable. - // (optional) - UnfulfillableReason string `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason" json:"unfulfillable_reason,omitempty"` - // Updated availability for this slot can be piggybacked in - // CheckOrderFulfillabilityResponse. (optional) - SpotsOpen int32 `protobuf:"varint,4,opt,name=spots_open,json=spotsOpen" json:"spots_open,omitempty"` - // 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) - TicketType []*TicketType `protobuf:"bytes,5,rep,name=ticket_type,json=ticketType" json:"ticket_type,omitempty"` + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + // Given name of the user (maximum 40 characters) (required) + GivenName string `protobuf:"bytes,2,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"` + // Family name of the user (maximum 40 characters) (required) + FamilyName string `protobuf:"bytes,3,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"` + // Address of the user (optional) + Address *PostalAddress `protobuf:"bytes,4,opt,name=address,proto3" json:"address,omitempty"` + // Phone number of the user (required) + Telephone string `protobuf:"bytes,5,opt,name=telephone,proto3" json:"telephone,omitempty"` + // Email address of the user (required) + Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *LineItemFulfillability) Reset() { *m = LineItemFulfillability{} } -func (m *LineItemFulfillability) String() string { return proto.CompactTextString(m) } -func (*LineItemFulfillability) ProtoMessage() {} -func (*LineItemFulfillability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *LineItemFulfillability) GetItem() *LineItem { - if m != nil { - return m.Item - } - return nil +func (m *UserInformation) Reset() { *m = UserInformation{} } +func (m *UserInformation) String() string { return proto.CompactTextString(m) } +func (*UserInformation) ProtoMessage() {} +func (*UserInformation) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{38} } - -func (m *LineItemFulfillability) GetResult() LineItemFulfillability_ItemFulfillabilityResult { - if m != nil { - return m.Result - } - return LineItemFulfillability_ITEM_FULFILLABILITY_RESULT_UNSPECIFIED +func (m *UserInformation) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserInformation.Unmarshal(m, b) } - -func (m *LineItemFulfillability) GetUnfulfillableReason() string { - if m != nil { - return m.UnfulfillableReason - } - return "" +func (m *UserInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserInformation.Marshal(b, m, deterministic) } - -func (m *LineItemFulfillability) GetSpotsOpen() int32 { - if m != nil { - return m.SpotsOpen - } - return 0 +func (dst *UserInformation) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserInformation.Merge(dst, src) } - -func (m *LineItemFulfillability) GetTicketType() []*TicketType { - if m != nil { - return m.TicketType - } - return nil +func (m *UserInformation) XXX_Size() int { + return xxx_messageInfo_UserInformation.Size(m) } - -// [START orderfulfillability_definition] -type OrderFulfillability struct { - Result OrderFulfillability_OrderFulfillabilityResult `protobuf:"varint,1,opt,name=result,enum=v3.OrderFulfillability_OrderFulfillabilityResult" json:"result,omitempty"` - // Fulfillability results of all line items in this order (required). - ItemFulfillability []*LineItemFulfillability `protobuf:"bytes,2,rep,name=item_fulfillability,json=itemFulfillability" json:"item_fulfillability,omitempty"` - // Additional description of the reason if the item is unfulfillable. - // (optional) - UnfulfillableReason string `protobuf:"bytes,3,opt,name=unfulfillable_reason,json=unfulfillableReason" json:"unfulfillable_reason,omitempty"` +func (m *UserInformation) XXX_DiscardUnknown() { + xxx_messageInfo_UserInformation.DiscardUnknown(m) } -func (m *OrderFulfillability) Reset() { *m = OrderFulfillability{} } -func (m *OrderFulfillability) String() string { return proto.CompactTextString(m) } -func (*OrderFulfillability) ProtoMessage() {} -func (*OrderFulfillability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } +var xxx_messageInfo_UserInformation proto.InternalMessageInfo -func (m *OrderFulfillability) GetResult() OrderFulfillability_OrderFulfillabilityResult { - if m != nil { - return m.Result - } - return OrderFulfillability_ORDER_FULFILLABILITY_RESULT_UNSPECIFIED -} - -func (m *OrderFulfillability) GetItemFulfillability() []*LineItemFulfillability { - if m != nil { - return m.ItemFulfillability - } - return nil -} - -func (m *OrderFulfillability) GetUnfulfillableReason() string { - if m != nil { - return m.UnfulfillableReason - } - return "" -} - -// [START order_definition] -// An order for service appointments with a merchant. -type Order struct { - // ID of this order, chosen by the booking partner who handles the order - // (required in CreateOrderResponse and ListOrdersResponse, must not be set in - // CreateOrderRequest) - OrderId string `protobuf:"bytes,1,opt,name=order_id,json=orderId" json:"order_id,omitempty"` - // Personal information of the user making the order (required) - UserInformation *UserInformation `protobuf:"bytes,2,opt,name=user_information,json=userInformation" json:"user_information,omitempty"` - // Information about payment transactions that relate to the order. - // (optional) - PaymentInformation *PaymentInformation `protobuf:"bytes,3,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"` - // The merchant that all services in this order belong to. - MerchantId string `protobuf:"bytes,4,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"` - // Line items in this order. - Item []*LineItem `protobuf:"bytes,5,rep,name=item" json:"item,omitempty"` -} - -func (m *Order) Reset() { *m = Order{} } -func (m *Order) String() string { return proto.CompactTextString(m) } -func (*Order) ProtoMessage() {} -func (*Order) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *Order) GetOrderId() string { - if m != nil { - return m.OrderId - } - return "" -} - -func (m *Order) GetUserInformation() *UserInformation { - if m != nil { - return m.UserInformation - } - return nil -} - -func (m *Order) GetPaymentInformation() *PaymentInformation { - if m != nil { - return m.PaymentInformation - } - return nil -} - -func (m *Order) GetMerchantId() string { - if m != nil { - return m.MerchantId - } - return "" -} - -func (m *Order) GetItem() []*LineItem { - if m != nil { - return m.Item - } - return nil -} - -// [START orderfailure_definition] -// Status data that conveys why creating an order fails. -// OrderFailure is intended to primarily capture business logic errors. -type OrderFailure struct { - // The reason why the order failed. (required) - Cause OrderFailure_Cause `protobuf:"varint,1,opt,name=cause,enum=v3.OrderFailure_Cause" json:"cause,omitempty"` - // (required only if cause is ORDER_UNFULFILLABLE) - Fulfillability *OrderFulfillability `protobuf:"bytes,2,opt,name=fulfillability" json:"fulfillability,omitempty"` - // (required only if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED) - RejectedCardType CreditCardType `protobuf:"varint,3,opt,name=rejected_card_type,json=rejectedCardType,enum=v3.CreditCardType" json:"rejected_card_type,omitempty"` - // This optional field is used for the partner to include additional - // information for debugging purpose only. (optional) - Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` -} - -func (m *OrderFailure) Reset() { *m = OrderFailure{} } -func (m *OrderFailure) String() string { return proto.CompactTextString(m) } -func (*OrderFailure) ProtoMessage() {} -func (*OrderFailure) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *OrderFailure) GetCause() OrderFailure_Cause { - if m != nil { - return m.Cause - } - return OrderFailure_CAUSE_UNSPECIFIED -} - -func (m *OrderFailure) GetFulfillability() *OrderFulfillability { - if m != nil { - return m.Fulfillability - } - return nil -} - -func (m *OrderFailure) GetRejectedCardType() CreditCardType { - if m != nil { - return m.RejectedCardType - } - return CreditCardType_CREDIT_CARD_TYPE_UNSPECIFIED -} - -func (m *OrderFailure) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// [START method_check_availability] -// Request to check availability for a Slot. -type CheckAvailabilityRequest struct { - // The appointment slot that is being checked (required) - Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"` -} - -func (m *CheckAvailabilityRequest) Reset() { *m = CheckAvailabilityRequest{} } -func (m *CheckAvailabilityRequest) String() string { return proto.CompactTextString(m) } -func (*CheckAvailabilityRequest) ProtoMessage() {} -func (*CheckAvailabilityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *CheckAvailabilityRequest) GetSlot() *Slot { - if m != nil { - return m.Slot - } - return nil -} - -// Response for the CheckAvailability RPC with the availability of the -// appointment slot. -type CheckAvailabilityResponse struct { - // The requested slot. (required) - Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"` - // Number of available spots. - // 0 indicates that the appointment slot is not available. (required) - CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable" json:"count_available,omitempty"` - // The requirement to show the slots duration and/or endtime. This field will - // be ignored if the slot is unavailable. (optional) - DurationRequirement CheckAvailabilityResponse_DurationRequirement `protobuf:"varint,3,opt,name=duration_requirement,json=durationRequirement,enum=v3.CheckAvailabilityResponse_DurationRequirement" json:"duration_requirement,omitempty"` - // 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 *AvailabilityUpdate `protobuf:"bytes,4,opt,name=availability_update,json=availabilityUpdate" json:"availability_update,omitempty"` -} - -func (m *CheckAvailabilityResponse) Reset() { *m = CheckAvailabilityResponse{} } -func (m *CheckAvailabilityResponse) String() string { return proto.CompactTextString(m) } -func (*CheckAvailabilityResponse) ProtoMessage() {} -func (*CheckAvailabilityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -func (m *CheckAvailabilityResponse) GetSlot() *Slot { - if m != nil { - return m.Slot - } - return nil -} - -func (m *CheckAvailabilityResponse) GetCountAvailable() int32 { - if m != nil { - return m.CountAvailable - } - return 0 -} - -func (m *CheckAvailabilityResponse) GetDurationRequirement() CheckAvailabilityResponse_DurationRequirement { - if m != nil { - return m.DurationRequirement - } - return CheckAvailabilityResponse_DURATION_REQUIREMENT_UNSPECIFIED -} - -func (m *CheckAvailabilityResponse) GetAvailabilityUpdate() *AvailabilityUpdate { - if m != nil { - return m.AvailabilityUpdate - } - return nil -} - -// [START method_get_booking_status] -// Request to get booking status and prepayment status for a Booking. -type GetBookingStatusRequest struct { - // ID of the existing booking (required) - BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"` -} - -func (m *GetBookingStatusRequest) Reset() { *m = GetBookingStatusRequest{} } -func (m *GetBookingStatusRequest) String() string { return proto.CompactTextString(m) } -func (*GetBookingStatusRequest) ProtoMessage() {} -func (*GetBookingStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -func (m *GetBookingStatusRequest) GetBookingId() string { - if m != nil { - return m.BookingId - } - return "" -} - -// Response for the GetBookingStatus RPC with booking status and prepayment -// status. -type GetBookingStatusResponse struct { - // ID of the booking (required) - BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"` - // Status of the booking (required) - BookingStatus BookingStatus `protobuf:"varint,2,opt,name=booking_status,json=bookingStatus,enum=v3.BookingStatus" json:"booking_status,omitempty"` - // Prepayment status of the booking (required) - PrepaymentStatus PrepaymentStatus `protobuf:"varint,3,opt,name=prepayment_status,json=prepaymentStatus,enum=v3.PrepaymentStatus" json:"prepayment_status,omitempty"` -} - -func (m *GetBookingStatusResponse) Reset() { *m = GetBookingStatusResponse{} } -func (m *GetBookingStatusResponse) String() string { return proto.CompactTextString(m) } -func (*GetBookingStatusResponse) ProtoMessage() {} -func (*GetBookingStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -func (m *GetBookingStatusResponse) GetBookingId() string { - if m != nil { - return m.BookingId - } - return "" -} - -func (m *GetBookingStatusResponse) GetBookingStatus() BookingStatus { - if m != nil { - return m.BookingStatus - } - return BookingStatus_BOOKING_STATUS_UNSPECIFIED -} - -func (m *GetBookingStatusResponse) GetPrepaymentStatus() PrepaymentStatus { - if m != nil { - return m.PrepaymentStatus - } - return PrepaymentStatus_PREPAYMENT_STATUS_UNSPECIFIED -} - -// [START method_check_order_fulfillability] -// Request to check the fulfillability of an order. -type CheckOrderFulfillabilityRequest struct { - // The merchant that this order is intended for. (required) - MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"` - // The line items in this order. All services requested must belong to the - // specified merchant. (required) - Item []*LineItem `protobuf:"bytes,2,rep,name=item" json:"item,omitempty"` -} - -func (m *CheckOrderFulfillabilityRequest) Reset() { *m = CheckOrderFulfillabilityRequest{} } -func (m *CheckOrderFulfillabilityRequest) String() string { return proto.CompactTextString(m) } -func (*CheckOrderFulfillabilityRequest) ProtoMessage() {} -func (*CheckOrderFulfillabilityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33} -} - -func (m *CheckOrderFulfillabilityRequest) GetMerchantId() string { - if m != nil { - return m.MerchantId - } - return "" -} - -func (m *CheckOrderFulfillabilityRequest) GetItem() []*LineItem { - if m != nil { - return m.Item - } - return nil -} - -// Response for the CheckOrderfulfillabilityRequest. -type CheckOrderFulfillabilityResponse struct { - // Fulfillability status of the order, potentially contains updated - // availabilities and prices of the requested line item. (required) - Fulfillability *OrderFulfillability `protobuf:"bytes,1,opt,name=fulfillability" json:"fulfillability,omitempty"` - // Total processing fees & taxes that need to be paid for this order. - // (required) - FeesAndTaxes *Price `protobuf:"bytes,2,opt,name=fees_and_taxes,json=feesAndTaxes" json:"fees_and_taxes,omitempty"` -} - -func (m *CheckOrderFulfillabilityResponse) Reset() { *m = CheckOrderFulfillabilityResponse{} } -func (m *CheckOrderFulfillabilityResponse) String() string { return proto.CompactTextString(m) } -func (*CheckOrderFulfillabilityResponse) ProtoMessage() {} -func (*CheckOrderFulfillabilityResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{34} -} - -func (m *CheckOrderFulfillabilityResponse) GetFulfillability() *OrderFulfillability { - if m != nil { - return m.Fulfillability - } - return nil -} - -func (m *CheckOrderFulfillabilityResponse) GetFeesAndTaxes() *Price { - if m != nil { - return m.FeesAndTaxes - } - return nil -} - -// [START method_create_booking] -// Request to create a Booking for an inventory slot. Consumes the lease if -// provided. -type CreateBookingRequest struct { - // 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 `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"` - // The lease that is being confirmed to make this booking. - // If lease_ref is provided, then create the booking using the lease. - // (optional) - LeaseRef *LeaseReference `protobuf:"bytes,2,opt,name=lease_ref,json=leaseRef" json:"lease_ref,omitempty"` - // Personal information of the user making the appointment (required) - UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation" json:"user_information,omitempty"` - // Information about payments. When payment authorizations are handled by - // Google, if the booking request does not succeed, payment authorizations are - // automatically canceled. (optional) - PaymentInformation *PaymentInformation `protobuf:"bytes,4,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"` - // 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 *PaymentProcessingParameters `protobuf:"bytes,5,opt,name=payment_processing_parameters,json=paymentProcessingParameters" json:"payment_processing_parameters,omitempty"` - // Idempotency token for CreateBooking requests. (required) - IdempotencyToken string `protobuf:"bytes,6,opt,name=idempotency_token,json=idempotencyToken" json:"idempotency_token,omitempty"` - // A string from the user which contains any special requests or additional - // information that they would like to notify the merchant about. (optional) - AdditionalRequest string `protobuf:"bytes,7,opt,name=additional_request,json=additionalRequest" json:"additional_request,omitempty"` -} - -func (m *CreateBookingRequest) Reset() { *m = CreateBookingRequest{} } -func (m *CreateBookingRequest) String() string { return proto.CompactTextString(m) } -func (*CreateBookingRequest) ProtoMessage() {} -func (*CreateBookingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } - -func (m *CreateBookingRequest) GetSlot() *Slot { - if m != nil { - return m.Slot - } - return nil -} - -func (m *CreateBookingRequest) GetLeaseRef() *LeaseReference { - if m != nil { - return m.LeaseRef - } - return nil -} - -func (m *CreateBookingRequest) GetUserInformation() *UserInformation { - if m != nil { - return m.UserInformation - } - return nil -} - -func (m *CreateBookingRequest) GetPaymentInformation() *PaymentInformation { - if m != nil { - return m.PaymentInformation - } - return nil -} - -func (m *CreateBookingRequest) GetPaymentProcessingParameters() *PaymentProcessingParameters { - if m != nil { - return m.PaymentProcessingParameters - } - return nil -} - -func (m *CreateBookingRequest) GetIdempotencyToken() string { - if m != nil { - return m.IdempotencyToken - } - return "" -} - -func (m *CreateBookingRequest) GetAdditionalRequest() string { - if m != nil { - return m.AdditionalRequest - } - return "" -} - -// Response with the created Booking for an inventory slot. -type CreateBookingResponse struct { - // The created booking (required) - Booking *Booking `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"` - // 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 *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption" json:"user_payment_option,omitempty"` - // 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 *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"` -} - -func (m *CreateBookingResponse) Reset() { *m = CreateBookingResponse{} } -func (m *CreateBookingResponse) String() string { return proto.CompactTextString(m) } -func (*CreateBookingResponse) ProtoMessage() {} -func (*CreateBookingResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } - -func (m *CreateBookingResponse) GetBooking() *Booking { - if m != nil { - return m.Booking - } - return nil -} - -func (m *CreateBookingResponse) GetUserPaymentOption() *UserPaymentOption { - if m != nil { - return m.UserPaymentOption - } - return nil -} - -func (m *CreateBookingResponse) GetBookingFailure() *BookingFailure { - if m != nil { - return m.BookingFailure - } - return nil -} - -// [START method_create_order] -// Request to create an order. -type CreateOrderRequest struct { - // The order to create. (required) - Order *Order `protobuf:"bytes,1,opt,name=order" json:"order,omitempty"` - // 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 *PaymentProcessingParameters `protobuf:"bytes,2,opt,name=payment_processing_parameters,json=paymentProcessingParameters" json:"payment_processing_parameters,omitempty"` - // Idempotency token for CreateOrder requests. (required) - IdempotencyToken string `protobuf:"bytes,3,opt,name=idempotency_token,json=idempotencyToken" json:"idempotency_token,omitempty"` -} - -func (m *CreateOrderRequest) Reset() { *m = CreateOrderRequest{} } -func (m *CreateOrderRequest) String() string { return proto.CompactTextString(m) } -func (*CreateOrderRequest) ProtoMessage() {} -func (*CreateOrderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } - -func (m *CreateOrderRequest) GetOrder() *Order { - if m != nil { - return m.Order - } - return nil -} - -func (m *CreateOrderRequest) GetPaymentProcessingParameters() *PaymentProcessingParameters { - if m != nil { - return m.PaymentProcessingParameters - } - return nil -} - -func (m *CreateOrderRequest) GetIdempotencyToken() string { - if m != nil { - return m.IdempotencyToken - } - return "" -} - -// Response for the CreateOrderRequest. -type CreateOrderResponse struct { - // The order created. (required) - Order *Order `protobuf:"bytes,1,opt,name=order" json:"order,omitempty"` - // If creating an order fails, this field should reflect the business logic - // error (e.g., slot has become unavailable or price has changed) and all - // other fields in the CreateOrderResponse are expected to be unset. (required - // if failure occurs) - OrderFailure *OrderFailure `protobuf:"bytes,2,opt,name=order_failure,json=orderFailure" json:"order_failure,omitempty"` -} - -func (m *CreateOrderResponse) Reset() { *m = CreateOrderResponse{} } -func (m *CreateOrderResponse) String() string { return proto.CompactTextString(m) } -func (*CreateOrderResponse) ProtoMessage() {} -func (*CreateOrderResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } - -func (m *CreateOrderResponse) GetOrder() *Order { - if m != nil { - return m.Order - } - return nil -} - -func (m *CreateOrderResponse) GetOrderFailure() *OrderFailure { - if m != nil { - return m.OrderFailure - } - return nil -} - -// [START method_create_lease] -// Request to create a Leaese 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. -type CreateLeaseRequest struct { - // The lease to be created with information about the appointment slot - // (required) - Lease *Lease `protobuf:"bytes,1,opt,name=lease" json:"lease,omitempty"` -} - -func (m *CreateLeaseRequest) Reset() { *m = CreateLeaseRequest{} } -func (m *CreateLeaseRequest) String() string { return proto.CompactTextString(m) } -func (*CreateLeaseRequest) ProtoMessage() {} -func (*CreateLeaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } - -func (m *CreateLeaseRequest) GetLease() *Lease { - if m != nil { - return m.Lease - } - return nil -} - -// Response for the CreateLease RPC with the created Lease. -type CreateLeaseResponse struct { - // The created Lease (required) - Lease *Lease `protobuf:"bytes,1,opt,name=lease" json:"lease,omitempty"` - // 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 *BookingFailure `protobuf:"bytes,2,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"` -} - -func (m *CreateLeaseResponse) Reset() { *m = CreateLeaseResponse{} } -func (m *CreateLeaseResponse) String() string { return proto.CompactTextString(m) } -func (*CreateLeaseResponse) ProtoMessage() {} -func (*CreateLeaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } - -func (m *CreateLeaseResponse) GetLease() *Lease { - if m != nil { - return m.Lease - } - return nil -} - -func (m *CreateLeaseResponse) GetBookingFailure() *BookingFailure { - if m != nil { - return m.BookingFailure - } - return nil -} - -// [START method_list_bookings] -// Request to list all bookings for a user -type ListBookingsRequest struct { - // ID of the user (required) - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId" json:"user_id,omitempty"` -} - -func (m *ListBookingsRequest) Reset() { *m = ListBookingsRequest{} } -func (m *ListBookingsRequest) String() string { return proto.CompactTextString(m) } -func (*ListBookingsRequest) ProtoMessage() {} -func (*ListBookingsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } - -func (m *ListBookingsRequest) GetUserId() string { +func (m *UserInformation) GetUserId() string { if m != nil { return m.UserId } return "" } -// Response for the ListBookings RPC with all bookings for the requested user. -type ListBookingsResponse struct { - // All bookings of the user (required) - Bookings []*Booking `protobuf:"bytes,1,rep,name=bookings" json:"bookings,omitempty"` -} - -func (m *ListBookingsResponse) Reset() { *m = ListBookingsResponse{} } -func (m *ListBookingsResponse) String() string { return proto.CompactTextString(m) } -func (*ListBookingsResponse) ProtoMessage() {} -func (*ListBookingsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } - -func (m *ListBookingsResponse) GetBookings() []*Booking { +func (m *UserInformation) GetGivenName() string { if m != nil { - return m.Bookings - } - return nil -} - -// [START method_list_orders] -// Request to list orders. -type ListOrdersRequest struct { - // ID of the user (required only if order_id is not set). - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId" json:"user_id,omitempty"` - // If set, return only the specified orders; otherwise, return all orders of - // the user. (required only if user_id is not set). - OrderId []string `protobuf:"bytes,2,rep,name=order_id,json=orderId" json:"order_id,omitempty"` -} - -func (m *ListOrdersRequest) Reset() { *m = ListOrdersRequest{} } -func (m *ListOrdersRequest) String() string { return proto.CompactTextString(m) } -func (*ListOrdersRequest) ProtoMessage() {} -func (*ListOrdersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } - -func (m *ListOrdersRequest) GetUserId() string { - if m != nil { - return m.UserId + return m.GivenName } return "" } -func (m *ListOrdersRequest) GetOrderId() []string { +func (m *UserInformation) GetFamilyName() string { if m != nil { - return m.OrderId + return m.FamilyName + } + return "" +} + +func (m *UserInformation) GetAddress() *PostalAddress { + if m != nil { + return m.Address } return nil } -// Response for the ListOrders RPC. -type ListOrdersResponse struct { - // All requested orders (required) - Order []*Order `protobuf:"bytes,1,rep,name=order" json:"order,omitempty"` -} - -func (m *ListOrdersResponse) Reset() { *m = ListOrdersResponse{} } -func (m *ListOrdersResponse) String() string { return proto.CompactTextString(m) } -func (*ListOrdersResponse) ProtoMessage() {} -func (*ListOrdersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } - -func (m *ListOrdersResponse) GetOrder() []*Order { +func (m *UserInformation) GetTelephone() string { if m != nil { - return m.Order + return m.Telephone } - return nil + return "" } -// [START method_update_booking] -// Request to update a Booking. -type UpdateBookingRequest struct { - // 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 `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"` -} - -func (m *UpdateBookingRequest) Reset() { *m = UpdateBookingRequest{} } -func (m *UpdateBookingRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateBookingRequest) ProtoMessage() {} -func (*UpdateBookingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } - -func (m *UpdateBookingRequest) GetBooking() *Booking { +func (m *UserInformation) GetEmail() string { if m != nil { - return m.Booking + return m.Email } - return nil + return "" } -// Response with the updated Booking. -type UpdateBookingResponse struct { - // The updated booking (required) - Booking *Booking `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"` - // 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 *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption" json:"user_payment_option,omitempty"` - // If updating a booking fails, this field should reflect the business logic - // error (e.g., booking is not cancellable) (required if failure occurs) - BookingFailure *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"` +// The postal address for a merchant. +type PostalAddress struct { + // The country, e.g. "USA". (required) + Country string `protobuf:"bytes,1,opt,name=country,proto3" json:"country,omitempty"` + // The locality/city, e.g. "Mountain View". (required) + Locality string `protobuf:"bytes,2,opt,name=locality,proto3" json:"locality,omitempty"` + // The region/state/province, e.g. "CA". (required) + Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` + // The postal code, e.g. "94043". (required) + PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + // The street address, e.g. "1600 Amphitheatre Pkwy". (required) + StreetAddress string `protobuf:"bytes,5,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *UpdateBookingResponse) Reset() { *m = UpdateBookingResponse{} } -func (m *UpdateBookingResponse) String() string { return proto.CompactTextString(m) } -func (*UpdateBookingResponse) ProtoMessage() {} -func (*UpdateBookingResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } +func (m *PostalAddress) Reset() { *m = PostalAddress{} } +func (m *PostalAddress) String() string { return proto.CompactTextString(m) } +func (*PostalAddress) ProtoMessage() {} +func (*PostalAddress) Descriptor() ([]byte, []int) { + return fileDescriptor_v3_e164fdd8b81531d4, []int{39} +} +func (m *PostalAddress) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PostalAddress.Unmarshal(m, b) +} +func (m *PostalAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PostalAddress.Marshal(b, m, deterministic) +} +func (dst *PostalAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_PostalAddress.Merge(dst, src) +} +func (m *PostalAddress) XXX_Size() int { + return xxx_messageInfo_PostalAddress.Size(m) +} +func (m *PostalAddress) XXX_DiscardUnknown() { + xxx_messageInfo_PostalAddress.DiscardUnknown(m) +} -func (m *UpdateBookingResponse) GetBooking() *Booking { +var xxx_messageInfo_PostalAddress proto.InternalMessageInfo + +func (m *PostalAddress) GetCountry() string { if m != nil { - return m.Booking + return m.Country } - return nil + return "" } -func (m *UpdateBookingResponse) GetUserPaymentOption() *UserPaymentOption { +func (m *PostalAddress) GetLocality() string { if m != nil { - return m.UserPaymentOption + return m.Locality } - return nil + return "" } -func (m *UpdateBookingResponse) GetBookingFailure() *BookingFailure { +func (m *PostalAddress) GetRegion() string { if m != nil { - return m.BookingFailure + return m.Region } - return nil + return "" +} + +func (m *PostalAddress) GetPostalCode() string { + if m != nil { + return m.PostalCode + } + return "" +} + +func (m *PostalAddress) GetStreetAddress() string { + if m != nil { + return m.StreetAddress + } + return "" } func init() { - proto.RegisterType((*PostalAddress)(nil), "v3.PostalAddress") - proto.RegisterType((*GeoCoordinates)(nil), "v3.GeoCoordinates") - proto.RegisterType((*Price)(nil), "v3.Price") - proto.RegisterType((*TaxRate)(nil), "v3.TaxRate") - proto.RegisterType((*SchedulingRules)(nil), "v3.SchedulingRules") - proto.RegisterType((*IngestionQueuePayload)(nil), "v3.IngestionQueuePayload") - proto.RegisterType((*IngestionStatus)(nil), "v3.IngestionStatus") - proto.RegisterType((*TimeRange)(nil), "v3.TimeRange") - proto.RegisterType((*NoShowFee)(nil), "v3.NoShowFee") - proto.RegisterType((*Deposit)(nil), "v3.Deposit") - proto.RegisterType((*ActionLink)(nil), "v3.ActionLink") - proto.RegisterType((*Slot)(nil), "v3.Slot") - proto.RegisterType((*Lease)(nil), "v3.Lease") - proto.RegisterType((*LeaseReference)(nil), "v3.LeaseReference") - proto.RegisterType((*Booking)(nil), "v3.Booking") - proto.RegisterType((*UserInformation)(nil), "v3.UserInformation") - proto.RegisterType((*PaymentProcessingParameters)(nil), "v3.PaymentProcessingParameters") - proto.RegisterType((*UserPaymentOption)(nil), "v3.UserPaymentOption") - proto.RegisterType((*PaymentInformation)(nil), "v3.PaymentInformation") - proto.RegisterType((*BookingFailure)(nil), "v3.BookingFailure") - proto.RegisterType((*SlotAvailability)(nil), "v3.SlotAvailability") - proto.RegisterType((*AvailabilityUpdate)(nil), "v3.AvailabilityUpdate") - proto.RegisterType((*ResourceIds)(nil), "v3.ResourceIds") - proto.RegisterType((*TicketType)(nil), "v3.TicketType") - proto.RegisterType((*LineItem)(nil), "v3.LineItem") - proto.RegisterType((*LineItem_OrderedTickets)(nil), "v3.LineItem.OrderedTickets") - proto.RegisterType((*LineItemFulfillability)(nil), "v3.LineItemFulfillability") - proto.RegisterType((*OrderFulfillability)(nil), "v3.OrderFulfillability") - proto.RegisterType((*Order)(nil), "v3.Order") - proto.RegisterType((*OrderFailure)(nil), "v3.OrderFailure") - proto.RegisterType((*CheckAvailabilityRequest)(nil), "v3.CheckAvailabilityRequest") - proto.RegisterType((*CheckAvailabilityResponse)(nil), "v3.CheckAvailabilityResponse") - proto.RegisterType((*GetBookingStatusRequest)(nil), "v3.GetBookingStatusRequest") - proto.RegisterType((*GetBookingStatusResponse)(nil), "v3.GetBookingStatusResponse") - proto.RegisterType((*CheckOrderFulfillabilityRequest)(nil), "v3.CheckOrderFulfillabilityRequest") - proto.RegisterType((*CheckOrderFulfillabilityResponse)(nil), "v3.CheckOrderFulfillabilityResponse") - proto.RegisterType((*CreateBookingRequest)(nil), "v3.CreateBookingRequest") - proto.RegisterType((*CreateBookingResponse)(nil), "v3.CreateBookingResponse") - proto.RegisterType((*CreateOrderRequest)(nil), "v3.CreateOrderRequest") - proto.RegisterType((*CreateOrderResponse)(nil), "v3.CreateOrderResponse") - proto.RegisterType((*CreateLeaseRequest)(nil), "v3.CreateLeaseRequest") - proto.RegisterType((*CreateLeaseResponse)(nil), "v3.CreateLeaseResponse") - proto.RegisterType((*ListBookingsRequest)(nil), "v3.ListBookingsRequest") - proto.RegisterType((*ListBookingsResponse)(nil), "v3.ListBookingsResponse") - proto.RegisterType((*ListOrdersRequest)(nil), "v3.ListOrdersRequest") - proto.RegisterType((*ListOrdersResponse)(nil), "v3.ListOrdersResponse") - proto.RegisterType((*UpdateBookingRequest)(nil), "v3.UpdateBookingRequest") - proto.RegisterType((*UpdateBookingResponse)(nil), "v3.UpdateBookingResponse") - proto.RegisterEnum("v3.IngestionSource", IngestionSource_name, IngestionSource_value) - proto.RegisterEnum("v3.ContentType", ContentType_name, ContentType_value) - proto.RegisterEnum("v3.PriceType", PriceType_name, PriceType_value) - proto.RegisterEnum("v3.RequireCreditCard", RequireCreditCard_name, RequireCreditCard_value) - proto.RegisterEnum("v3.PaymentOptionType", PaymentOptionType_name, PaymentOptionType_value) - proto.RegisterEnum("v3.BookingStatus", BookingStatus_name, BookingStatus_value) - proto.RegisterEnum("v3.CreditCardType", CreditCardType_name, CreditCardType_value) - proto.RegisterEnum("v3.PrepaymentStatus", PrepaymentStatus_name, PrepaymentStatus_value) - proto.RegisterEnum("v3.IngestionStatus_Code", IngestionStatus_Code_name, IngestionStatus_Code_value) - proto.RegisterEnum("v3.PaymentProcessingParameters_PaymentProcessor", PaymentProcessingParameters_PaymentProcessor_name, PaymentProcessingParameters_PaymentProcessor_value) - proto.RegisterEnum("v3.PaymentInformation_PaymentProcessedBy", PaymentInformation_PaymentProcessedBy_name, PaymentInformation_PaymentProcessedBy_value) - proto.RegisterEnum("v3.BookingFailure_Cause", BookingFailure_Cause_name, BookingFailure_Cause_value) - proto.RegisterEnum("v3.LineItemFulfillability_ItemFulfillabilityResult", LineItemFulfillability_ItemFulfillabilityResult_name, LineItemFulfillability_ItemFulfillabilityResult_value) - proto.RegisterEnum("v3.OrderFulfillability_OrderFulfillabilityResult", OrderFulfillability_OrderFulfillabilityResult_name, OrderFulfillability_OrderFulfillabilityResult_value) - proto.RegisterEnum("v3.OrderFailure_Cause", OrderFailure_Cause_name, OrderFailure_Cause_value) - proto.RegisterEnum("v3.CheckAvailabilityResponse_DurationRequirement", CheckAvailabilityResponse_DurationRequirement_name, CheckAvailabilityResponse_DurationRequirement_value) + proto.RegisterType((*CheckAvailabilityRequest)(nil), "ext.maps.booking.partner.v3.CheckAvailabilityRequest") + proto.RegisterType((*CheckAvailabilityResponse)(nil), "ext.maps.booking.partner.v3.CheckAvailabilityResponse") + proto.RegisterType((*AvailabilityUpdate)(nil), "ext.maps.booking.partner.v3.AvailabilityUpdate") + proto.RegisterType((*SlotAvailability)(nil), "ext.maps.booking.partner.v3.SlotAvailability") + proto.RegisterType((*CheckOrderFulfillabilityRequest)(nil), "ext.maps.booking.partner.v3.CheckOrderFulfillabilityRequest") + proto.RegisterType((*CheckOrderFulfillabilityResponse)(nil), "ext.maps.booking.partner.v3.CheckOrderFulfillabilityResponse") + proto.RegisterType((*GetBookingStatusRequest)(nil), "ext.maps.booking.partner.v3.GetBookingStatusRequest") + proto.RegisterType((*GetBookingStatusResponse)(nil), "ext.maps.booking.partner.v3.GetBookingStatusResponse") + proto.RegisterType((*CreateBookingRequest)(nil), "ext.maps.booking.partner.v3.CreateBookingRequest") + proto.RegisterType((*CreateBookingResponse)(nil), "ext.maps.booking.partner.v3.CreateBookingResponse") + proto.RegisterType((*CreateLeaseRequest)(nil), "ext.maps.booking.partner.v3.CreateLeaseRequest") + proto.RegisterType((*CreateLeaseResponse)(nil), "ext.maps.booking.partner.v3.CreateLeaseResponse") + proto.RegisterType((*Lease)(nil), "ext.maps.booking.partner.v3.Lease") + proto.RegisterType((*LeaseReference)(nil), "ext.maps.booking.partner.v3.LeaseReference") + proto.RegisterType((*CreateOrderRequest)(nil), "ext.maps.booking.partner.v3.CreateOrderRequest") + proto.RegisterType((*CreateOrderResponse)(nil), "ext.maps.booking.partner.v3.CreateOrderResponse") + proto.RegisterType((*ListBookingsRequest)(nil), "ext.maps.booking.partner.v3.ListBookingsRequest") + proto.RegisterType((*ListBookingsResponse)(nil), "ext.maps.booking.partner.v3.ListBookingsResponse") + proto.RegisterType((*ListOrdersRequest)(nil), "ext.maps.booking.partner.v3.ListOrdersRequest") + proto.RegisterType((*ListOrdersRequest_OrderIds)(nil), "ext.maps.booking.partner.v3.ListOrdersRequest.OrderIds") + proto.RegisterType((*ListOrdersResponse)(nil), "ext.maps.booking.partner.v3.ListOrdersResponse") + proto.RegisterType((*UpdateBookingRequest)(nil), "ext.maps.booking.partner.v3.UpdateBookingRequest") + proto.RegisterType((*UpdateBookingResponse)(nil), "ext.maps.booking.partner.v3.UpdateBookingResponse") + proto.RegisterType((*Booking)(nil), "ext.maps.booking.partner.v3.Booking") + proto.RegisterType((*BookingFailure)(nil), "ext.maps.booking.partner.v3.BookingFailure") + proto.RegisterType((*Order)(nil), "ext.maps.booking.partner.v3.Order") + proto.RegisterType((*LineItem)(nil), "ext.maps.booking.partner.v3.LineItem") + proto.RegisterType((*LineItem_OrderedTickets)(nil), "ext.maps.booking.partner.v3.LineItem.OrderedTickets") + proto.RegisterType((*OrderFailure)(nil), "ext.maps.booking.partner.v3.OrderFailure") + proto.RegisterType((*OrderFulfillability)(nil), "ext.maps.booking.partner.v3.OrderFulfillability") + proto.RegisterType((*LineItemFulfillability)(nil), "ext.maps.booking.partner.v3.LineItemFulfillability") + proto.RegisterType((*LineItemFulfillability_UpdatedAvailability)(nil), "ext.maps.booking.partner.v3.LineItemFulfillability.UpdatedAvailability") + proto.RegisterType((*TicketType)(nil), "ext.maps.booking.partner.v3.TicketType") + proto.RegisterType((*ResourceIds)(nil), "ext.maps.booking.partner.v3.ResourceIds") + proto.RegisterType((*PaymentProcessingParameters)(nil), "ext.maps.booking.partner.v3.PaymentProcessingParameters") + proto.RegisterType((*UserPaymentOption)(nil), "ext.maps.booking.partner.v3.UserPaymentOption") + proto.RegisterType((*PaymentInformation)(nil), "ext.maps.booking.partner.v3.PaymentInformation") + proto.RegisterType((*Price)(nil), "ext.maps.booking.partner.v3.Price") + proto.RegisterType((*NoShowFee)(nil), "ext.maps.booking.partner.v3.NoShowFee") + proto.RegisterType((*Deposit)(nil), "ext.maps.booking.partner.v3.Deposit") + proto.RegisterType((*Slot)(nil), "ext.maps.booking.partner.v3.Slot") + proto.RegisterType((*UserInformation)(nil), "ext.maps.booking.partner.v3.UserInformation") + proto.RegisterType((*PostalAddress)(nil), "ext.maps.booking.partner.v3.PostalAddress") + proto.RegisterEnum("ext.maps.booking.partner.v3.BookingStatus", BookingStatus_name, BookingStatus_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.CreditCardType", CreditCardType_name, CreditCardType_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentOptionType", PaymentOptionType_name, PaymentOptionType_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.PrepaymentStatus", PrepaymentStatus_name, PrepaymentStatus_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.PriceType", PriceType_name, PriceType_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.CheckAvailabilityResponse_DurationRequirement", CheckAvailabilityResponse_DurationRequirement_name, CheckAvailabilityResponse_DurationRequirement_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.BookingFailure_Cause", BookingFailure_Cause_name, BookingFailure_Cause_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.OrderFailure_Cause", OrderFailure_Cause_name, OrderFailure_Cause_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.OrderFulfillability_OrderFulfillabilityResult", OrderFulfillability_OrderFulfillabilityResult_name, OrderFulfillability_OrderFulfillabilityResult_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.LineItemFulfillability_ItemFulfillabilityResult", LineItemFulfillability_ItemFulfillabilityResult_name, LineItemFulfillability_ItemFulfillabilityResult_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentProcessingParameters_PaymentProcessor", PaymentProcessingParameters_PaymentProcessor_name, PaymentProcessingParameters_PaymentProcessor_value) + proto.RegisterEnum("ext.maps.booking.partner.v3.PaymentInformation_PaymentProcessedBy", PaymentInformation_PaymentProcessedBy_name, PaymentInformation_PaymentProcessedBy_value) } -func init() { proto.RegisterFile("v3.proto", fileDescriptor0) } +func init() { proto.RegisterFile("v3.proto", fileDescriptor_v3_e164fdd8b81531d4) } -var fileDescriptor0 = []byte{ - // 3731 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcd, 0x73, 0x1b, 0xd9, - 0x56, 0x9f, 0xd6, 0x87, 0x6d, 0x1d, 0xdb, 0x72, 0xfb, 0xda, 0xb1, 0x95, 0x38, 0x19, 0x3b, 0x3d, - 0x33, 0x4c, 0xe2, 0xcc, 0x78, 0xde, 0x4b, 0xde, 0x54, 0x0d, 0x45, 0xc1, 0xd0, 0x6e, 0x5d, 0x67, - 0x9a, 0xc8, 0x2d, 0xcd, 0x55, 0x2b, 0x99, 0xc0, 0xa2, 0xe9, 0xa8, 0xaf, 0x95, 0x26, 0x52, 0xb7, - 0x5e, 0x77, 0xcb, 0x2f, 0x7e, 0x55, 0xaf, 0xea, 0x2d, 0xd9, 0x52, 0x50, 0xf5, 0x16, 0x14, 0x54, - 0x41, 0x15, 0xb0, 0xa4, 0x58, 0xc0, 0x1f, 0x00, 0x0b, 0x8a, 0xa2, 0xf8, 0x07, 0x58, 0xc1, 0x3f, - 0xc0, 0x86, 0x62, 0xc3, 0x8a, 0xba, 0x1f, 0xad, 0x6e, 0xb5, 0x24, 0x3b, 0x19, 0x60, 0xf1, 0x76, - 0xba, 0xe7, 0x9c, 0xfb, 0x71, 0x3e, 0xee, 0x39, 0xbf, 0x73, 0x5b, 0xb0, 0x76, 0xf9, 0xe4, 0x64, - 0x1c, 0x85, 0x49, 0x88, 0x4a, 0x97, 0x4f, 0xb4, 0xbf, 0x50, 0x60, 0xb3, 0x13, 0xc6, 0x89, 0x3b, - 0xd4, 0x3d, 0x2f, 0xa2, 0x71, 0x8c, 0x1a, 0xb0, 0xda, 0x0f, 0x27, 0x41, 0x12, 0x5d, 0x35, 0x94, - 0x23, 0xe5, 0x41, 0x8d, 0xa4, 0x43, 0x74, 0x07, 0xd6, 0x86, 0x61, 0xdf, 0x1d, 0xfa, 0xc9, 0x55, - 0xa3, 0xc4, 0x59, 0xd3, 0x31, 0xda, 0x83, 0x95, 0x88, 0x0e, 0xfc, 0x30, 0x68, 0x94, 0x39, 0x47, - 0x8e, 0xd0, 0x21, 0xac, 0x8f, 0xf9, 0xf2, 0x4e, 0x3f, 0xf4, 0x68, 0xa3, 0xc2, 0x99, 0x20, 0x48, - 0x46, 0xe8, 0x51, 0xf4, 0x09, 0xd4, 0xe3, 0x24, 0xa2, 0x34, 0x71, 0x5c, 0x71, 0x80, 0x46, 0x95, - 0xcb, 0x6c, 0x0a, 0xaa, 0x3c, 0x95, 0xf6, 0x13, 0xa8, 0x3f, 0xa5, 0xa1, 0x11, 0x86, 0x91, 0xe7, - 0x07, 0x6e, 0x42, 0x63, 0x7e, 0x1a, 0x37, 0xf1, 0x93, 0x89, 0x47, 0xf9, 0x41, 0x15, 0x32, 0x1d, - 0xa3, 0xbb, 0x50, 0x1b, 0x86, 0xc1, 0x40, 0x30, 0x4b, 0x9c, 0x99, 0x11, 0xd0, 0x23, 0x58, 0x4d, - 0xf7, 0x62, 0x87, 0x5d, 0x7f, 0xbc, 0x7d, 0x72, 0xf9, 0xe4, 0x64, 0xc6, 0x0a, 0x24, 0x95, 0xd0, - 0x7e, 0x06, 0xd5, 0x4e, 0xe4, 0xf7, 0x29, 0xba, 0x0f, 0x1b, 0x63, 0xf6, 0xc3, 0x19, 0xf9, 0xfd, - 0x28, 0x8c, 0xf9, 0x9e, 0x65, 0xb2, 0xce, 0x69, 0xe7, 0x9c, 0x84, 0x3e, 0x82, 0xcd, 0xfe, 0x24, - 0x8a, 0x68, 0xd0, 0xbf, 0x12, 0xea, 0x0a, 0x2b, 0x6d, 0xa4, 0x44, 0xae, 0xf0, 0x67, 0x80, 0xd8, - 0x1c, 0x3f, 0x18, 0x38, 0xe1, 0x38, 0xf1, 0xc3, 0xc0, 0x49, 0xdc, 0x81, 0xb4, 0x9a, 0x2a, 0x39, - 0x6d, 0xce, 0xb0, 0xdd, 0x81, 0x76, 0x02, 0xab, 0xb6, 0xfb, 0x96, 0xb8, 0x09, 0x65, 0xab, 0xf3, - 0xad, 0x9d, 0x31, 0x8d, 0xfa, 0x34, 0x48, 0xf8, 0x09, 0xaa, 0x64, 0x83, 0x13, 0x3b, 0x82, 0xa6, - 0xfd, 0xa7, 0x02, 0x5b, 0xdd, 0xfe, 0x6b, 0xea, 0x4d, 0x86, 0x7e, 0x30, 0x20, 0x93, 0x21, 0x8d, - 0xd1, 0x09, 0xec, 0x8c, 0xfc, 0xc0, 0x71, 0xbd, 0x4b, 0x37, 0xe8, 0x53, 0xe7, 0x55, 0x18, 0xbe, - 0xf1, 0x83, 0x81, 0x54, 0x60, 0x7b, 0xe4, 0x07, 0xba, 0xe0, 0x9c, 0x0a, 0x06, 0xfa, 0x1a, 0xee, - 0xe6, 0xe5, 0xc3, 0x60, 0xe8, 0x07, 0xd4, 0xe9, 0xb3, 0x01, 0x5b, 0x94, 0x6b, 0x55, 0x26, 0xb7, - 0xb3, 0x89, 0x6d, 0x2e, 0x61, 0xa4, 0x02, 0x48, 0x87, 0x5b, 0x43, 0x37, 0x49, 0xa7, 0x30, 0xaf, - 0x84, 0x81, 0x73, 0x41, 0xa9, 0x34, 0x77, 0x8d, 0x9b, 0x9b, 0xd9, 0xed, 0xb4, 0xd4, 0x50, 0xc8, - 0x0e, 0x93, 0x35, 0x72, 0xa2, 0x67, 0x94, 0x59, 0x09, 0x82, 0x30, 0x7e, 0x1d, 0xfe, 0x84, 0xcf, - 0xab, 0x2c, 0x9a, 0x57, 0x13, 0x02, 0x67, 0x94, 0x6a, 0xfb, 0x70, 0xcb, 0x0c, 0x06, 0x34, 0x66, - 0xb3, 0xbf, 0x9d, 0xd0, 0x09, 0xed, 0xb8, 0x57, 0xc3, 0xd0, 0xf5, 0xb4, 0x3f, 0xae, 0xc0, 0xd6, - 0x94, 0xd3, 0x4d, 0xdc, 0x64, 0x12, 0xa3, 0xcf, 0xa0, 0xc2, 0x9d, 0xc3, 0xf4, 0xaf, 0x3f, 0x6e, - 0xb0, 0x45, 0x0b, 0x22, 0x27, 0xcc, 0x51, 0x84, 0x4b, 0xa1, 0x87, 0xa0, 0x26, 0xfe, 0x88, 0xc6, - 0x89, 0x3b, 0x1a, 0xa7, 0xae, 0x17, 0x06, 0xd8, 0x9a, 0xd2, 0xa5, 0xfb, 0x7f, 0x04, 0x7b, 0x7e, - 0x90, 0xd0, 0x28, 0x70, 0x87, 0x0e, 0x8d, 0xa2, 0x30, 0x72, 0x3c, 0x9a, 0xb8, 0xfe, 0x30, 0x96, - 0xde, 0xdd, 0x4d, 0xb9, 0x98, 0x31, 0x9b, 0x82, 0x87, 0x74, 0xb8, 0x37, 0x76, 0xa3, 0x24, 0xa0, - 0x91, 0x73, 0xe9, 0xc7, 0xfe, 0xab, 0x21, 0x2d, 0x4c, 0x16, 0x77, 0xe6, 0x8e, 0x14, 0x7a, 0x2e, - 0x64, 0xf2, 0x4b, 0x68, 0x7f, 0x5b, 0x82, 0x0a, 0x8f, 0x2d, 0x04, 0xf5, 0xae, 0xad, 0xdb, 0xbd, - 0xae, 0xd3, 0xb3, 0x9e, 0x59, 0xed, 0x17, 0x96, 0xfa, 0x01, 0x6a, 0xc0, 0xae, 0xa4, 0x9d, 0x61, - 0xdc, 0x74, 0x7a, 0x9d, 0x56, 0x5b, 0x6f, 0xe2, 0xa6, 0xaa, 0x14, 0x39, 0xd8, 0xfa, 0xb6, 0x87, - 0x7b, 0xb8, 0xa9, 0x96, 0x90, 0x06, 0x1f, 0xe6, 0x39, 0x1d, 0xd2, 0x36, 0x70, 0xb7, 0x6b, 0x5a, - 0x4f, 0x9d, 0xae, 0xad, 0x13, 0x1b, 0x37, 0xd5, 0x32, 0xfa, 0x18, 0x8e, 0x96, 0xc9, 0xf4, 0x0c, - 0x03, 0x63, 0xb6, 0x47, 0x05, 0xdd, 0x87, 0x7b, 0x4b, 0xa4, 0xce, 0x74, 0xb3, 0x85, 0x9b, 0x6a, - 0x15, 0xdd, 0x81, 0xbd, 0xbc, 0x48, 0xb3, 0xd7, 0x69, 0x99, 0x86, 0xce, 0x36, 0x59, 0x41, 0xb7, - 0x60, 0x5b, 0xf2, 0xf4, 0x8e, 0xe9, 0x18, 0x7a, 0x8b, 0x4d, 0x61, 0x57, 0xe1, 0x30, 0x47, 0x5e, - 0xb8, 0xf5, 0x05, 0x3a, 0x82, 0xbb, 0x8b, 0x85, 0xe4, 0xce, 0x03, 0x4d, 0x87, 0x9a, 0xed, 0x8f, - 0x28, 0x71, 0x83, 0x01, 0x45, 0x07, 0x50, 0x7b, 0x45, 0x07, 0x7e, 0xe0, 0xc4, 0xb4, 0x2f, 0xef, - 0xc6, 0x1a, 0x27, 0x74, 0x69, 0x1f, 0xed, 0xc3, 0x2a, 0x0d, 0x3c, 0xce, 0x12, 0xce, 0x5f, 0xa1, - 0x81, 0xd7, 0xa5, 0x7d, 0x8d, 0x40, 0xcd, 0x0a, 0xbb, 0x22, 0x0c, 0xd1, 0x01, 0x94, 0x59, 0xb4, - 0x2a, 0x85, 0x68, 0x25, 0x8c, 0x8a, 0x1e, 0xc0, 0xda, 0x05, 0xa5, 0x4e, 0x72, 0x35, 0x16, 0xf7, - 0xa0, 0xfe, 0x78, 0x73, 0x2a, 0x61, 0x5f, 0x8d, 0x29, 0x59, 0xbd, 0xa0, 0xfc, 0x87, 0xf6, 0x67, - 0x0a, 0xac, 0x36, 0xe9, 0x38, 0x8c, 0xfd, 0x04, 0x7d, 0x04, 0xab, 0x9e, 0xf8, 0x39, 0xbf, 0x6c, - 0xca, 0x29, 0x5e, 0xd8, 0x99, 0x6b, 0x97, 0x1d, 0x39, 0x77, 0x61, 0xf3, 0xb7, 0x8d, 0xa9, 0xf7, - 0x03, 0xd8, 0x90, 0x6b, 0x5d, 0x73, 0xbe, 0x75, 0x29, 0xc2, 0xcf, 0xe8, 0x03, 0xe8, 0x7d, 0x36, - 0xbd, 0xe5, 0x07, 0x6f, 0x90, 0x0a, 0xe5, 0x49, 0x34, 0x94, 0xf5, 0x82, 0xfd, 0x14, 0xd9, 0x39, - 0x18, 0x4c, 0xdc, 0x01, 0x9d, 0xd6, 0x0a, 0x39, 0x46, 0x9f, 0x03, 0x8a, 0x68, 0x9c, 0x44, 0x7e, - 0x3f, 0xa1, 0x9e, 0x93, 0x16, 0x9b, 0xf2, 0x51, 0xf9, 0x41, 0x8d, 0x6c, 0x67, 0x1c, 0x43, 0x30, - 0xb4, 0x7f, 0x53, 0xa0, 0xd2, 0x1d, 0x86, 0x09, 0xab, 0x25, 0x23, 0x1a, 0xf5, 0x5f, 0xbb, 0x41, - 0xe2, 0xf8, 0x9e, 0xdc, 0x0d, 0x52, 0x92, 0xe9, 0xa1, 0x7b, 0x00, 0x31, 0x8d, 0x2e, 0x59, 0x92, - 0xf6, 0x3d, 0xb9, 0x6d, 0x4d, 0x52, 0x4c, 0x8f, 0x79, 0x38, 0x4e, 0xdc, 0x28, 0xe1, 0x36, 0x29, - 0x0b, 0x0f, 0x73, 0x02, 0x33, 0xc1, 0x7d, 0xd8, 0xf0, 0x26, 0x51, 0x66, 0xb3, 0x8a, 0x48, 0xef, - 0x29, 0x8d, 0x89, 0x3c, 0x04, 0xd5, 0xbd, 0x74, 0xfd, 0xa1, 0xfb, 0xca, 0x67, 0x35, 0x8f, 0xe7, - 0x6d, 0x51, 0xac, 0xb6, 0xf2, 0x74, 0xdb, 0x1d, 0xa0, 0xcf, 0xa1, 0x16, 0xd1, 0x38, 0x9c, 0x44, - 0x7d, 0x1a, 0x37, 0x56, 0xb8, 0xe3, 0xb6, 0x98, 0x35, 0x89, 0x24, 0x9a, 0x5e, 0x4c, 0x32, 0x09, - 0xed, 0xcf, 0x15, 0xa8, 0xb6, 0xa8, 0x1b, 0x53, 0x74, 0x1b, 0xd6, 0x86, 0xec, 0x47, 0xa6, 0xe0, - 0x2a, 0x1f, 0x9b, 0x1e, 0xba, 0x0b, 0x95, 0x78, 0x18, 0x26, 0x5c, 0xaf, 0xf5, 0xc7, 0x6b, 0x6c, - 0x39, 0x66, 0x16, 0xc2, 0xa9, 0xac, 0x8e, 0x4e, 0x62, 0x1a, 0x39, 0x11, 0xbd, 0xa0, 0xac, 0xd8, - 0x50, 0x99, 0x74, 0x36, 0x19, 0x95, 0xa4, 0x44, 0xf4, 0xab, 0x70, 0x5b, 0xac, 0x4f, 0xdf, 0x8e, - 0x7d, 0xa9, 0x2e, 0xcb, 0x63, 0x39, 0x9d, 0xf7, 0xb8, 0x00, 0x9e, 0xf2, 0xd9, 0x15, 0x61, 0xa1, - 0xfe, 0x08, 0xea, 0xfc, 0x8c, 0xd9, 0x62, 0xcb, 0x0f, 0xab, 0xfd, 0xb7, 0x02, 0xab, 0x69, 0x3d, - 0xb9, 0x07, 0x20, 0x6b, 0x4e, 0x26, 0x58, 0x93, 0x94, 0x1b, 0xf5, 0xfa, 0x0d, 0x50, 0xb9, 0x5e, - 0x7e, 0x70, 0x11, 0x46, 0x23, 0x7e, 0x20, 0x59, 0x46, 0x76, 0x98, 0x64, 0x2f, 0xa6, 0x91, 0x99, - 0xb1, 0xc8, 0xd6, 0x64, 0x96, 0x80, 0x1e, 0xc2, 0x4a, 0xcc, 0x93, 0x3a, 0xd7, 0xae, 0x2e, 0x6a, - 0xbd, 0x3c, 0x99, 0xc8, 0xf6, 0x44, 0x0a, 0xa0, 0xa7, 0xb0, 0x33, 0x76, 0xaf, 0x46, 0x94, 0x85, - 0x57, 0x6e, 0xb7, 0x2a, 0xdf, 0x6d, 0x8f, 0x5f, 0x06, 0xc1, 0xce, 0x6f, 0x88, 0xc6, 0x73, 0x34, - 0xed, 0x9f, 0x15, 0xd8, 0x2a, 0x1c, 0x8c, 0x65, 0x10, 0xa1, 0x47, 0x6a, 0x81, 0x15, 0x7e, 0x52, - 0x1e, 0xb4, 0x03, 0xff, 0x92, 0x06, 0x4e, 0xe0, 0x8e, 0xd2, 0xbb, 0x52, 0xe3, 0x14, 0xcb, 0x1d, - 0x51, 0x16, 0xf4, 0x17, 0xee, 0xc8, 0x1f, 0x5e, 0x09, 0xbe, 0x70, 0x2a, 0x08, 0x12, 0x17, 0xc8, - 0xa1, 0x99, 0xca, 0x4d, 0x68, 0x86, 0x01, 0xa3, 0x84, 0x0e, 0xe9, 0xf8, 0x75, 0x18, 0x50, 0x19, - 0xbb, 0x19, 0x01, 0xed, 0x42, 0x95, 0x8e, 0x5c, 0x7f, 0xc8, 0x23, 0xb6, 0x46, 0xc4, 0x40, 0xfb, - 0x45, 0x19, 0x0e, 0xa4, 0xe2, 0x9d, 0x28, 0xec, 0xd3, 0x38, 0xf6, 0x83, 0x41, 0xc7, 0x8d, 0xdc, - 0x11, 0x4d, 0x68, 0x14, 0x23, 0x02, 0xb5, 0xb1, 0xa0, 0x87, 0x91, 0x2c, 0xaa, 0x3f, 0xc8, 0x19, - 0x6b, 0xd1, 0x9c, 0x02, 0x2f, 0x8c, 0x44, 0x41, 0x9f, 0x2e, 0x83, 0x7e, 0x04, 0xbb, 0xa9, 0x2b, - 0x46, 0x34, 0x79, 0x1d, 0x7a, 0x4e, 0x12, 0xbe, 0xa1, 0x81, 0x30, 0x0f, 0x17, 0x4e, 0xed, 0x7e, - 0xce, 0xd9, 0x36, 0xe3, 0xb2, 0x52, 0x3a, 0x09, 0xc6, 0x6e, 0x14, 0x53, 0xcf, 0x59, 0x38, 0x5d, - 0x68, 0x7c, 0x27, 0x15, 0xea, 0xcc, 0x2f, 0xd1, 0x80, 0xd5, 0x4b, 0x1a, 0xc5, 0x19, 0x90, 0x4d, - 0x87, 0xe8, 0x11, 0x6c, 0xa7, 0x6b, 0x66, 0xea, 0x56, 0x24, 0x6c, 0x2b, 0xa8, 0xa3, 0x79, 0xa0, - 0x16, 0x55, 0x64, 0xa5, 0xb0, 0xa3, 0xbf, 0x3c, 0xc7, 0x96, 0x9d, 0x16, 0xa3, 0x36, 0x71, 0x7a, - 0x56, 0xb7, 0x83, 0x0d, 0xf3, 0xcc, 0xc4, 0x4d, 0xf5, 0x03, 0xb4, 0x0b, 0x6a, 0xc6, 0xea, 0xda, - 0xc4, 0xec, 0x60, 0x55, 0x41, 0xfb, 0xb0, 0x93, 0x51, 0x4f, 0x89, 0x6e, 0x5a, 0x36, 0xc1, 0x58, - 0x2d, 0x69, 0xff, 0x54, 0x82, 0x6d, 0x16, 0x67, 0x72, 0x2b, 0x81, 0x1a, 0xd1, 0x13, 0xd8, 0xe3, - 0x91, 0x96, 0x9e, 0x56, 0xa2, 0xcc, 0x69, 0xe0, 0xed, 0x4c, 0x8a, 0x53, 0x4c, 0x0f, 0x7d, 0x01, - 0xbb, 0x97, 0xee, 0xd0, 0xf7, 0x1c, 0x91, 0x21, 0xa7, 0x29, 0x41, 0x94, 0x8e, 0x6d, 0xce, 0xeb, - 0x32, 0x96, 0xcc, 0x06, 0xe8, 0x11, 0x20, 0x31, 0x81, 0xd5, 0xc5, 0xa9, 0xb8, 0xc8, 0xaa, 0x5b, - 0x9c, 0x83, 0x03, 0x2f, 0x15, 0x7e, 0x08, 0x15, 0x5e, 0x57, 0xc4, 0x15, 0xbc, 0x95, 0x8b, 0x0e, - 0x89, 0x74, 0x59, 0x7d, 0xe1, 0x22, 0x2c, 0x8f, 0x85, 0x91, 0x3f, 0xf0, 0x03, 0xde, 0x32, 0x4c, - 0x82, 0x84, 0x3b, 0xad, 0x4a, 0x36, 0x53, 0x2a, 0x2f, 0x0b, 0x19, 0xd4, 0x4e, 0xa4, 0xd4, 0x8a, - 0x00, 0xc3, 0x92, 0x28, 0x84, 0x8e, 0x33, 0x97, 0x65, 0x46, 0x58, 0x15, 0x19, 0x7b, 0x3c, 0x6b, - 0x00, 0xed, 0x4f, 0xab, 0x80, 0xe6, 0xaf, 0x37, 0xd2, 0x61, 0x7b, 0x1c, 0xd1, 0x74, 0x15, 0x99, - 0x49, 0x44, 0x90, 0xef, 0x8a, 0xf2, 0x98, 0x32, 0x65, 0x32, 0x51, 0xc7, 0x05, 0x0a, 0x83, 0x85, - 0xe9, 0xfc, 0x24, 0x72, 0x83, 0xd8, 0xed, 0xa7, 0x47, 0x11, 0x97, 0x3d, 0x8d, 0x74, 0x3b, 0x63, - 0x9a, 0x1e, 0x3a, 0x84, 0x2a, 0x6f, 0x2d, 0xe6, 0x30, 0x33, 0x11, 0x74, 0xf4, 0x00, 0x20, 0x71, - 0xdf, 0x3a, 0xee, 0x88, 0xab, 0x5f, 0x44, 0xc8, 0xa4, 0x96, 0xb8, 0x6f, 0x75, 0xce, 0x43, 0xbf, - 0x93, 0x5d, 0x26, 0x19, 0xb9, 0xd4, 0x73, 0x5e, 0x5d, 0x71, 0xc3, 0xd6, 0x1f, 0x3f, 0x5c, 0x9c, - 0xd8, 0x0a, 0x57, 0x94, 0x7a, 0xa7, 0x57, 0xd3, 0x3b, 0x97, 0xa3, 0xa1, 0xcf, 0x16, 0xd9, 0x98, - 0xe7, 0x8f, 0x6f, 0x3e, 0x98, 0xb3, 0x32, 0xfa, 0x72, 0x69, 0x6c, 0xae, 0xca, 0x29, 0x0b, 0xa3, - 0xf3, 0x93, 0x0c, 0x05, 0xad, 0x71, 0x45, 0xd7, 0xd9, 0xa1, 0x25, 0x46, 0xca, 0x70, 0xd0, 0xe7, - 0xb0, 0x1e, 0x84, 0xce, 0xb4, 0x6b, 0xa8, 0x71, 0x51, 0x8e, 0x62, 0xa6, 0x18, 0x8d, 0x75, 0x0d, - 0x29, 0x5c, 0xfb, 0x02, 0xea, 0x17, 0x94, 0xc6, 0x8e, 0xcb, 0x22, 0xd8, 0x7d, 0x4b, 0xe3, 0x06, - 0x14, 0xad, 0xb8, 0xc1, 0x04, 0xf4, 0xc0, 0xb3, 0x19, 0x5b, 0x1b, 0x4d, 0x43, 0x24, 0x6f, 0x81, - 0x8f, 0xe1, 0xa8, 0x70, 0xaf, 0x71, 0xd3, 0x39, 0x7d, 0x59, 0xb8, 0xda, 0xd9, 0x25, 0x16, 0xdc, - 0xa7, 0xed, 0xf6, 0xd3, 0x16, 0x16, 0x28, 0x7c, 0x86, 0xd1, 0xd1, 0x89, 0x6d, 0x61, 0xa2, 0x96, - 0x4e, 0x37, 0x00, 0xa6, 0xf5, 0xc8, 0xd3, 0x7e, 0xbf, 0x02, 0x75, 0x59, 0xb7, 0xce, 0x5c, 0x7f, - 0x38, 0x89, 0x28, 0x3a, 0x81, 0x6a, 0xdf, 0x9d, 0xc4, 0x33, 0xad, 0xcc, 0xac, 0xc8, 0x89, 0xc1, - 0xf8, 0x44, 0x88, 0xa1, 0xdf, 0x64, 0xc0, 0xeb, 0xf7, 0xa8, 0x80, 0x5d, 0x6e, 0xe4, 0x09, 0xb0, - 0x57, 0xe2, 0x93, 0x11, 0x9b, 0x6c, 0x44, 0xd4, 0xf3, 0x13, 0xc3, 0x8d, 0x3c, 0x7e, 0x23, 0xd5, - 0x54, 0x3a, 0xa5, 0xa0, 0x23, 0x58, 0xf7, 0x68, 0xdc, 0x8f, 0xfc, 0x71, 0x92, 0xa5, 0xc8, 0x3c, - 0x49, 0xfb, 0xf7, 0x12, 0x54, 0xf9, 0xa6, 0x0c, 0xbb, 0x1b, 0x7a, 0xaf, 0x8b, 0xe7, 0x73, 0x5c, - 0xb7, 0xd5, 0xb6, 0x9d, 0x9e, 0xa5, 0x3f, 0xd7, 0xcd, 0x96, 0x7e, 0xca, 0xad, 0x70, 0x08, 0x07, - 0x9c, 0xaa, 0xb7, 0x08, 0xd6, 0x9b, 0x2f, 0x9d, 0xd3, 0x76, 0xfb, 0x99, 0x34, 0x63, 0x97, 0x19, - 0x03, 0x6d, 0xc3, 0x66, 0x0b, 0xeb, 0x5d, 0xec, 0xe0, 0xef, 0x3a, 0x26, 0xe1, 0x1d, 0xc8, 0x21, - 0x1c, 0xb4, 0x7b, 0x76, 0xd7, 0x6c, 0x62, 0xc7, 0xd0, 0x2d, 0x03, 0xb7, 0x5a, 0xba, 0x6d, 0xb6, - 0x2d, 0xe7, 0x85, 0x69, 0x35, 0xdb, 0x2f, 0xd4, 0x4a, 0xde, 0x33, 0x98, 0x90, 0x36, 0x71, 0x0c, - 0x9d, 0x34, 0x1d, 0xfb, 0x65, 0x07, 0x3b, 0x04, 0xff, 0x16, 0x36, 0x6c, 0xde, 0x7f, 0x1c, 0xc2, - 0xc1, 0x02, 0xa9, 0x26, 0x36, 0x5a, 0xa6, 0xc5, 0x9b, 0x90, 0xbb, 0xd0, 0x48, 0x05, 0xda, 0x1d, - 0xbe, 0x83, 0xd5, 0xb6, 0x9d, 0xe7, 0x7a, 0xcb, 0x6c, 0xaa, 0xab, 0xec, 0x60, 0x33, 0xd3, 0xd5, - 0x35, 0xd6, 0x3e, 0xb1, 0x53, 0xb3, 0x53, 0x31, 0x49, 0x66, 0x83, 0xd9, 0x05, 0xd4, 0x1a, 0xba, - 0x07, 0xb7, 0x99, 0x8e, 0xac, 0x1f, 0x49, 0x75, 0x96, 0x4a, 0xe0, 0xa6, 0x0a, 0xe8, 0x00, 0xf6, - 0x53, 0x36, 0x5b, 0x22, 0xd5, 0x8f, 0x19, 0x6b, 0x5d, 0x7b, 0x09, 0x2a, 0x43, 0x48, 0x7a, 0x0e, - 0x74, 0x4e, 0x51, 0x94, 0xb2, 0x10, 0x45, 0x7d, 0x0a, 0x5b, 0x3c, 0x4d, 0x3a, 0x12, 0xa8, 0x0e, - 0x85, 0xdb, 0xab, 0xa4, 0xce, 0xc9, 0x7a, 0x4a, 0xd5, 0x5e, 0x00, 0xca, 0x2f, 0xdb, 0x1b, 0x7b, - 0x6e, 0x42, 0x59, 0x16, 0x64, 0xcb, 0x38, 0x79, 0x98, 0xdb, 0x50, 0x8e, 0xca, 0x0f, 0xd6, 0x45, - 0x16, 0x2c, 0x9e, 0x86, 0xa8, 0x71, 0x81, 0xa2, 0xfd, 0x2e, 0xac, 0xe7, 0xc0, 0x2f, 0x83, 0x8e, - 0x71, 0xe2, 0x5e, 0x5c, 0xe4, 0xa0, 0x23, 0x1f, 0x9b, 0x1e, 0x43, 0x4a, 0x51, 0x18, 0x8e, 0xb2, - 0x04, 0xb9, 0xc2, 0x86, 0x02, 0x29, 0xb1, 0x26, 0xf8, 0xca, 0x89, 0xfd, 0x9f, 0x8a, 0xbc, 0x58, - 0x25, 0x35, 0x4e, 0xe9, 0xfa, 0x3f, 0xa5, 0xda, 0xcf, 0x15, 0x00, 0xdb, 0xef, 0xbf, 0xa1, 0xbc, - 0x43, 0x41, 0x1f, 0x43, 0x3d, 0xe1, 0x23, 0x1e, 0xe5, 0xd9, 0x3e, 0x1b, 0xc9, 0x54, 0xc6, 0xf4, - 0x58, 0x55, 0x8f, 0x5f, 0x87, 0x51, 0xe2, 0xe4, 0xc3, 0x5a, 0x6c, 0xab, 0x72, 0x46, 0x33, 0xa3, - 0xdf, 0x98, 0x93, 0xb5, 0xbf, 0x29, 0xc1, 0x5a, 0xcb, 0x0f, 0xa8, 0x99, 0xd0, 0x51, 0xa1, 0x1b, - 0x51, 0xae, 0xed, 0x46, 0x4a, 0x37, 0x74, 0x23, 0xe5, 0xf9, 0x6e, 0xe4, 0x4b, 0x58, 0x15, 0x9a, - 0x30, 0xdc, 0xc7, 0x3c, 0x71, 0xc0, 0x8e, 0x93, 0xee, 0x7e, 0xd2, 0x8e, 0x3c, 0x1a, 0x51, 0x4f, - 0x18, 0x24, 0x26, 0xa9, 0x6c, 0xa6, 0x43, 0x75, 0x49, 0x5d, 0xc9, 0x00, 0xf3, 0xca, 0x0d, 0x80, - 0xf9, 0x8e, 0x01, 0xf5, 0xd9, 0x6d, 0x98, 0x52, 0xd2, 0xe8, 0x53, 0x95, 0xd7, 0x04, 0xc1, 0xf4, - 0x18, 0xbc, 0x14, 0xb5, 0x5a, 0x84, 0x9e, 0x18, 0x68, 0xff, 0x5a, 0x86, 0xbd, 0xf4, 0xd4, 0x67, - 0x93, 0xe1, 0x85, 0x3f, 0x9c, 0xc6, 0xf4, 0x11, 0x54, 0xfc, 0x84, 0x8e, 0x64, 0x4c, 0x6f, 0xe4, - 0xf5, 0x23, 0x9c, 0x83, 0x9e, 0xc1, 0x4a, 0x44, 0xe3, 0xc9, 0x30, 0x91, 0x59, 0xec, 0x49, 0x5e, - 0x66, 0x76, 0xb5, 0x93, 0x79, 0x12, 0xe1, 0x53, 0x89, 0x5c, 0x02, 0xfd, 0x10, 0x76, 0x27, 0xc1, - 0x45, 0x2a, 0x31, 0xa4, 0x4e, 0x44, 0xdd, 0x78, 0x9a, 0xe5, 0x76, 0x66, 0x78, 0x84, 0xb3, 0xb8, - 0x8f, 0xc7, 0x61, 0x12, 0x3b, 0xe1, 0x98, 0x06, 0xbc, 0x08, 0x57, 0x49, 0x8d, 0x53, 0xda, 0x63, - 0x1a, 0xa0, 0x2f, 0x60, 0x3d, 0x17, 0x83, 0x8d, 0x2a, 0xf7, 0x53, 0x9d, 0x9d, 0x31, 0x0b, 0x54, - 0x02, 0x59, 0x40, 0x6a, 0xff, 0xa2, 0x40, 0x63, 0xd9, 0x39, 0xd1, 0x31, 0xfc, 0x8a, 0x69, 0xe3, - 0x73, 0xe7, 0xac, 0xd7, 0x3a, 0x33, 0x59, 0x32, 0x30, 0x5b, 0xa6, 0xfd, 0xd2, 0x21, 0xb8, 0xdb, - 0x6b, 0xd9, 0x85, 0x2c, 0xbb, 0x05, 0xeb, 0x86, 0x6e, 0xa5, 0xa2, 0xaa, 0xb2, 0x30, 0xed, 0x96, - 0x58, 0x86, 0xec, 0x59, 0xd3, 0xf5, 0x5a, 0xd8, 0xb1, 0x4d, 0xe3, 0x19, 0xb6, 0x1d, 0xa3, 0x7d, - 0x7e, 0x6a, 0x5a, 0x3c, 0x9d, 0xaa, 0x65, 0xb4, 0x03, 0x5b, 0xa6, 0x65, 0xb4, 0x09, 0xc1, 0x06, - 0xab, 0x71, 0xa6, 0x81, 0xd5, 0x0a, 0xfa, 0x08, 0x0e, 0xf9, 0x69, 0x66, 0xe7, 0xb7, 0xed, 0x6f, - 0x30, 0x71, 0x08, 0xd6, 0xbb, 0x6d, 0x4b, 0xad, 0x6a, 0x7f, 0x59, 0x86, 0x1d, 0x1e, 0x22, 0x05, - 0xcf, 0x9a, 0x53, 0xbf, 0x89, 0xd2, 0xf5, 0x43, 0x66, 0x93, 0x05, 0x82, 0x8b, 0x68, 0x05, 0xaf, - 0x3d, 0x83, 0x1d, 0x16, 0x0a, 0xce, 0xc5, 0x8c, 0x50, 0xa3, 0xc4, 0x6d, 0x7d, 0x67, 0x79, 0x3c, - 0x10, 0xe4, 0xcf, 0x47, 0xdc, 0xfb, 0x87, 0x80, 0xf6, 0x0f, 0x0a, 0xdc, 0x5e, 0x7a, 0x4a, 0xf4, - 0x08, 0x3e, 0x6d, 0x93, 0x26, 0x26, 0xdf, 0xcf, 0x69, 0x07, 0xb0, 0x3f, 0x6b, 0x5e, 0x56, 0x92, - 0x1c, 0x66, 0x76, 0xb5, 0x84, 0x3e, 0x81, 0xfb, 0xb3, 0xcc, 0x2e, 0x26, 0xcf, 0x4d, 0x03, 0x17, - 0x9c, 0xf7, 0x31, 0x1c, 0x89, 0x13, 0x5c, 0xe3, 0xa8, 0x8a, 0xf6, 0x1f, 0x0a, 0x54, 0xb9, 0x16, - 0x2c, 0x33, 0x87, 0xec, 0x47, 0x2e, 0x33, 0xf3, 0xb1, 0xe9, 0x2d, 0xec, 0xc5, 0x4b, 0xef, 0xd1, - 0x8b, 0x2f, 0x69, 0xb0, 0xcb, 0xef, 0xdb, 0x60, 0x17, 0x5f, 0x82, 0x2a, 0x73, 0x2f, 0x41, 0x69, - 0xe6, 0x10, 0x37, 0x6e, 0x41, 0xe6, 0xd0, 0xfe, 0xab, 0x04, 0x1b, 0xc2, 0x6d, 0x12, 0x4c, 0x7d, - 0x36, 0x0b, 0xa6, 0xf6, 0xb2, 0x88, 0x5c, 0x04, 0xa5, 0xbe, 0x86, 0xfa, 0x5c, 0xc0, 0x31, 0x2d, - 0xf6, 0x97, 0x04, 0x32, 0x29, 0x88, 0x2f, 0xc1, 0x62, 0xe5, 0xef, 0x8f, 0xc5, 0x2a, 0xf3, 0x58, - 0xec, 0x0f, 0x94, 0x1b, 0xb0, 0xd8, 0x3e, 0xec, 0x2c, 0x88, 0x0d, 0x55, 0x79, 0x27, 0xe4, 0x54, - 0xba, 0x09, 0x39, 0x95, 0xe7, 0xb1, 0x51, 0x45, 0xfb, 0x0a, 0x1a, 0xc6, 0x6b, 0xda, 0x7f, 0x33, - 0x03, 0x17, 0xe8, 0x8f, 0x27, 0x34, 0x4e, 0xae, 0xc7, 0x30, 0xda, 0xcf, 0xcb, 0x70, 0x7b, 0xc1, - 0xd4, 0x78, 0x1c, 0x06, 0x31, 0xfd, 0x3f, 0xc2, 0x3f, 0xc8, 0x83, 0xdd, 0x69, 0xe1, 0x8d, 0xe8, - 0x8f, 0x27, 0x7e, 0x44, 0x59, 0xf0, 0x49, 0xc7, 0xf0, 0x34, 0xb5, 0xf4, 0x0c, 0x27, 0x4d, 0x39, - 0x93, 0x64, 0x13, 0xc9, 0x8e, 0x37, 0x4f, 0x64, 0x17, 0x61, 0xe6, 0x25, 0x71, 0xc2, 0x61, 0x96, - 0x6c, 0xe2, 0x78, 0xe4, 0xcd, 0x83, 0x30, 0x82, 0xdc, 0x39, 0x9a, 0x36, 0x82, 0x9d, 0x05, 0x9b, - 0x32, 0xf7, 0x35, 0x7b, 0x44, 0xa0, 0x61, 0x82, 0xbf, 0xed, 0x99, 0x04, 0x73, 0x27, 0xcc, 0x7a, - 0xbf, 0x01, 0xbb, 0xcd, 0x36, 0x87, 0x97, 0xdd, 0x6f, 0xda, 0x2f, 0x9c, 0x74, 0x86, 0xaa, 0xa0, - 0x3d, 0x40, 0xe7, 0xbd, 0x6e, 0x91, 0x5e, 0xd2, 0xbe, 0x82, 0xfd, 0xa7, 0x34, 0x99, 0x05, 0x03, - 0xd2, 0x77, 0xd7, 0x3f, 0xf2, 0x69, 0x7f, 0xa7, 0x40, 0x63, 0x7e, 0xaa, 0xf4, 0xdd, 0x0d, 0x0f, - 0x84, 0x5f, 0x41, 0x3d, 0x65, 0x4b, 0x64, 0x52, 0x5a, 0x86, 0x4c, 0x36, 0x5f, 0xe5, 0x87, 0x8b, - 0xbb, 0xf7, 0xf2, 0xfb, 0x74, 0xef, 0x9a, 0x07, 0x87, 0xdc, 0xe1, 0x0b, 0x53, 0xbc, 0x50, 0xfd, - 0xc6, 0x77, 0xe9, 0x34, 0x1b, 0x95, 0x96, 0x66, 0xa3, 0x3f, 0x52, 0xe0, 0x68, 0xf9, 0x36, 0xd2, - 0x4c, 0xf3, 0x39, 0x47, 0x79, 0xbf, 0x9c, 0x33, 0xdf, 0xf0, 0x96, 0xae, 0x6f, 0x78, 0xff, 0xba, - 0x0c, 0xbb, 0x46, 0x44, 0xdd, 0x24, 0xfd, 0x36, 0xf8, 0x4e, 0x37, 0x15, 0x7d, 0x01, 0x35, 0xf1, - 0x2e, 0x1c, 0xd1, 0x0b, 0xb9, 0x05, 0x4f, 0x69, 0xb3, 0xcf, 0xc7, 0x44, 0x3c, 0x1e, 0x13, 0x7a, - 0xf1, 0xbf, 0x7e, 0xe4, 0x5d, 0x52, 0x58, 0x2a, 0xef, 0x5d, 0x58, 0xfa, 0x70, 0xaf, 0xf0, 0x54, - 0xc2, 0xa2, 0x6e, 0x3c, 0x7d, 0xb8, 0x94, 0xa8, 0xf9, 0xf0, 0x86, 0xf7, 0x4d, 0x72, 0x30, 0xbe, - 0xe6, 0xc1, 0xf4, 0x11, 0x6c, 0xfb, 0x1e, 0x1d, 0x8d, 0xc3, 0x84, 0x7f, 0x29, 0x16, 0x4f, 0x93, - 0xe2, 0xc9, 0x55, 0xcd, 0x31, 0xc4, 0x83, 0xe4, 0xe7, 0x80, 0x5c, 0xcf, 0xf3, 0xd9, 0xe9, 0xdc, - 0x21, 0x4f, 0x49, 0x34, 0x4e, 0xe4, 0x23, 0xd6, 0x76, 0xc6, 0x91, 0x8e, 0xd1, 0xfe, 0x5e, 0x81, - 0x5b, 0x05, 0x8f, 0xc9, 0xe8, 0xf9, 0x04, 0x56, 0xf3, 0x5f, 0x7e, 0xe5, 0x1b, 0x4a, 0x2a, 0x95, - 0xf2, 0x10, 0x86, 0x9d, 0x05, 0x2f, 0x34, 0xd2, 0x8b, 0xb7, 0x52, 0x6f, 0xcc, 0x3c, 0xd0, 0x90, - 0xed, 0xb9, 0x37, 0x1b, 0xf4, 0x6b, 0xb0, 0x95, 0xde, 0xd9, 0x0b, 0x51, 0x3f, 0xa5, 0x43, 0xd1, - 0xfc, 0x23, 0x05, 0x49, 0xaf, 0xb7, 0x1c, 0x6b, 0xff, 0xa8, 0x00, 0x12, 0x4a, 0xf0, 0xa8, 0xce, - 0xee, 0x59, 0x95, 0x23, 0x91, 0xfc, 0x97, 0x30, 0x21, 0x20, 0xe8, 0x37, 0x7b, 0xaf, 0xf4, 0xff, - 0xe5, 0xbd, 0xf2, 0x62, 0xef, 0xb1, 0xfc, 0x3c, 0xa3, 0x88, 0xf4, 0xc5, 0x8d, 0x9a, 0x7c, 0x09, - 0x9b, 0x02, 0x84, 0xa5, 0xc6, 0x13, 0x27, 0x57, 0x8b, 0xa0, 0x84, 0x6c, 0x84, 0xb9, 0x91, 0xf6, - 0x65, 0x6a, 0x37, 0x79, 0xd3, 0xa6, 0x76, 0xe3, 0x37, 0x2d, 0xbf, 0x9b, 0x10, 0x10, 0x74, 0x2d, - 0x4e, 0x4f, 0x29, 0xa7, 0x65, 0xa7, 0xbc, 0x76, 0xde, 0x22, 0x27, 0x97, 0xde, 0xd9, 0xc9, 0x27, - 0xb0, 0xd3, 0xf2, 0xe3, 0xb4, 0x22, 0x4c, 0xeb, 0xc8, 0xb2, 0xef, 0x24, 0xda, 0xd7, 0xb0, 0x3b, - 0x2b, 0x2f, 0x4f, 0xf9, 0x29, 0xac, 0xc9, 0x95, 0x63, 0xf9, 0x24, 0x31, 0x13, 0xd8, 0x53, 0xa6, - 0xf6, 0x14, 0xb6, 0xd9, 0x02, 0xdc, 0x7c, 0x37, 0x6e, 0x37, 0x03, 0x83, 0x4b, 0xfc, 0xd3, 0x64, - 0x0a, 0x83, 0x99, 0x95, 0xf3, 0x0b, 0xcd, 0xfb, 0xb4, 0xbc, 0xc8, 0xa7, 0xda, 0xaf, 0xc3, 0xae, - 0xa8, 0xda, 0x85, 0x5c, 0xfa, 0x6e, 0x17, 0x93, 0xdf, 0xec, 0xc2, 0xfc, 0x5f, 0xba, 0x9b, 0x7d, - 0x7c, 0x96, 0xff, 0x3b, 0x06, 0x7f, 0x0c, 0xe2, 0xff, 0x59, 0x68, 0xf7, 0x88, 0x81, 0x73, 0xff, - 0x59, 0xd8, 0x82, 0x75, 0x49, 0x3b, 0xc3, 0xfc, 0xaf, 0x0a, 0x75, 0x00, 0x49, 0xd0, 0x3b, 0xa6, - 0x5a, 0x3a, 0xfe, 0x2b, 0x05, 0xd6, 0x8d, 0x30, 0x48, 0x68, 0x20, 0x1e, 0x7b, 0x76, 0x60, 0xcb, - 0x68, 0x5b, 0xb6, 0xc0, 0x38, 0xe9, 0x2a, 0xbb, 0xa0, 0xa6, 0xc4, 0x73, 0x4c, 0x8c, 0x6f, 0x74, - 0xcb, 0x56, 0x95, 0xbc, 0xa8, 0x6c, 0x98, 0xd4, 0x12, 0x83, 0x42, 0x29, 0x51, 0xb6, 0xc7, 0xbc, - 0x4d, 0x53, 0xcb, 0xe8, 0x0e, 0xec, 0xa5, 0x9c, 0xc2, 0x1b, 0x5e, 0x05, 0x69, 0xf0, 0xe1, 0x62, - 0xde, 0x74, 0xe5, 0xea, 0xf1, 0x13, 0xa8, 0x4d, 0x3f, 0xa1, 0x33, 0x5c, 0x75, 0x66, 0x7e, 0x87, - 0x9b, 0x0e, 0xd1, 0x6d, 0xec, 0x34, 0xf1, 0x99, 0xde, 0x6b, 0xd9, 0xea, 0x07, 0x4c, 0xbd, 0x0e, - 0x26, 0x4e, 0x07, 0x13, 0xd6, 0x8d, 0x29, 0xc7, 0x3f, 0x83, 0x6d, 0x09, 0xe7, 0xb2, 0x2e, 0x80, - 0x35, 0xdc, 0x12, 0xcb, 0x39, 0x06, 0xc1, 0x4d, 0xd3, 0x16, 0x70, 0x7b, 0x16, 0xd3, 0x2d, 0x11, - 0x32, 0xda, 0x56, 0xd3, 0x64, 0x27, 0xd3, 0x59, 0x5b, 0xf9, 0x21, 0xdc, 0x59, 0x24, 0xa4, 0xb7, - 0x5e, 0xe8, 0x2f, 0xbb, 0x6a, 0xe9, 0xf8, 0x17, 0x0a, 0x6c, 0xcf, 0x7d, 0x9f, 0x61, 0x4b, 0x17, - 0xb4, 0xe4, 0xfd, 0xc0, 0xec, 0xfe, 0xf7, 0xe0, 0x76, 0xd1, 0x14, 0xa6, 0xf5, 0xb4, 0x85, 0x9d, - 0x5e, 0x97, 0xf5, 0x15, 0xf3, 0x4f, 0xa9, 0xe7, 0xbd, 0x96, 0x6d, 0x72, 0x6e, 0x09, 0x1d, 0xc1, - 0xdd, 0x02, 0xb7, 0x67, 0xb5, 0xcc, 0x73, 0xd3, 0xc6, 0x4d, 0x2e, 0x51, 0x3e, 0xfe, 0x43, 0x05, - 0x36, 0x67, 0x10, 0x1f, 0xd3, 0x25, 0x7d, 0x28, 0x9d, 0xfe, 0xf5, 0x25, 0x7f, 0xa0, 0x4d, 0xa8, - 0x19, 0x6d, 0xeb, 0xcc, 0x24, 0xe7, 0x3c, 0x90, 0xee, 0xc3, 0xbd, 0x0e, 0xb6, 0x9a, 0x4c, 0x3c, - 0x8d, 0x09, 0x47, 0xf2, 0x25, 0xc8, 0x45, 0x1b, 0xb0, 0x26, 0x9e, 0x5b, 0x79, 0x0b, 0xb3, 0x0e, - 0xab, 0x56, 0x9b, 0x03, 0x61, 0xb5, 0xc2, 0xda, 0x28, 0x39, 0x70, 0x3a, 0xd8, 0xd2, 0x5b, 0xe6, - 0x6f, 0xe3, 0xa6, 0x5a, 0x3d, 0x1e, 0x43, 0x7d, 0xb6, 0x5b, 0x63, 0x9a, 0xe4, 0x2d, 0xbb, 0xc0, - 0x50, 0x6b, 0x50, 0x79, 0x6e, 0x76, 0x75, 0x11, 0xdb, 0xe7, 0x7a, 0xd7, 0xc6, 0x84, 0x89, 0xaa, - 0x25, 0x16, 0xb6, 0xfa, 0x39, 0x26, 0xa6, 0xa1, 0x5b, 0x0e, 0xfe, 0xae, 0x43, 0x70, 0xb7, 0xab, - 0x96, 0xd9, 0xa9, 0x9a, 0x66, 0xd7, 0x68, 0x3f, 0xc7, 0x44, 0xad, 0x1c, 0xff, 0x89, 0x02, 0x6a, - 0x11, 0xbc, 0x72, 0xdd, 0x08, 0x4e, 0x2d, 0xb8, 0xd0, 0x1a, 0xfc, 0x2b, 0x04, 0xce, 0x7d, 0xae, - 0x78, 0x6e, 0x8a, 0xff, 0x02, 0x1d, 0xc0, 0x7e, 0x8e, 0xc1, 0x7a, 0x82, 0x29, 0xb3, 0x54, 0x98, - 0x45, 0xf0, 0x59, 0xcf, 0x6a, 0x72, 0xe3, 0xcc, 0x32, 0x84, 0xc6, 0xb8, 0xa9, 0x56, 0x5e, 0xad, - 0xf0, 0x7f, 0x18, 0x3e, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x9d, 0xca, 0x4f, 0x6d, - 0x28, 0x00, 0x00, +var fileDescriptor_v3_e164fdd8b81531d4 = []byte{ + // 3278 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3a, 0xcd, 0x6f, 0x1b, 0xc7, + 0xf5, 0x5e, 0x7e, 0x88, 0xe2, 0xa3, 0x44, 0xad, 0x46, 0x8a, 0x4d, 0xf9, 0x23, 0x96, 0x37, 0x76, + 0xe2, 0xc8, 0x89, 0xf2, 0x8b, 0xec, 0xe0, 0x97, 0x14, 0x45, 0xda, 0x15, 0x39, 0xb2, 0x36, 0xa1, + 0x48, 0x66, 0xb8, 0x94, 0xed, 0x1c, 0xba, 0x59, 0x73, 0x47, 0xf2, 0xd6, 0x24, 0x97, 0xd9, 0x5d, + 0x2a, 0x56, 0xd0, 0xdc, 0x7a, 0xed, 0xa1, 0xe8, 0xa1, 0xe8, 0xa1, 0xc7, 0x1c, 0x0a, 0xb4, 0x40, + 0x0f, 0xbd, 0x14, 0xbd, 0x14, 0x28, 0xd0, 0x4b, 0x91, 0x53, 0x0f, 0xed, 0xa9, 0x87, 0xa2, 0x87, + 0xfe, 0x0b, 0x01, 0x8a, 0xa2, 0x98, 0x8f, 0xe5, 0xc7, 0x92, 0xa2, 0x28, 0xc5, 0xee, 0xa5, 0x17, + 0x41, 0xf3, 0xbe, 0xe6, 0xcd, 0x7b, 0x6f, 0xde, 0x7b, 0xf3, 0x96, 0x30, 0x7f, 0x74, 0x77, 0xb3, + 0xeb, 0x7b, 0xa1, 0x87, 0xae, 0xd0, 0x67, 0xe1, 0x66, 0xdb, 0xee, 0x06, 0x9b, 0x8f, 0x3d, 0xef, + 0xa9, 0xdb, 0x39, 0xdc, 0xec, 0xda, 0x7e, 0xd8, 0xa1, 0xfe, 0xe6, 0xd1, 0x5d, 0xed, 0x23, 0x28, + 0x14, 0x9f, 0xd0, 0xe6, 0x53, 0xfd, 0xc8, 0x76, 0x5b, 0xf6, 0x63, 0xb7, 0xe5, 0x86, 0xc7, 0x84, + 0x7e, 0xda, 0xa3, 0x41, 0x88, 0xde, 0x81, 0x54, 0xd0, 0xf2, 0xc2, 0x82, 0xb2, 0xae, 0xdc, 0xce, + 0x6d, 0xdd, 0xd8, 0x9c, 0x22, 0x67, 0xb3, 0xde, 0xf2, 0x42, 0xc2, 0xc9, 0xb5, 0x3f, 0x25, 0x61, + 0x6d, 0x82, 0xcc, 0xa0, 0xeb, 0x75, 0x02, 0x7a, 0x4e, 0xa1, 0xe8, 0x35, 0x58, 0x6a, 0x7a, 0xbd, + 0x4e, 0x68, 0xd9, 0x42, 0x68, 0x8b, 0x16, 0x12, 0xeb, 0xca, 0xed, 0x34, 0xc9, 0x73, 0xb0, 0x1e, + 0x41, 0xd1, 0x17, 0xb0, 0xea, 0xf4, 0x7c, 0x3b, 0x74, 0xbd, 0x8e, 0xe5, 0xd3, 0x4f, 0x7b, 0xae, + 0x4f, 0xdb, 0xb4, 0x13, 0x16, 0x92, 0xeb, 0xca, 0xed, 0xfc, 0xd6, 0x07, 0x53, 0xf7, 0x3b, 0x51, + 0xeb, 0xcd, 0x92, 0x14, 0x49, 0x06, 0x12, 0xc9, 0x8a, 0x33, 0x0e, 0x44, 0x9f, 0xc0, 0x8a, 0x3d, + 0x24, 0xc0, 0xea, 0x75, 0x1d, 0x3b, 0xa4, 0x85, 0x14, 0x3f, 0xed, 0x5b, 0x53, 0x77, 0x1f, 0xde, + 0xb8, 0xc1, 0xd9, 0x08, 0xb2, 0xc7, 0x60, 0x5a, 0x1b, 0x56, 0x26, 0x68, 0x83, 0x6e, 0xc2, 0x7a, + 0xa9, 0x41, 0x74, 0xd3, 0xa8, 0x56, 0x2c, 0x82, 0x3f, 0x6a, 0x18, 0x04, 0xef, 0xe1, 0x8a, 0x69, + 0x35, 0x2a, 0xf5, 0x1a, 0x2e, 0x1a, 0x3b, 0x06, 0x2e, 0xa9, 0x17, 0x50, 0x01, 0x56, 0x4b, 0x55, + 0xab, 0x52, 0x35, 0xad, 0xfa, 0x6e, 0xf5, 0x81, 0x15, 0x71, 0xa8, 0x0a, 0xba, 0x08, 0x68, 0xaf, + 0x51, 0x8f, 0xc3, 0x13, 0x5a, 0x17, 0xd0, 0xb8, 0x62, 0xe8, 0x63, 0x58, 0x66, 0x6e, 0xb1, 0x86, + 0xf5, 0x2b, 0x28, 0xeb, 0xc9, 0xdb, 0xb9, 0xad, 0x37, 0x4f, 0x75, 0xe9, 0x88, 0x85, 0xd5, 0x20, + 0x06, 0xd1, 0x7c, 0x50, 0xe3, 0x54, 0x2f, 0x3a, 0x6a, 0xb4, 0x2f, 0xe0, 0x3a, 0x77, 0x7e, 0xd5, + 0x77, 0xa8, 0xbf, 0xd3, 0x6b, 0x1d, 0xb8, 0xad, 0xf8, 0x6d, 0xb8, 0x0e, 0xb9, 0x36, 0xf5, 0x9b, + 0x4f, 0xec, 0x4e, 0x68, 0xb9, 0x0e, 0xd7, 0x24, 0x4b, 0x20, 0x02, 0x19, 0x0e, 0x7a, 0x0f, 0x52, + 0x6e, 0x48, 0xdb, 0x85, 0x04, 0x37, 0xc3, 0xad, 0xa9, 0x3a, 0x96, 0xdd, 0x0e, 0x35, 0x42, 0xda, + 0x26, 0x9c, 0x45, 0xfb, 0xa3, 0x02, 0xeb, 0x27, 0xef, 0x2f, 0x6f, 0xce, 0x43, 0xc8, 0x1f, 0x8c, + 0x60, 0xa4, 0x35, 0xfe, 0x6f, 0xea, 0x4e, 0x93, 0x24, 0xc6, 0xe4, 0xa0, 0x5d, 0xc8, 0x1f, 0x50, + 0x1a, 0x58, 0x76, 0xc7, 0xb1, 0x42, 0xfb, 0x19, 0x0d, 0xb8, 0x95, 0x72, 0x5b, 0xda, 0x54, 0xc9, + 0x35, 0xdf, 0x6d, 0x52, 0xb2, 0xc0, 0x38, 0xf5, 0x8e, 0x63, 0x32, 0x3e, 0xed, 0x5d, 0xb8, 0x74, + 0x9f, 0x86, 0xdb, 0x82, 0xb8, 0x1e, 0xda, 0x61, 0x2f, 0x88, 0xec, 0x77, 0x0d, 0x40, 0x0a, 0x19, + 0x98, 0x2f, 0x2b, 0x21, 0x86, 0xa3, 0xfd, 0x53, 0x81, 0xc2, 0x38, 0xab, 0x3c, 0xfa, 0x74, 0x5e, + 0xf4, 0x11, 0xe4, 0x23, 0x74, 0xc0, 0x19, 0xb9, 0xfe, 0xf9, 0xad, 0x8d, 0xa9, 0xfa, 0x8f, 0x6e, + 0xb5, 0xf8, 0x78, 0x78, 0xc9, 0x02, 0xbc, 0xeb, 0xd3, 0xae, 0x7d, 0xcc, 0x2e, 0x57, 0x24, 0x55, + 0xe4, 0x90, 0x37, 0x4f, 0xb1, 0x4a, 0xc4, 0x25, 0x05, 0xab, 0xdd, 0x18, 0x44, 0xfb, 0x65, 0x0a, + 0x56, 0x8b, 0x3e, 0xb5, 0x43, 0x2a, 0x55, 0xf8, 0x66, 0x09, 0x17, 0xed, 0x42, 0xb6, 0x45, 0xed, + 0x80, 0x5a, 0x3e, 0x3d, 0x90, 0x9e, 0xbb, 0x33, 0x3d, 0xfa, 0x18, 0x35, 0xa1, 0x07, 0xd4, 0xa7, + 0x9d, 0x26, 0x25, 0xf3, 0x2d, 0xb9, 0x46, 0x0f, 0x40, 0xed, 0x05, 0xd4, 0xb7, 0xdc, 0xce, 0x81, + 0xe7, 0xb7, 0x79, 0x8e, 0xe1, 0x87, 0xce, 0x6d, 0xbd, 0x31, 0x55, 0x60, 0x23, 0xa0, 0xbe, 0x31, + 0xe0, 0x21, 0x4b, 0xbd, 0x51, 0x00, 0x4b, 0x8b, 0x91, 0x2d, 0x87, 0x65, 0xcf, 0x92, 0x16, 0x6b, + 0x82, 0x6f, 0x58, 0x3c, 0xea, 0x8e, 0xc1, 0xd0, 0x0f, 0xe0, 0x5a, 0xb4, 0x43, 0xd7, 0xf7, 0x9a, + 0x34, 0x08, 0x58, 0x38, 0x74, 0x6d, 0xdf, 0x6e, 0xd3, 0x90, 0xfa, 0x41, 0x21, 0xcd, 0xf7, 0x7a, + 0x77, 0x96, 0xbd, 0x6a, 0x7d, 0x01, 0xb5, 0x3e, 0x3f, 0xb9, 0xd2, 0x3d, 0x19, 0x89, 0xee, 0xc0, + 0xb2, 0xeb, 0xd0, 0x76, 0xd7, 0x0b, 0x69, 0xa7, 0x79, 0x6c, 0x85, 0xde, 0x53, 0xda, 0x29, 0xcc, + 0xf1, 0x38, 0x55, 0x87, 0x10, 0x26, 0x83, 0xa3, 0x37, 0x01, 0xd9, 0x8e, 0xe3, 0x32, 0xb5, 0xed, + 0x16, 0x2f, 0x52, 0x34, 0x08, 0x0b, 0x19, 0x4e, 0xbd, 0x3c, 0xc0, 0xc8, 0xa8, 0xd0, 0x7e, 0x94, + 0x80, 0x97, 0x62, 0xe1, 0x22, 0xaf, 0xc5, 0xfb, 0x90, 0x91, 0x87, 0x90, 0x21, 0x73, 0x73, 0x96, + 0x80, 0x27, 0x11, 0x13, 0xfa, 0x1e, 0xac, 0x70, 0x77, 0x47, 0x86, 0xf3, 0xba, 0xdc, 0x2b, 0x22, + 0x84, 0x36, 0x4f, 0xf5, 0xb8, 0xb4, 0x56, 0x95, 0x73, 0x91, 0xe5, 0x5e, 0x1c, 0x84, 0x4c, 0x58, + 0x8a, 0xee, 0xe5, 0x81, 0xed, 0xb6, 0x7a, 0x3e, 0x95, 0xd1, 0x74, 0x67, 0x16, 0x3d, 0x77, 0x04, + 0x0b, 0x89, 0xee, 0xb6, 0x5c, 0x6b, 0x15, 0x40, 0xc2, 0x1c, 0x32, 0x8c, 0xc5, 0xdd, 0x79, 0x17, + 0xd2, 0x3c, 0x8c, 0xa5, 0x25, 0xb4, 0x19, 0x2e, 0x80, 0x60, 0xd0, 0xbe, 0x54, 0x60, 0x65, 0x44, + 0xa0, 0xb4, 0xee, 0xb9, 0x25, 0x4e, 0x3a, 0x77, 0xe2, 0x9b, 0x9f, 0xfb, 0x77, 0x0a, 0xa4, 0xf9, + 0x36, 0x68, 0x0d, 0xc4, 0x95, 0x1d, 0x24, 0xc3, 0x0c, 0x5f, 0x1b, 0x4e, 0x3f, 0x85, 0x24, 0xce, + 0x96, 0x42, 0x6e, 0x41, 0x9e, 0x47, 0x82, 0x1f, 0x25, 0x05, 0xee, 0xa8, 0x2c, 0x59, 0x64, 0xd0, + 0x7e, 0xa6, 0x40, 0xef, 0xc1, 0x9a, 0xd8, 0x98, 0x3e, 0xeb, 0xba, 0xb2, 0xc9, 0x0a, 0xdd, 0x36, + 0xb5, 0x02, 0xda, 0xe4, 0x97, 0x39, 0x49, 0x2e, 0x72, 0x02, 0xdc, 0xc7, 0x9b, 0x6e, 0x9b, 0xd6, + 0x69, 0x53, 0xbb, 0x03, 0xf9, 0xd1, 0xb4, 0x33, 0xe5, 0x14, 0xda, 0xd7, 0x4a, 0xe4, 0x63, 0x5e, + 0xbe, 0x86, 0x7c, 0xec, 0xb1, 0xf5, 0x4c, 0x1e, 0x11, 0x9c, 0x82, 0xe1, 0xf4, 0xec, 0x90, 0xf8, + 0xaf, 0x67, 0x87, 0xe4, 0xe4, 0xec, 0xa0, 0xfd, 0xaa, 0x1f, 0x8e, 0xf2, 0xec, 0x32, 0x1c, 0xbf, + 0x75, 0xe6, 0xc3, 0xef, 0x5e, 0x88, 0x8e, 0x5f, 0x83, 0x45, 0xfe, 0x4f, 0x2c, 0x1c, 0x5f, 0x9f, + 0xa1, 0x73, 0x10, 0x0c, 0xbb, 0x17, 0xc8, 0x82, 0x37, 0xb4, 0xde, 0x9e, 0x87, 0x39, 0x9f, 0x06, + 0xbd, 0x56, 0xa8, 0x6d, 0xc2, 0x4a, 0xd9, 0x0d, 0xa2, 0xc2, 0xdd, 0x2f, 0xf7, 0x97, 0x20, 0x23, + 0x4a, 0x49, 0xe4, 0xdc, 0x39, 0x5e, 0x13, 0x1c, 0xed, 0x21, 0xac, 0x8e, 0xd2, 0xcb, 0xf3, 0x7d, + 0x17, 0xe6, 0xa5, 0x12, 0x81, 0xec, 0x24, 0x67, 0xcb, 0x66, 0x7d, 0x2e, 0xed, 0x37, 0x0a, 0x2c, + 0x33, 0xd1, 0x5c, 0xf1, 0xbe, 0x22, 0x6b, 0x31, 0x45, 0x76, 0x2f, 0x44, 0xaa, 0xa0, 0x7d, 0xc8, + 0x0a, 0xb3, 0xb8, 0x4e, 0x14, 0x01, 0xff, 0x7f, 0x4a, 0xdb, 0x16, 0x93, 0x2e, 0x8c, 0x64, 0x38, + 0xc1, 0xee, 0x05, 0x32, 0xef, 0xc9, 0xff, 0x2f, 0xdf, 0x82, 0xf9, 0x08, 0xce, 0xa2, 0x3c, 0xda, + 0x83, 0x1f, 0x2b, 0x4b, 0x32, 0x92, 0x6e, 0x3b, 0x0d, 0x49, 0xd7, 0x09, 0x58, 0x3e, 0x1b, 0x96, + 0x3b, 0xc8, 0x3e, 0x91, 0xbb, 0x93, 0x67, 0x8a, 0x75, 0x6d, 0x1f, 0x56, 0x45, 0x97, 0x1e, 0xeb, + 0x2e, 0xbe, 0x61, 0xb5, 0xe0, 0x75, 0x28, 0x26, 0xf8, 0x7f, 0xba, 0x0e, 0xfd, 0x2d, 0x01, 0x19, + 0x49, 0x72, 0x5a, 0x83, 0x7a, 0xce, 0xac, 0xfc, 0xc2, 0xda, 0xb1, 0x6d, 0x98, 0x93, 0x2d, 0x6d, + 0xea, 0xcc, 0x8d, 0xb2, 0xe4, 0x3c, 0xa9, 0xa5, 0x4b, 0x3f, 0xb7, 0x96, 0x4e, 0xfb, 0x4b, 0x0a, + 0xf2, 0xa3, 0x3e, 0x40, 0xf7, 0x21, 0xdd, 0xb4, 0x7b, 0xb2, 0x26, 0xe7, 0xb7, 0xde, 0x3e, 0x83, + 0xff, 0x36, 0x8b, 0x8c, 0x91, 0x08, 0x7e, 0xf4, 0x08, 0x90, 0x4f, 0xbf, 0x4f, 0x9b, 0x21, 0x75, + 0xac, 0xa6, 0xed, 0x3b, 0x56, 0x78, 0xdc, 0xa5, 0xf2, 0xd9, 0x30, 0x3d, 0x2a, 0x8a, 0x3e, 0x75, + 0xdc, 0xb0, 0x68, 0xfb, 0x8e, 0x79, 0xdc, 0xa5, 0x44, 0x8d, 0xc4, 0x44, 0x10, 0xb4, 0x0e, 0x39, + 0x87, 0x06, 0x4d, 0xdf, 0xed, 0xf6, 0x1d, 0x96, 0x25, 0xc3, 0x20, 0xed, 0xdf, 0x09, 0x48, 0x73, + 0x6d, 0xd0, 0x4b, 0xb0, 0x5c, 0xd4, 0x1b, 0x75, 0x1c, 0x7b, 0xa6, 0xaf, 0x82, 0x5a, 0x2f, 0x57, + 0xd9, 0xe3, 0x5d, 0xdf, 0xd7, 0x8d, 0xb2, 0xbe, 0x5d, 0xc6, 0xaa, 0x82, 0xae, 0xc3, 0x15, 0x0e, + 0xd5, 0xcb, 0x04, 0xeb, 0xa5, 0x47, 0xd6, 0x76, 0xb5, 0xfa, 0x21, 0x2e, 0x59, 0xdb, 0x8f, 0xac, + 0x46, 0x1d, 0x13, 0x35, 0x81, 0x96, 0x61, 0xb1, 0x8c, 0xf5, 0x3a, 0xb6, 0xf0, 0xc3, 0x9a, 0x41, + 0x70, 0x49, 0x4d, 0x32, 0x9e, 0x6a, 0xc3, 0xac, 0x1b, 0x25, 0x6c, 0x15, 0xf5, 0x4a, 0x11, 0x97, + 0xcb, 0x62, 0x44, 0xf0, 0xc0, 0xa8, 0x94, 0xaa, 0x0f, 0xd4, 0x14, 0xba, 0x09, 0xeb, 0x35, 0xfd, + 0x11, 0x1f, 0x15, 0x60, 0x42, 0xaa, 0xc4, 0x2a, 0xea, 0xa4, 0x64, 0x99, 0x8f, 0x6a, 0xd8, 0x22, + 0xf8, 0x03, 0x5c, 0x34, 0x71, 0x49, 0x4d, 0x33, 0x31, 0x13, 0xa8, 0x4a, 0xb8, 0x58, 0x36, 0x2a, + 0xb8, 0xa4, 0xce, 0xa1, 0xab, 0x50, 0x88, 0x08, 0xaa, 0x35, 0xbe, 0x43, 0xa5, 0x6a, 0x5a, 0xfb, + 0x7a, 0xd9, 0x28, 0xa9, 0x19, 0xa6, 0xd8, 0x08, 0xbb, 0x3a, 0x8f, 0x34, 0x78, 0x99, 0x69, 0xcd, + 0xb4, 0x62, 0x94, 0xcc, 0x06, 0xa3, 0x02, 0xd4, 0x2c, 0xba, 0x06, 0x6b, 0xec, 0x8c, 0x46, 0xe5, + 0x7e, 0xff, 0xcc, 0xf2, 0x10, 0xb8, 0xa4, 0x02, 0xba, 0x02, 0x97, 0x22, 0x34, 0x13, 0x11, 0x9d, + 0x8f, 0x19, 0x2b, 0xc7, 0x90, 0xd5, 0x7d, 0x4c, 0xca, 0x7a, 0xad, 0xc6, 0x08, 0x08, 0xae, 0x63, + 0xb2, 0x2f, 0x86, 0x1a, 0x0b, 0xda, 0x6f, 0x13, 0x90, 0xe6, 0x39, 0x33, 0x96, 0x9e, 0x95, 0xa1, + 0xf4, 0x3c, 0xf1, 0xf6, 0x25, 0x5e, 0xe0, 0x63, 0x28, 0xf9, 0xfc, 0x1e, 0x43, 0xb1, 0x59, 0x45, + 0xea, 0xc4, 0x59, 0x45, 0xfa, 0xec, 0xb3, 0x8a, 0x7f, 0x25, 0x60, 0x3e, 0x02, 0xb1, 0xbc, 0x17, + 0x50, 0xff, 0xc8, 0x6d, 0x0e, 0x75, 0x71, 0x59, 0x09, 0x31, 0x1c, 0x74, 0x05, 0xb2, 0x41, 0x68, + 0xfb, 0x21, 0xef, 0x0f, 0x13, 0xbc, 0x3f, 0x9c, 0xe7, 0x80, 0x3a, 0x6d, 0xa2, 0x1b, 0xb0, 0xd0, + 0x9f, 0xd4, 0x31, 0x7c, 0x92, 0xe3, 0x73, 0x11, 0x8c, 0x91, 0x54, 0x20, 0x13, 0xba, 0xcd, 0xa7, + 0x34, 0x64, 0x89, 0x8a, 0x69, 0x7a, 0x6f, 0x26, 0x4d, 0x45, 0x3d, 0xa4, 0x8e, 0x29, 0x78, 0x49, + 0x24, 0x84, 0x15, 0xd5, 0xae, 0xef, 0x36, 0xa9, 0xcc, 0x52, 0xb3, 0xcc, 0x37, 0x04, 0xc3, 0x50, + 0xc6, 0x9c, 0x3b, 0x6f, 0xc6, 0xbc, 0x5c, 0x84, 0xfc, 0xa8, 0x62, 0xcc, 0x3e, 0x42, 0xb5, 0x81, + 0xf5, 0xe6, 0x05, 0xc0, 0x70, 0xd0, 0x2a, 0xa4, 0xf9, 0x94, 0x4a, 0x8e, 0xac, 0xc4, 0x42, 0xfb, + 0x7d, 0x12, 0x16, 0x86, 0x3b, 0x33, 0x84, 0x47, 0x53, 0xe2, 0x5b, 0x33, 0xf7, 0x74, 0xa3, 0x09, + 0x71, 0x7c, 0xba, 0x94, 0x78, 0x4e, 0xd3, 0xa5, 0xc9, 0xa9, 0x36, 0xf9, 0x02, 0x52, 0x6d, 0x6a, + 0x3c, 0xd5, 0xfe, 0x58, 0x39, 0x25, 0xd5, 0x5e, 0x82, 0x95, 0x2a, 0x29, 0x61, 0x62, 0x35, 0x2a, + 0x3b, 0x8d, 0xf2, 0x8e, 0x51, 0x8e, 0xb2, 0xed, 0x2c, 0x89, 0x31, 0x71, 0x5a, 0x62, 0x4c, 0x8e, + 0xa7, 0xbe, 0x94, 0xf6, 0xd7, 0x24, 0xac, 0x4c, 0x30, 0x1c, 0x7a, 0x1c, 0xf5, 0xd4, 0xd2, 0x95, + 0x1f, 0x9c, 0xd5, 0xf4, 0x9b, 0x93, 0xc7, 0x87, 0xbd, 0x56, 0x48, 0xa4, 0x64, 0xe4, 0xc0, 0x0a, + 0xbb, 0xc5, 0xd6, 0x98, 0xaf, 0xd9, 0xed, 0xba, 0x3b, 0xd3, 0xed, 0x8a, 0xc9, 0x47, 0xee, 0x18, + 0x0c, 0xbd, 0x0d, 0xab, 0xbd, 0x4e, 0x7f, 0x8b, 0x16, 0xb5, 0x7c, 0x6a, 0x07, 0xfd, 0x5a, 0xb8, + 0x32, 0x82, 0x23, 0x1c, 0xa5, 0xfd, 0x41, 0x81, 0xb5, 0x13, 0xd5, 0x47, 0x77, 0xe0, 0x35, 0xe1, + 0xa5, 0xbe, 0x8f, 0x8c, 0xb2, 0x61, 0x3e, 0x62, 0x69, 0xbd, 0x51, 0x8e, 0x0f, 0xb9, 0x97, 0x20, + 0x57, 0xd4, 0x2b, 0x11, 0xa9, 0xaa, 0xb0, 0x5a, 0x30, 0xe2, 0x5d, 0x8b, 0x39, 0xc7, 0x32, 0x4c, + 0xbc, 0xa7, 0x26, 0xd0, 0x2d, 0xb8, 0x31, 0x8a, 0x64, 0x85, 0xc2, 0x28, 0x62, 0xab, 0x58, 0xdd, + 0xdb, 0x36, 0x2a, 0xa2, 0x64, 0x24, 0x59, 0x38, 0x4c, 0x88, 0x13, 0xab, 0x6a, 0xee, 0x62, 0x62, + 0x11, 0xac, 0xd7, 0xab, 0x15, 0x35, 0xa5, 0xfd, 0x22, 0x0d, 0x17, 0x27, 0xdb, 0xa9, 0x9f, 0x72, + 0x45, 0x87, 0x7c, 0x96, 0x94, 0x8b, 0x9c, 0x7e, 0x60, 0x88, 0x06, 0xa5, 0x7c, 0x0e, 0x3f, 0x6d, + 0x4e, 0x70, 0xdd, 0x68, 0x68, 0x9c, 0xdd, 0x69, 0xe8, 0x29, 0x2c, 0x8c, 0x7c, 0x01, 0x10, 0xf3, + 0xbc, 0xfb, 0xe7, 0x51, 0x4f, 0xbc, 0x2c, 0x9c, 0x91, 0x6f, 0x03, 0x23, 0xc2, 0xd1, 0x2e, 0xe4, + 0x64, 0xb2, 0xe4, 0x09, 0x44, 0x94, 0xae, 0xd7, 0xa6, 0xee, 0x25, 0xf2, 0x2c, 0x4f, 0x1e, 0x10, + 0xf6, 0xff, 0xbf, 0x7c, 0x0f, 0x56, 0x26, 0x6c, 0xc7, 0x8b, 0x59, 0xd7, 0x0b, 0x03, 0xcb, 0xeb, + 0xd2, 0x0e, 0xf7, 0x53, 0x9a, 0x64, 0x39, 0xa4, 0xda, 0xa5, 0x1d, 0xed, 0x2b, 0x05, 0x0a, 0x27, + 0x19, 0x11, 0x6d, 0xc0, 0xab, 0x2c, 0x9e, 0xce, 0x17, 0x9f, 0x93, 0xda, 0xbd, 0x04, 0x8b, 0xb8, + 0xd1, 0x58, 0x33, 0x8d, 0xe2, 0x87, 0xd8, 0x8c, 0xc5, 0xe5, 0x0a, 0x2c, 0x19, 0x95, 0x62, 0x95, + 0x10, 0x5c, 0x34, 0xad, 0x1a, 0x31, 0x8a, 0x58, 0x4d, 0xa1, 0x57, 0xe0, 0x3a, 0xd7, 0x66, 0x4a, + 0xac, 0xa6, 0xb5, 0x9f, 0x29, 0x00, 0x03, 0x03, 0xa1, 0x9b, 0x90, 0x1f, 0x32, 0xef, 0xa0, 0x20, + 0x2d, 0x0c, 0x0c, 0x67, 0x38, 0xe8, 0x0e, 0x2c, 0x07, 0x4f, 0x3c, 0x3f, 0xb4, 0x86, 0xf3, 0x6e, + 0x42, 0x8c, 0x32, 0x38, 0xa2, 0x34, 0x80, 0x0f, 0xca, 0x6d, 0xf2, 0x8c, 0xe5, 0x56, 0xfb, 0x04, + 0x72, 0x84, 0x06, 0x5e, 0xcf, 0x67, 0x6d, 0x04, 0x7f, 0x44, 0x07, 0xa1, 0x7d, 0x70, 0x30, 0xd4, + 0xa5, 0xf1, 0xb5, 0xe1, 0xa0, 0x4b, 0x90, 0xf1, 0x3d, 0xaf, 0xcd, 0x30, 0x42, 0x8d, 0x39, 0xb6, + 0x34, 0x1c, 0xe6, 0x4d, 0x26, 0xfd, 0xd8, 0x0a, 0xdc, 0xcf, 0x85, 0x06, 0x69, 0x92, 0xe5, 0x90, + 0xba, 0xfb, 0x39, 0xd5, 0x7e, 0x9d, 0x84, 0x2b, 0x53, 0x06, 0x3a, 0xe8, 0x29, 0x64, 0xe5, 0xa4, + 0xc8, 0xf3, 0x65, 0x3e, 0x36, 0xce, 0x3b, 0x1d, 0x8a, 0xe1, 0x3c, 0x7f, 0x3b, 0x51, 0x50, 0xc8, + 0x40, 0x3e, 0xba, 0x07, 0xab, 0x51, 0x47, 0xd8, 0xa6, 0xe1, 0x13, 0xcf, 0x91, 0x33, 0x22, 0x7e, + 0x22, 0x4e, 0x1c, 0x75, 0x79, 0x7b, 0x1c, 0x2d, 0xe6, 0xc8, 0x3a, 0x5c, 0xeb, 0x75, 0xba, 0xb6, + 0x1f, 0x50, 0xc7, 0x9a, 0xc8, 0x9e, 0xe6, 0x06, 0xb9, 0x1c, 0x11, 0xd5, 0xc6, 0x45, 0x14, 0x20, + 0x73, 0x44, 0xfd, 0x60, 0xf0, 0x4e, 0x89, 0x96, 0xcc, 0xd1, 0xb1, 0x89, 0x99, 0xe7, 0xcb, 0x02, + 0xab, 0x76, 0x63, 0xc7, 0xd1, 0x1c, 0x50, 0xe3, 0x47, 0x44, 0x37, 0xe0, 0x5a, 0x54, 0xf8, 0x6a, + 0xa4, 0x5a, 0xc4, 0xf5, 0x7a, 0x95, 0x8c, 0x3f, 0x73, 0x06, 0xa8, 0xba, 0x49, 0x8c, 0x1a, 0x2b, + 0xbc, 0x97, 0x60, 0x65, 0x00, 0xdd, 0x26, 0xba, 0x51, 0x31, 0x09, 0xc6, 0x6a, 0x42, 0xfb, 0x7b, + 0x02, 0x96, 0xc7, 0xde, 0xfb, 0xe8, 0x2e, 0x5c, 0x9c, 0x30, 0x3c, 0x18, 0x44, 0xca, 0xca, 0xd8, + 0x3c, 0xc0, 0x70, 0xd0, 0x5b, 0xb0, 0x7a, 0x64, 0xb7, 0x5c, 0xc7, 0x12, 0xed, 0x69, 0x7f, 0x86, + 0x29, 0x7a, 0xd4, 0x65, 0x8e, 0xab, 0x33, 0x94, 0x1c, 0x5f, 0xa2, 0x3b, 0x80, 0x04, 0x03, 0xed, + 0x38, 0x03, 0x72, 0xd1, 0xb2, 0x2e, 0x71, 0x0c, 0xee, 0x38, 0x11, 0xf1, 0x36, 0xa4, 0x78, 0x8a, + 0x12, 0x8f, 0xeb, 0xcd, 0x59, 0xc2, 0x46, 0x68, 0xc6, 0x33, 0x15, 0xe7, 0x45, 0xb7, 0x20, 0xef, + 0xf9, 0xee, 0xa1, 0xdb, 0xb1, 0x5b, 0x96, 0x68, 0x03, 0xd3, 0x3c, 0x84, 0x17, 0x23, 0x68, 0x91, + 0x01, 0xd1, 0x2b, 0xb0, 0xd8, 0xec, 0xf9, 0x3e, 0x3b, 0xb8, 0xa0, 0x9a, 0xe3, 0x54, 0x0b, 0x12, + 0x28, 0x88, 0x36, 0x06, 0xbe, 0x1c, 0x58, 0x47, 0x7c, 0x6f, 0x58, 0xea, 0x8e, 0x5a, 0x46, 0xfb, + 0x6a, 0x0e, 0xd0, 0xf8, 0x2b, 0x63, 0xf2, 0xf7, 0x30, 0xe5, 0xb9, 0x7c, 0x0f, 0x43, 0xf7, 0xe0, + 0x62, 0x24, 0x38, 0xf4, 0xed, 0x4e, 0x60, 0x37, 0x23, 0x1d, 0xc5, 0x8d, 0x8e, 0xee, 0x86, 0x39, + 0x40, 0x1a, 0xce, 0xf9, 0x93, 0x0b, 0xd2, 0x01, 0x42, 0xfb, 0x99, 0x65, 0xb7, 0xb9, 0xc1, 0x52, + 0x33, 0xb3, 0x67, 0x43, 0xfb, 0x99, 0xce, 0x99, 0x50, 0x38, 0xb8, 0xb0, 0xf2, 0x76, 0x50, 0xc7, + 0x7a, 0x7c, 0xcc, 0x7d, 0x94, 0xdf, 0xda, 0x3e, 0xe3, 0x1b, 0x2e, 0x96, 0x1f, 0xa8, 0xb3, 0x7d, + 0xdc, 0xbf, 0xf0, 0x43, 0x30, 0xf4, 0xc6, 0x24, 0x3f, 0xce, 0xc9, 0xa1, 0x66, 0xdc, 0x93, 0xe8, + 0x9d, 0x13, 0x2f, 0x46, 0x46, 0xb2, 0x4c, 0xbc, 0x1a, 0xef, 0x43, 0xc6, 0xa1, 0x5d, 0x2f, 0x70, + 0xc3, 0xc2, 0xfc, 0x0c, 0xc3, 0xbc, 0x92, 0xa0, 0x25, 0x11, 0x13, 0xda, 0x81, 0x5c, 0xc7, 0xb3, + 0x82, 0x27, 0xde, 0x67, 0xd6, 0x01, 0xa5, 0x85, 0x2c, 0x97, 0xf1, 0xea, 0x54, 0x19, 0x15, 0xaf, + 0xfe, 0xc4, 0xfb, 0x6c, 0x87, 0x52, 0x92, 0xed, 0x44, 0xff, 0x4e, 0xf8, 0x28, 0x0d, 0xe7, 0xfc, + 0x28, 0xdd, 0xee, 0x47, 0xf4, 0xb0, 0x31, 0x87, 0xfa, 0x7b, 0x99, 0x6e, 0xe4, 0x2c, 0x25, 0xfe, + 0x3c, 0x18, 0xc1, 0xde, 0xaf, 0x56, 0xef, 0xf3, 0xe7, 0x41, 0x01, 0x56, 0x47, 0x10, 0x35, 0x9d, + 0x98, 0x15, 0x4c, 0xd4, 0xc4, 0xf6, 0x02, 0x2b, 0x3c, 0xf2, 0x79, 0xef, 0x68, 0x5f, 0x40, 0x9a, + 0xeb, 0xc4, 0x9e, 0xbb, 0x3c, 0xfc, 0xac, 0xb6, 0xdb, 0xf4, 0x3d, 0x71, 0x79, 0x92, 0x24, 0xc7, + 0x61, 0x7b, 0x1c, 0x34, 0xb8, 0xcc, 0xcd, 0x63, 0xab, 0xe9, 0x39, 0x54, 0xc6, 0xff, 0x42, 0x04, + 0x2c, 0x7a, 0x0e, 0x45, 0x6f, 0x00, 0x62, 0x3c, 0x6e, 0xe7, 0x30, 0xf2, 0x68, 0x68, 0x1f, 0x46, + 0x5f, 0x13, 0x24, 0x46, 0x66, 0x13, 0xfb, 0x50, 0xfb, 0xa1, 0x02, 0xd9, 0xbe, 0x79, 0xd1, 0x3d, + 0x48, 0x32, 0x9f, 0x28, 0x33, 0x1b, 0x92, 0x91, 0x23, 0x1d, 0xe6, 0x0f, 0x28, 0x1d, 0x7e, 0xb6, + 0xbd, 0x7a, 0x3a, 0x2b, 0x4f, 0x65, 0x99, 0x03, 0xca, 0xff, 0xd1, 0xfe, 0xac, 0x40, 0x46, 0x46, + 0x0a, 0xfa, 0xf6, 0x20, 0xc0, 0x66, 0x57, 0xa4, 0x1f, 0x5e, 0xdf, 0x81, 0xab, 0x6d, 0xb7, 0x63, + 0xd9, 0xce, 0x91, 0xdd, 0x69, 0x52, 0xab, 0xc9, 0xfe, 0xb6, 0x5a, 0x83, 0x29, 0x82, 0xc8, 0xe0, + 0x6b, 0x6d, 0xb7, 0xa3, 0x0b, 0x92, 0xe2, 0x10, 0x05, 0x4b, 0xce, 0x06, 0x2c, 0x48, 0x59, 0xe7, + 0x39, 0x51, 0x4e, 0xf2, 0xf2, 0x53, 0x7d, 0xad, 0x40, 0xaa, 0xde, 0xf2, 0x66, 0xf8, 0x6d, 0xc8, + 0xe8, 0x9c, 0x24, 0x31, 0x75, 0x4e, 0x92, 0x3c, 0x65, 0x4e, 0x92, 0x1a, 0x9f, 0x93, 0xbc, 0x0e, + 0xea, 0xc8, 0xaf, 0x8e, 0x58, 0x44, 0x88, 0xe2, 0xbf, 0x34, 0x0c, 0x37, 0xed, 0x43, 0xb4, 0x03, + 0x59, 0x5f, 0x76, 0x56, 0x62, 0x96, 0x91, 0xdb, 0xba, 0x3d, 0xf5, 0xec, 0x43, 0x7d, 0x18, 0x19, + 0xb0, 0x6a, 0xff, 0x50, 0x60, 0x29, 0x36, 0xe9, 0x3a, 0xf1, 0x9b, 0x0f, 0x3b, 0xfe, 0xa1, 0x7b, + 0x44, 0x3b, 0x56, 0xc7, 0x6e, 0x47, 0x51, 0x9d, 0xe5, 0x90, 0x8a, 0xdd, 0xa6, 0xcc, 0x7c, 0x07, + 0x76, 0xdb, 0x6d, 0x1d, 0x0b, 0xbc, 0x88, 0x65, 0x10, 0x20, 0x4e, 0x50, 0x82, 0x8c, 0xed, 0x38, + 0x3e, 0x0d, 0x02, 0x99, 0xae, 0xa7, 0x8f, 0x5f, 0x6a, 0x5e, 0x10, 0xda, 0x2d, 0x5d, 0x70, 0x90, + 0x88, 0x15, 0x5d, 0x85, 0x6c, 0x48, 0x5b, 0xb4, 0xfb, 0xc4, 0xeb, 0x50, 0x69, 0x9e, 0x01, 0x00, + 0xad, 0x42, 0x9a, 0xb6, 0x6d, 0xb7, 0x25, 0x3f, 0xdb, 0x8b, 0x85, 0xf6, 0xa5, 0x02, 0x8b, 0x23, + 0xe2, 0x58, 0xcb, 0xc4, 0x2b, 0xad, 0x7f, 0x1c, 0xb5, 0xa2, 0x72, 0x89, 0x2e, 0xc3, 0x7c, 0xcb, + 0x6b, 0xda, 0xfd, 0xe1, 0x49, 0x96, 0xf4, 0xd7, 0xe8, 0x22, 0x7b, 0xc2, 0x1d, 0x0e, 0xfa, 0x2c, + 0xb9, 0x62, 0x47, 0xef, 0x72, 0xf1, 0xe2, 0xc2, 0xcb, 0x49, 0x9d, 0x00, 0xf1, 0xeb, 0x7e, 0x0b, + 0xf2, 0x41, 0xe8, 0x53, 0x1a, 0x5a, 0x91, 0x05, 0x84, 0xe6, 0x8b, 0x02, 0x2a, 0xb5, 0xda, 0xf8, + 0x89, 0x02, 0x8b, 0x23, 0x53, 0x27, 0xf4, 0x32, 0x5c, 0x8e, 0xa6, 0xa3, 0x75, 0x53, 0x37, 0x1b, + 0xf5, 0x58, 0x66, 0x5b, 0x84, 0x6c, 0xb1, 0x5a, 0xd9, 0x31, 0xc8, 0x1e, 0x2e, 0xa9, 0x0a, 0x6f, + 0xd7, 0x70, 0xa5, 0xc4, 0xc8, 0xf7, 0x30, 0x29, 0xee, 0xea, 0x15, 0xf6, 0xd2, 0xe0, 0x78, 0xf9, + 0x53, 0x30, 0xb4, 0x00, 0xf3, 0x62, 0xc6, 0xca, 0x07, 0x1b, 0x39, 0xc8, 0x54, 0xaa, 0xfc, 0xe7, + 0x62, 0x6a, 0x0a, 0xbd, 0x04, 0xcb, 0x72, 0x61, 0xd5, 0x70, 0x45, 0x2f, 0x1b, 0x1f, 0xe3, 0x92, + 0x9a, 0xde, 0xe8, 0x42, 0x7e, 0x74, 0x86, 0x83, 0xd6, 0xe1, 0x6a, 0x91, 0xe0, 0x92, 0x61, 0x0e, + 0x8d, 0x53, 0x46, 0xf5, 0x9a, 0x87, 0xd4, 0xbe, 0x51, 0xd7, 0x55, 0x05, 0xe5, 0x01, 0xf6, 0xf4, + 0xba, 0x89, 0x09, 0x23, 0x55, 0x13, 0xac, 0x5d, 0xd4, 0xf7, 0x30, 0x31, 0xd8, 0xe3, 0x09, 0x3f, + 0xac, 0x11, 0x5c, 0xaf, 0xab, 0x49, 0xa6, 0x55, 0xc9, 0xa8, 0x17, 0xab, 0xfb, 0x98, 0xa8, 0xa9, + 0x8d, 0x9f, 0x2a, 0xb0, 0x3c, 0xd6, 0x52, 0xb1, 0xf7, 0x50, 0x6c, 0x3a, 0x3d, 0x61, 0xe3, 0x6b, + 0xb0, 0x16, 0x23, 0xaa, 0x1b, 0x95, 0xfb, 0x65, 0x6c, 0x35, 0xea, 0x2c, 0xe1, 0x8f, 0x4f, 0xb8, + 0xf7, 0x1a, 0x65, 0xd3, 0xe0, 0xd8, 0x04, 0x3b, 0x57, 0x0c, 0xdb, 0xa8, 0x94, 0x8d, 0x3d, 0xc3, + 0xc4, 0x25, 0x4e, 0x91, 0xdc, 0xf8, 0xb9, 0x02, 0x6a, 0xbc, 0x19, 0xe2, 0x56, 0x27, 0x38, 0xe2, + 0x9c, 0xe8, 0x27, 0x5e, 0x81, 0xf0, 0x50, 0xa9, 0xda, 0x37, 0x4a, 0xdc, 0x63, 0x57, 0xe0, 0xd2, + 0x10, 0xa2, 0x52, 0x1d, 0x42, 0x26, 0x62, 0x5c, 0x04, 0xef, 0x34, 0x2a, 0x25, 0xee, 0xb6, 0x51, + 0x84, 0xf0, 0x05, 0x2e, 0xa9, 0xa9, 0x8d, 0xbb, 0x90, 0xed, 0xa7, 0x39, 0x74, 0x11, 0xd0, 0x8e, + 0xf1, 0x10, 0x97, 0x2c, 0xa2, 0x9b, 0xd8, 0x2a, 0xe1, 0x1d, 0xbd, 0x51, 0x36, 0xd5, 0x0b, 0xcc, + 0x25, 0x35, 0x4c, 0xac, 0x1a, 0x26, 0xec, 0x0d, 0xa9, 0x3c, 0x9e, 0xe3, 0x3f, 0x31, 0xbd, 0xfb, + 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x14, 0x95, 0x3d, 0x8b, 0x6e, 0x2a, 0x00, 0x00, }