blob: 2df1389628a3d93d5a4f0c0e95a4277e68b84867 [file] [log] [blame]
// 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
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// 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.
// Prepayment status updates should be done using the PrepaymentStatus enum.
//
// nextID: 6
type BookingStatus int32
const (
// Not specified.
BookingStatus_BOOKING_STATUS_UNSPECIFIED BookingStatus = 0
// Booking has been confirmed
BookingStatus_CONFIRMED BookingStatus = 1
// Booking is awaiting confirmation by the merchant before it can transition
// into CONFIRMED status
BookingStatus_PENDING_MERCHANT_CONFIRMATION BookingStatus = 2
// Booking has been canceled on behalf of the user.
// The merchant can still trigger a manual refund.
BookingStatus_CANCELED BookingStatus = 3
// User did not show for the appointment
BookingStatus_NO_SHOW BookingStatus = 4
// User did not show for the appointment in violation of the cancellation
// policy.
BookingStatus_NO_SHOW_PENALIZED BookingStatus = 5
)
var BookingStatus_name = map[int32]string{
0: "BOOKING_STATUS_UNSPECIFIED",
1: "CONFIRMED",
2: "PENDING_MERCHANT_CONFIRMATION",
3: "CANCELED",
4: "NO_SHOW",
5: "NO_SHOW_PENALIZED",
}
var BookingStatus_value = map[string]int32{
"BOOKING_STATUS_UNSPECIFIED": 0,
"CONFIRMED": 1,
"PENDING_MERCHANT_CONFIRMATION": 2,
"CANCELED": 3,
"NO_SHOW": 4,
"NO_SHOW_PENALIZED": 5,
}
func (x BookingStatus) String() string {
return proto.EnumName(BookingStatus_name, int32(x))
}
func (BookingStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
// [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
const (
// Default value. Used if credit card type does not match to one below.
CreditCardType_CREDIT_CARD_TYPE_UNSPECIFIED CreditCardType = 0
CreditCardType_VISA CreditCardType = 1
CreditCardType_MASTERCARD CreditCardType = 2
CreditCardType_AMERICAN_EXPRESS CreditCardType = 3
CreditCardType_DISCOVER CreditCardType = 4
)
var CreditCardType_name = map[int32]string{
0: "CREDIT_CARD_TYPE_UNSPECIFIED",
1: "VISA",
2: "MASTERCARD",
3: "AMERICAN_EXPRESS",
4: "DISCOVER",
}
var CreditCardType_value = map[string]int32{
"CREDIT_CARD_TYPE_UNSPECIFIED": 0,
"VISA": 1,
"MASTERCARD": 2,
"AMERICAN_EXPRESS": 3,
"DISCOVER": 4,
}
func (x CreditCardType) String() string {
return proto.EnumName(CreditCardType_name, int32(x))
}
func (CreditCardType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
// [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).
// Currently, the only supported transition is from PREPAYMENT_PROVIDED to
// PREPAYMENT_REFUNDED, which will initiate a non-reversible refund on the
// associated payment transaction.
type PrepaymentStatus int32
const (
// Not specified, defaults to PREPAYMENT_NOT_PROVIDED.
PrepaymentStatus_PREPAYMENT_STATUS_UNSPECIFIED PrepaymentStatus = 0
// The fee for the booking has been paid in advance.
PrepaymentStatus_PREPAYMENT_PROVIDED PrepaymentStatus = 1
// The fee for the booking has not been paid in advance.
PrepaymentStatus_PREPAYMENT_NOT_PROVIDED PrepaymentStatus = 2
// The fee was previously PREPAYMENT_PROVIDED but has now been refunded.
PrepaymentStatus_PREPAYMENT_REFUNDED PrepaymentStatus = 3
// The fee was previously PREPAYMENT_PROVIDED but now has been credited
// (user given a UserPaymentOption as a voucher for the booking).
// If this is set, the response should also include the updated
// UserPaymentOption.
PrepaymentStatus_PREPAYMENT_CREDITED PrepaymentStatus = 4
)
var PrepaymentStatus_name = map[int32]string{
0: "PREPAYMENT_STATUS_UNSPECIFIED",
1: "PREPAYMENT_PROVIDED",
2: "PREPAYMENT_NOT_PROVIDED",
3: "PREPAYMENT_REFUNDED",
4: "PREPAYMENT_CREDITED",
}
var PrepaymentStatus_value = map[string]int32{
"PREPAYMENT_STATUS_UNSPECIFIED": 0,
"PREPAYMENT_PROVIDED": 1,
"PREPAYMENT_NOT_PROVIDED": 2,
"PREPAYMENT_REFUNDED": 3,
"PREPAYMENT_CREDITED": 4,
}
func (x PrepaymentStatus) String() string {
return proto.EnumName(PrepaymentStatus_name, int32(x))
}
func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
// 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
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
)
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 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,
}
func (x IngestionStatus_Code) String() string {
return proto.EnumName(IngestionStatus_Code_name, int32(x))
}
func (IngestionStatus_Code) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6, 0} }
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 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}
}
type BookingFailure_Cause int32
const (
// Default value: Don't use; amounts to an "unknown error"
BookingFailure_CAUSE_UNSPECIFIED BookingFailure_Cause = 0
// The referenced availability slot is not available any longer.
BookingFailure_SLOT_UNAVAILABLE BookingFailure_Cause = 1
// The user has already booked an appointment for the referenced
// availability slot.
BookingFailure_SLOT_ALREADY_BOOKED_BY_USER BookingFailure_Cause = 2
// The lease (if provided) has expired and cannot be used any longer to
// complete the requested booking.
BookingFailure_LEASE_EXPIRED BookingFailure_Cause = 3
// The requested cancellation cannot be performed at the current time due
// to time restrictions in the merchant's cancellation policy.
BookingFailure_OUTSIDE_CANCELLATION_WINDOW BookingFailure_Cause = 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.
BookingFailure_PAYMENT_ERROR_CARD_TYPE_REJECTED BookingFailure_Cause = 5
// An error was encountered while processing the payment because the
// provided credit card was declined.
BookingFailure_PAYMENT_ERROR_CARD_DECLINED BookingFailure_Cause = 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.
BookingFailure_PAYMENT_OPTION_NOT_VALID BookingFailure_Cause = 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.
BookingFailure_PAYMENT_ERROR BookingFailure_Cause = 8
// User cannot use the given payment option (e.g. user trying to use a
// first time price for the second time).
BookingFailure_USER_CANNOT_USE_PAYMENT_OPTION BookingFailure_Cause = 9
// A booking that the user tried to cancel has already been cancelled.
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
)
var BookingFailure_Cause_name = map[int32]string{
0: "CAUSE_UNSPECIFIED",
1: "SLOT_UNAVAILABLE",
2: "SLOT_ALREADY_BOOKED_BY_USER",
3: "LEASE_EXPIRED",
4: "OUTSIDE_CANCELLATION_WINDOW",
5: "PAYMENT_ERROR_CARD_TYPE_REJECTED",
6: "PAYMENT_ERROR_CARD_DECLINED",
7: "PAYMENT_OPTION_NOT_VALID",
8: "PAYMENT_ERROR",
9: "USER_CANNOT_USE_PAYMENT_OPTION",
10: "BOOKING_ALREADY_CANCELLED",
11: "BOOKING_NOT_CANCELLABLE",
}
var BookingFailure_Cause_value = map[string]int32{
"CAUSE_UNSPECIFIED": 0,
"SLOT_UNAVAILABLE": 1,
"SLOT_ALREADY_BOOKED_BY_USER": 2,
"LEASE_EXPIRED": 3,
"OUTSIDE_CANCELLATION_WINDOW": 4,
"PAYMENT_ERROR_CARD_TYPE_REJECTED": 5,
"PAYMENT_ERROR_CARD_DECLINED": 6,
"PAYMENT_OPTION_NOT_VALID": 7,
"PAYMENT_ERROR": 8,
"USER_CANNOT_USE_PAYMENT_OPTION": 9,
"BOOKING_ALREADY_CANCELLED": 10,
"BOOKING_NOT_CANCELLABLE": 11,
}
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}
}
type OrderFailure_Cause int32
const (
// Default value: Don't use; amounts to an "unknown error"
OrderFailure_CAUSE_UNSPECIFIED OrderFailure_Cause = 0
// The order is no longer fulfillable.
OrderFailure_ORDER_UNFULFILLABLE OrderFailure_Cause = 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.
OrderFailure_PAYMENT_ERROR_CARD_TYPE_REJECTED OrderFailure_Cause = 2
// An error was encountered while processing the payment because the
// provided credit card was declined.
OrderFailure_PAYMENT_ERROR_CARD_DECLINED OrderFailure_Cause = 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.
OrderFailure_PAYMENT_ERROR OrderFailure_Cause = 4
)
var OrderFailure_Cause_name = map[int32]string{
0: "CAUSE_UNSPECIFIED",
1: "ORDER_UNFULFILLABLE",
2: "PAYMENT_ERROR_CARD_TYPE_REJECTED",
3: "PAYMENT_ERROR_CARD_DECLINED",
4: "PAYMENT_ERROR",
}
var OrderFailure_Cause_value = map[string]int32{
"CAUSE_UNSPECIFIED": 0,
"ORDER_UNFULFILLABLE": 1,
"PAYMENT_ERROR_CARD_TYPE_REJECTED": 2,
"PAYMENT_ERROR_CARD_DECLINED": 3,
"PAYMENT_ERROR": 4,
}
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} }
// This enum indicates what requirements exist for the user to acknowledge or
// view the requested slots duration/end time.
type CheckAvailabilityResponse_DurationRequirement 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
)
var CheckAvailabilityResponse_DurationRequirement_name = map[int32]string{
0: "DURATION_REQUIREMENT_UNSPECIFIED",
1: "DO_NOT_SHOW_DURATION",
2: "MUST_SHOW_DURATION",
}
var CheckAvailabilityResponse_DurationRequirement_value = map[string]int32{
"DURATION_REQUIREMENT_UNSPECIFIED": 0,
"DO_NOT_SHOW_DURATION": 1,
"MUST_SHOW_DURATION": 2,
}
func (x CheckAvailabilityResponse_DurationRequirement) String() string {
return proto.EnumName(CheckAvailabilityResponse_DurationRequirement_name, int32(x))
}
func (CheckAvailabilityResponse_DurationRequirement) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{30, 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"`
}
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 (m *PostalAddress) GetCountry() string {
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 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"`
}
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 *Price) GetPriceMicros() int64 {
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 nil
}
func (m *SchedulingRules) GetNoshowFee() *Price {
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 0
}
func (m *IngestionStatus) GetInternalErrorDetails() string {
if m != nil {
return m.InternalErrorDetails
}
return ""
}
func (m *IngestionStatus) GetPartnerVisibleErrorDetails() string {
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 nil
}
func (m *NoShowFee) GetFeeType() PriceType {
if m != nil {
return m.FeeType
}
return PriceType_FIXED_RATE_DEFAULT
}
// [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 *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} }
func (m *Deposit) GetDeposit() *Price {
if m != nil {
return m.Deposit
}
return nil
}
func (m *Deposit) GetMinAdvanceCancellationSec() int64 {
if m != nil {
return m.MinAdvanceCancellationSec
}
return 0
}
func (m *Deposit) GetDepositType() PriceType {
if m != nil {
return m.DepositType
}
return PriceType_FIXED_RATE_DEFAULT
}
// [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 *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} }
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 {
if m != nil {
return m.MerchantId
}
return ""
}
func (m *Slot) GetServiceId() string {
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 nil
}
// [START message_lease]
// 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"`
// The appointment slot that the lease is created for. (required)
Slot *Slot `protobuf:"bytes,2,opt,name=slot" 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"`
// 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"`
}
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) GetLeaseId() string {
if m != nil {
return m.LeaseId
}
return ""
}
func (m *Lease) GetSlot() *Slot {
if m != nil {
return m.Slot
}
return nil
}
func (m *Lease) GetUserReference() string {
if m != nil {
return m.UserReference
}
return ""
}
func (m *Lease) GetLeaseExpirationTimeSec() int64 {
if m != nil {
return m.LeaseExpirationTimeSec
}
return 0
}
// 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"`
}
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) GetLeaseId() string {
if m != nil {
return m.LeaseId
}
return ""
}
// [START message_booking]
// 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"`
// The appointment slot of this booking (required)
Slot *Slot `protobuf:"bytes,2,opt,name=slot" 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"`
// Status of the booking (required)
Status BookingStatus `protobuf:"varint,4,opt,name=status,enum=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"`
}
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) GetBookingId() string {
if m != nil {
return m.BookingId
}
return ""
}
func (m *Booking) GetSlot() *Slot {
if m != nil {
return m.Slot
}
return nil
}
func (m *Booking) GetUserInformation() *UserInformation {
if m != nil {
return m.UserInformation
}
return nil
}
func (m *Booking) GetStatus() BookingStatus {
if m != nil {
return m.Status
}
return BookingStatus_BOOKING_STATUS_UNSPECIFIED
}
func (m *Booking) GetPaymentInformation() *PaymentInformation {
if m != nil {
return m.PaymentInformation
}
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"`
}
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 *UserInformation) GetUserId() string {
if m != nil {
return m.UserId
}
return ""
}
func (m *UserInformation) GetGivenName() string {
if m != nil {
return m.GivenName
}
return ""
}
func (m *UserInformation) GetFamilyName() string {
if m != nil {
return m.FamilyName
}
return ""
}
func (m *UserInformation) GetAddress() *PostalAddress {
if m != nil {
return m.Address
}
return nil
}
func (m *UserInformation) GetTelephone() string {
if m != nil {
return m.Telephone
}
return ""
}
func (m *UserInformation) GetEmail() string {
if m != nil {
return m.Email
}
return ""
}
// [START paymentprocessing_definition]
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"`
// The token representing the payment method that will be used to pay
// for this booking. This token can be only used once. This token can be
// only used for the merchant associated with this booking.
//
// Each processor may choose its own format for this field.
// An example of Stripe's token is "tok_1C3orL2eZvKYlo2CxReMgS4K".
//
// Replaced by unparsed_payment_method_token, which contains
// payment_method_token as one of its fields.
// For example, for Stripe, unparsed_payment_method_token is a serialized
// JSON object documented at https://stripe.com/docs/api#token_object.
// payment_method_token is the 'id' field parsed out of that.
PaymentMethodToken string `protobuf:"bytes,2,opt,name=payment_method_token,json=paymentMethodToken" json:"payment_method_token,omitempty"`
// The full token received from Google Payments. This is typically a
// serialized JSON object. See documentation from Google Payments and your
// payment processor for the JSON format of the token for your processor.
// https://developers.google.com/pay/api/#participating-google-pay-processors
//
// This token can only be used once, and only for the merchant associated with
// this booking.
UnparsedPaymentMethodToken string `protobuf:"bytes,5,opt,name=unparsed_payment_method_token,json=unparsedPaymentMethodToken" 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"`
// 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"`
}
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) GetProcessor() PaymentProcessingParameters_PaymentProcessor {
if m != nil {
return m.Processor
}
return PaymentProcessingParameters_PAYMENT_PROCESSOR_UNSPECIFIED
}
func (m *PaymentProcessingParameters) GetPaymentMethodToken() string {
if m != nil {
return m.PaymentMethodToken
}
return ""
}
func (m *PaymentProcessingParameters) GetUnparsedPaymentMethodToken() string {
if m != nil {
return m.UnparsedPaymentMethodToken
}
return ""
}
func (m *PaymentProcessingParameters) GetVersion() string {
if m != nil {
return m.Version
}
return ""
}
func (m *PaymentProcessingParameters) GetPaymentProcessor() string {
if m != nil {
return m.PaymentProcessor
}
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
// the payment option with which it is associated.
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"`
// 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"`
// 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"`
// 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"`
// 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"`
// 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"`
}
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) GetUserPaymentOptionId() string {
if m != nil {
return m.UserPaymentOptionId
}
return ""
}
func (m *UserPaymentOption) GetValidStartTimeSec() int64 {
if m != nil {
return m.ValidStartTimeSec
}
return 0
}
func (m *UserPaymentOption) GetValidEndTimeSec() int64 {
if m != nil {
return m.ValidEndTimeSec
}
return 0
}
func (m *UserPaymentOption) GetType() PaymentOptionType {
if m != nil {
return m.Type
}
return PaymentOptionType_PAYMENT_OPTION_TYPE_UNSPECIFIED
}
func (m *UserPaymentOption) GetOriginalCount() int32 {
if m != nil {
return m.OriginalCount
}
return 0
}
func (m *UserPaymentOption) GetCurrentCount() int32 {
if m != nil {
return m.CurrentCount
}
return 0
}
func (m *UserPaymentOption) GetPaymentOptionId() string {
if m != nil {
return m.PaymentOptionId
}
return ""
}
// [START paymentinfo_definition]
// Payment details that are sent when creating a new booking.
type PaymentInformation struct {
// Prepayment status of the booking.
// If the prepayment_status is PREPAYMENT_PROVIDED, then
// payment_transaction_id contains the associated unique transaction id for
// the purchase.
// If the prepayment status is PREPAYMENT_REFUNDED, then
// payment_transaction_id contains the associated unique transaction id for
// the refund. (required)
PrepaymentStatus PrepaymentStatus `protobuf:"varint,1,opt,name=prepayment_status,json=prepaymentStatus,enum=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"`
// These fields must match the service price (specified in the Services feed)
// or the PaymentOption corresponding with this service.
// They are included in the booking request and response to verify that
// the price indicated in the feed has not changed since the last feed
// update.
//
// The price of the booking or order, exclusive of any taxes.
// Existence of price or taxes does not imply that they have been paid,
// prepayment_state should be used for that purpose. (required)
Price *Price `protobuf:"bytes,3,opt,name=price" 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"`
// 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"`
// The id of the payment option or user payment option associated with the
// booking.
// If a payment option is purchased as part of a booking, payment_option_id
// will be set with the id of that payment option.
// If an already purchased user payment option is being used to pay for a
// booking, user_payment_option_id will be set with the id of that user
// payment option.
// When included as part of a response proto, the user_payment_option_id
// should be set and must match the UserPaymentOption that is returned in the
// RPC response (e.g. the user_payment_option returned in
// CreateBookingResponse). (one of these required)
//
// Types that are valid to be assigned to PaymentId:
// *PaymentInformation_PaymentOptionId
// *PaymentInformation_UserPaymentOptionId
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"`
// 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"`
// 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"`
}
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} }
type isPaymentInformation_PaymentId interface {
isPaymentInformation_PaymentId()
}
type PaymentInformation_PaymentOptionId struct {
PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,oneof"`
}
type PaymentInformation_UserPaymentOptionId struct {
UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,oneof"`
}
func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId() {}
func (*PaymentInformation_UserPaymentOptionId) isPaymentInformation_PaymentId() {}
func (m *PaymentInformation) GetPaymentId() isPaymentInformation_PaymentId {
if m != nil {
return m.PaymentId
}
return nil
}
func (m *PaymentInformation) GetPrepaymentStatus() PrepaymentStatus {
if m != nil {
return m.PrepaymentStatus
}
return PrepaymentStatus_PREPAYMENT_STATUS_UNSPECIFIED
}
func (m *PaymentInformation) GetPaymentTransactionId() string {
if m != nil {
return m.PaymentTransactionId
}
return ""
}
func (m *PaymentInformation) GetPrice() *Price {
if m != nil {
return m.Price
}
return nil
}
func (m *PaymentInformation) GetTaxAmount() *Price {
if m != nil {
return m.TaxAmount
}
return nil
}
func (m *PaymentInformation) GetPaymentProcessedBy() PaymentInformation_PaymentProcessedBy {
if m != nil {
return m.PaymentProcessedBy
}
return PaymentInformation_PAYMENT_PROCESSED_BY_UNSPECIFIED
}
func (m *PaymentInformation) GetPaymentOptionId() string {
if x, ok := m.GetPaymentId().(*PaymentInformation_PaymentOptionId); ok {
return x.PaymentOptionId
}
return ""
}
func (m *PaymentInformation) GetUserPaymentOptionId() string {
if x, ok := m.GetPaymentId().(*PaymentInformation_UserPaymentOptionId); ok {
return x.UserPaymentOptionId
}
return ""
}
func (m *PaymentInformation) GetDeposit() *Deposit {
if m != nil {
return m.Deposit
}
return nil
}
func (m *PaymentInformation) GetNoShowFee() *NoShowFee {
if m != nil {
return m.NoShowFee
}
return nil
}
func (m *PaymentInformation) GetFeesAndTaxes() *Price {
if m != nil {
return m.FeesAndTaxes
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*PaymentInformation) 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 _PaymentInformation_OneofMarshaler, _PaymentInformation_OneofUnmarshaler, _PaymentInformation_OneofSizer, []interface{}{
(*PaymentInformation_PaymentOptionId)(nil),
(*PaymentInformation_UserPaymentOptionId)(nil),
}
}
func _PaymentInformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*PaymentInformation)
// payment_id
switch x := m.PaymentId.(type) {
case *PaymentInformation_PaymentOptionId:
b.EncodeVarint(6<<3 | proto.WireBytes)
b.EncodeStringBytes(x.PaymentOptionId)
case *PaymentInformation_UserPaymentOptionId:
b.EncodeVarint(7<<3 | proto.WireBytes)
b.EncodeStringBytes(x.UserPaymentOptionId)
case nil:
default:
return fmt.Errorf("PaymentInformation.PaymentId has unexpected type %T", x)
}
return nil
}
func _PaymentInformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*PaymentInformation)
switch tag {
case 6: // payment_id.payment_option_id
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.PaymentId = &PaymentInformation_PaymentOptionId{x}
return true, err
case 7: // payment_id.user_payment_option_id
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.PaymentId = &PaymentInformation_UserPaymentOptionId{x}
return true, err
default:
return false, nil
}
}
func _PaymentInformation_OneofSizer(msg proto.Message) (n int) {
m := msg.(*PaymentInformation)
// payment_id
switch x := m.PaymentId.(type) {
case *PaymentInformation_PaymentOptionId:
n += proto.SizeVarint(6<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.PaymentOptionId)))
n += len(x.PaymentOptionId)
case *PaymentInformation_UserPaymentOptionId:
n += proto.SizeVarint(7<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.UserPaymentOptionId)))
n += len(x.UserPaymentOptionId)
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
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"`
}
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 *BookingFailure) GetCause() BookingFailure_Cause {
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 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 *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 {
if m != nil {
return m.SlotAvailability
}
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 {
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
}
// [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 {
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
}
// [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"`
// 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"`
}
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 *LineItem) GetServiceId() string {
if m != nil {
return m.ServiceId
}
return ""
}
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" 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 ""
}
func (m *LineItem_OrderedTickets) GetCount() int32 {
if m != nil {
return m.Count
}
return 0
}
// [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"`
// (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"`
}
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 *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) GetSpotsOpen() int32 {
if m != nil {
return m.SpotsOpen
}
return 0
}
func (m *LineItemFulfillability) GetTicketType() []*TicketType {
if m != nil {
return m.TicketType
}
return nil
}
// [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 *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} }
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 {
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 {
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 ""
}
func (m *ListOrdersRequest) 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" 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 {
if m != nil {
return m.Order
}
return nil
}
// [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 {
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" 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"`
}
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 *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
}
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)
}
func init() { proto.RegisterFile("v3.proto", fileDescriptor0) }
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,
}