2.8 KiB
2.8 KiB
Buchungskalender: API-Vertrag
Verbindlich für Strang 2 (Widget und Buchungsseite, bauen gegen die öffentliche Schnittstelle) und Strang 3 (Portal, baut gegen die Kunden-API). Task 6 bis 8 erfüllen ihn. Fehlerform überall { fehler: code, felder?: {feld: text} }.
Öffentlich (/api/public/unterkunft/v1)
GET /:siteKey→{ aktiv:true, anbieter:{ name, ort, datenschutzUrl }, akzentfarbe, formToken, unterkuenfte:[{ id, name, maxPersonen, mindestNaechte, checkIn, checkOut }] }oder{ aktiv:false }.GET /:siteKey/belegung?unterkunft=<id>&von=YYYY-MM-DD&bis=YYYY-MM-DD→{ belegt:[{von,bis}], heute:'YYYY-MM-DD', bisMax:'YYYY-MM-DD' }(Quellen nicht offengelegt).POST /:siteKey/anfrageBody{ unterkunft, von, bis, personen, name, firma, email, telefon, nachricht, formToken, kontakt_url }→201 { nummer }.GET /:siteKey/buchung/:id?t=→{ status, nummer, unterkunft:{name,checkIn,checkOut}, von, bis, naechte, personen, posten, summen, steuerart, fristAt, stornobedingungen, anbieter:{firma,inhaber,strasse,plz,ort,email,telefon}, gast:{name,firma}, rechnungsadresse?, zahlarten:['vorort'|'online'], zahlart?, bezahlt:boolean, rechnungNummer? }.POST /:siteKey/buchung/:id?t=Body{ rechnungsadresse:{name,firma,strasse,plz,ort,land}, zahlart }→{ status:'gebucht', rechnungNummer, zahlungUrl? }(beionlinedirekt Checkout-URL).POST /:siteKey/buchung/:id/zahlung?t=→{ url }.GET /:siteKey/buchung/:id/rechnung.pdf?t=&art=rechnung|storno→ PDF.
Kunde (/api/unterkunft, Session, ?projectId=)
GET /statusGET|PUT /einstellungenGET /unterkuenftePOST /unterkuenftePUT|DELETE /unterkuenfte/:idGET|PUT /unterkuenfte/:id/preiseGET /unterkuenfte/:id/kalender?von&bis→{ bereiche:[{von,bis,quelle,anfrageNummer?,sperreId?,notiz?}] }POST /unterkuenfte/:id/sperrenDELETE /sperren/:idPOST /unterkuenfte/:id/ical-importeDELETE /unterkuenfte/:id/ical-importe/:importIdPOST /unterkuenfte/:id/ical-export/erneuernGET /anfragen?filter=offen|gebucht|alleGET /anfragen/:id(inkl.vorschlag=berechnePreis)POST /anfragen/:id/freigeben{posten,fristTage,nachricht}POST /anfragen/:id/ablehnen{text}POST /anfragen/:id/bezahltPOST /anfragen/:id/stornieren{grund, erstattungCent}POST /preisvorschau{unterkunftId,von,bis,personen}GET /rechnungenGET /rechnungen/:id.pdf(nur Einzel-PDF, kein ZIP — Spec N7)POST /stripe/verbinden,POST /stripe/vorhandenes-konto,POST /stripe/aktualisierenPOST /anfrage-funktion{art,einheiten,portale,nachricht}POST /anfrage-funktion/zurueckziehen
Team (/api/team/unterkunft)
GET /:customerIdPOST /:customerId/anfrage{projectId, entscheidung, begruendung}