Events API
Base URL: https://api.fwv-raura.ch
Event-Management mit Schichten, Anmeldungen, Arbeitsplänen, Erinnerungen und Event-Gruppen.
Öffentliche Endpoints
Alle Events
GET /events
Query Parameter:
upcoming- Nur zukünftige Eventsstatus- Filter nach Status (active, draft, cancelled)
Response:
[
{
"id": 1,
"slug": "chilbi-2025",
"title": "Chilbi Kaiseraugst 2025",
"start_date": "2025-08-15",
"end_date": "2025-08-17",
"location": "Kaiseraugst",
"status": "active"
}
]
Event Details
GET /events/:id
Gibt Event mit allen Schichten und Registrierungen zurück.
Kalender (iCal)
GET /calendar/ics
Gibt alle veröffentlichten Events als iCalendar-Feed zurück. Kann in Google Calendar, Apple Kalender, Outlook etc. abonniert werden.
Öffentliche Anmeldung
POST /registrations/public
Content-Type: application/json
{
"event_id": 1,
"shift_id": 5,
"name": "Max Muster",
"email": "max@example.com"
}
Ermöglicht Anmeldung ohne Authentifizierung (für Nicht-Mitglieder).
Geschützte Endpoints
Diese Endpoints erfordern einen gültigen Bearer Token (Vorstand).
Event erstellen
POST /events
Authorization: Bearer <token>
Content-Type: application/json
{
"slug": "gv-2026",
"title": "Generalversammlung 2026",
"start_date": "2026-03-15",
"location": "Restaurant Sonne"
}
Event aktualisieren
PUT /events/:id
Authorization: Bearer <token>
Event löschen
DELETE /events/:id
Authorization: Bearer <token>
Event-Organisatoren
Event-Organisatoren erhalten eingeschränkten Zugriff auf ihr eigenes Event:
Organisator-Login
POST /events/login
Content-Type: application/json
{
"event_id": 1,
"password": "event-passwort"
}
Eigenes Event abrufen
GET /events/my-event
Authorization: Bearer <token>
Anmeldung genehmigen/ablehnen (Organisator)
POST /events/my-event/registrations/:id/approve
POST /events/my-event/registrations/:id/reject
Authorization: Bearer <token>
Arbeitsplan versenden (Organisator)
POST /events/my-event/send-arbeitsplan
Authorization: Bearer <token>
Schichten
Alle Schichten
GET /shifts
Authorization: Bearer <token>
Query Parameter:
event_id- Filter nach Event
Schicht erstellen
POST /shifts
Authorization: Bearer <token>
Content-Type: application/json
{
"event_id": 1,
"title": "Bar-Dienst",
"bereich": "Bar",
"start_time": "2026-08-15T18:00:00",
"end_time": "2026-08-15T23:00:00",
"max_helpers": 4
}
Schicht aktualisieren
PUT /shifts/:id
Authorization: Bearer <token>
Schicht löschen
DELETE /shifts/:id
Authorization: Bearer <token>
Anmeldungen
Anmeldungen abrufen
GET /registrations?event_id=1
Authorization: Bearer <token>
Anmeldung erstellen (authentifiziert)
POST /registrations
Authorization: Bearer <token>
Content-Type: application/json
{
"event_id": 1,
"shift_id": 5
}
Anmeldungen verwalten (Vorstand)
GET /registrations/manage
Authorization: Bearer <token>
Anmeldung genehmigen
POST /registrations/:id/approve
Authorization: Bearer <token>
Anmeldung ablehnen
POST /registrations/:id/reject
Authorization: Bearer <token>
Alternative Schicht vorschlagen
POST /registrations/:id/suggest-alternative
Authorization: Bearer <token>
Content-Type: application/json
{
"alternative_shift_id": 8,
"message": "Wäre diese Schicht möglich?"
}
Der Helfer erhält eine E-Mail mit einem Token-Link zur Bestätigung.
Alternative-Antwort verarbeiten
GET /registrations/alternative-response/:token
Verarbeitet die Antwort auf einen Alternativ-Vorschlag (per Link aus E-Mail).
Anmeldung bearbeiten/löschen
PUT /registrations/:id
DELETE /registrations/:id
Authorization: Bearer <token>
PDFs & Dokumente
Arbeitsplan-PDF generieren
POST /arbeitsplan/pdf
Authorization: Bearer <token>
Content-Type: application/json
{
"event_id": 1
}
Event-Arbeitsplan PDF
GET /events/:id/pdf/arbeitsplan
Authorization: Bearer <token>
Teilnehmerliste PDF
GET /events/:id/pdf/teilnehmerliste
Authorization: Bearer <token>
Teilnehmerliste generieren
POST /teilnehmerliste/pdf
Authorization: Bearer <token>
Erinnerungen
Schicht-Erinnerungen senden (Vorstand)
POST /shifts/send-reminders
Authorization: Bearer <token>
Sendet Erinnerungen an alle Helfer mit bevorstehenden Schichten.
Automatische Erinnerungen (Cronjob)
POST /shifts/cron-reminders
X-API-Key: <api-key>
Wird vom Cronjob (docker/cron/shift-reminders.sh) aufgerufen.
Tägliche Erinnerung (Cronjob)
POST /reminders/send-daily
X-API-Key: <api-key>
Erinnerungs-Vorschau (Vorstand)
GET /reminders/preview
Authorization: Bearer <token>
Zeigt welche Erinnerungen gesendet werden würden, ohne sie tatsächlich zu versenden.
Erinnerungen manuell senden
POST /reminders/send
Authorization: Bearer <token>
Event-Gruppen
Gruppierung von mehreren Events (z.B. alle Anlässe eines Jahres).
Alle Gruppen
GET /event-groups
Authorization: Bearer <token>
Gruppen-Details
GET /event-groups/:id
Authorization: Bearer <token>
Gruppe erstellen
POST /event-groups
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Anlässe 2026",
"event_ids": [1, 2, 3]
}
Gruppe bearbeiten/löschen
PUT /event-groups/:id
DELETE /event-groups/:id
Authorization: Bearer <token>
Gruppen-Arbeitsplan PDF
POST /event-groups/:id/arbeitsplan-pdf
Authorization: Bearer <token>
Generiert einen kombinierten Arbeitsplan über alle Events der Gruppe.