API-Zugang: Token erstellen und Daten abrufen
DigitalMembers stellt über 600 offene REST-Endpunkte nach OpenAPI-3-Standard bereit. Damit sprichst du deine eigenen Vereinsdaten aus anderen Systemen an, zum Beispiel um die aktuelle Mitgliederzahl auf der Vereinswebseite zu zeigen, Abläufe mit n8n zu automatisieren oder ein eigenes WordPress-Plugin zu bauen. Diese Anleitung zeigt Schritt für Schritt, wie du einen Zugang erstellst, ein Token holst und Daten abrufst.
Schritt 1: API-Schlüssel erstellen
Öffne Einstellungen → Organisation → API-Schlüssel und erstelle einen neuen Schlüssel. Pro Schlüssel legst du granular fest, worauf er zugreifen darf. Nach dem Erstellen erhältst du eine client_id und einen geheimen Schlüssel (client_secret). Der geheime Schlüssel wird nur einmal angezeigt, notiere ihn dir sicher ab.
Schritt 2: Token holen (curl)
Mit client_id und Schlüssel holst du dir ein zeitlich begrenztes Zugangs-Token:
TOKEN=$(curl -s -X POST \
https://auth.digitalmembers.ch/realms/members/protocol/openid-connect/token \
-d grant_type=client_credentials \
-d client_id=$CLIENT_ID \
-d client_secret=$CLIENT_SECRET | jq -r .access_token)
Schritt 3: Daten abrufen (curl)
Hänge das Token als Bearer an jede Anfrage. Beispiel: die Mitgliederliste über den Endpunkt /v2/member/ am Host api.digitalmembers.ch:
curl -s https://api.digitalmembers.ch/v2/member/ \
-H "Authorization: Bearer $TOKEN"
Beispiel in Python
Mit der requests-Bibliothek sieht derselbe Ablauf so aus:
import requests
token = requests.post(
"https://auth.digitalmembers.ch/realms/members/protocol/openid-connect/token",
data={
"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
},
).json()["access_token"]
members = requests.get(
"https://api.digitalmembers.ch/v2/member/",
headers={"Authorization": f"Bearer {token}"},
).json()
print(members["items"])
OpenAPI-Spezifikation exportieren (JavaScript)
Die vollständige OpenAPI-3-Spezifikation liegt unter api.digitalmembers.ch/openapi/. Sie ist die maschinenlesbare Grundlage der Swagger-Oberfläche und eignet sich, um eigene Clients zu generieren.
Der Abruf der Spezifikation braucht Authentifizierung. Ohne gültiges Token antwortet die Schnittstelle mit 401.
const token = await fetch(
"https://auth.digitalmembers.ch/realms/members/protocol/openid-connect/token",
{
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
grant_type: "client_credentials",
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
}),
},
).then(r => r.json()).then(d => d.access_token)
const openapi = await fetch("https://api.digitalmembers.ch/openapi/", {
headers: { Authorization: `Bearer ${token}` },
}).then(r => r.json())
console.log(openapi)
Vollständige Dokumentation
Alle Endpunkte mit Feldern und Beispielen findest du in der durchsuchbaren Swagger-Oberfläche unter docs.digitalmembers.ch. Dort loggst du dich ein und probierst jeden Endpunkt direkt im Browser aus.