REST Resource: inventory.partners.merchants.services.availability

Ressource: Availability

Ein verfügbarer Slot für die Dienstleistung des Händlers mit der Zeit und Anzahl der Plätze.

JSON-Darstellung
{
  "startTime": string,
  "duration": string,
  "spotsTotal": string,
  "spotsOpen": string,
  "availabilityTag": string,
  "resources": {
    object (Resources)
  },
  "paymentOptionId": [
    string
  ],
  "recurrence": {
    object (Recurrence)
  },
  "scheduleException": [
    {
      object (ScheduleException)
    }
  ],
  "deposit": {
    object (Deposit)
  },
  "noShowFee": {
    object (NoShowFee)
  },
  "prepayment": {
    object (Prepayment)
  },
  "requireCreditCard": enum (RequireCreditCard),
  "ticketTypeId": [
    string
  ],
  "durationRequirement": enum (DurationRequirement),
  "schedulingRuleOverrides": {
    object (SchedulingRuleOverrides)
  },
  "confirmationMode": enum (ConfirmationMode),
  "linkoutRequiredReason": enum (LinkoutRequiredReason)
}
Felder
startTime

string (Timestamp format)

Startzeit des Slots (Zeitblocks).

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

duration

string (Duration format)

Dauer des Slots.

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit "s". Beispiel: "3.5s".

spotsTotal

string (int64 format)

Anzahl der Gesamtplätze und der freien Plätze dieser Verfügbarkeit. Beispiele:

  • Yogakurs mit insgesamt 10 Plätzen, davon 3 gebucht: availability {spotsTotal: 10, spotsOpen: 7 ...}
  • Stuhlmassage, komplett ausgebucht: availability {spotsTotal: 1, spotsOpen: 0 ...}

Hinweis: Wenn Anfragen mit dem unten definierten Komprimierungsformat für die Verfügbarkeit gesendet werden, werden diese beiden Felder abgeleitet.

  • Für eine Serie sind spotsTotal=1 und spotsOpen=1 erforderlich.
  • Eine "ScheduleException" liegt bei spotsTotal=1 und spotsOpen=0 vor.
spotsOpen

string (int64 format)

Anzahl der freien Plätze.

availabilityTag

string

Ein optionaler nicht durchsichtiger String zur Identifizierung dieses verfügbaren Slots. Ist dieses Feld konfiguriert, wird es in Anfragen zum Buchen/Aktualisieren/Stornieren von Terminen aufgenommen.

resources

object (Resources)

Optionale Ressourcen, mit denen dieser verfügbare Slot von anderen unterschieden wird, wenn der Dienstleistung verschiedene Mitarbeiter oder Räume zugewiesen sind.

Beispiel: Ein Yogakurs, der mit zwei Kursleitern angeboten wird:

availability { resources { staffId: "1" staffName: "Amy" }
               spotsTotal: 10 spotsOpen: 7 }
availability { resources { staffId: "2" staffName: "John" }
               spotsTotal: 5 spotsOpen: 2 }
paymentOptionId[]

string

Eine Liste mit IDs für die Zahlungsoptionen, die für die Zahlung für diesen Slot verwendet werden können. Die tatsächlichen Zahlungsoptionen werden auf Händlerebene festgelegt und können für mehrere Händler genutzt werden.

Dieses Feld überschreibt alle "payment_option_ids", die in der Dienstleistungsnachricht angegeben werden. Die hier angegebenen "payment_option_ids" müssen NICHT in der Dienstleistungsnachricht enthalten sein. Sie müssen aber auf Händlerebene definiert werden.

recurrence

object (Recurrence)

Die Serieninformationen für die Verfügbarkeit. Sie stellen mehr als eine Startzeit dar. Eine Serie muss Termine für einen Arbeitstag enthalten.

scheduleException[]

object (ScheduleException)

