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
Anlegen
„Test-Betrieb anlegen“: ein Klick, und er steht. Im Einrichtungs-Assistenten ist das der zweite Schritt.
Konsole › Test-Betrieb
- 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
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:
livemodeistfalse, inGET /meund 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.createdund gleich danachorder.paidaus, ohne Zahlungsanbieter und ohne Geld. - Aus
image_urlbehält er höchstens 50 Bilder. Darüber lädtPUT /menukeine weiteren und warnt mitimages_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.
| Werkzeug | Was es tut | Wo |
|---|---|---|
| Testbestellungen | Zufä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 |
| Testreservierung | Eine 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 stornieren | Wie 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 Betrieb | Die 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 |
| Laden | Die 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 Betrieb | Eine 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 |
| Speisekarte | Die 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 |
| Ereignisse | Die 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ücksetzen | Löscht Bestellungen und Reservierungen und stellt Beispielkarte und Einstellungen wieder her. Tische und Verbindungen bleiben. Siehe Zurücksetzen. | Konsole › Test-Betrieb › Betrieb |
| Löschen | Lö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 erzeugen | Access- 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-Explorer | Jede 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-Protokoll | Jede 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 /eventskopieren, 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 mitmenu.*.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 Pausestore.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.
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.