Members API
Base URL: https://api.fwv-raura.ch
Verwaltung von Mitgliedern, Authentifizierung, Rollen, Fotos, Löschanträgen und Synchronisierung mit Authentik.
Öffentliche Endpoints
Vorstand anzeigen
GET /vorstand
Gibt alle Vorstandsmitglieder zurück (öffentlich).
Response:
[
{
"id": 1,
"vorname": "René",
"nachname": "Käslin",
"funktion": "Präsident",
"foto": null,
"email": "praesident@fwv-raura.ch"
}
]
Vereinsfunktionen
GET /funktionen
Gibt alle verfügbaren Funktionen/Positionen im Verein zurück.
Health Check
GET /health
Response:
{
"status": "ok",
"service": "api-members",
"version": "1.145.0"
}
Authentifizierung
Authentik-Login (Mitglieder)
GET /auth/login
Leitet zur Authentik-Login-Seite weiter (OAuth2 Authorization Code Flow).
Authentik Callback
POST /auth/callback
Verarbeitet den OAuth-Callback von Authentik und erstellt eine Session.
Aktueller Benutzer (Mitglied)
GET /auth/me
Authorization: Bearer <token>
Gibt das aktuelle Mitglieder-Profil zurück.
Vorstand-Login (IMAP)
POST /auth/vorstand/login
Content-Type: application/json
{
"email": "praesident@fwv-raura.ch",
"password": "xxx"
}
Authentifiziert über IMAP gegen den Mail-Server. Gibt bei Erfolg einen HS256-JWT (8h gültig) zurück.
Response:
{
"token": "eyJhbGciOiJIUzI1NiI...",
"email": "praesident@fwv-raura.ch",
"type": "vorstand"
}
Vorstand-Session prüfen
GET /auth/vorstand/me
Authorization: Bearer <token>
Prüft ob der Vorstand-Token noch gültig ist.
Mitglieder CRUD
Diese Endpoints erfordern einen gültigen Bearer Token.
Alle Mitglieder
GET /members
Authorization: Bearer <token>
Query Parameter:
status- Filter nach Status (Aktivmitglied, Passivmitglied, Ehrenmitglied)
Eigenes Profil
GET /members/me
Authorization: Bearer <token>
Mitglied nach ID
GET /members/:id
Authorization: Bearer <token>
Mitglied erstellen
POST /members
Authorization: Bearer <token>
Content-Type: application/json
{
"vorname": "Max",
"nachname": "Muster",
"email": "max@example.com",
"status": "Aktivmitglied"
}
Eigenes Profil aktualisieren
PUT /members/me
Authorization: Bearer <token>
Content-Type: application/json
{
"phone": "+41 79 123 45 67"
}
Mitglied aktualisieren (Vorstand)
PUT /members/:id
Authorization: Bearer <token>
Content-Type: application/json
{
"phone": "+41 79 123 45 67",
"funktion": "Beisitzer"
}
Mitglied löschen (Vorstand)
DELETE /members/:id
Authorization: Bearer <token>
Fotos
Eigenes Foto hochladen
POST /members/me/photo
Authorization: Bearer <token>
Content-Type: multipart/form-data
photo: <Bilddatei>
Eigenes Foto löschen
DELETE /members/me/photo
Authorization: Bearer <token>
Mitglieder-Foto hochladen (Vorstand)
POST /members/:id/photo
Authorization: Bearer <token>
Content-Type: multipart/form-data
photo: <Bilddatei>
Mitglieder-Foto löschen (Vorstand)
DELETE /members/:id/photo
Authorization: Bearer <token>
Löschanträge (DSGVO)
Löschung bestätigen
GET /members/deletion-confirm/:token
Bestätigt einen Löschantrag per Token (aus E-Mail-Link).
Offene Löschanträge abrufen (Vorstand)
GET /deletion-requests
Authorization: Bearer <token>
Löschantrag ablehnen (Vorstand)
DELETE /deletion-requests/:id
Authorization: Bearer <token>
Statistiken & Berichte
Mitglieder-Statistiken
GET /members/stats/overview
Authorization: Bearer <token>
Gibt eine Übersicht der Mitglieder nach Status, Funktion etc. zurück.
Telefonliste als PDF (Vorstand)
GET /members/pdf/telefonliste
Authorization: Bearer <token>
Generiert eine PDF-Telefonliste aller Mitglieder.
E-Mail-Verwaltung
Zustellungs-Verteilerlisten
GET /members/emails/zustellung
Authorization: Bearer <token>
Gibt Mitglieder gruppiert nach Zustellungsart (E-Mail/Post) zurück.
E-Mail-Alias-Konfiguration
GET /members/emails/alias-config
Authorization: Bearer <token>
Aliases synchronisieren
POST /members/emails/sync-alias
Authorization: Bearer <token>
Synchronisiert E-Mail-Aliases mit Mailcow basierend auf Vereinsfunktionen.
Rollen & Zugriff
Verfügbare Rollen
GET /roles
Authorization: Bearer <token>
Eigene Cloud-Zugriffe
GET /members/me/accesses
Authorization: Bearer <token>
Gibt die Cloud-Zugriffe (Nextcloud etc.) des aktuellen Mitglieds zurück.
Nextcloud & Gruppen
Nextcloud-Admin-Zugriff
GET /members/:id/nextcloud-admin
POST /members/:id/nextcloud-admin
Authorization: Bearer <token>
Prüft/gewährt Nextcloud-Admin-Zugriff für ein Mitglied.
Vorstand-Gruppe
GET /members/:id/vorstand-group
POST /members/:id/vorstand-group
Authorization: Bearer <token>
Prüft/setzt Mitgliedschaft in der Vorstand-Verzeichnisgruppe.
Social-Media-Gruppe
GET /members/:id/social-media-group
POST /members/:id/social-media-group
Authorization: Bearer <token>
Mitgliedschaftsanträge
Offene Anträge (Vorstand)
GET /member-registrations
Authorization: Bearer <token>
Antrag-Details
GET /member-registrations/:id
Authorization: Bearer <token>
Anzahl offener Anträge
GET /member-registrations/count/pending
Authorization: Bearer <token>
Antrag genehmigen
POST /member-registrations/:id/approve
Authorization: Bearer <token>
Antrag ablehnen
POST /member-registrations/:id/reject
Authorization: Bearer <token>
Synchronisierung
Mitglieder mit Authentik synchronisieren
POST /members/sync-authentik
Authorization: Bearer <token>
Synchronisiert Mitglieder-Daten zwischen der lokalen Datenbank und Authentik.
Gruppen synchronisieren
POST /members/sync-authentik-groups
Authorization: Bearer <token>
Synchronisiert Authentik-Gruppen mit lokalen Gruppen.
Benachrichtigungen & Einstellungen
Benachrichtigungs-Einstellungen
GET /members/me/notifications
PUT /members/me/notifications
Authorization: Bearer <token>
Content-Type: application/json
{
"email_events": true,
"email_newsletter": true
}
Funktions-E-Mail-Passwort ändern
PUT /members/me/function-email-password
Authorization: Bearer <token>
Content-Type: application/json
{
"password": "neuesPasswort"
}
Audit Log
Log abrufen
GET /audit?limit=50&offset=0
Authorization: Bearer <token>
Query Parameter:
limit- Anzahl Ergebnisse (Standard: 50)offset- Offset für Paginierungaction- Filter nach Aktion (create, update, delete)entity- Filter nach Entität (member, event, etc.)
Zeigt alle Aktivitäten im System. Wird automatisch via Datenbank-Trigger bei Änderungen befüllt.