POST/api/v1/reservations/{id}/status
Den Zustand einer Reservierung wechseln — bestätigen, vormerken, stornieren, No-Show melden oder abschliessen.
Rechte
reservations:writeaction:reservations.statusAlle genannten Rechte zusammen, nicht wahlweise.
Plan-Merkmal reservations — fehlt es dem Betrieb, antwortet die Route mit 402 plan_upgrade_required.
Pfad
| Name | Typ | Bedeutung |
|---|---|---|
{id}Pflicht | UUID | Kennung der Reservierung. Eine fremde Kennung ergibt 404. |
Kopfzeilen
| Name | Typ | Bedeutung |
|---|---|---|
If-Match | ETag-Wert | Wechselt nur, wenn sich die Zeile seit Ihrem Lesen nicht geändert hat. Sonst 412 — sinnvoll, wenn zwischen Lesen und Melden Minuten liegen. |
Idempotency-Key | string bis 255 Zeichen | Freiwillig, aber richtig: die Wiederholung nach einem Netzabbruch bekommt dieselbe Antwort statt eines zweiten Gebühreneinzugs. |
Felder im Rumpf
| Name | Typ | Bedeutung |
|---|---|---|
statusPflicht | PENDING | CONFIRMED | OPTION | CANCELED | NOSHOW | COMPLETED | Der Zielzustand. `PENDING` = Anfrage liegt vor, unbeantwortet. `CONFIRMED` = Tisch ist zugesagt. `OPTION` = unverbindlich vorgemerkt, mit Zeitfenster. `CANCELED` = abgesagt, zählt NICHT gegen den Gast. `NOSHOW` = zugesagt und nicht erschienen; das zieht eine hinterlegte Gebühr ein und erhöht das betriebsübergreifende Risikoprofil eines echten Menschen — eine Fehlmeldung aus einem Fremdsystem ist deshalb teuer. `COMPLETED` = Gast war da, Vorgang abgeschlossen. Anders als beim Anlegen sind hier alle sechs Werte erlaubt. |
reason | string bis 500 Zeichen | Wird bei `CANCELED` als `cancelReason` festgehalten und steht danach im Dashboard. Bei anderen Zuständen ohne Wirkung. |
Mögliche Fehler
- forbidden_action — Dem Schlüssel fehlt `action:reservations.status`. Sie wird getrennt vom Schreibrecht vergeben.
- forbidden — Dem Schlüssel fehlt `reservations:write`.
- validation — Unbekannter Zustand, unbekanntes Feld im Rumpf oder ein Rumpf, der kein JSON ist.
- read_only_field — Der Rumpf enthält ein Feld, das der Server bestimmt.
- not_found — Die Kennung gehört zu keiner Reservierung dieses Betriebs.
- precondition_failed — `If-Match` passt nicht mehr.
- idempotency_key_reuse — Derselbe Schlüssel wurde bereits für eine andere Anfrage benutzt.
- Antwortet mit 200, `{ "reservation": …, "changed": true|false, "followUpCanceled": <id>|null }` und einem frischen `ETag`.
- `followUpCanceled` nennt die Kennung der mitstornierten Folgereservierung — bei verketteten Buchungen (Restaurant und danach Bar) sitzt der Gast sonst allein an der Bar.