Flavoso APIGrundlagenRechte
Rechte
Neun Rechte steuern, was deine App darf. Schreiben schließt Lesen ein; Reservierungen gibt es ab dem Tarif Pro.
So funktionieren Rechte
Deine App trägt in der Konsole ein, welche Rechte sie anfragen darf, und fragt bei der Autorisierung mit scope nach, durch Leerzeichen getrennt. Der Inhaber sieht sie in Klartext und stimmt allen zu oder keinem.
Schreiben schließt Lesen ein: mit orders:write darf eine App Bestellungen auch lesen. Welche Rechte eine Verbindung hat, steht in der Antwort des Token-Endpunkts unter scope und in GET /me unter scopes.
Frag nur an, was deine App für ihren Zweck braucht. Genau das prüft die Freigabe, und ein Inhaber stimmt eher zu, wenn die Liste kurz ist.
Die neun Rechte
| Recht | Das liest der Inhaber | Was es freischaltet | Tarif |
|---|---|---|---|
orders:read | Bestellungen sehen | GET /orders, GET /orders/{id}; Ereignisse order.*. | jeder Tarif |
orders:write | Bestellungen annehmen, ablehnen und weiterschalten | Dazu annehmen, ablehnen, stornieren, weiterschalten und übernehmen: POST /orders/{id}/accept, reject, cancel, status und acknowledge. | jeder Tarif |
menu:read | Speisekarte sehen | GET /menu und die Listen der Karte; Ereignisse menu.*. | jeder Tarif |
menu:write | Speisekarte bearbeiten: Gerichte, Kategorien, Optionen, Preise und Verfügbarkeit | Dazu PUT /menu, POST /menu/availability und Anlegen, Ändern, Löschen von Kategorien, Gerichten, Optionsgruppen und Optionen. | jeder Tarif |
store:read | Öffnungszeiten, Status und Tische sehen | GET /store, Öffnungszeiten, Sondertage, GET /tables, GET /areas; Ereignisse store.*. | jeder Tarif |
store:write | Bestellannahme pausieren, Öffnungs- und Vorlaufzeiten ändern | Dazu Pause und Fortsetzen, PATCH /store, PUT /store/hours und Sondertage. | jeder Tarif |
reservations:read | Reservierungen sehen | GET /reservations, einzelne Reservierungen, freie Zeiten, dazu GET /tables und GET /areas, um table_ids aufzulösen; Ereignisse reservation.*. | ab Pro |
reservations:write | Reservierungen anlegen, bestätigen und ändern | Dazu anlegen, ändern und den Stand setzen. | ab Pro |
reports:read | Umsätze und Verkaufszahlen sehen | GET /reports/sales, GET /reports/products. | jeder Tarif |
Wenn ein Recht fehlt
Fehlt ein Recht, antwortet die Schnittstelle mit 403 insufficient_scope, und der Kopf WWW-Authenticate nennt das fehlende Recht. Das Recht bekommt die Verbindung nur, wenn der Inhaber deine App mit diesem Recht neu verbindet.
HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer realm="flavoso", error="insufficient_scope", scope="menu:write"
Content-Type: application/json
{
"error": {
"code": "insufficient_scope",
"message": "This connection lacks the 'menu:write' scope.",
"request_id": "req_4f0c2a9d1e7b3c5a8f6d2e10"
}
}Rechte und Ereignisse
Ein Ereignis zeigt Daten, also bekommt eine Verbindung es nur mit dem passenden Leserecht (oder dem Schreibrecht derselben Gruppe). Das gilt für Webhooks und für GET /events gleich.
| Ereignisse | Nötiges Recht |
|---|---|
order.* | orders:read |
reservation.* | reservations:read |
menu.* | menu:read |
store.* | store:read |
app.* | keins, nur die eigene Verbindung |
Rechte und Tarife
Die Schnittstelle gehört zu jedem Tarif und kostet nichts extra. Reservierungen gibt es ab dem Tarif Pro: in einem Betrieb mit Starter antworten die Routen der Reservierungen mit 403 plan_required, auch wenn die Verbindung das Recht hat. Der Zustimmungsbildschirm weist darauf hin, und GET /me nennt den Tarif unter plan.
Läuft das Abo eines Betriebs nicht, antworten alle Routen außer GET /me und DELETE /connection mit 403 account_inactive.
Rechte ändern
Die Rechte, die deine App anfragen darf, änderst du in der Konsole. Nach der Freigabe warten zusätzliche Rechte auf eine neue Prüfung; bis dahin gilt die geprüfte Liste.
Bestehende Verbindungen behalten ihre Rechte. Mehr Rechte bekommt eine Verbindung nur, wenn der Inhaber deine App mit dem neuen scope neu verbindet. Danach kommt app.scopes_changed mit previous_scopes.
Etwas unklar geblieben? Schreib an support@flavoso.com und nenne die Kennung aus X-Request-Id. Damit finden wir deine Anfrage im Protokoll.