Zum Hauptinhalt springen

Veranstaltungen & Bescheinigungen

Der wichtigste Anwendungsfall von außen: Eine eigene Website zeigt kommende Veranstaltungen und schreibt Anmeldungen zurück. Deshalb sind Teilnehmende hier vollwertig dabei und nicht nur als Zahl.

Alle Pfade sind relativ zu https://<domain>/api/v1.


Veranstaltungen

Bereich veranstaltungen.

MethodePfadBereichBeschreibung
GET/veranstaltungenveranstaltungen:readListe
POST/veranstaltungenveranstaltungen:writeAnlegen
GET/veranstaltungen/{id}veranstaltungen:readEinzeln lesen, samt Gruppen, Preisstufen und Leitung
PUT/veranstaltungen/{id}veranstaltungen:writeÄndern
DELETE/veranstaltungen/{id}veranstaltungen:writeIn den Papierkorb
GET/veranstaltungen/{id}/gruppenveranstaltungen:readGruppen innerhalb der Veranstaltung

Filter: q (Titel, Ort, Kategorie), archiviert (true = auch archivierte). Sortierbar: start_at (Standard), title, end_at, created_at.

Felder

FeldTypAnmerkung
titleTextPflicht
short_description, descriptionTextKurztext und Beschreibung
location, categoryText
start_at, end_atZeitpunktISO (2026-08-01T09:00) wird angenommen
registration_start, registration_endZeitpunktreines Datum beim Ende schließt den Tag ein
max_participantsGanzzahl
waitlist_enabledWahrheitswertWarteliste bei vollem Lager
min_age, max_ageGanzzahl
allow_family_registrationWahrheitswertAnmeldung mehrerer Kinder in einem Vorgang
slugTextAdresse des öffentlichen Formulars
form_enabledWahrheitswertöffentliches Anmeldeformular offen
auto_confirmWahrheitswertAnmeldungen sofort bestätigen
archivedWahrheitswertsiehe Hinweis
Archivieren setzt den Löschanker

Wird archived auf true gesetzt, merkt sich die Anwendung den Zeitpunkt. Daran rechnet die Aufbewahrungsregel für archivierte Veranstaltungen; ohne diesen Anker wäre eine Veranstaltung nie fällig. Beim Zurückholen wird er wieder entfernt, und ein angepinntes Lager verliert beim Archivieren seine Anheftung.

DELETE löscht nicht endgültig

Die Veranstaltung wandert in den Papierkorb (30 Tage); die Antwort trägt "papierkorb": true. Wiederherstellen und endgültiges Löschen bleiben der Anwendung vorbehalten – ein Tippfehler im Skript soll keine Veranstaltung samt Anmeldungen unwiederbringlich vernichten. Einträge aus dem Papierkorb tauchen in keiner Liste auf.


Anmeldungen

MethodePfadBereichBeschreibung
GET/veranstaltungen/{id}/teilnehmerveranstaltungen:readAnmeldungen (Liste)
POST/veranstaltungen/{id}/teilnehmerveranstaltungen:writeAnmeldung anlegen
GET/veranstaltungen/{id}/teilnehmer/{tid}veranstaltungen:readEine Anmeldung
PUT/veranstaltungen/{id}/teilnehmer/{tid}veranstaltungen:writeAnmeldung ändern
DELETE/veranstaltungen/{id}/teilnehmer/{tid}veranstaltungen:writeAnmeldung entfernen
POST/veranstaltungen/{id}/teilnehmer/{tid}/statusveranstaltungen:writeStatus setzen
GET/veranstaltungen/{id}/teilnehmer/{tid}/bescheinigung/{vorlagenId}veranstaltungen:read + bescheinigungen:readTeilnahmebescheinigung als PDF (unten)

Filter: q (Name, E-Mail), status, gruppe_id, zahlung (open, partial, paid). Sortierbar: created_at (Standard), last_name, first_name, status.

FeldTypAnmerkung
first_name, last_name, email, phoneText
gender, birth_dateText / JJJJ-MM-TT
street, address_extra, zip, city, countryText
diet, intolerances, allergies, medication, health_info, swimTextGesundheits- und Verpflegungsangaben
tshirt_size, emergency_contactText
event_group_idUUIDGruppe innerhalb der Veranstaltung
price_tier_idUUIDPreisstufe
contact_idUUIDVerknüpfung zum Mitgliederbestand
statusregistered | confirmed | waitlist | cancelled | rejectedStandard registered
amount, amount_paidZahlsiehe Zahlungen
answersObjektAntworten auf die frei konfigurierten Formularfelder
labelsListe von Texten
internal_notesText
Standardstatus ist registered, nicht confirmed

Ob eine Anmeldung bestätigt ist, entscheidet die Verwaltung – oder die Auto-Bestätigung der Veranstaltung –, nicht das aufrufende Werkzeug.

Status setzen ({"status":"confirmed"}) ist ein eigener Endpunkt, weil daran Zeitstempel und das Aufrücken der Warteliste hängen. Ein direktes Schreiben der Spalte würde beides überspringen.


Zahlungen

