Book-API version:1.2

 

Workflow Reservationsprozess

Situation

Mit der API lässt sich der Reservationsprozess komplett nachbilden, beispielsweise lässt sich damit ein eigenes Reservationsfenster programmieren.

1. Initialisieren

Im ersten Schritt initialisiert man den Reservationsprozess mit der Methode initReservation. Die Rückgabe beinhaltet den request_hash, der für alle weiter API-Calls dieser Reservation benötigt wird. Des Weiteren beinhaltet die Rückgabe Informationen zum Restaurant (Name, Adresse, etc.) sowie die Essenszeiten der ganzen Woche.

2. Raum

Für Restaurants mit nur einem Raum kann dieser Schritt übersprungen werden!
Der Gast wählt den Raum. Dieser wird mit der Methode setRoom der API übermittelt.

3. Tisch

Sobald der Gast Datum, Zeit und Anzahl Personen bestimmt hat, muss die Methode setTable aufgerufen werden, um zu überprüfen, ob zu diesem Zeitpunkt überhaupt eine Reservation möglich ist.

4. Auswahl / Kommentar

In der Antwort der Initialisierung ist bestimmt, ob das Restaurant einen Kommentar erlaubt und ob es eine Auswahl gibt. Dieser Schritt muss nur gemacht werden, wenn ein Kommentarfenster angeboten wird oder die ausgewählte Zeit/Datum sich in der Auswahl Zeit/Datum befindet. Mit der Methode setChoice kann die Auswahl und der Kommentar gesetzt werden.

5. Gast

Danach gibt der Gast seine Angaben (Name, Vorname, E-Mail und Mobile-Nr) an. Mit der Methode setGuest werden diese Daten der API übermittelt. Ist der Gast schon bei forAtable registriert, wird die Reservation automatisch ausgelöst. Ist der Gast unbekannt oder ist er schon mit einer anderen Mobile-Nr oder E-Mail registriert, wird dem Gast eine SMS mit einem vierstelligen Code gesendet.

6. Code überprüfen

Der per SMS erhaltene Code muss vom Gast eingeben werden und dann mit der Methode verifyCode der API übermittelt werden. Ist der Code korrekt wird die Reservation ausgelöst.

Workflow Zeit, Datum und Anzahl Personen am Reservationsfenster übermitteln

Situation

Datum, Zeit und Anzahl Personen werden auf der Seite des Gastronomen erfasst – in der Regel über ein Webformular.
Das Reservationsfenster wird dann per POST Request aufgerufen (mitgegeben wird Datum, Zeit und Personenanzahl) und der Gast landet im Reservationsfenster an der entsprechenden Stelle, von wo er den Reservationsprozess fortsetzen kann.

1. Restaurant Information

Mit der API-Methode getRestaurantInfo lassen sich die Restaurant relevanten Informationen beziehen.

2. Ins Reservationsfenster springen

Die Daten müssen per POST Request dem Reservationsfenster übermittelt werden. Das sollte in einem neuen Fenster geschehen. Der Gast befindet sich danach im Reservationsfenster, also auf der Domain foratable.com.
Dies ist unter der Pseudo API-Methode Direct beschrieben und kann dort getestet werden.

Api Methoden

Die Bookapi liefert die Antwort im JSON-Format. Alle Daten werden per POST übermittelt. Ist die Anfrage erfolgreich wird der status = ok zurückgegeben. Bei Misserfolg status = error. Die einzelnen Error Meldungen sind unter der jeweiligen Methode aufgelistet.

initReservation

Beschreibung:

Initialisiert den Reservationsprozess und gibt bei Erfolg den Request-Hash zurück, welcher beim weiteren Verlauf des Reservationsprozesses benötigt wird.
Es werden sowohl Daten zum Restaurant zurückgegeben sowie raumspezifisch die Essenszeiten für jeden Wochentag. Ausnahmezeiten(event_times) überschreiben die Ferienzeiten(holiday_times) welche die Standardzeiten(times) überschreiben.
URLhttps://foratable.com//bookapi2/initReservation
METHODpost
RESPONSEjson
Post Fields:
*
*
API Benutzername
*
API Passwort

Error Messages