Gibt an, wann diese Dienstleistung nicht gebucht werden kann. Um die Anzahl der "scheduleException"-Nachrichten einzuschränken, kannst du nebeneinanderliegende Ausnahmen zusammenziehen.

deposit

object (Deposit)

Optionale Anzahlung für diese Verfügbarkeit. Überschreibt die Anzahlung auf Dienstleistungsebene, falls eine angegeben wurde.

noShowFee

object (NoShowFee)

Optionale Gebühr bei Nichterscheinen für diese Verfügbarkeit. Überschreibt die Gebühr bei Nichterscheinen auf Dienstleistungsebene, falls eine angegeben wurde.

prepayment

object (Prepayment)

Optional. Optionale Informationen zur Vorauszahlung für diese Verfügbarkeit.

requireCreditCard

enum (RequireCreditCard)

Gibt an, ob der Nutzer Kreditkartendaten angeben muss, um diesen verfügbaren Slot zu buchen. Wenn der Wert nicht festgelegt ist, wird er von der Dienstleistungsebene übernommen, sofern er dort festgelegt ist. (optional)

ticketTypeId[]

string

Gibt eine Liste der unterstützten Tickettypen für diesen verfügbaren Slot an. Wenn dieses Feld nicht festgelegt ist, sind alle Tickettypen der übergeordneten Dienstleistung für diesen Slot verfügbar. Die Werte dieses Felds müssen in der übergeordneten Dienstleistung definiert werden. Beispiele:

  • Dienstleistung mit vier Tickettypen: TicketType {ticketTypeId: "adult_1" shortDescription: "Erwachsene, wochentags"} TicketType {ticketTypeId: "adult_2" shortDescription: "Erwachsene, Wochenende"} TicketType {ticketTypeId: "youth_1" shortDescription: "Jugendliche, wochentags"} TicketType {ticketTypeId: "youth_2" shortDescription: "Jugendliche, Wochenende"}

So wird das Inventar an Wochentagen dargestellt: availability {ticketTypeId: "adult_1" ticketTypeId: "youth_1"...}. So wird das Inventar am Wochenende dargestellt: availability {ticketTypeId: "adult_2" ticketTypeId: "youth_2"...}.

  • Dienstleistung mit drei Tickettypen: TicketType {ticketTypeId: "adult" shortDescription: "Erwachsene"} TicketType {ticketTypeId: "youth" shortDescription: "Jugendliche"} TicketType {ticketTypeId: "senior" shortDescription: "Senioren"}

Um anzugeben, dass alle drei Tickettypen für diesen Slot verfügbar sind, verwendest du entweder availability {ticketTypeId: "adult" ticketTypeId: "youth" ticketTypeId: "senior" ...} oder "availability {...}". Du darfst "ticketTypeId" dann in diesem Slot nicht festlegen.

(optional)

durationRequirement

enum (DurationRequirement)

Die Dauer und/oder Endzeit der Zeitfenster muss angegeben werden. Dieses Feld wird ignoriert, wenn der Slot nicht verfügbar ist. Wird in der Branche „Mögliche Aktivitäten“ nicht verwendet. (optional)

schedulingRuleOverrides

object (SchedulingRuleOverrides)

Regeln für die Verfügbarkeitsplanung. Wenn Felder ausgefüllt sind, überschreiben sie alle entsprechenden Planungsregeln (SchedulingRules) auf Dienstleistungsebene.

confirmationMode

enum (ConfirmationMode)

Der Bestätigungsmodus, der beim Buchen dieser Verfügbarkeit verwendet wird. Buchungsanfragen für Verfügbarkeiten mit dem Bestätigungsmodus CONFIRMATION_MODE_SYNCHRONOUS müssen sofort bestätigt oder abgelehnt werden. Buchungsanfragen für Verfügbarkeiten mit dem Bestätigungsmodus CONFIRMATION_MODE_ASYNCHRONOUS müssen entweder sofort abgelehnt oder mit dem Status PENDING erstellt werden.

linkoutRequiredReason

