Menü

Hilfe / Reichweite: Seite, Einbetten, Schnittstelle

Webhooks: Ereignisse automatisch erhalten

MeduCert ruft Ihre Adresse auf, sobald sich etwas ändert: signiert, mit Wiederholungen und Zustellprotokoll.

So finden Sie esOrganisation → Schnittstelle → Webhooks

Ein Webhook meldet Ereignisse an Ihr System, damit Sie nicht nachfragen müssen. Sie hinterlegen eine HTTPS-Adresse, MeduCert erzeugt ein Geheimnis zum Prüfen der Signatur und ruft die Adresse bei jedem gewählten Ereignis auf.

Bereich Webhooks mit Adresse, Ereignissen und den letzten Zustellungen
Bild in voller Größe öffnen
Webhooks mit Ereignissen und dem Zustellprotokoll.

Ereignisse#

EreignisWann
`anmeldung.erstellt`Eine Anmeldung oder ein Platz auf der Warteliste ist entstanden
`teilnahme.abgemeldet`Eine Teilnahme wurde abgesagt
`termin.abgeschlossen`Eine Veranstaltung wurde abgeschlossen
`meldung.gesendet`Der EIV hat eine Meldung angenommen
`meldung.abgelehnt`Der EIV hat eine Meldung abgelehnt

Die Nachricht enthält nur Kennungen und den Status, etwa `termin_id` und `teilnahme_id`. Namen, E-Mail-Adressen und EFN stehen nicht darin. Die Details rufen Sie mit Ihrem API-Schlüssel ab.

{"id":"evt_3f1c…","typ":"anmeldung.erstellt","erstellt_am":"2026-10-30T18:02:11+01:00",
 "anbieter":"ihre-kennung",
 "daten":{"termin_id":12,"teilnahme_id":431,"status":"angemeldet","art":"online"}}

Webhook einrichten#

  1. Adresse eintragen

    Tragen Sie die HTTPS-Adresse Ihres Empfängers ein und wählen Sie die Ereignisse. MeduCert prüft die Adresse beim Speichern.

  2. Geheimnis kopieren

    Das Geheimnis (`whsec_…`) erscheint einmal. Legen Sie es in Ihrem Empfänger ab.

  3. Signatur prüfen

    Jeder Aufruf trägt den Header `MeduCert-Signatur: t=<Zeit>,v1=<Prüfwert>`. Der Prüfwert ist ein HMAC-SHA256 über `<Zeit>.<Rohtext der Nachricht>` mit Ihrem Geheimnis. Prüfen Sie auch, dass die Zeit nicht älter als fünf Minuten ist.

import hashlib, hmac, time

def signatur_gueltig(geheimnis: str, kopf: str, body: bytes) -> bool:
    teile = dict(p.split("=", 1) for p in kopf.split(","))
    t = int(teile["t"])
    if abs(time.time() - t) > 300:
        return False
    erwartet = hmac.new(geheimnis.encode(), f"{t}.".encode() + body,
                        hashlib.sha256).hexdigest()
    return hmac.compare_digest(erwartet, teile["v1"])

Zustellung und Wiederholungen#

  • Antworten Sie mit einem 2xx-Status, am besten innerhalb weniger Sekunden.
  • Bei einem Fehler wiederholt MeduCert die Zustellung nach 5 Minuten, 15 Minuten, 1 Stunde, 6 Stunden und 24 Stunden, danach gilt sie als fehlgeschlagen.
  • Jedes Ereignis trägt eine Kennung (`id`). Verarbeiten Sie dieselbe Kennung nur einmal, falls eine Wiederholung doppelt ankommt.
  • Das Zustellprotokoll unter Organisation → Schnittstelle zeigt Zeitpunkt, Ergebnis und Fehler der letzten Zustellungen.
  • Schlagen viele Zustellungen in Folge fehl, schaltet MeduCert den Webhook aus. Sie schalten ihn mit einem Klick wieder ein.

Anforderungen an die Adresse#

Die Adresse muss mit `https://` beginnen, einen öffentlichen Namen haben und aus dem Internet erreichbar sein. Adressen aus Ihrem internen Netz, IP-Adressen und Weiterleitungen sind nicht möglich: MeduCert ruft genau die eingetragene Adresse auf.

Weiterlesen#

Fehlt etwas in dieser Anleitung?

Schreiben Sie uns, was Sie suchen. Wir antworten persönlich und ergänzen die Hilfe.