Buchungen
Buchung stornieren
https://open-api.mynextdays.com/v1/reservations/{reservation_id}/cancelBeauftragt den Storno und antwortet mit 202.
Warum nicht sofort erledigt: ein Storno ist keine Statusänderung, sondern eine Kette — belegte Nächte freigeben, die Portale informieren, stornierende Partei und Grund festhalten, Stornogebühren und die Auszahlungs-Karenz rechnen, Protokollzeile schreiben. Diese Kette hat im Betriebssystem EINE Stelle mit sechs Aufrufern. Sie hier ein zweites Mal zu schreiben hiesse, sie zweimal richtig halten zu müssen — und der erste vergessene Schritt ist eine freigegebene Nacht, die kein Portal erfährt (Wurzel 1). Deshalb stellt dieser Endpunkt einen Auftrag, den diese eine Stelle abarbeitet.
Doppelte Aufrufe: der Auftrag wird über einen festen Schlüssel je
Buchung eingereiht. Zwei Aufrufe für dieselbe Buchung ergeben EINEN
Storno-Vorgang, nicht zwei (Wurzel 2). Ein Idempotency-Key ist erlaubt,
aber nicht nötig; er wird für die Wiedererkennung nicht gebraucht, weil die
Buchungs-ID den Vorgang schon eindeutig macht.
War sie schon storniert, antwortet der Aufruf mit already_cancelled
und ändert nichts.
Pfad-Parameter
reservation_idstringpflichtHeader
Idempotency-KeystringAnfrage-Körperpflicht
partystringpflichtWessen Sphäre storniert: gast (der Gast hat abgesagt), eigentuemer, agentur, betrieb (der Betrieb selbst), portal (die Absage kam über ein Portal zu uns), system.
reasonstringpflichtDer Grund im Klartext. Wird im Storno-Protokoll festgehalten.
reason_codestringKategorie ZUSÄTZLICH zum Freitext. Optional — nicht jeder Grund passt in eine Kategorie, und dann wird keine erfunden.
Antworten
cancelled_atdate-timeNur bei already_cancelled gesetzt: wann sie storniert wurde.
reservation_idstringpflichtstatusstringpflichtaccepted — der Auftrag ist eingereiht. already_cancelled — die Buchung war schon storniert; es passiert nichts weiter.
Sprache
Nur in diesem Browser, nur für „Ausprobieren“ — der Wert wird nicht gespeichert und nicht an uns geschickt.
curl -X POST 'https://open-api.mynextdays.com/v1/reservations/%3Creservation_id%3E/cancel' \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: 8f9a1c30-6b1e-4d2a-9f77-4e0c1b2d3a55' \
-d '{
"reason": "…",
"party": "gast"
}'Ohne Token antwortet der Aufruf mit 401 — das ist der erwartete Weg.
{
"reservation_id": "…",
"status": "accepted"
}