enum (LinkoutRequiredReason)

Optional. Der Grund, warum für diesen Slot ein Link erforderlich ist. Falls festgelegt, muss die Händlerressource für diesen Slot eine gültige LinkoutTemplate haben. (optional)

Ressourcen

Ressourcen werden verwendet, um verfügbare Slots voneinander zu unterscheiden, wenn der Dienstleistung verschiedene Mitarbeiter oder Räume zugewiesen sind. Für dieselbe Dienstleistung und denselben Zeitraum können mehrere Slots gleichzeitig verfügbar sein, wenn ihnen unterschiedliche Ressourcen zugewiesen sind.

JSON-Darstellung
{
  "staffId": string,
  "staffName": string,
  "roomId": string,
  "roomName": string,
  "partySize": integer,
  "roomDescription": {
    object (Text)
  }
}
Felder
staffId

string

Optionale ID für einen Mitarbeiter, der die Dienstleistung erbringt. Mit diesem Feld wird der Mitarbeiter über alle Händler, Dienstleistungen und verfügbaren Slots hinweg identifiziert. Es muss auch im Laufe der Zeit konstant bleiben, damit eine Zuordnung zu früheren Buchungen möglich ist. Es ist ein Pflichtfeld, wenn "staffName" festgelegt ist.

staffName

string

Optionaler Name eines Mitarbeiters, der die Dienstleistung erbringt. Nutzer, die eine Buchung vornehmen, sehen dieses Feld. Es muss für Menschen lesbar sein (kein nicht transparenter String). Es ist ein Pflichtfeld, wenn "staffId" festgelegt ist.

roomId

string

Eine optionale ID für den Raum, in dem die Dienstleistung erbracht wird. Mit diesem Feld wird der Raum über alle Händler, Dienstleistungen und verfügbaren Slots hinweg identifiziert. Es muss auch im Laufe der Zeit konstant bleiben, damit eine Zuordnung zu früheren Buchungen möglich ist. Es ist ein Pflichtfeld, wenn "roomName" festgelegt ist.

roomName

string

Ein optionaler Name für den Raum, in dem die Dienstleistung erbracht wird. Nutzer, die eine Buchung vornehmen, sehen dieses Feld. Es muss für Menschen lesbar sein (kein nicht transparenter String). (Optional, aber erforderlich, wenn „roomId“ vorhanden ist) Im Bereich „Dining“ sollte ein Raumname nur für Sitzbereiche wie die Bar oder den Patio verwendet werden. Er darf nicht für Menüs zu Festpreisen, besondere Aktivitäten oder andere Werte (z. B. Reservierung oder Abendessen) verwendet werden. Es wird dringend empfohlen, dem Standardsitzbereich kein Zimmer zuzuweisen.

partySize

integer

Gilt nur für die Gastronomie: Die Anzahl der Personen, für die während dieses Slots Platz ist. Für ein Restaurant kann es mehrere Slots gleichzeitig geben, die alle einen anderen Wert für "partySize" haben, z. B. wenn an einem Tisch 2, 3 oder 4 Gäste Platz haben.

roomDescription

object (Text)

Optional. Lokalisierte Zimmerbeschreibung. Wenn festgelegt, muss ein Standardwert angegeben werden. Es wird empfohlen, auch gängige Sprachen für die Region des Händlers anzugeben. (optional)

Wiederholung

"Recurrence"-Nachrichten sind optional, ermöglichen jedoch eine kompaktere Darstellung verfügbarer Slots, die sich regelmäßig wiederholen. Sie stellen normalerweise den Arbeitsplan eines Tages dar. "ScheduleException"-Nachrichten werden dann verwendet, um gebuchte/nicht verfügbare Zeiträume während des Arbeitstages darzustellen.