StatusMessageLong-Message
errorinvalid_restaurant_hashUngültiger Restaurant Hash!
errorincorrect_loginUngültiges Api-User Login. Entweder E-Mail oder Passwort falsch!
errorblockedZur Zeit ist keine Reservation möglich! Für dieses Restaurant wurde das System von Foratable gesperrt.
errornot_enabledDas Reservationssystem ist momentan nicht aktiviert.
Bitte versuchen Sie es telefonisch unter der Nr. %s.
Vielen Dank!
errorclosedAn diesem Tag ist das Restaurant geschlossen!
errorholidayZur Zeit ist leider keine Reservation möglich! Das Restaurant ist heute geschlossen und kann keine Reservationen entgegennehmen. Wir bitten um Verständnis.
errorno_intimeZur Zeit sind leider keine Online-Reservationen über das Reservationssystem möglich! Bitte versuchen Sie es direkt per Telefon oder später noch einmal.

setRoom

Beschreibung:

Mit dieser Methode wird der Raum des Restaurants gesetzt. Ist nur für Restaurants mit mehreren Räumen nötig!
URLhttps://foratable.com//bookapi2/setRoom
METHODpost
RESPONSEjson
Post Fields:
*
*

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!
error24room_not_exists

getTimesOfDate

Beschreibung:

Mit dieser Methode lassen sich Essenszeiten zu einem bestimmten Datum abholen.
URLhttps://foratable.com//bookapi2/getTimesOfDate
METHODpost
RESPONSEjson
Post Fields:
*
*
YYYY-MM-DD zb. 2012-09-13

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!

setTable

Beschreibung:

Mit dieser Methode werden die Daten (Datum, Zeit und Anzahl Personen) übergeben. Es wird geprüft, ob zu diesem Zeitpunkt für die Anzahl Personen überhaupt reserviert werden kann.
URLhttps://foratable.com//bookapi2/setTable
METHODpost
RESPONSEjson
Post Fields:
*
*
YYYY-MM-DD zb. 2012-09-13
*
HH:ii z.b 12:30
*

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!
error31day_is_holidayAn diesem Tag hat das Restaurant Betriebsferien!
error32day_is_closedAn diesem Tag hat das Restaurant geschlossen!
error33no_person_telefonUnser Kontingent für Online Reservationen ist zu diesem Zeitpunkt leider aufgebraucht.
Heute können keine telefonische Anfragen entgegen genommen werden da wir geschlossen haben.
error34no_pastDatum darf nicht in der Vergangenheit liegen!
error35no_past_timeZeit darf nicht in der Vergangenheit liegen!
error36not_lunchDas Restaurant %s kann für diesen Mittag keine Buchungen entgegennehmen.
Sie können jedoch gerne ein anderes Datum wählen oder telefonisch direkt eine Anfrage starten: %s
error37not_dinnerDas Restaurant %s kann für diesen Abend keine Buchungen entgegennehmen.
Sie können jedoch gerne ein anderes Datum wählen oder telefonisch direkt eine Anfrage starten: %s
error40nomore_personFür den gewünschten Zeitpunkt sind leider keine Online-Reservationen über das Reservationssystem möglich
Bitte kontaktieren Sie das Restaurant direkt:
%s
error41only_personFür den gewünschten Zeitpunkt sind leider keine Online-Reservationen über das Reservationssystem möglich
Bitte kontaktieren Sie das Restaurant direkt:
%s
error42only_personsFür den gewünschten Zeitpunkt sind leider keine Online-Reservationen über das Reservationssystem möglich
Bitte kontaktieren Sie das Restaurant direkt:
%s
error43too_much_peopleEs kann nur für maximal %s Plätze reserviert werden!
error45no_event_capacityFür den gewünschten Zeitpunkt sind leider keine Online-Reservationen über das Reservationssystem möglich
Bitte kontaktieren Sie das Restaurant direkt:
%s
error49no_res_timeAn diesem Tag stehen keine Tische zur Verfügung. Sie können jedoch gerne ein anderes Datum wählen oder telefonisch direkt eine Anfrage starten: %s
error61invalid_promocodeDer Promo-Code ist ungültig.

Beschreibung:

Mit dieser Methode lässt sich die Auswahl sowie den Gast-Kommenntar übermitteln.

setChoice

URLhttps://foratable.com//bookapi2/setChoice
METHODpost
RESPONSEjson
Post Fields:
*

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!
error62choice_disabledThe choice Feature is disabled
error63choice_not_setThe choice Feature is not set

setGuest

Beschreibung:

Die Daten des Gastes werden geprüft. Falls der Gast im System schon registriert ist, wird die Reservation ausgelöst. Ist der Gast unbekannt oder die E-Mail und die Mobile Nummer stimmen nicht überein, wird dem Gast eine SMS mit einem Verifizierungscode geschickt.
URLhttps://foratable.com//bookapi2/setGuest
METHODpost
RESPONSEjson
Post Fields:
*
*
*
*
*
*