MethodePfadBereichBeschreibung
GET/veranstaltungen/{id}/teilnehmer/{tid}/zahlungenveranstaltungen:readBuchungen (Liste)
POST/veranstaltungen/{id}/teilnehmer/{tid}/zahlungenveranstaltungen:writeZahlung oder Rückerstattung buchen
DELETE/veranstaltungen/{id}/teilnehmer/{tid}/zahlungen/{zahlungId}veranstaltungen:writeBuchung entfernen
FeldTypAnmerkung
kindpayment | refundStandard payment
amountZahl oder TextPflicht; Komma erlaubt
methodTextunbekannte Werte werden zu manual
reference, noteText
Der Zahlungsstand wird nicht geschrieben, sondern gerechnet

Er ergibt sich aus den einzelnen Zahlungen und Rückerstattungen. Ein Werkzeug, das den Betrag selbst setzte, würde beim nächsten Eingang überschrieben. Deshalb antworten POST und DELETE hier mit der neu berechneten Anmeldung statt mit der Buchung – das ist, was ein Werkzeug danach anzeigen will.

curl -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"amount":95,"method":"manual","reference":"Überweisung 12.07."}' \
"$BASIS/veranstaltungen/<event-id>/teilnehmer/<tid>/zahlungen"

Vorlagen und Standardtexte

MethodePfadBereichBeschreibung
GET/veranstaltungen/vorlagenveranstaltungen:readVorlagen (Liste)
POST/veranstaltungen/vorlagenveranstaltungen:writeVorlage anlegen
GET/veranstaltungen/vorlagen/{vorlagenId}veranstaltungen:readEine Vorlage
PUT/veranstaltungen/vorlagen/{vorlagenId}veranstaltungen:writeVorlage ändern
DELETE/veranstaltungen/vorlagen/{vorlagenId}veranstaltungen:writeVorlage löschen
POST/veranstaltungen/vorlagen/aus-veranstaltung/{eventId}veranstaltungen:writeVorlage aus einer bestehenden Veranstaltung sichern
GET/veranstaltungen/formular-standardtexteveranstaltungen:readStandardtexte der Anmeldeformulare
PUT/veranstaltungen/formular-standardtexteveranstaltungen:writeStandardtexte ändern

Vorlage: name (Pflicht), description, icon, payload, is_active, sort_order. Filter: nur_aktive.

Eine Vorlage ist ein Schnappschuss: Sie hält fest, wie eine Veranstaltung aussah, als sie erstellt wurde. Ändert sich später der Zuschnitt, ändert das die Vorlage nicht – deshalb gibt es aus-veranstaltung, mit dem sich ein fertig aufgebautes Lager samt Gruppen, Leitung und Preisstufen als Vorlage sichern lässt (optional mit eigenem name, description, icon).

Standardtexte sind der Gegenentwurf: Sie sind der Rückfall zur Laufzeit. Eine Veranstaltung ohne eigenen Text zeigt diesen hier – wer ihn ändert, ändert ihn überall dort.

FeldInhalt
form_introEinleitung über dem Formular
privacy_label, privacy_text, privacy_urlDatenschutz
terms_label, terms_text, terms_urlTeilnahmebedingungen
photo_label, photo_text, photo_urlFotoerlaubnis
Reiner Text, kein HTML

Die Zustimmungstexte stehen auf einer öffentlichen Seite, an der jeder ohne Anmeldung vorbeikommt. Für eingebettetes Markup gäbe es hier keinen guten Grund, wohl aber ein Risiko.


Bescheinigungen

Bereich bescheinigungen. Hier liegen nur die Vorlagen – global, nicht je Veranstaltung: Eine Leitung hinterlegt sie einmal und benutzt sie bei jedem Lager.

MethodePfadBereichBeschreibung
GET/bescheinigungen/artenbescheinigungen:readDie drei Arten (Liste)
GET/bescheinigungen/einstellungenbescheinigungen:readAussteller-Angaben (nur lesend)
GET/bescheinigungen/vorlagenbescheinigungen:readVorlagen (Liste)
POST/bescheinigungen/vorlagenbescheinigungen:writeVorlage anlegen
GET/bescheinigungen/vorlagen/{id}bescheinigungen:readEine Vorlage
PUT/bescheinigungen/vorlagen/{id}bescheinigungen:writeVorlage ändern
DELETE/bescheinigungen/vorlagen/{id}bescheinigungen:writeVorlage löschen
Art (kind)Wann
participationnach der Veranstaltung: bestätigt die Teilnahme
leave_requestvor der Veranstaltung: Antrag auf Sonderurlaub für den Arbeitgeber
leave_proofnach der Veranstaltung: Nachweis über den Sonderurlaub

Vorlage: kind, name (Pflicht), heading, recipient, intro, body, closing, show_details, is_active, sort_order. Filter: art, nur_aktive.

Die fertige Bescheinigung einer Person

Sie entsteht nicht hier, sondern bei der Veranstaltung – dort steht die Teilnahme:

GET /veranstaltungen/{id}/teilnehmer/{tid}/bescheinigung/{vorlagenId}

Dieser Endpunkt liefert eine PDF-Datei, kein JSON, und verlangt veranstaltungen:read und bescheinigungen:read.

curl -H "Authorization: Bearer $KEY" \
-o bescheinigung.pdf \
"$BASIS/veranstaltungen/<event-id>/teilnehmer/<tid>/bescheinigung/<vorlagen-id>"

Die Aussteller-Angaben (Anschrift, Logo, Unterschrift) sind nur lesbar: Das sind bewusst hochgeladene Bilder, kein Feld für ein fremdes Skript.

Hat dies deine Frage beantwortet?