Voraussetzungen:

  1. Durch die Erweiterung von verfügbaren Slots oder Serien dürfen KEINE identischen Slots generiert werden. Wenn "ids" (IDs), "startTime" (Startzeit), "duration" (Dauer) und "resources" (Ressourcen) übereinstimmen, werden die Slots als identisch betrachtet.
  2. Das Standardformat für die Verfügbarkeit und Serien dürfen NICHT innerhalb der Slots einer einzelnen Dienstleistung kombiniert werden. Serien bieten sich für Händler/Dienstleistungen mit Terminen an. Das Standardformat ist auf Händler/Dienstleistungen mit Kursen ausgerichtet, die regelmäßig stattfinden.
  3. Serien dürfen nicht länger als 24 Stunden dauern.
JSON-Darstellung
{
  "repeatUntil": string,
  "repeatEvery": string
}
Felder
repeatUntil

string (Timestamp format)

Der Zeitstempel der Zeit (UTC), bis zu der die Verfügbarkeit wiederholt wird.

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

repeatEvery

string (Duration format)

Definiert die Zeit zwischen aufeinanderfolgenden verfügbaren Slots.

Beispiel: Eine Verfügbarkeit mit einer Dauer (duration) von 20 Minuten, einer Startzeit (startTime) von 9:00 Uhr und Wiederholungen, die alle 30 Minuten (repeatEvery) bis 11:00 Uhr (repeatUntil) beginnen, führt zu folgenden Slots: 9 bis 9:20 Uhr, 9:30 bis 9:50 Uhr, 10 bis 10:20 Uhr, 10:30 bis 10:50 Uhr und 11 bis 11:20 Uhr. (erforderlich)

Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit "s". Beispiel: "3.5s".

ScheduleException

"ScheduleException"-Nachrichten stellen gebuchte/nicht verfügbare Zeiträume während des Arbeitstages dar. Sie sind Ausnahmen der oben beschriebenen Serien. Wenn Slots gebucht werden, muss die Liste der Ausnahmen mit den Zeiträumen aktualisiert werden, die nun nicht mehr verfügbar sind. Die Serie selbst darf nicht geändert werden.

JSON-Darstellung
{
  "timeRange": {
    object (TimeRange)
  }
}
Felder
timeRange

object (TimeRange)

Der Zeitraum der Ausnahme. Alle Slots in der Serie, die mit der Start- und/oder Endzeit dieses festen Zeitraums überlappen, werden als nicht verfügbar angesehen.

Beispiel: Angenommen, für eine Serie sind eine Dauer (duration) von 20 Minuten, eine Startzeit (startTime) von 9:00 Uhr und Wiederholungen, die alle 30 Minuten (repeatEvery) bis 11:00 Uhr (repeatUntil) beginnen, festgelegt. Hier würde eine Ausnahme (ScheduleException) mit dem Zeitraum (timeRange) 9:45 bis 11:00 Uhr dazu führen, dass folgende Slots nicht verfügbar sind: 9:30 bis 9:50 Uhr, 10 bis 10:20 Uhr und 10:30 bis 10:50 Uhr.

Da der Zeitraum eine Start- und Endzeit hat, wirkt sich die Ausnahme nicht auf den Slot aus, der um 11:00 Uhr beginnt.

Vorauszahlung

Eine Zahlung, die dem Nutzer im Rahmen seiner Reservierung in Rechnung gestellt werden kann.

JSON-Darstellung
{
  "priceInfo": {
    object (PriceInfo)
  }
}
Felder
priceInfo

object (PriceInfo)

Container für Preisdetails.

PriceInfo

Container für Preisdetails.

JSON-Darstellung
{
  "priceType": enum (PriceType),

  // Union field price_options can be only one of the following:
  "price": {
    object (Price)
  },
  "priceRange": {
    object (PriceRange)
  }
  // End of list of possible types for union field price_options.
}
Felder
priceType

enum (PriceType)

Definiert, wie der Preis oder Preisbereich angewendet wird (pro Person oder fest)

Union-Feld price_options. Sie können entweder einen genauen Preis oder einen Bereich angeben. Für price_options ist nur einer der folgenden Werte zulässig:
price

