Files
Webklar-Kundenbereich/docs/funktionen/unterkunft-api.md
T

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/anfrage Body { 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? } (bei online direkt 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 /status
  • GET|PUT /einstellungen
  • GET /unterkuenfte
  • POST /unterkuenfte
  • PUT|DELETE /unterkuenfte/:id
  • GET|PUT /unterkuenfte/:id/preise
  • GET /unterkuenfte/:id/kalender?von&bis → { bereiche:[{von,bis,quelle,anfrageNummer?,sperreId?,notiz?}] }
  • POST /unterkuenfte/:id/sperren
  • DELETE /sperren/:id
  • POST /unterkuenfte/:id/ical-importe
  • DELETE /unterkuenfte/:id/ical-importe/:importId
  • POST /unterkuenfte/:id/ical-export/erneuern
  • GET /anfragen?filter=offen|gebucht|alle
  • GET /anfragen/:id (inkl. vorschlag = berechnePreis)
  • POST /anfragen/:id/freigeben {posten,fristTage,nachricht}
  • POST /anfragen/:id/ablehnen {text}
  • POST /anfragen/:id/bezahlt
  • POST /anfragen/:id/stornieren {grund, erstattungCent}
  • POST /preisvorschau {unterkunftId,von,bis,personen}
  • GET /rechnungen
  • GET /rechnungen/:id.pdf (nur Einzel-PDF, kein ZIP — Spec N7)
  • POST /stripe/verbinden, POST /stripe/vorhandenes-konto, POST /stripe/aktualisieren
  • POST /anfrage-funktion {art,einheiten,portale,nachricht}
  • POST /anfrage-funktion/zurueckziehen

Team (/api/team/unterkunft)

  • GET /:customerId
  • POST /:customerId/anfrage {projectId, entscheidung, begruendung}