messageServiceAvailability{//Ifprovided,wewillconsidertheAvailabilityentitiesprovidedtobea//completesnapshotfrom[start_timestamp_restrict,end_timestamp_restrict).// That is, all existing availability will be deleted if the following// condition holds true://// start_timestamp_restrict <= Availability.start_sec&&
// Availability.start_sec < end_timestamp_restrict//// If a duration message is set, the condition is further restricted:// Availability.duration == duration_restrict_sec//// If a resource_restrict message is set, the condition is further restricted://// Availability.resource.staff_id == resource_restrict.staff_id&&
// Availability.resource.room_id == resource_restrict.room_id//// These fields are typically used to provide a complete update of// availability in a given time range.//// Setting start_timestamp_restrict while leaving end_timestamp_restrict unset// is interpreted to mean all time beginning at start_timestamp_restrict.//// Setting end_timestamp_restrict while leaving start_timestamp_restrict unset// is interpreted to mean all time up to the end_timestamp_restrict.//// In Unix time format (seconds since the epoch) from UTC. (both optional)int64start_timestamp_restrict=1;int64end_timestamp_restrict=2;// If provided, the timestamp restricts will be applied only to the given// merchant or service.//// These fields are typically used to provide complete snapshot of// availability in a given range (defined above) for a specific merchant or// service.//// Leaving these fields unset, or setting these to the empty string or null,// is interpreted to mean that no restrict is intended. (both optional)stringmerchant_id_restrict=3;stringservice_id_restrict=4;// Setting duration further restricts the scope of the update to just the// availability with matching duration.//// In seconds. (optional)int64duration_restrict_sec=7;// Setting resources_restrict further restricts the scope of the update to// just this set of resources. All id fields of the resources must match// exactly. (optional)Resourcesresources_restrict=6;// All Availability Slots included in this Service Availability (required)repeatedAvailabilityavailability=5;}
// A resource is used to disambiguate availability slots from one another when// different staff, room or party_size values are part of the service.// Multiple slots for the same service and time interval can co-exist when they// have different resources.messageResources{// One of staff_id, room_id, or party_size must be set.// Optional ID for a staff member providing the service. This field identifies// the staff member across all merchants, services, and availability records.// It also needs to be stable over time to allow correlation with past// bookings. (optional but required if staff_name is present)stringstaff_id=1;// Optional name of a staff member providing the service. This field will be// displayed to users making a booking, and should be human-readable, as// opposed to an opaque identifier. (optional but required if staff_id is// present)stringstaff_name=2;// An optional ID for the room the service is located in. This field// identifies the room across all merchants, services, and availability// records. It also needs to be stable over time to allow correlation with// past bookings. (optional but required if room_name is present)stringroom_id=3;// An optional name for the room the service is located in or experience of// of the service. This field will be displayed to users making a booking,// and should be human readable, as opposed to an opaque identifier.// A room name should only be used for seating areas or prepaid experiences.// Examples of room names include "Bar", "Patio", "Dining Room". Examples of// dining experiences using room names include "Five-Course Tasting Menu",// "Chef Omakase". It is strongly recommended that the default seating area// does not have a room associated with it.stringroom_name=4;// Applicable only for Dining: The party size that can be accommodated// during this time slot. A restaurant can be associated with multiple Slots// for the same time, each specifying a different party_size, if for instance// 2, 3, or 4 people can be seated with a reservation. (optional)int32party_size=5;}
Определение временного диапазона
// A closed-open time range, i.e. [begin_sec, end_sec)messageTimeRange{// Seconds of UTC time since Unix epoch (required)int64begin_sec=1;// Seconds of UTC time since Unix epoch (required)int64end_sec=2;}
Определение цены
// The price of a service or a fee.messagePrice{// The price in micro-units of the currency.// For example: 1.95 USD is 1950000 in micro-units.// If your price contains fractions of the smallest currency unit, then it// will be rounded using nearest even rounding (e.g. 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)int64price_micros=1;// The currency of the price that is defined in ISO 4217. (required)stringcurrency_code=2;// An optional and opaque string that identifies the pricing option that is// associated with the extended price. (optional)stringpricing_option_tag=3;}
Определение ценового диапазона
// Wrapper for a range of monetary amount treated as unbounded unless both// values are set. At least one of min_amount and max_amount is required.messagePriceRange{// Minimum amount.Pricemin_price=1;// Maximum amount. Should always be > min_price.Pricemax_price=2;}
Определение ценыинформации
// Container for price details.messagePriceInfo{oneofprice_options{Priceprice=1;// The upper and/or lower boundPriceRangeprice_range=2;}// Defines how price or price range is applied (per person or fixed)PriceTypeprice_type=3;}
// A deposit that the user may be charged or have a hold on their credit card// for.messageDeposit{// Deposit amount.Pricedeposit=1;// Minimum advance cancellation for the deposit.int64min_advance_cancellation_sec=2;// Defines how the deposit is determined from the availability.PriceTypedeposit_type=3;}
Определение предоплаты
// A payment the user may be charged as part of their reservation.messagePrepayment{PriceInfoprice_info=1;}
Определение NoShowFee
// A fee that a user may be charged if they have made a booking but do not// show up.messageNoShowFee{// The amount the user may be charged if they do not show up for their// reservation.Pricefee=1;// Defines how the fee is determined from the availability.PriceTypefee_type=3;}
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2024-10-26 UTC."],[[["The Availability Feed provides real-time service availability data for booking systems and aggregators, using standardized components like `Availability`, `Recurrence`, and `Resources`."],["Availability slots can be defined using either standard open spots or recurring patterns with exceptions, and include details like resources, payment options, and confirmation modes."],["The feed is transmitted as a complete snapshot or incremental updates, utilizing protobuf format but recommending JSON for uploads."],["Aggregators can use `restrict` fields to target specific data segments, and the feed supports various booking-related features like deposits, prepayments, and scheduling rule overrides."],["For recurring availability, either `recurrence` or `spots_open`/`spots_total` must be defined, ensuring data consistency and avoiding redundancy."]]],[]]