object (Price)

Der Preis für eine Dienstleistung oder eine Gebühr

priceRange

object (PriceRange)

Die Ober- und/oder Untergrenze für einen Dienst oder eine Gebühr.

PriceRange

Umschlag für einen Bereich von Geldbeträgen, der als unbegrenzt behandelt wird, es sei denn, beide Werte sind festgelegt. Es ist mindestens eine Angabe für „minAmount“ und „maxAmount“ erforderlich.

JSON-Darstellung
{
  "minPrice": {
    object (Price)
  },
  "maxPrice": {
    object (Price)
  }
}
Felder
minPrice

object (Price)

Mindestbetrag.

maxPrice

object (Price)

Höchstbetrag. Muss immer größer als „minPrice“ sein.

DurationRequirement

Dieser Enum gibt an, welche Anforderungen der Nutzer erfüllen muss, um die Dauer/Endzeit der angeforderten Zeiträume zu bestätigen oder aufzurufen.

Enums
DURATION_REQUIREMENT_UNSPECIFIED Die Behandlung des Endzeitpunkts ist nicht angegeben. Das ist die Standardeinstellung.
DO_NOT_SHOW_DURATION Die Endzeit wird dem Nutzer nicht angezeigt.
MUST_SHOW_DURATION Die Endzeit muss dem Nutzer angezeigt werden, bevor ein Termin vereinbart werden kann.

SchedulingRuleOverrides

Planungsregeln auf Verfügbarkeitsebene

JSON-Darstellung
{
  "lastBookableSec": string,
  "firstBookableSec": string,
  "lastOnlineCancellableSec": string
}
Felder
lastBookableSec

string (int64 format)

Die Zeit (in Sekunden), bis zu der dieser Slot gebucht werden kann. Der Zeitstempel muss vor dem Wert für "startSec" des Slots liegen, der einzuhalten ist. Wenn Nutzer auch nach der Startzeit noch buchen können, verwende stattdessen "SchedulingRules.min_booking_before_end_time" auf Dienstleistungsebene. Falls vorhanden, werden alle Werte in "min_booking_buffer" der Planungsregeln (SchedulingRules) der Dienstleistung überschrieben.

firstBookableSec

string (int64 format)

Die Zeit (in Sekunden), ab der dieser Slot gebucht werden kann. Der Zeitstempel muss vor dem Wert für "startSec" oder "lastBookableSec" (falls angegeben) des Slots liegen.

lastOnlineCancellableSec

string (int64 format)

Falls festgelegt, die letzte Zeit (in Sekunden seit der Unix-Epoche), bis zu der dieser Termin über „Mit Google reservieren“ storniert werden kann. Dieses Feld überschreibt alle Kündigungsregeln auf Dienstleistungsebene. (optional)

ConfirmationMode

Die Bestätigungsmodi, die beim Buchen von Verfügbarkeiten verwendet werden.

Optionen
CONFIRMATION_MODE_UNSPECIFIED Der Bestätigungsmodus wurde nicht angegeben. Es wird von einer synchronen Bestätigung ausgegangen.
CONFIRMATION_MODE_SYNCHRONOUS Buchungen für diese Verfügbarkeit werden synchron bestätigt.
CONFIRMATION_MODE_ASYNCHRONOUS Buchungen für diese Verfügbarkeit werden asynchron bestätigt.

LinkoutRequiredReason

Der Grund, warum ein Slot einen Linkout hat.

Enums
LINKOUT_REQUIRED_REASON_UNSPECIFIED Standardwert: Nicht verwenden, entspricht „unbekannt“.
PAYMENT_REQUIRED Für die Buchung eines Slots ist eine Zahlung auf der Partnerplattform erforderlich.

Methoden

replace

Ersetzt die Availability eines vorhandenen Service eines Händlers, der vom angegebenen Aggregator verwaltet wird, und gibt sie zurück.