Book-API version:1.2

 

Workflow Reservationprozess

Situation

Mit der Api lässt sich komplett einen Reservationsprozess implementieren d.h damit lässt sich ein eigenes Reservationsfenster programmieren.

1. Initialisieren

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

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

Im Erfolgsfall kommt in der Antwort neben status=ok auch choice=[active|inactive]. Ist choice active sollte als nächstes das Auswahlfenster angezeigt werden.

3. Auswahl / Kommentar

In der Antwort der Intialisierung wurde ist bestimmt on des Restaurant ein Kommentar erlaubt und ob es eine Auswahl gibt. Dieser Schriitt muss nur gemacht werden wenn ein Kommentarfenster angeboten wird oder die ausgewählte Zeit/Datum sich in der Auswahl Zeit/Datum befindet. Mmit der Methode setChoice kann die Auswahl und der Kommentar gesetzt werden.

4. Gast

Danach gibt der Gast seine Angaben(Name/Vorname/e-Mail/Mobile)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 er ist schon mit einer anderen Mobile Nr oder e-Mail registriert wird dem Gast eine SMS mit einem viersteligen Code gesendt.

5. Code überprüfen

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

Workflow Zeit, Datum und Anzahl Personen am Reservationsfenster übermittlen

Situation

Datum, Zeit und Anzahl Personen werden auf der Seite des Gatronnomen erfasst.
Foratable stellt im Moment dafür kein Widget bereit. Dieses muss also vom Gastrom slebst programmiert werden.
Das Reservationsfenster wird dann per POST aufgerufen(mitgegeben wird Datum, Zein und Personenanzahl) und der Gast landet im Reservationsfenster in der entsprechenden Stelle wo er dann den Reservationsprozess fortsetzen kann.

1. Restaurant Information

Mit der Api-Methode getRestaurantInfo. lassen sich die Restaurant relevanten Information beziehen.

2. Ins Reservations springen

Die Daten müssen per POST dem Reservationsfenster übermittelt werden. Das sollte in einem neuen Fenster geschehenn. Der Gast befindet sich danch im Reservationsfenster, also auf foratable.com.
Unter der Pseudo Api-Methode Direct ist das beschrieben und kann dort getestet werden.

Api Methoden

Die Bookapi gibt die Antwort als JSON. 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 weitern Verlauf des Reservationsprozess benötigt wird.
Des weiteren werden Daten zum Restaurant zurückgeben geben und sowie die Zeiten für welche einen Tisch reserviert werden kann am heutigen Tag
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.

setTable

Beschreibung:

Mit dieser Methode werden die Daten(Datum, Zeit,Anzahl Personen) übergeben. Es wird geprüft ob zu diesem Zeitpunkt für die Anzahl Personen überhaupt reserviert werden kann kann.

Zürückgeben wird die Eigenschaft choice welche den Wert active oder inactive hat. Das darauffolgende Auswahlfenster soll nur bei active angezeigt werden
URLhttps://foratable.com//bookapi2/setTable
METHODpost
RESPONSEjson
Post Fields:
*
*
YYYY-MM-DD zb. 2012-09-13
*
HH:ii z.b 12:30
*

Ok Messages(status=ok)

PropertyMessageDescription
choiceactiveAuswahl aktiv
choiceinactiveAuswahl inaktiv(Wird nicht angezeigt)
choice_displaydropdown|radioBestimmt die Darstelung der Auswahl. Wird nur zurückgegeben wenn die Auswahl aktiv ist

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash.
error22expired_request_hashRequest Hash ist abgelaufen(Gültigkeit 1Stunde)
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 setzen. Diese Methode muss nach der Methode setTable aufgerufen werden

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 1Stunde)
error62choice_disabledThe choice Feature is disabled
error63choice_not_setThe choice Feature is not set

setGuest

Beschreibung:

Die Daten des Gastes werden geprüft. Ist der Gast schon registriert im System wird die Reservation aus gelöst. Ist der Gast unbekannt oder die E-Mail und die Moobile Nummer stimmen nicht überein wird dem Gast ein SMS mit einem Verifizierungs Code 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 bekommt ist wurde die Reservation direkt ausgelöst antstatt ihme ein Verfizierungscode zuschicken

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash.
error22expired_request_hashRequest Hash ist abgelaufen(Gültigkeit 1Stunde)
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 Code 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. Da der Gast bekommt ist wurde die Reservation direkt ausgelöst antstatt ihme ein Verfizierungscode zuschicken

Error Messages

StatusErrorNr.MessageLong-Message
error21invalid_request_hashUngültiger Request Hash.
error22expired_request_hashRequest Hash ist abgelaufen(Gültigkeit 1Stunde)
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 ein weiteres SMS mit dem Verfizierungs-Code 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 1Stunde)
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 und 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 1Stunde)
error29incorrect_languageUngültige Sprache

setFeedback

Beschreibung:

Nachdem der Gast in einem Restaurant gegessen hat bekommt er ein E-Mail mit einem Link um das Feedback abzugeben. Mit dieser Methode kann ein Feedback abgegeben werden zu einer bestimmten Reservation.
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. Es kann kein Feedback abgegeben werden
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. Es kann kein Feedback abgegeben werden

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 Properts times sind die Servicezeiten der entsprechenden Tage aufgelistet. Der Index 0 ist der Sonntag und index & der Samstag
Im Object restaurant hat eine Property namens closed_days welches in 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 in jedem Wochentag offen ist.
Für genaure 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 Stelle geleitet wo er die Reservation fortsetzen kann.
Das ist kein Api-Methode sondern einen 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 Restaurant zu einem bestimmten Zeitpunkt(Datum/Uhrzeit) abgerufen werden.
URLhttps://foratable.com/bookapi2/getContingents
METHODpost
Post Fields:
YYYY-MM-DD zb. 2012-09-13
*
API Benutzername
*
API Passwort