conflictHTTP 409Der Zustand lässt das gerade nicht zu
Die Anfrage ist gültig gebaut, aber sie widerspricht dem, was schon da ist. Anders als 400 liegt es nicht an der Form der Anfrage, sondern am Zustand des Betriebs — dieselbe Anfrage kann eine Stunde später richtig sein.
Wiederholen?
Nein — unverändertes Wiederholen ergibt genau dieselbe Antwort. Die Anfrage muss sich ändern.
Woran es liegt
- Der gewünschte Tisch ist im gewünschten Zeitraum schon belegt.
- Eine Mailadresse gehört bereits einem anderen Gast.
- Ein Statuswechsel, den der aktuelle Status nicht erlaubt.
Was zu tun ist
`message` benennt den Widerspruch. Lesen Sie den aktuellen Stand, entscheiden Sie neu und schicken Sie dann eine andere Anfrage — unverändertes Wiederholen ergibt dasselbe Ergebnis.
Wo dieser Fehler entsteht
- POST /api/v1/reservationsDie Torwache lehnt aus einem Zustandsgrund ab: `closed`, `blocked`, `limit`, `capacity`, `advance` oder `table_conflict`.
- PATCH /api/v1/reservations/{id}Die neue Zeit ist nicht verfügbar oder einer der genannten Tische ist belegt.
- POST /api/v1/reservations/{id}/line-items/{itemId}/settleDie Position ist storniert (`reason: canceled`) oder schon mit einer anderen Nummer abgerechnet (`reason: other_reference`).
- POST /api/v1/table-occupanciesFür diesen Tisch gibt es bereits eine offene Belegung. Die Antwort nennt `occupancyId` — schliessen Sie erst diese.
- POST /api/v1/guestsZu dieser Mailadresse gibt es in diesem Betrieb bereits einen Gast. Suchen Sie ihn mit `GET /api/v1/guests?email=` und ändern Sie ihn.
- PATCH /api/v1/guests/{id}Die neue Mailadresse gehört bereits einem anderen Gast dieses Betriebs.
- POST /api/v1/marketing/listsEine Liste mit diesem Namen gibt es schon (`reason: "marketing-list-name-taken"`).
- PATCH /api/v1/marketing/lists/{id}Name vergeben (`marketing-list-name-taken`) oder eine Kampagne bestimmt gerade ihre Empfänger aus der Liste (`marketing-list-materializing`).
- DELETE /api/v1/marketing/lists/{id}Eine Kampagne oder Zeitplan-Automatisierung nutzt die Liste (`reason: "marketing-list-in-use"`, `usage` nennt sie).
- GET /api/v1/marketing/lists/{id}/guestsDie gespeicherten Bedingungen sind ungültig (`reason: "marketing-list-segment-invalid"`).
- DELETE /api/v1/marketing/templates/{id}Sie wird noch verwendet (`reason: "marketing-template-in-use"`, `usage`).
- PATCH /api/v1/marketing/campaigns/{id}Im Versand oder abgeschlossen (`marketing-campaign-not-editable`), Liste/Kanal nach Versandstart (`marketing-campaign-audience-locked`) oder gleichzeitig geändert (`marketing-campaign-changed`).
- DELETE /api/v1/marketing/campaigns/{id}Die Kampagne wird gerade versendet (`marketing-campaign-not-deletable`) — erst abbrechen.
- POST /api/v1/marketing/campaigns/{id}/sendSchon gestartet oder nicht versandbereit — der Grund steht in `reason`.
- POST /api/v1/marketing/campaigns/{id}/cancelDie Kampagne ist nicht geplant, laufend oder pausiert (`marketing-campaign-invalid-transition`).
- POST /api/v1/marketing/flowsDer Betrieb hat bereits 100 Automatisierungen (`reason: "marketing-flow-limit"`).
- POST /api/v1/marketing/flows/{id}/activateKeine Schritte (`marketing-flow-empty`), unvollständig (`marketing-flow-invalid`), fremder Verweis oder gleichzeitig geändert (`marketing-flow-conflict`).
- POST /api/v1/marketing/flows/{id}/pauseDie Automatisierung ist nicht aktiv (`marketing-flow-not-active`).