{"openapi":"3.0.3","info":{"title":"NexTime Termine","version":"1","description":"Freie Zeiten finden, Termine anlegen, verschieben und absagen. Zeiten immer in deutscher Ortszeit. Zuerst /leistungen, dann /freie-zeiten, dann buchen."},"servers":[{"url":"https://nexaikalender.de/api/v1"}],"components":{"securitySchemes":{"schluessel":{"type":"http","scheme":"bearer"}},"schemas":{"Termine":{"type":"object","description":"Alle Termine und Sperrzeiten, auch abgesagte und solche im Papierkorb — mit Absage-, Verschiebe- und Bestätigungsangaben. Der feinere Verlauf je Termin steht im Änderungsprotokoll (protokoll.json, entity_id = Termin).","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"kind":{"description":"appointment = Termin, block = Sperrzeit","type":"string","enum":["appointment","block"]},"service_id":{"description":"Kennung der Leistung (siehe leistungen.json)","type":"string","format":"uuid","nullable":true},"service_name":{"description":"Name der Leistung zum Zeitpunkt der Buchung","type":"string","nullable":true},"duration_min":{"description":"Dauer in Minuten","type":"integer","nullable":true},"price_cents":{"description":"Preis in Cent","type":"integer","nullable":true},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid","nullable":true},"title":{"description":"Titel (bei Sperrzeiten und internen Terminen)","type":"string","nullable":true},"start_at":{"description":"Beginn (ISO 8601, UTC)","type":"string","format":"date-time"},"end_at":{"description":"Ende (ISO 8601, UTC)","type":"string","format":"date-time"},"status":{"description":"held = vorgemerkt, pending = offen, confirmed = bestätigt, cancelled = abgesagt, no_show = nicht erschienen, done = erledigt","type":"string","enum":["held","pending","confirmed","cancelled","no_show","done"]},"source":{"description":"Woher der Termin kam: Website, WhatsApp, Buchungslink, von Hand, Telefon, ohne Termin","type":"string","enum":["online_website","online_whatsapp","online_direct","manual","phone","walk_in"]},"expires_at":{"description":"Nur bei vorgemerkten Terminen: so lange ist die Zeit reserviert","type":"string","format":"date-time","nullable":true},"idempotency_key":{"description":"Kennung des anfragenden Systems gegen doppelte Buchungen","type":"string","nullable":true},"overlap_ok":{"description":"Überschneidung bewusst zugelassen","type":"boolean"},"import_uid":{"description":"Kennung aus einer eingelesenen Kalenderdatei (.ics)","type":"string","nullable":true},"customer_note":{"description":"Hinweis des Kontakts bei der Buchung","type":"string","nullable":true},"fragen_antworten":{"description":"Antworten auf die Fragen vor der Buchung","nullable":true},"notes":{"description":"Interne Notiz","type":"string","nullable":true},"location":{"description":"Ort des Termins","type":"string","nullable":true},"meeting_url":{"description":"Link zum Videoraum","type":"string","nullable":true},"buchungs_email":{"description":"E-Mail aus der Online-Buchung, wenn sie von der Kartei abweicht; Nachrichten zu diesem Termin gehen dorthin","type":"string","nullable":true},"color":{"description":"Farbe in der Anzeige","type":"string","nullable":true},"series_text":{"description":"Hinweis zur Wiederholung, wie angezeigt","type":"string","nullable":true},"idempotenz_schluessel":{"description":"Kennung gegen doppeltes Anlegen aus der Oberfläche","type":"string","nullable":true},"besuch_id":{"description":"Gemeinsame Kennung mehrerer Termine eines Besuchs; leer = einzelner Termin","type":"string","format":"uuid","nullable":true},"manage_token_expires_at":{"description":"Bis wann der Verwaltungslink des Kontakts gilt","type":"string","format":"date-time","nullable":true},"confirmed_at":{"description":"Bestätigt am","type":"string","format":"date-time","nullable":true},"zusage_kundin_at":{"description":"Der Kontakt hat über den Link zugesagt am","type":"string","format":"date-time","nullable":true},"cancelled_at":{"description":"Abgesagt am","type":"string","format":"date-time","nullable":true},"cancelled_by":{"description":"Abgesagt von: customer = Kontakt, owner = Betrieb, system = automatisch","type":"string","enum":["customer","owner","system"],"nullable":true},"cancel_reason":{"description":"Grund der Absage","type":"string","nullable":true},"rescheduled_from_id":{"description":"Kennung des Termins, aus dem dieser verschoben wurde","type":"string","format":"uuid","nullable":true},"series_id":{"description":"Kennung der Serie (siehe serien.json)","type":"string","format":"uuid","nullable":true},"deleted_at":{"description":"In den Papierkorb gelegt am; leer = nicht gelöscht","type":"string","format":"date-time","nullable":true},"client_tz":{"description":"Zeitzone des Geräts bei der Buchung (nur zur Fehlersuche)","type":"string","nullable":true},"created_by_user_id":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","staff_id","kind","service_id","service_name","duration_min","price_cents","customer_id","title","start_at","end_at","status","source","expires_at","idempotency_key","overlap_ok","import_uid","customer_note","fragen_antworten","notes","location","meeting_url","buchungs_email","color","series_text","idempotenz_schluessel","besuch_id","manage_token_expires_at","confirmed_at","zusage_kundin_at","cancelled_at","cancelled_by","cancel_reason","rescheduled_from_id","series_id","deleted_at","client_tz","created_by_user_id","created_at","updated_at"]},"TerminTeilnehmer":{"type":"object","description":"Wer aus dem Team zu einem Termin eingeladen ist und wie er geantwortet hat.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"appointment_id":{"description":"Kennung des Termins (siehe termine.json)","type":"string","format":"uuid"},"user_id":{"description":"Kennung des Zugangs (siehe zugaenge.json)","type":"string","format":"uuid"},"zusage":{"description":"offen, zugesagt oder abgesagt","type":"string"},"geantwortet_am":{"description":"Geantwortet am","type":"string","format":"date-time","nullable":true},"eingeladen_am":{"description":"Eingeladen am","type":"string","format":"date-time"},"eingeladen_von":{"description":"Kennung des Zugangs, der eingeladen hat","type":"string","format":"uuid","nullable":true}},"required":["id","appointment_id","user_id","zusage","geantwortet_am","eingeladen_am","eingeladen_von"]},"TerminMitwirkende":{"type":"object","description":"Termine, die mehrere Kalender zugleich belegen (etwa eine zweite Person oder einen Raum).","properties":{"appointment_id":{"description":"Kennung des Termins (siehe termine.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"}},"required":["appointment_id","staff_id"]},"Serien":{"type":"object","description":"Wiederkehrende Termine: die Regel, nach der neue Termine nachgefüllt werden.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"regel":{"description":"Wiederholungsregel (Takt, Wochentage, Ende)"},"letzter_tag":{"description":"Bis zu diesem Tag sind Termine angelegt","type":"string"},"uhrzeit":{"description":"Uhrzeit in deutscher Ortszeit (HH:MM)","type":"string"},"dauer_min":{"description":"Dauer in Minuten","type":"integer"},"beendet_at":{"description":"Serie beendet am; leer = läuft","type":"string","format":"date-time","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","staff_id","regel","letzter_tag","uhrzeit","dauer_min","beendet_at","created_at","updated_at"]},"Umfragen":{"type":"object","description":"Umfragen, mit denen mehrere Personen einen gemeinsamen Termin finden.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"erstellt_von":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"titel":{"description":"Titel","type":"string"},"dauer_min":{"description":"Dauer in Minuten","type":"integer"},"ort":{"description":"Ort","type":"string","nullable":true},"hinweis":{"description":"Hinweis an die Teilnehmenden","type":"string","nullable":true},"status":{"description":"offen, entschieden oder beendet (ohne Termin)","type":"string"},"gewaehlt_id":{"description":"Kennung des gewählten Vorschlags","type":"string","format":"uuid","nullable":true},"termin_id":{"description":"Kennung des Termins (siehe termine.json)","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"entschieden_at":{"description":"Entschieden am","type":"string","format":"date-time","nullable":true}},"required":["id","business_id","staff_id","erstellt_von","titel","dauer_min","ort","hinweis","status","gewaehlt_id","termin_id","created_at","entschieden_at"]},"UmfrageVorschlaege":{"type":"object","description":"Die Zeiten, die in einer Umfrage zur Wahl stehen.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"umfrage_id":{"description":"Kennung der Terminumfrage (siehe umfragen.json)","type":"string","format":"uuid"},"start_at":{"description":"Beginn (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","umfrage_id","start_at"]},"UmfrageTeilnehmer":{"type":"object","description":"Wer an einer Umfrage teilgenommen hat.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"umfrage_id":{"description":"Kennung der Terminumfrage (siehe umfragen.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"email":{"description":"E-Mail-Adresse","type":"string","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","umfrage_id","name","email","created_at","updated_at"]},"UmfrageStimmen":{"type":"object","description":"Die Antwort jeder Person zu jedem Vorschlag.","properties":{"teilnehmer_id":{"description":"Kennung der Person (siehe umfrage_teilnehmer.json)","type":"string","format":"uuid"},"vorschlag_id":{"description":"Kennung des Vorschlags (siehe umfrage_vorschlaege.json)","type":"string","format":"uuid"},"antwort":{"description":"ja, vielleicht oder nein","type":"string"}},"required":["teilnehmer_id","vorschlag_id","antwort"]},"Kunden":{"type":"object","description":"Die Kartei: alle Kontakte mit Anschrift, Geburtstag, Sprache und Sperr- oder Aufbewahrungsangaben.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"phone_e164":{"description":"Telefonnummer im internationalen Format (+49…)","type":"string"},"phone_raw":{"description":"Telefonnummer, wie eingegeben","type":"string","nullable":true},"email":{"description":"E-Mail-Adresse","type":"string","nullable":true},"street":{"description":"Straße und Hausnummer","type":"string","nullable":true},"zip":{"description":"Postleitzahl","type":"string","nullable":true},"city":{"description":"Ort","type":"string","nullable":true},"geburtstag":{"description":"Geburtstag (JJJJ-MM-TT)","type":"string","format":"date","nullable":true},"notes":{"description":"Interne Notiz","type":"string","nullable":true},"merged_into_id":{"description":"Mit diesem Kontakt zusammengeführt (Kennung); leer = eigenständig","type":"string","format":"uuid","nullable":true},"blocked_at":{"description":"Gesperrt am","type":"string","format":"date-time","nullable":true},"blocked_reason":{"description":"Grund der Sperre","type":"string","nullable":true},"email_invalid_at":{"description":"E-Mail-Adresse als unzustellbar erkannt am","type":"string","format":"date-time","nullable":true},"phone_invalid_at":{"description":"Telefonnummer als unerreichbar erkannt am","type":"string","format":"date-time","nullable":true},"consent_sms_at":{"description":"Einwilligung in SMS-Erinnerungen am (Nachweis in einwilligungen.json)","type":"string","format":"date-time","nullable":true},"aufbewahren_bis":{"description":"Länger aufbewahrt bis","type":"string","format":"date-time","nullable":true},"aufbewahren_grund":{"description":"Grund der längeren Aufbewahrung","type":"string","nullable":true},"sprache":{"description":"Sprache für Nachrichten (de oder en)","type":"string"},"anonymized_at":{"description":"Anonymisiert am","type":"string","format":"date-time","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","name","phone_e164","phone_raw","email","street","zip","city","geburtstag","notes","merged_into_id","blocked_at","blocked_reason","email_invalid_at","phone_invalid_at","consent_sms_at","aufbewahren_bis","aufbewahren_grund","sprache","anonymized_at","created_at","updated_at"]},"Einwilligungen":{"type":"object","description":"Wer wann wozu zugestimmt oder die Zustimmung widerrufen hat — der Nachweis.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid"},"art":{"description":"Wofür (etwa sms)","type":"string"},"richtung":{"description":"erteilt oder widerrufen","type":"string"},"wortlaut":{"description":"Der Satz, der dabei auf dem Bildschirm stand","type":"string","nullable":true},"fassung":{"description":"Fassung des Textes, als Datum","type":"string","nullable":true},"quelle":{"description":"Woher: Buchungsseite, von Hand, Verwaltungslink","type":"string"},"adresse":{"description":"Telefonnummer oder E-Mail-Adresse, für die zugestimmt wurde","type":"string","nullable":true},"zeitpunkt":{"description":"Zeitpunkt (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","customer_id","art","richtung","wortlaut","fassung","quelle","adresse","zeitpunkt"]},"KundenFotos":{"type":"object","description":"Angaben zu jedem Foto. Die Bilder selbst liegen im ZIP im Ordner fotos/.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid"},"art":{"description":"vorher, nachher oder sonstig","type":"string"},"notiz":{"description":"Notiz","type":"string","nullable":true},"erstellt_von":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","customer_id","art","notiz","erstellt_von","created_at"]},"Bewertungen":{"type":"object","description":"Rückmeldungen nach Terminen.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"appointment_id":{"description":"Kennung des Termins (siehe termine.json)","type":"string","format":"uuid"},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid","nullable":true},"sterne":{"description":"Sterne von 1 bis 5","type":"integer"},"text":{"description":"Text der Bewertung","type":"string","nullable":true},"weiter_at":{"description":"Weiter zur öffentlichen Bewertung bei Google am","type":"string","format":"date-time","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","appointment_id","customer_id","sterne","text","weiter_at","created_at"]},"Warteliste":{"type":"object","description":"Wer auf eine frei werdende Zeit wartet.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid","nullable":true},"name":{"description":"Name","type":"string"},"phone_e164":{"description":"Telefonnummer im internationalen Format (+49…)","type":"string"},"email":{"description":"E-Mail-Adresse","type":"string","nullable":true},"sprache":{"description":"Sprache für Nachrichten (de oder en)","type":"string"},"service_id":{"description":"Kennung der Leistung (siehe leistungen.json)","type":"string","format":"uuid","nullable":true},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid","nullable":true},"von_tag":{"description":"Erster Tag (JJJJ-MM-TT)","type":"string","format":"date"},"bis_tag":{"description":"Letzter Tag (JJJJ-MM-TT)","type":"string","format":"date"},"zeitfenster":{"description":"egal, vormittag oder nachmittag","type":"string"},"notiz":{"description":"Notiz","type":"string","nullable":true},"gemeldet_at":{"description":"Zuletzt über eine freie Zeit benachrichtigt am","type":"string","format":"date-time","nullable":true},"meldungen":{"description":"Wie oft schon benachrichtigt","type":"integer"},"erledigt_at":{"description":"Erledigt am","type":"string","format":"date-time","nullable":true},"erledigt_grund":{"description":"Grund der Erledigung","type":"string","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","customer_id","name","phone_e164","email","sprache","service_id","staff_id","von_tag","bis_tag","zeitfenster","notiz","gemeldet_at","meldungen","erledigt_at","erledigt_grund","created_at","updated_at"]},"Belege":{"type":"object","description":"Alle ausgestellten Belege mit den Angaben, wie sie auf dem Beleg stehen (Schnappschuss). Die PDFs liegen im ZIP im Ordner belege/.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"nummer":{"description":"Belegnummer","type":"string"},"belegdatum":{"description":"Belegdatum (JJJJ-MM-TT)","type":"string","format":"date"},"art":{"description":"leistung, gutschein (Verkauf), storno oder einloesung","type":"string"},"summe_cents":{"description":"Betrag in Cent","type":"integer"},"aussteller_name":{"description":"Aussteller: Name des Betriebs","type":"string"},"aussteller_inhaberin":{"description":"Aussteller: Inhaberin oder Inhaber","type":"string","nullable":true},"aussteller_strasse":{"description":"Aussteller: Straße","type":"string","nullable":true},"aussteller_plz":{"description":"Aussteller: Postleitzahl","type":"string","nullable":true},"aussteller_ort":{"description":"Aussteller: Ort","type":"string","nullable":true},"aussteller_steuernummer":{"description":"Aussteller: Steuernummer","type":"string","nullable":true},"aussteller_ust_id":{"description":"Aussteller: Umsatzsteuer-Identifikationsnummer","type":"string","nullable":true},"empfaenger_name":{"description":"Empfänger: Name","type":"string","nullable":true},"empfaenger_strasse":{"description":"Empfänger: Straße","type":"string","nullable":true},"empfaenger_plz":{"description":"Empfänger: Postleitzahl","type":"string","nullable":true},"empfaenger_ort":{"description":"Empfänger: Ort","type":"string","nullable":true},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid","nullable":true},"steuer_hinweis":{"description":"Steuerhinweis auf dem Beleg (etwa § 19 UStG)","type":"string"},"storniert_beleg_id":{"description":"Dieser Beleg storniert den Beleg mit dieser Kennung","type":"string","format":"uuid","nullable":true},"storniert_durch_id":{"description":"Storniert durch den Beleg mit dieser Kennung","type":"string","format":"uuid","nullable":true},"storno_grund":{"description":"Grund des Stornos","type":"string","nullable":true},"erstellt_von_user_id":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","nummer","belegdatum","art","summe_cents","aussteller_name","aussteller_inhaberin","aussteller_strasse","aussteller_plz","aussteller_ort","aussteller_steuernummer","aussteller_ust_id","empfaenger_name","empfaenger_strasse","empfaenger_plz","empfaenger_ort","customer_id","steuer_hinweis","storniert_beleg_id","storniert_durch_id","storno_grund","erstellt_von_user_id","created_at"]},"BelegPositionen":{"type":"object","description":"Jede Zeile auf einem Beleg.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"beleg_id":{"description":"Kennung des Belegs (siehe belege.json)","type":"string","format":"uuid"},"position":{"description":"Laufende Nummer auf dem Beleg","type":"integer"},"menge":{"description":"Menge","type":"integer"},"bezeichnung":{"description":"Bezeichnung","type":"string"},"einzel_cents":{"description":"Einzelpreis in Cent","type":"integer"},"summe_cents":{"description":"Betrag in Cent","type":"integer"},"termin_id":{"description":"Kennung des Termins (siehe termine.json)","type":"string","format":"uuid","nullable":true},"leistungsdatum":{"description":"Datum der Leistung (JJJJ-MM-TT)","type":"string","format":"date"}},"required":["id","beleg_id","position","menge","bezeichnung","einzel_cents","summe_cents","termin_id","leistungsdatum"]},"BelegNummernkreise":{"type":"object","description":"Die zuletzt vergebene Belegnummer je Jahr — für eine lückenlose Fortsetzung.","properties":{"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"jahr":{"description":"Jahr","type":"integer"},"letzte_nummer":{"description":"Zuletzt vergebene Nummer","type":"integer"}},"required":["business_id","jahr","letzte_nummer"]},"Gutscheine":{"type":"object","description":"Ausgegebene Gutscheine mit Wert und Restwert.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"nummer":{"description":"Gutscheinnummer","type":"string"},"wert_cents":{"description":"Ausgabewert in Cent","type":"integer"},"restwert_cents":{"description":"Restwert in Cent","type":"integer"},"gueltig_bis":{"description":"Gültig bis (JJJJ-MM-TT)","type":"string","format":"date","nullable":true},"ausgabe_beleg_id":{"description":"Kennung des Belegs, mit dem er verkauft wurde","type":"string","format":"uuid","nullable":true},"kaeufer_name":{"description":"Name der Käuferin oder des Käufers","type":"string","nullable":true},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid","nullable":true},"notiz":{"description":"Notiz","type":"string","nullable":true},"entwertet_at":{"description":"Entwertet am","type":"string","format":"date-time","nullable":true},"entwertet_grund":{"description":"Grund der Entwertung","type":"string","nullable":true},"erstellt_von_user_id":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","nummer","wert_cents","restwert_cents","gueltig_bis","ausgabe_beleg_id","kaeufer_name","customer_id","notiz","entwertet_at","entwertet_grund","erstellt_von_user_id","created_at"]},"GutscheinEinloesungen":{"type":"object","description":"Wann welcher Gutschein mit welchem Betrag auf welchem Beleg eingelöst wurde.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"gutschein_id":{"description":"Kennung des Gutscheins (siehe gutscheine.json)","type":"string","format":"uuid"},"beleg_id":{"description":"Kennung des Belegs (siehe belege.json)","type":"string","format":"uuid"},"betrag_cents":{"description":"Eingelöster Betrag in Cent","type":"integer"},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","gutschein_id","beleg_id","betrag_cents","created_at"]},"GutscheinNummernkreise":{"type":"object","description":"Die zuletzt vergebene Gutscheinnummer je Jahr.","properties":{"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"jahr":{"description":"Jahr","type":"integer"},"letzte_nummer":{"description":"Zuletzt vergebene Nummer","type":"integer"}},"required":["business_id","jahr","letzte_nummer"]},"Kalender":{"type":"object","description":"Die Kalender des Betriebs — je Person oder Raum einer.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"user_id":{"description":"Kennung des Zugangs (siehe zugaenge.json)","type":"string","format":"uuid","nullable":true},"color":{"description":"Farbe in der Anzeige","type":"string","nullable":true},"sort_order":{"description":"Reihenfolge in Listen (kleiner = weiter oben)","type":"integer"},"active":{"description":"In Gebrauch","type":"boolean"},"archived_at":{"description":"Archiviert am; leer = in Gebrauch","type":"string","format":"date-time","nullable":true},"standort_id":{"description":"Kennung des Standorts (siehe standorte.json)","type":"string","format":"uuid","nullable":true},"urlaubstage_jahr":{"description":"Urlaubstage im Jahr","type":"integer","nullable":true},"provision_prozent":{"description":"Provision in Prozent (nur zur Auswertung)","type":"integer","nullable":true},"buchungsseite_an":{"description":"Auf der Buchungsseite wählbar","type":"boolean"},"buchungsseite_leistungen":{"description":"Kennungen der Leistungen, die über die Buchungsseite zu diesem Kalender gehen","type":"array","items":{"type":"string"}},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","name","user_id","color","sort_order","active","archived_at","standort_id","urlaubstage_jahr","provision_prozent","buchungsseite_an","buchungsseite_leistungen","created_at","updated_at"]},"Leistungen":{"type":"object","description":"Was gebucht werden kann, mit Dauer, Puffern, Preis und Buchungsregeln.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"category":{"description":"Gruppe","type":"string","nullable":true},"description":{"description":"Beschreibung","type":"string","nullable":true},"duration_min":{"description":"Dauer in Minuten","type":"integer"},"buffer_before_min":{"description":"Puffer davor in Minuten","type":"integer"},"buffer_after_min":{"description":"Puffer danach in Minuten","type":"integer"},"price_cents":{"description":"Preis in Cent","type":"integer","nullable":true},"price_from":{"description":"Preis ist ein Ab-Preis","type":"boolean"},"color":{"description":"Farbe in der Anzeige","type":"string","nullable":true},"online_bookable":{"description":"Online buchbar","type":"boolean"},"lead_minutes":{"description":"Mindestvorlauf in Minuten; leer = Wert des Betriebs","type":"integer","nullable":true},"horizon_days":{"description":"So viele Tage im Voraus buchbar; leer = Wert des Betriebs","type":"integer","nullable":true},"sort_order":{"description":"Reihenfolge in Listen (kleiner = weiter oben)","type":"integer"},"fragen":{"description":"Fragen vor der Buchung"},"video":{"description":"Videotermin (bekommt einen Link zum Raum)","type":"boolean"},"kapazitaet":{"description":"Plätze gleichzeitig (1 = gewöhnlich)","type":"integer"},"archived_at":{"description":"Archiviert am; leer = in Gebrauch","type":"string","format":"date-time","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","name","category","description","duration_min","buffer_before_min","buffer_after_min","price_cents","price_from","color","online_bookable","lead_minutes","horizon_days","sort_order","fragen","video","kapazitaet","archived_at","created_at","updated_at"]},"KalenderLeistungen":{"type":"object","description":"Welcher Kalender welche Leistung anbietet, mit abweichender Dauer oder abweichendem Preis.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"service_id":{"description":"Kennung der Leistung (siehe leistungen.json)","type":"string","format":"uuid"},"duration_min_override":{"description":"Abweichende Dauer in Minuten","type":"integer","nullable":true},"price_cents_override":{"description":"Abweichender Preis in Cent","type":"integer","nullable":true}},"required":["id","staff_id","service_id","duration_min_override","price_cents_override"]},"LeistungRessourcen":{"type":"object","description":"Welche Leistung zusätzlich einen Raum oder ein Gerät belegt.","properties":{"service_id":{"description":"Kennung der Leistung (siehe leistungen.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"}},"required":["service_id","staff_id"]},"Oeffnungszeiten":{"type":"object","description":"Die regelmäßigen Zeiten je Kalender und Wochentag.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"weekday":{"description":"Wochentag (0 = Sonntag, 1 = Montag … 6 = Samstag)","type":"integer"},"windows":{"description":"Zeitfenster als Liste von {von, bis} in deutscher Ortszeit (HH:MM)"},"valid_from":{"description":"Gilt ab (JJJJ-MM-TT); leer = schon immer","type":"string","format":"date","nullable":true},"valid_until":{"description":"Gilt bis (JJJJ-MM-TT); leer = unbegrenzt","type":"string","format":"date","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","staff_id","weekday","windows","valid_from","valid_until","created_at","updated_at"]},"Ausnahmen":{"type":"object","description":"Geschlossene Tage, zusätzliche oder geänderte Zeiten.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"from_date":{"description":"Erster Tag (JJJJ-MM-TT)","type":"string","format":"date"},"to_date":{"description":"Letzter Tag (JJJJ-MM-TT)","type":"string","format":"date"},"type":{"description":"closed = geschlossen, extra_open = zusätzlich offen, modified = geänderte Zeiten","type":"string","enum":["closed","extra_open","modified"]},"windows":{"description":"Zeitfenster als Liste von {von, bis} in deutscher Ortszeit (HH:MM)"},"reason":{"description":"Grund","type":"string","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","staff_id","from_date","to_date","type","windows","reason","created_at","updated_at"]},"Feiertage":{"type":"object","description":"Feiertage, an denen der Betrieb anders als üblich offen oder geschlossen ist.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"day":{"description":"Tag (JJJJ-MM-TT)","type":"string","format":"date"},"open":{"description":"Geöffnet","type":"boolean"},"note":{"description":"Notiz","type":"string","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","day","open","note","created_at"]},"Abwesenheiten":{"type":"object","description":"Urlaub und Abwesenheit je Kalender.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"von_tag":{"description":"Erster Tag (JJJJ-MM-TT)","type":"string","format":"date"},"bis_tag":{"description":"Letzter Tag (JJJJ-MM-TT)","type":"string","format":"date"},"art":{"description":"urlaub oder abwesend","type":"string"},"status":{"description":"beantragt, genehmigt, abgelehnt oder zurueckgezogen","type":"string"},"tage":{"description":"Anzahl Urlaubstage","type":"integer","nullable":true},"beantragt_von":{"description":"Kennung des Zugangs, der beantragt hat","type":"string","format":"uuid","nullable":true},"entschieden_von":{"description":"Kennung des Zugangs, der entschieden hat","type":"string","format":"uuid","nullable":true},"entschieden_at":{"description":"Entschieden am","type":"string","format":"date-time","nullable":true},"override_id":{"description":"Kennung der zugehörigen Ausnahme (siehe ausnahmen.json)","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","staff_id","von_tag","bis_tag","art","status","tage","beantragt_von","entschieden_von","entschieden_at","override_id","created_at","updated_at"]},"Standorte":{"type":"object","description":"Standorte mit Anschrift.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"street":{"description":"Straße und Hausnummer","type":"string","nullable":true},"zip":{"description":"Postleitzahl","type":"string","nullable":true},"city":{"description":"Ort","type":"string","nullable":true},"phone":{"description":"Telefonnummer","type":"string","nullable":true},"sort_order":{"description":"Reihenfolge in Listen (kleiner = weiter oben)","type":"integer"},"archived_at":{"description":"Archiviert am; leer = in Gebrauch","type":"string","format":"date-time","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","name","street","zip","city","phone","sort_order","archived_at","created_at","updated_at"]},"Zugaenge":{"type":"object","description":"Wer sich anmelden darf, mit Rolle. Ohne Passwort und zweiten Faktor.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"email":{"description":"E-Mail-Adresse","type":"string"},"name":{"description":"Name","type":"string"},"role":{"description":"inhaberin = Leitung, helfer = Hilfe (springt ein), mitarbeit = eingeschränkt","type":"string","enum":["inhaberin","helfer","mitarbeit"]},"active":{"description":"Eingeschaltet","type":"boolean"},"must_change_password":{"description":"Muss beim nächsten Anmelden ein eigenes Passwort vergeben","type":"boolean"},"last_login_at":{"description":"Zuletzt angemeldet am","type":"string","format":"date-time","nullable":true},"totp_aktiv_at":{"description":"Zweiter Faktor eingerichtet am; leer = keiner","type":"string","format":"date-time","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","email","name","role","active","must_change_password","last_login_at","totp_aktiv_at","created_at","updated_at"]},"Freigaben":{"type":"object","description":"Wer welchen Kalender in welcher Stufe sieht.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"user_id":{"description":"Kennung des Zugangs (siehe zugaenge.json)","type":"string","format":"uuid"},"stufe":{"description":"belegt = nur belegt, sehen, bearbeiten, aendern","type":"string"},"google_details":{"description":"Termine aus der Google-Anbindung mit Titel zeigen","type":"boolean"},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"created_by":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true}},"required":["id","staff_id","user_id","stufe","google_details","created_at","created_by"]},"Kalendernamen":{"type":"object","description":"Wie ein Zugang einen fremden Kalender für sich benannt und eingefärbt hat.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"user_id":{"description":"Kennung des Zugangs (siehe zugaenge.json)","type":"string","format":"uuid"},"bezeichnung":{"description":"Eigener Name","type":"string","nullable":true},"farbe":{"description":"Eigene Farbe","type":"string","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","staff_id","user_id","bezeichnung","farbe","created_at","updated_at"]},"FreigabeLinks":{"type":"object","description":"Links, mit denen ein Kalender freigegeben wurde.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"stufe":{"description":"Stufe, die der Link gewährt","type":"string"},"created_by":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"gueltig_bis":{"description":"Gültig bis","type":"string","format":"date-time"},"eingeloest_at":{"description":"Eingelöst am","type":"string","format":"date-time","nullable":true},"eingeloest_von":{"description":"Kennung des Zugangs, der ihn eingelöst hat","type":"string","format":"uuid","nullable":true},"zurueckgezogen_at":{"description":"Zurückgezogen am","type":"string","format":"date-time","nullable":true}},"required":["id","business_id","staff_id","stufe","created_by","created_at","gueltig_bis","eingeloest_at","eingeloest_von","zurueckgezogen_at"]},"Nachrichten":{"type":"object","description":"Jede gesendete, geplante oder gescheiterte Nachricht (E-Mail, SMS, Push).","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"appointment_id":{"description":"Kennung des Termins (siehe termine.json)","type":"string","format":"uuid","nullable":true},"customer_id":{"description":"Kennung des Kontakts (siehe kunden.json)","type":"string","format":"uuid","nullable":true},"user_id":{"description":"Kennung des Zugangs (siehe zugaenge.json)","type":"string","format":"uuid","nullable":true},"channel":{"description":"email, sms oder push","type":"string","enum":["email","sms","push"]},"kind":{"description":"Anlass (Bestätigung, Erinnerung, Absage, Verschiebung, Einladung, Bewertungsbitte, Warteliste, Werbung …)","type":"string","enum":["confirmation","reminder","cancellation_by_customer","cancellation_by_owner","reschedule","owner_new_booking","daily_digest","einladung","antwort_zugesagt","antwort_abgesagt","bewertung_bitte","warteliste_frei","werbung","werbung_bestaetigen","hinweis_andere_adresse"]},"recipient":{"description":"Empfänger (E-Mail-Adresse oder Telefonnummer)","type":"string","nullable":true},"subject":{"description":"Betreff","type":"string","nullable":true},"body":{"description":"Text (Links zum Verwalten eines Termins und zum Bestätigen oder Abbestellen der Neuigkeiten unkenntlich: [entfernt])","type":"string"},"attachment_name":{"description":"Name des Anhangs","type":"string","nullable":true},"scheduled_for":{"description":"Geplant für","type":"string","format":"date-time"},"claimed_at":{"description":"Versand begonnen am","type":"string","format":"date-time","nullable":true},"sent_at":{"description":"Gesendet am","type":"string","format":"date-time","nullable":true},"zugestellt_at":{"description":"Zugestellt am","type":"string","format":"date-time","nullable":true},"seen_at":{"description":"Gelesen am","type":"string","format":"date-time","nullable":true},"failed_at":{"description":"Gescheitert am","type":"string","format":"date-time","nullable":true},"cancelled_at":{"description":"Nicht mehr gesendet (abgebrochen) am","type":"string","format":"date-time","nullable":true},"attempts":{"description":"Versuche","type":"integer"},"last_error":{"description":"Letzte Fehlermeldung","type":"string","nullable":true},"provider_message_id":{"description":"Kennung beim Versanddienst","type":"string","nullable":true},"aussendung_id":{"description":"Kennung des Rundschreibens (siehe aussendungen.json)","type":"string","format":"uuid","nullable":true},"dedupe_key":{"description":"Kennung gegen doppelten Versand","type":"string"},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","appointment_id","customer_id","user_id","channel","kind","recipient","subject","body","attachment_name","scheduled_for","claimed_at","sent_at","zugestellt_at","seen_at","failed_at","cancelled_at","attempts","last_error","provider_message_id","aussendung_id","dedupe_key","created_at"]},"Aussendungen":{"type":"object","description":"Nachrichten an viele Kontakte auf einmal.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"betreff":{"description":"Betreff","type":"string"},"text":{"description":"Text","type":"string"},"empfaenger":{"description":"Anzahl Empfängerinnen beim Abschicken","type":"integer"},"erstellt_von":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","betreff","text","empfaenger","erstellt_von","created_at"]},"Protokoll":{"type":"object","description":"Wer wann was geändert hat — auch der Verlauf je Termin.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"actor_type":{"description":"user = Zugang, customer = Kontakt, system = automatisch oder Schnittstelle","type":"string","enum":["user","customer","system"]},"actor_user_id":{"description":"Kennung des Zugangs (bei actor_type user)","type":"string","format":"uuid","nullable":true},"actor_label":{"description":"Name, wie er im Protokoll steht","type":"string","nullable":true},"action":{"description":"Was geschah (etwa termin.abgesagt)","type":"string"},"entity_type":{"description":"Art des betroffenen Eintrags (etwa appointment)","type":"string","nullable":true},"entity_id":{"description":"Kennung des betroffenen Eintrags","type":"string","format":"uuid","nullable":true},"changes":{"description":"Was sich geändert hat","nullable":true},"ip":{"description":"IP-Adresse der Anfrage — bei Abrufen über die Schnittstelle (schnittstelle.abruf) nach 90 Tagen geleert; die Zeile selbst bleibt 24 Monate","type":"string","nullable":true},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","actor_type","actor_user_id","actor_label","action","entity_type","entity_id","changes","ip","created_at"]},"Betrieb":{"type":"object","description":"Stammdaten und alle Einstellungen. Das Logo liegt im ZIP als Datei daten/logo.*.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"slug":{"description":"Kurzname in der Adresse der Buchungsseite","type":"string"},"name":{"description":"Name","type":"string"},"street":{"description":"Straße und Hausnummer","type":"string","nullable":true},"zip":{"description":"Postleitzahl","type":"string","nullable":true},"city":{"description":"Ort","type":"string","nullable":true},"phone":{"description":"Telefonnummer","type":"string","nullable":true},"email":{"description":"E-Mail-Adresse","type":"string","nullable":true},"website":{"description":"Webseite","type":"string","nullable":true},"logo_path":{"description":"Pfad zum Logo (ältere Ablage)","type":"string","nullable":true},"accent_color":{"description":"Akzentfarbe","type":"string","nullable":true},"imprint_url":{"description":"Adresse des Impressums","type":"string","nullable":true},"privacy_url":{"description":"Adresse der Datenschutzerklärung","type":"string","nullable":true},"owner_name":{"description":"Inhaberin oder Inhaber","type":"string","nullable":true},"vat_id":{"description":"Umsatzsteuer-Identifikationsnummer","type":"string","nullable":true},"tax_number":{"description":"Steuernummer","type":"string","nullable":true},"sms_sender_number":{"description":"Eigene Absendernummer für SMS","type":"string","nullable":true},"sms_sender_verified_at":{"description":"Absendernummer bestätigt am","type":"string","format":"date-time","nullable":true},"settings":{"description":"Alle Einstellungen des Betriebs (Buchungsregeln, Nachrichten, Darstellung …)"},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","slug","name","street","zip","city","phone","email","website","logo_path","accent_color","imprint_url","privacy_url","owner_name","vat_id","tax_number","sms_sender_number","sms_sender_verified_at","settings","created_at","updated_at"]},"Schluessel":{"type":"object","description":"Welche Schlüssel es gab, wer sie angelegt hat und wann sie zuletzt benutzt wurden. Ohne die Schlüssel selbst.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"praefix":{"description":"Die ersten Zeichen, zum Wiedererkennen","type":"string"},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"created_by":{"description":"Kennung des Zugangs, der es angelegt hat","type":"string","format":"uuid","nullable":true},"last_used_at":{"description":"Zuletzt benutzt am","type":"string","format":"date-time","nullable":true},"revoked_at":{"description":"Widerrufen am; leer = gültig","type":"string","format":"date-time","nullable":true},"bereiche":{"description":"Leserechte je Bereich; leer = Termine buchen und verwalten (Website, n8n, Agenten)","nullable":true}},"required":["id","business_id","name","praefix","created_at","created_by","last_used_at","revoked_at","bereiche"]},"Rueckrufe":{"type":"object","description":"Adressen, die bei Änderungen an Terminen benachrichtigt werden. Ohne das Signatur-Geheimnis.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"url":{"description":"Adresse","type":"string"},"ereignisse":{"description":"Bei welchen Ereignissen"},"active":{"description":"Eingeschaltet","type":"boolean"},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"last_ok_at":{"description":"Zuletzt erfolgreich am","type":"string","format":"date-time","nullable":true},"last_error":{"description":"Letzte Fehlermeldung","type":"string","nullable":true},"fehler_serie":{"description":"Fehlschläge in Folge","type":"integer"}},"required":["id","business_id","name","url","ereignisse","active","created_at","last_ok_at","last_error","fehler_serie"]},"Fremdkalender":{"type":"object","description":"Google-, Outlook- oder Apple-Kalender, deren Termine hier die Zeit sperren. Ohne die geheime Kalenderadresse; die Termine selbst stehen im angebundenen Kalender.","properties":{"id":{"description":"Kennung dieser Zeile (UUID). Andere Dateien verweisen über …_id darauf.","type":"string","format":"uuid"},"business_id":{"description":"Kennung des Betriebs (siehe betrieb.json)","type":"string","format":"uuid"},"staff_id":{"description":"Kennung des Kalenders — einer Person oder eines Raums (siehe kalender.json)","type":"string","format":"uuid"},"name":{"description":"Name","type":"string"},"rechner":{"description":"Rechnername der Quelle (etwa calendar.google.com)","type":"string"},"abgerufen_at":{"description":"Zuletzt abgerufen am","type":"string","format":"date-time","nullable":true},"erfolg_at":{"description":"Zuletzt erfolgreich am","type":"string","format":"date-time","nullable":true},"fehler":{"description":"Letzte Fehlermeldung","type":"string","nullable":true},"belegungen":{"description":"Anzahl übernommener Belegungen","type":"integer"},"uebersprungen":{"description":"Anzahl übersprungener Einträge","type":"integer"},"mit_titel":{"description":"Titel werden übernommen","type":"boolean"},"created_at":{"description":"Angelegt am (ISO 8601, UTC)","type":"string","format":"date-time"},"updated_at":{"description":"Zuletzt geändert am (ISO 8601, UTC)","type":"string","format":"date-time"}},"required":["id","business_id","staff_id","name","rechner","abgerufen_at","erfolg_at","fehler","belegungen","uebersprungen","mit_titel","created_at","updated_at"]}}},"security":[{"schluessel":[]}],"paths":{"/leistungen":{"get":{"operationId":"leistungenAuflisten","summary":"Welche Leistungen es gibt, wie lange sie dauern, was sie kosten, wer sie anbietet und an welchem Standort.","responses":{"200":{"description":"Leistungen und Standorte"},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/freie-zeiten":{"get":{"operationId":"freieZeitenFinden","summary":"Freie Zeiten für eine Leistung. Ohne kalenderId über alle, die sie anbieten; jede Zeit nennt kalenderId. Ab zwei Standorten ist standortId Pflicht.","parameters":[{"name":"von","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-20"}},{"name":"bis","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-20"},"description":"höchstens 92 Tage nach von"},{"name":"leistungId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"kalenderId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"standortId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Tage mit freien Zeiten (zeit, start, ende, kalenderId)"},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/termine":{"get":{"operationId":"termineSuchen","summary":"Termine im Zeitraum — mit telefon nur die dieser Nummer (etwa die des Anrufers).","parameters":[{"name":"von","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-20"}},{"name":"bis","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-20"}},{"name":"telefon","in":"query","required":false,"schema":{"type":"string","example":"+4917612345678"}}],"responses":{"200":{"description":"Termine"},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}},"post":{"operationId":"terminAnlegen","summary":"Termin buchen. Nur Zeiten aus /freie-zeiten gehen durch (sonst 422); inzwischen belegt → 409, dann neue Zeiten holen. Mit kunde geht die Bestätigung an ihn.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["datum","start","dauerMin"],"properties":{"datum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-20"},"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$","example":"14:30"},"dauerMin":{"type":"integer","example":30},"leistungId":{"type":"string","format":"uuid"},"kalenderId":{"type":"string","format":"uuid","description":"aus /freie-zeiten; leer = wer frei ist"},"standortId":{"type":"string","format":"uuid"},"kunde":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"telefon":{"type":"string"},"email":{"type":"string"}}},"kundenNotiz":{"type":"string","description":"Anliegen des Kontakts — keine Gesundheitsangaben"},"auftragId":{"type":"string","description":"Eigene Kennung, etwa die des Anrufs: zweimal geschickt, ein Termin"}}}}}},"responses":{"201":{"description":"Angelegt"},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"409":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"422":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/termine/{id}":{"patch":{"operationId":"terminVerschieben","summary":"Termin verschieben oder ändern. Neue Zeit vorher über /freie-zeiten prüfen.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"datum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-20"},"start":{"type":"string","example":"15:00"},"dauerMin":{"type":"integer"}}}}}},"responses":{"200":{"description":"Geändert"},"404":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"409":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"422":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}},"delete":{"operationId":"terminAbsagen","summary":"Termin absagen. Vorher vorlesen und bestätigen lassen.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Abgesagt"},"404":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/datenpaket.json":{"get":{"operationId":"datenpaketBeschreibung","summary":"Beschreibung des Datenpakets: jede Datei, jedes Feld, Typ und Bedeutung. Ohne Schlüssel lesbar.","security":[],"responses":{"200":{"description":"Die Paketbeschreibung (wie /datenformate)"}}}},"/daten":{"get":{"operationId":"datenDateien","summary":"Nur mit Leseschlüssel: welche Dateien dieser Schlüssel lesen darf. Jeder Abruf steht im Änderungsprotokoll des Betriebs.","responses":{"200":{"description":"Bereiche des Schlüssels und Dateien mit Adresse"},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/termine":{"get":{"operationId":"datenTermine","summary":"Termine — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus termine","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Termine"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/termin_teilnehmer":{"get":{"operationId":"datenTerminTeilnehmer","summary":"Eingeladene zu Terminen — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus termin_teilnehmer","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/TerminTeilnehmer"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/termin_mitwirkende":{"get":{"operationId":"datenTerminMitwirkende","summary":"Weitere Kalender je Termin — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus termin_mitwirkende","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/TerminMitwirkende"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/serien":{"get":{"operationId":"datenSerien","summary":"Serien — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus serien","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Serien"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/umfragen":{"get":{"operationId":"datenUmfragen","summary":"Terminumfragen — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus umfragen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Umfragen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/umfrage_vorschlaege":{"get":{"operationId":"datenUmfrageVorschlaege","summary":"Vorschläge in Terminumfragen — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus umfrage_vorschlaege","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/UmfrageVorschlaege"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/umfrage_teilnehmer":{"get":{"operationId":"datenUmfrageTeilnehmer","summary":"Teilnehmende an Terminumfragen — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus umfrage_teilnehmer","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/UmfrageTeilnehmer"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/umfrage_stimmen":{"get":{"operationId":"datenUmfrageStimmen","summary":"Stimmen in Terminumfragen — nur mit Leseschlüssel für den Bereich „Termine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus umfrage_stimmen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/UmfrageStimmen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/kunden":{"get":{"operationId":"datenKunden","summary":"Kontakte — nur mit Leseschlüssel für den Bereich „Kundenkartei“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus kunden","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Kunden"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/einwilligungen":{"get":{"operationId":"datenEinwilligungen","summary":"Einwilligungen — nur mit Leseschlüssel für den Bereich „Kundenkartei“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus einwilligungen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Einwilligungen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/kunden_fotos":{"get":{"operationId":"datenKundenFotos","summary":"Fotos in der Kartei — nur mit Leseschlüssel für den Bereich „Kundenkartei“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus kunden_fotos","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/KundenFotos"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/bewertungen":{"get":{"operationId":"datenBewertungen","summary":"Bewertungen — nur mit Leseschlüssel für den Bereich „Kundenkartei“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus bewertungen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Bewertungen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/warteliste":{"get":{"operationId":"datenWarteliste","summary":"Warteliste — nur mit Leseschlüssel für den Bereich „Kundenkartei“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus warteliste","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Warteliste"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/belege":{"get":{"operationId":"datenBelege","summary":"Belege — nur mit Leseschlüssel für den Bereich „Belege und Gutscheine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus belege","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Belege"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/beleg_positionen":{"get":{"operationId":"datenBelegPositionen","summary":"Belegpositionen — nur mit Leseschlüssel für den Bereich „Belege und Gutscheine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus beleg_positionen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/BelegPositionen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/beleg_nummernkreise":{"get":{"operationId":"datenBelegNummernkreise","summary":"Belegnummern je Jahr — nur mit Leseschlüssel für den Bereich „Belege und Gutscheine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus beleg_nummernkreise","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/BelegNummernkreise"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/gutscheine":{"get":{"operationId":"datenGutscheine","summary":"Gutscheine — nur mit Leseschlüssel für den Bereich „Belege und Gutscheine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus gutscheine","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Gutscheine"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/gutschein_einloesungen":{"get":{"operationId":"datenGutscheinEinloesungen","summary":"Gutschein-Einlösungen — nur mit Leseschlüssel für den Bereich „Belege und Gutscheine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus gutschein_einloesungen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/GutscheinEinloesungen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/gutschein_nummernkreise":{"get":{"operationId":"datenGutscheinNummernkreise","summary":"Gutscheinnummern je Jahr — nur mit Leseschlüssel für den Bereich „Belege und Gutscheine“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus gutschein_nummernkreise","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/GutscheinNummernkreise"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/kalender":{"get":{"operationId":"datenKalender","summary":"Kalender — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus kalender","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Kalender"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/leistungen":{"get":{"operationId":"datenLeistungen","summary":"Leistungen — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus leistungen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Leistungen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/kalender_leistungen":{"get":{"operationId":"datenKalenderLeistungen","summary":"Leistungen je Kalender — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus kalender_leistungen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/KalenderLeistungen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/leistung_ressourcen":{"get":{"operationId":"datenLeistungRessourcen","summary":"Räume und Geräte je Leistung — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus leistung_ressourcen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/LeistungRessourcen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/oeffnungszeiten":{"get":{"operationId":"datenOeffnungszeiten","summary":"Öffnungszeiten — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus oeffnungszeiten","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Oeffnungszeiten"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/ausnahmen":{"get":{"operationId":"datenAusnahmen","summary":"Ausnahmen von den Öffnungszeiten — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus ausnahmen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Ausnahmen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/feiertage":{"get":{"operationId":"datenFeiertage","summary":"Abweichungen an Feiertagen — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus feiertage","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Feiertage"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/abwesenheiten":{"get":{"operationId":"datenAbwesenheiten","summary":"Abwesenheiten — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus abwesenheiten","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Abwesenheiten"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/standorte":{"get":{"operationId":"datenStandorte","summary":"Standorte — nur mit Leseschlüssel für den Bereich „Kalender und Zeiten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus standorte","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Standorte"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/zugaenge":{"get":{"operationId":"datenZugaenge","summary":"Zugänge — nur mit Leseschlüssel für den Bereich „Zugänge und Freigaben“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus zugaenge","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Zugaenge"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/freigaben":{"get":{"operationId":"datenFreigaben","summary":"Kalenderfreigaben — nur mit Leseschlüssel für den Bereich „Zugänge und Freigaben“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus freigaben","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Freigaben"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/kalendernamen":{"get":{"operationId":"datenKalendernamen","summary":"Eigene Kalendernamen — nur mit Leseschlüssel für den Bereich „Zugänge und Freigaben“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus kalendernamen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Kalendernamen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/freigabe_links":{"get":{"operationId":"datenFreigabeLinks","summary":"Freigabe-Links — nur mit Leseschlüssel für den Bereich „Zugänge und Freigaben“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus freigabe_links","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/FreigabeLinks"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/nachrichten":{"get":{"operationId":"datenNachrichten","summary":"Nachrichten — nur mit Leseschlüssel für den Bereich „Nachrichten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus nachrichten","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Nachrichten"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/aussendungen":{"get":{"operationId":"datenAussendungen","summary":"Rundschreiben — nur mit Leseschlüssel für den Bereich „Nachrichten“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus aussendungen","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Aussendungen"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/protokoll":{"get":{"operationId":"datenProtokoll","summary":"Änderungsprotokoll — nur mit Leseschlüssel für den Bereich „Änderungsprotokoll“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus protokoll","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Protokoll"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/betrieb":{"get":{"operationId":"datenBetrieb","summary":"Betrieb — nur mit Leseschlüssel für den Bereich „Betrieb und Anbindungen“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus betrieb","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Betrieb"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/schluessel":{"get":{"operationId":"datenSchluessel","summary":"Zugangsschlüssel der Schnittstelle — nur mit Leseschlüssel für den Bereich „Betrieb und Anbindungen“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus schluessel","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Schluessel"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/rueckrufe":{"get":{"operationId":"datenRueckrufe","summary":"Rückrufe — nur mit Leseschlüssel für den Bereich „Betrieb und Anbindungen“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus rueckrufe","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Rueckrufe"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}},"/daten/fremdkalender":{"get":{"operationId":"datenFremdkalender","summary":"Angebundene Kalender — nur mit Leseschlüssel für den Bereich „Betrieb und Anbindungen“. Seitenweise; jeder Abruf steht im Änderungsprotokoll.","parameters":[{"name":"ab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"Ab dieser Zeile (0 = von vorn)"},{"name":"anzahl","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}}],"responses":{"200":{"description":"Eine Seite aus fremdkalender","content":{"application/json":{"schema":{"type":"object","required":["datei","ab","anzahl","gesamt","daten","weiter"],"properties":{"datei":{"type":"string"},"ab":{"type":"integer"},"anzahl":{"type":"integer","description":"Zeilen auf dieser Seite"},"gesamt":{"type":"integer","description":"Zeilen insgesamt"},"daten":{"type":"array","items":{"$ref":"#/components/schemas/Fremdkalender"}},"weiter":{"type":"string","nullable":true,"description":"Adresse der nächsten Seite; null = Ende"}}}}}},"400":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"401":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}},"403":{"description":"Fehler mit Code und Text zum Vorlesen","content":{"application/json":{"schema":{"type":"object","properties":{"fehler":{"type":"object","properties":{"code":{"type":"string"},"text":{"type":"string"}}}}}}}}}}}}}