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)
  },
  "requireCreditCard": enum (RequireCreditCard),
  "ticketTypeId": [
    string
  ],
  "durationRequirement": enum (DurationRequirement),
  "schedulingRuleOverrides": {
    object (SchedulingRuleOverrides)
  },
  "confirmationMode": enum (ConfirmationMode)
}
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.

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 Anforderung, die Slotdauer und/oder das Ende anzugeben. Dieses Feld wird ignoriert, wenn der Slot nicht verfügbar ist. Wird nicht in der Kategorie „Mögliche Aktivitäten“ 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ügbare Slots mit dem Bestätigungsmodus "CONFIRMATION_MODE_ASYNCHRONOUS" müssen entweder sofort abgelehnt werden oder die Buchung muss mit dem Status "PENDING" erstellt werden.

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
}
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 Restaurant sollte ein Raumname nur für Sitzbereiche wie die Bar oder die Terrasse verwendet werden. Er sollte nicht für Festpreismenüs, besondere Aktivitäten oder andere Werte verwendet werden, die sich nicht auf das Zimmer beziehen (z. B. Reservierung oder Abendessen). Es wird dringend empfohlen, dass dem Standardsitzbereich kein Raum zugeordnet ist.

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.

Recurrence (Serie)

"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.

DurationRequirement

Diese Aufzählung gibt an, welche Anforderungen der Nutzer hat, um die Dauer/das Ende der angeforderten Slots zu bestätigen oder anzusehen.

Enums
DURATION_REQUIREMENT_UNSPECIFIED Wie die Endzeit behandelt wird, ist nicht angegeben. Das ist die Standardeinstellung.
DO_NOT_SHOW_DURATION Die Endzeit wird dem Nutzer nicht angezeigt.
MUST_SHOW_DURATION Das Ende 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)

Mit dieser Einstellung wird der letzte Zeitpunkt in Sekunden seit der Unix-Epoche angegeben, zu dem dieser Terminslot über „Mit Google reservieren“ storniert werden kann. Dieses Feld überschreibt alle Stornierungsregeln 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.

Methoden

replace

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