Flavoso APIErste SchritteTest-Betrieb

Test-Betrieb

Ein kostenloses Restaurant nur zum Ausprobieren der Schnittstelle, geführt in der Konsole: als Gast bestellen und reservieren, als Betrieb antworten, die Speisekarte abgleichen und jedes Ereignis bis zu deiner App verfolgen. Er kann nie live gehen.

Was ein Test-Betrieb ist

Ein Test-Betrieb ist ein Restaurant auf Flavoso, das es nur für die Schnittstelle gibt. Er kostet nichts, braucht kein Abo und ist von Haus aus rund um die Uhr geöffnet. Für die Schnittstelle gilt er als Tarif Pro: alle Routen stehen offen, auch Reservierungen.

Jedes Konto hat höchstens einen Test-Betrieb, und alle deine Apps teilen ihn. Er bringt eine Beispiel-Speisekarte mit Kategorien, Gerichten und einer Optionsgruppe mit, dazu Tische. Du führst ihn in der Konsole unter Test-Betrieb, in fünf Reitern: Betrieb, Bestellungen, Reservierungen, Speisekarte und Ereignisse.

Anlegen und benutzen

  1. 1

    Anlegen

    „Test-Betrieb anlegen“: ein Klick, und er steht. Im Einrichtungs-Assistenten ist das der zweite Schritt.

    Konsole › Test-Betrieb

  2. 2

    App verbinden

    Mit einem Test-Token oder über den OAuth-Ablauf, mit dem Test-Betrieb als Auswahl. Erst dann entstehen Ereignisse: ohne verbundene App mit dem passenden Recht hört niemand zu.

  3. 3

    Ausprobieren

    Als Gast bestellen und reservieren, als Betrieb antworten: weiterschalten, pausieren, Zeiten ändern, Gerichte ausverkauft melden. Jede Änderung geht als Ereignis an deine verbundenen Apps.

    Konsole › Test-Betrieb

Wie ein echter Betrieb

Für deine App verhält sich der Test-Betrieb wie ein echter Betrieb: dieselben Routen, dieselben Ereignisse, dieselben Fehler. Testbestellungen und Testreservierungen nehmen denselben Weg wie die eines Gastes, und wer in der Konsole eine Bestellung weiterschaltet, tut dasselbe wie die Küche. Jede Änderung kommt als Ereignis bei deiner App an, per Webhook oder über GET /events. Drei Dinge sind anders:

  • livemode ist false, in GET /me und in jedem Ereignis. Ein Test-Betrieb kann nie live gehen.
  • Online-Zahlungen sind simuliert: eine Testbestellung, die du als online bezahlt anlegst, löst order.created und gleich danach order.paid aus, ohne Zahlungsanbieter und ohne Geld.
  • Aus image_url behält er höchstens 50 Bilder. Darüber lädt PUT /menu keine weiteren und warnt mit images_capped; Zurücksetzen löscht sie.

Die Werkzeuge

Die Reiter des Test-Betriebs in der Konsole übernehmen, was sonst Gäste, Küche, Empfang und Dashboard tun. Sie aktualisieren sich von selbst, sobald sich im Test-Betrieb etwas ändert, auch wenn deine App die Änderung über die Schnittstelle macht.

WerkzeugWas es tutWo
TestbestellungenZufällig, auf Wunsch mehrere auf einmal, oder zusammengestellt wie von einem Gast: Gerichte mit Optionen, Abholung, Lieferung oder am Tisch, sofort oder vorbestellt, auf Wunsch mit Trinkgeld. Löst order.created aus.Konsole › Test-Betrieb › Bestellungen
Online bezahlt (simuliert)Wählbar bei einer zusammengestellten Bestellung: sie gilt sofort als online bezahlt, ohne Zahlungsanbieter und ohne Geld. Löst order.created und gleich danach order.paid aus.Konsole › Test-Betrieb › Bestellungen
TestreservierungEine Buchung wie von einem Gast, zur gewählten oder zur nächsten freien Zeit. Löst reservation.created aus.Konsole › Test-Betrieb › Reservierungen
Bestellungen weiterschalten und stornierenWie die Küche: annehmen, in Zubereitung, fertig, abgeschlossen. Löst order.status_changed aus, ein Storno dazu order.cancelled.Konsole › Test-Betrieb › Bestellungen
Reservierungen als BetriebDie Knöpfe des Empfangs: bestätigen, ablehnen, angekommen, gegangen, nicht erschienen, absagen, löschen, Tisch zuweisen; dazu als Gast absagen und auf jetzt vorziehen. Löst reservation.updated mit changed aus. Eine telefonisch aufgenommene Reservierung oder Laufkundschaft löst reservation.created aus.Konsole › Test-Betrieb › Reservierungen
LadenDie Bestellannahme pausieren (15 Minuten bis 3 Stunden, mit Grund) und wieder öffnen, Öffnungszeiten aus drei Vorgaben, heute oder morgen schließen, Bestellarten und Vorbestellung an- und ausschalten. Löst store.paused, store.resumed und store.updated mit changed aus.Konsole › Test-Betrieb › Betrieb
Verbindungen als BetriebEine App trennen, wie es der Inhaber eines Betriebs täte, oder ihr Rechte nehmen. Löst app.disconnected mit dem Grund owner aus, oder app.scopes_changed.Konsole › Test-Betrieb › Betrieb
SpeisekarteDie Karte, wie GET /menu sie einer App zeigt, mit ihren Kennungen. Gerichte und Optionen ausverkauft melden und wieder anbieten, Preise ändern. Löst menu.product.updated und menu.option.updated aus. Dazu alles für den Abgleich.Konsole › Test-Betrieb › Speisekarte
EreignisseDie letzten 30 Ereignisse, und je App, was ihr Webhook damit gemacht hat und ob sie es abgeholt hat. Siehe Ereignisse verfolgen.Konsole › Test-Betrieb › Ereignisse
ZurücksetzenLöscht Bestellungen und Reservierungen und stellt Beispielkarte und Einstellungen wieder her. Tische und Verbindungen bleiben. Siehe Zurücksetzen.Konsole › Test-Betrieb › Betrieb
LöschenLöscht den Test-Betrieb mit allem, was darin steht; die Test-Tokens deiner Apps gelten danach nicht mehr. Einen neuen legst du jederzeit wieder an.Konsole › Test-Betrieb › Betrieb
Test-Token erzeugenAccess- und Refresh-Token für den Test-Betrieb, ohne OAuth-Ablauf: das Access-Token gilt eine Stunde, das Refresh-Token 180 Tage; die Konsole zeigt beide genau einmal. Hast du der App als Betrieb Rechte genommen, bekommt die Verbindung sie damit zurück, gemeldet mit app.scopes_changed.Konsole › App › Zugangsdaten
API-ExplorerJede Operation gegen den Test-Betrieb ausprobieren, mit Anfrage und Antwort. Die Beispiel-Rümpfe nehmen Kennungen und Zeiten aus deinem Test-Betrieb, etwa die nächste freie Zeit für POST /reservations.Konsole › App › API-Explorer
Anfrage-ProtokollJede Anfrage deiner App, beim Test-Betrieb mit Rumpf von Anfrage und Antwort.Konsole › App › Protokoll
„Test-Ereignis senden“ und „Erneut senden“Ein Ereignis jeder Art an deinen Webhook schicken, mit Daten aus dem Test-Betrieb; eine Zustellung wiederholen. Zusammen höchstens 10-mal je Minute und App.Konsole › App › Webhooks

