Zum Hauptinhalt springen

API Übersicht

Die FWV Raura Website verwendet mehrere REST APIs, die alle unter api.fwv-raura.ch erreichbar sind. Traefik routet anhand des URL-Pfads zum richtigen Backend-Service.

Services & Basis-URLs

APIBasis-URLTraefik-PfadeBeschreibung
Membershttps://api.fwv-raura.ch/members, /auth, /roles, /audit, /vorstand, /uploads, /member-registrations, /funktionenMitglieder, Auth, Rollen, Fotos
Eventshttps://api.fwv-raura.ch/events, /shifts, /calendar, /arbeitsplan, /registrations, /teilnehmerlisteEvents, Schichten, Kalender
Dispatchhttps://api.fwv-raura.ch/email, /pingen, /templates, /contact, /newsletter, /dispatch-log, /mailcow, /pdf-templates, /organisation-settings, /dispatchE-Mail, Briefe, Newsletter, PDF-Vorlagen
Accountinghttps://api.fwv-raura.ch/invoices, /payments, /reports, /accountsKontenplan, Buchungen, Rechnungen

Alle Services laufen intern auf Port 3000 und kommunizieren über das Docker-Netzwerk miteinander (z.B. http://api-members:3000).

Authentifizierung

Alle geschützten Endpoints erfordern einen der folgenden Auth-Methoden:

Bearer Token (JWT)

Für Mitglieder (Authentik OIDC, RS256) und Vorstand (IMAP, HS256):

Authorization: Bearer <token>

Mitglieder-Token: RS256-signiert von Authentik, validiert mit Public Key. Vorstand-Token: HS256-signiert, 8 Stunden gültig, enthält type: "vorstand".

API Key (intern)

Für Cronjobs und Inter-Service-Kommunikation:

X-API-Key: <api-key>

Vorstand-Sessions setzen einen Cookie auf .fwv-raura.ch für Cross-Subdomain-Zugriff.

Response Format

Alle APIs verwenden JSON:

{
"success": true,
"data": { ... }
}

Fehler

{
"error": "Fehlerbeschreibung"
}

HTTP Status Codes

CodeBedeutung
200OK
201Created
400Bad Request - Ungültige Parameter
401Unauthorized - Token fehlt oder ungültig
403Forbidden - Keine Berechtigung
404Not Found
409Conflict - Ressource existiert bereits
429Too Many Requests - Rate Limit erreicht
500Server Error

Health Checks

Jeder Service hat einen Health-Endpoint:

curl https://api.fwv-raura.ch/health
# {"status":"ok","service":"api-members","version":"1.145.0"}

CORS

Die APIs erlauben Cross-Origin-Requests von den konfigurierten Domains (fwv-raura.ch und Subdomains).

Traefik Routing-Prioritäten

Bei überlappenden Pfaden wird die Priorität über Traefik-Labels gesteuert. Höhere Zahl = wird zuerst gematcht:

PfadPrioritätService
/invoices/generate*200Dispatch
/arbeitsplan/pdf200Dispatch
Alle anderenStandardJe nach Pfad-Prefix