Ok Messages(status=ok)

StatusNr.MessageDescription
1verify_codeGast bekommt ein SMS mit dem Verifizierungs Code
2reservation_doneReservation wurde erfolgreich ausgelöst. Da der Gast bekannt ist wurde die Reservation direkt ausgelöst antstatt einen Verfizierungscode zu senden.

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!
error6not_valid_emailUngültige E-Mail Adresse!
error5wrong_euromobileDie Telefonnummer ist im falschen Format. Zur Zeit nur mit europäischen und amerikanischen Mobilnummern möglich.
error91not_status_1Die Angaben des Zeitpunkt der Tischbuchung wurden noch nicht übermittelt. Bitte zuerst setTable ausführen!
error95res_allready_doneDie Reservationsanfrage wurde schon ausgelöst. Haben Sie Geduld.

verifyCode

Beschreibung:

Der Verifizierungscode, welcher der Gast per SMS bekommen hat, wird auf Übereinstimmung geprüft. Ist der Code richtig wird, die Reservation ausgelöst.
URLhttps://foratable.com//bookapi2/verifyCode
METHODpost
RESPONSEjson
Post Fields:
*
*

Ok Messages(status=ok)

StatusNr.MessageDescription
2reservation_doneReservation wurde erfolgreich ausgelöst.

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!
error7wrong_codeDer SMS Code ist falsch
error8no_codeFür diesen Request wurde im System noch keinen Code hinterlegt. Bitte zuerst die Methode setGuest aufrufen!
error92not_status_2Die Angaben des Gastes wurden noch nicht übermittelt. Bite zuerst setGuest ausführen!
error95res_allready_doneDie Reservationsanfrage wurde schon ausgelöst. Haben Sie Geduld.

newCode

Beschreibung:

Mit dieser Methode kann eine weitere SMS mit dem Verfizierungscode an den Gast versendet werden. Da es vorkommen kann, dass eine SMS nicht ankommt, kann man dem Gast optional anbieten, einen neuen Code anzufordern.
URLhttps://foratable.com//bookapi2/newCode
METHODpost
RESPONSEjson
Post Fields:
*

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!
error92not_status_2Die Angaben des Gastes wurden noch nicht übermittelt. Bite zuerst setGuest ausführen!

Beschreibung:

Mit dieser Methode kann man die Sprache der Reservation setzen. Die Meldungen der API sind dann in der gesetzten Sprache - ebenso die Bestätigung (SMS und/oder E-Mail).

setLanguage

URLhttps://foratable.com//bookapi2/setLanguage
METHODpost
RESPONSEjson
Post Fields:
*
*

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash!
error22expired_request_hashRequest Hash ist abgelaufen (Gültigkeit 1 Stunde)!
error29incorrect_languageUngültige Sprache!

setFeedback

Beschreibung:

Nachdem der Gast in einem Restaurant gegessen hat, bekommt er eine E-Mail mit einem Link, um das Feedback abzugeben. Mit dieser Methode kann zu einer bestimmten Reservation ein Feedback abgegeben werden.
URLhttps://foratable.com//bookapi2/setFeedback
METHODpost
RESPONSEjson
Post Fields:
*
API Benutzername
*
API Passwort
*
*
Service
*
Küche
*
Ambiente
*
Preis / Leistung

Error Messages

StatusErrorNr.MessageLong-Message
error23invalid_reservation_hashUngültiger Reservation Hash!
error51feedback_not_updatedFeedback wurde nicht geändert!
error52feedback_not_allowedFeedback kann nicht mehr geändert werden!

getReservation

Beschreibung:

Damit kann man die Daten zu einer Reservation holen.
Jede Reservation hat einen Status:

1: Ok(Telefonanruf angenommen)
2: Error(telefon abgelehnt)
3: Error(Telefonanruf technisch fehlgeschlagen)
4: Error:(Unbekannter Fehler)
5: open(Antwort noch ausstehend)
6: Error(Keine Verbindung zum IVR Server)
8: Ok(Kontingent Buchung)
9: Ok(Selbstersate Reservation)
10: Ok(Email Reservation)
20: storniert(Durch Gastronom Reservation Status 8,10)
21: mutiert(reaktiviert nach Stornierung )
22: mutiert(abgelehnte,nicht beantworte Reservation)
23: storniert(Durch Gastronom Reservation Status 1)
24: storniert(Durch Gastronom Reservation Status 9)
25: mutiert(Reservation Status 8)
26: mutiert,(Reservation Status 9,10)
27: mutiert(Reservation Status 1)
28: storniert (Durch Gast Reservation Status 8,9,10)
29: storniert (Durch Gast Reservation Status1)
32: Error(Anruf nicht beantwortet)
URLhttps://foratable.com//bookapi2/getReservation
METHODpost
RESPONSEjson
Post Fields:
*
*
API Benutzername
*
API Passwort