Mehr zu den Werkzeugen deiner App unter Werkzeuge.

Ereignisse verfolgen

Der Reiter Ereignisse zeigt die letzten 30 Ereignisse des Test-Betriebs. Je verbundene App steht daneben, was ihr Webhook damit gemacht hat (zugestellt, wartet auf den nächsten Versuch, fehlgeschlagen oder übersprungen, mit Grund) und ob sie es über GET /events schon abgeholt hat.

  • Umschlag: eine Zeile klappt auf und zeigt das Ereignis genau so, wie die gewählte App es bekommt.
  • Erneut senden: eine Zustellung noch einmal schicken, mit derselben Ereignis-Kennung.
  • An Webhook senden: ein Ereignis ohne Zustellung an den Webhook einer App schicken, etwa eins von vor der Einrichtung des Webhooks oder eine Art, die er nicht abonniert hat.
  • Ab hier abholen: den Aufruf GET /events kopieren, dessen Antwort mit genau diesem Ereignis beginnt.

Gesendet wird höchstens zehnmal je Minute und App, zusammen mit „Erneut senden“ und „Test-Ereignis senden“ unter Webhooks. Testereignisse und ping stehen nie in GET /events; der Reiter sagt das an der Stelle dazu.

Zurücksetzen

„Test-Betrieb zurücksetzen“ löscht alle Bestellungen und Reservierungen, legt die Beispielkarte neu an, beendet eine Pause, löscht Sondertage und stellt Öffnungszeiten, Bestellarten, Vorlauf, Vorbestellung, Mindestbestellwert, Trinkgeld, Lieferzone und Reservierungen wie beim Anlegen ein. Die über image_url geladenen Bilder werden gelöscht. Tische und Verbindungen bleiben.

  • Die Speisekarte meldet dieselben Ereignisse wie bei „Karte zurücksetzen“: jedes gelöschte Objekt mit menu.*.deleted, jedes neue mit menu.*.created. Eine Kasse, die die Karte spiegelt, sieht so, dass die Gerichte mit ihren Kennungen weg sind.
  • Ändern sich Zeiten, Sondertage, Vorlauf, Bestellarten, Vorbestellung oder Mindestbestellwert, kommt store.updated, bei einer laufenden Pause store.resumed.
  • Gelöschte Bestellungen und Reservierungen melden nichts.

Zurücksetzen geht höchstens fünfmal in zehn Minuten, „Karte zurücksetzen“ mitgezählt.

Test und echt auseinanderhalten

livemode steht in GET /me und in jedem Ereignis. Im Test-Betrieb ist es false, in jedem echten Betrieb true. Prüf es an der Stelle, an der deine App etwas Echtes tut: eine Testbestellung gehört in keine echte Kasse.

// Test and live share one API, one address and one token format. livemode tells them apart.
const me = await fetch("https://api.flavoso.com/v1/me", {
  headers: { Authorization: `Bearer ${accessToken}` },
}).then((r) => r.json());
if (!me.livemode) console.log(`Connected to the test restaurant "${me.tenant.name}"`);

// In the webhook handler: never book a test order into a real till
export function handleEvent(event) {
  if (!event.livemode) return handleTestEvent(event);
  return handleLiveEvent(event);
}

Mit einem echten Betrieb testen

Schon vor der Freigabe verbindet sich deine App auch mit Betrieben, in denen du selbst Inhaber bist. Das ist für den letzten Test mit echter Karte gedacht.

Das ist dann kein Test mehr: livemode ist true, Gäste bekommen Nachrichten, und eine Pause schließt die echte Bestellannahme.

Etwas unklar geblieben? Schreib an support@flavoso.com und nenne die Kennung aus X-Request-Id. Damit finden wir deine Anfrage im Protokoll.