Error Messages

StatusErrorNr.MessageLong-Message
error23invalid_reservation_hashUngültiger Reservation Hash!

getRestaurantHash

Beschreibung:

Mit dieser Methode kann man den forAtable Restaurant-Hash abholen. Es wird eine komma-separierte Liste von Luchgate Ids mitgepostet. Die Lunchgate Ids erhält man von der Lunchgate API.
URLhttps://foratable.com//bookapi2/getRestaurantHash
METHODpost
RESPONSEjson
Post Fields:
*
comma-separeted list of lunchgate restaurant ids
*
API Benutzername
*
API Passwort

Error Messages

StatusMessageLong-Message
errorincorrect_loginUngültiges Api-User Login. Entweder E-Mail oder Passwort falsch!

getRestaurantInfo

Beschreibung:

Es werden Informationen zum Restaurant zurückgegeben, welche unter Umständen benötigt werden, um ein Kalender-Widget zu programmieren.
In der Property times sind die Essenseiten der entsprechenden Tage aufgelistet. Der Index 0 ist der Sonntag und index 6 der Samstag.
Das Object restaurant hat eine Property namens closed_days, welches ein array mit den geschlossen Wochentagen enthält.
Der Wert 1 ist der Montag, der Wert 7 ist der Sonntag, der Wert 0 bedeutet, dass das Restaurant an jedem Wochentag offen ist.
Für genauere Angaben zum Datensatz beim Support nachfragen.
URLhttps://foratable.com/bookapi2/getRestaurantInfo
METHODpost
Post Fields:
*
*
API Benutzername
*
API Passwort

Error Messages

StatusMessageLong-Message
errorinvalid_restaurant_hashUngültiger Restaurant Hash!
errorincorrect_loginUngültiges Api-User Login. Entweder E-Mail oder Passwort falsch!

Direct

Beschreibung:

Das Reservationsfenster wird per POST aufgerufen (mitgegeben wird Datum, Uhrzeit und Personenanzahl).
Der Gast wird dann automatisch im Reservationsfenster an die entsprechende Stelle geleitet, von wo er die Reservation fortsetzen kann.
Das ist keine API-Methode, sondern ein Browser-Request.
Restaurant-Hash
um hier testen zu können
URLhttps://foratable.com/reserve/restaurant/#/direct
METHODpost
Post Fields:
*
YYYY-MM-DD zb. 2012-09-13
*
HH:ii z.b 12:30
*

getContingents

Beschreibung:

Mit dieser Funktion können die verfügbaren Kontingente der verschiedenen Restaurants zu einem bestimmten Zeitpunkt (Datum und Uhrzeit) abgerufen werden.
URLhttps://foratable.com/bookapi2/getContingents
METHODpost
Post Fields:
YYYY-MM-DD zb. 2012-09-13
*
API Benutzername
*
API Passwort

getFeedbacks

Beschreibung:

Mit dieser Funktion können die Feedbacks eines Restaurants abgerufen werden. Optional kann mitgegeben werden wieviele Monate zurück die Feedbacks ausgegeben werden sollen. Der Default Wert ist 3 Monate.
URLhttps://foratable.com/bookapi2/getFeedbacks
METHODpost
Post Fields:
*
*
API Benutzername
*
API Passwort

Error Messages

StatusMessageLong-Message
errorincorrect_loginUngültiges Api-User Login. Entweder E-Mail oder Passwort falsch!
errorinvalid_restaurant_hashUngültiger Restaurant Hash!

setFeedbackAnswer

Beschreibung:

Eine Antwort auf ein Feedback posten.
URLhttps://foratable.com/bookapi2/setFeedbackAnswer
METHODpost
Post Fields:
*
*
*
API Benutzername
*
API Passwort
*

Error Messages

StatusMessageLong-Message
errorincorrect_loginUngültiges Api-User Login. Entweder E-Mail oder Passwort falsch!
errorinvalid_reservation_hashUngültiger Reservation Hash!
errorfeedback_answer_already_existsEs existiert schon eine Feedback Antwort