Ereignistypen: Organisation, Konten, Abrechnung
Die abonnierbaren Ereignistypen aus Organisation, Speicher-Verbindungen, Zugang, Konten und delegiertem Zugang, Sitzungen, Abrechnung und Beitritt mit ihrem Nutzlast-Kern.
11 Minuten LesezeitWebhooksStand: 25.10.2026
Auf dieser Seite
Bevor Sie loslegen
- Für wen
- Wer die Ereignisse eines Endpunkts wählt oder den Rumpf einer Zustellung liest.
- Voraussetzung
- keine zum Lesen, zum Abonnieren ein Endpunkt unter Einstellungen › Organisation › Webhooks.
Die abonnierbaren Ereignistypen aus Organisation, Speicher-Verbindungen, Zugang, Konten, Sitzungen, Abrechnung und Beitritt — zum Nachschlagen, wenn Sie einen Endpunkt anlegen oder eine Zustellung deuten.
So lesen Sie die Tabellen
- Ereignistyp ist die Zeichenkette, die Sie beim Endpunkt abonnieren. Sie kommt bei jeder Zustellung in der Kopfzeile
X-Event-Typean. Statt einzelner Typen dürfen Sie auch einen ganzen Bereich abonnieren (composition.*) oder mit*alles. Mehr Formen gibt es nicht, und alles andere weist der Server ab, siehe Den Ereigniskatalog über die API abrufen. - Nutzlast-Kern nennt zwei bis vier der wichtigsten Felder, die im Rumpf der Zustellung stehen. Es ist ein Auszug. Die vollständige Form bestimmt der jeweilige Bereich, und sie kann weitere Felder tragen. Zeitpunkt, Ereigniskennung und Auslöser reisen nicht im Rumpf.
- Wann es entsteht ist ein Halbsatz zur Einordnung, keine Aussage über Häufigkeit.
Das Portal bietet unter Abonnierte Ereignisse genau die Typen dieser Seite und der Seite Ereignistypen: Inhalte, Programme, Geräte, Apps zur Auswahl — dieselbe Liste, die GET /v1/webhooks/event-types liefert. Alles andere lässt sich nicht abonnieren, das Anlegen eines Endpunkts weist es ab. Welche Typen das sind, steht unter Was nie ankommt. Zugestellt wird nur, was im Kontext Ihrer Organisation entsteht.
Die Ereignistypen
Organisation
Lebenszyklus der Organisation, Marke, eigene Adresse und Unternehmens-Anmeldung. tenancy.tenant.suspended und .deleted sind die Auslöser, an denen weitere Bereiche nachziehen.
| Ereignistyp | Nutzlast-Kern | Wann es entsteht |
|---|---|---|
tenancy.tenant.created |
tenantId, slug, displayName |
Eine Organisation wurde angelegt. |
tenancy.tenant.updated |
tenantId, changedFields |
Stammdaten der Organisation wurden geändert. |
tenancy.tenant.suspended |
tenantId, reason, suspendedById, deletionDueAt |
Die Organisation wurde gesperrt, und deletionDueAt nennt den Löschtermin. |
tenancy.tenant.reactivated |
tenantId, reactivatedById |
Eine Sperre wurde aufgehoben. |
tenancy.tenant.frozen |
tenantId, reason, frozenById |
Die Organisation wurde eingefroren. |
tenancy.tenant.unfrozen |
tenantId, unfrozenById |
Das Einfrieren wurde aufgehoben. |
tenancy.tenant.deletion-warned |
tenantId, deletesAt, daysLeft |
Warnung vor der Löschung, daysLeft nennt die Resttage. |
tenancy.tenant.deleted |
tenantId, slug, deletedById |
Die Organisation wurde gelöscht. |
tenancy.branding.updated |
tenantId, changedFields |
Marke (Logo, Farben) wurde geändert. |
tenancy.custom-domain.verified |
tenantId, customDomain |
Eine eigene Portal-Adresse wurde bestätigt. |
tenancy.custom-domain.removed |
tenantId, domain |
Eine eigene Portal-Adresse wurde entfernt. |
tenancy.sso.configured |
tenantId, providerId, protocol, status |
Die Unternehmens-Anmeldung wurde eingerichtet oder geändert. |
tenancy.sso.disabled |
tenantId, providerId, protocol |
Die Unternehmens-Anmeldung wurde abgeschaltet. |
tenancy.sso.domain-changed |
tenantId, providerId, domain, status |
Die Domain der Unternehmens-Anmeldung wurde geändert. |
tenancy.sso.enforcement-changed |
tenantId, providerId, enforce, breakGlassUserIds |
Der Anmeldezwang wurde ein- oder ausgeschaltet. |
tenancy.sso.break-glass-used |
tenantId, providerId, userId, email |
Ein Notfallkonto hat sich an der Unternehmens-Anmeldung vorbei angemeldet. |
Speicher-Verbindungen
Dauervollmachten auf fremde Speicher-Konten. broken beantwortet die Frage, seit wann keine neuen Dateien mehr kommen.
| Ereignistyp | Nutzlast-Kern | Wann es entsteht |
|---|---|---|
cloud-connections.connection.connected |
connectionId, provider, accountLabel, repaired |
Ein Speicher-Konto wurde verbunden, und repaired unterscheidet Erstverbindung und Reparatur. |
cloud-connections.connection.disconnected |
connectionId, provider, revocationAcknowledged |
Die Verbindung wurde getrennt. |
cloud-connections.connection.broken |
connectionId, provider, reason |
Die Vollmacht trägt nicht mehr. Ab hier steht der Abgleich still. Kein Auslöser im Portal. |
Zugang: Rollen und Freigaben
Rollen der Organisation und Freigaben auf einzelne Ressourcen.
| Ereignistyp | Nutzlast-Kern | Wann es entsteht |
|---|---|---|
access.role.created |
roleId, tenantId, name, permissions |
Eine Rolle wurde angelegt. |
access.role.updated |
roleId, changedFields, newPermissions, newVersion |
Rechte oder Name einer Rolle wurden geändert. |
access.role.deleted |
roleId, tenantId, requesterId |
Eine Rolle wurde gelöscht. |
access.grant.created |
grantId, userId, resourceType, resourceId |
Eine Freigabe auf eine einzelne Ressource wurde erteilt. |
access.grant.revoked |
grantId, userId, resourceType, resourceId |
Eine Freigabe wurde entzogen. |
access.grant.expired |
grantId, userId, resourceId, expiredAt |
Eine befristete Freigabe ist abgelaufen. |
access.permission-catalog.rebuilt |
tenantId, trigger, entryCount |
Der Rechtekatalog der Organisation wurde neu aufgebaut, und trigger nennt den Anlass. |
Konten, Schlüssel und Geräte-Identitäten
Benutzerkonten, API-Schlüssel, SCIM-Zugänge, Anwendungen mit delegiertem Zugang und die Identität von Geräten. Die Konten und Schlüssel des Betreibers gehören nicht dazu, sie sind nicht abonnierbar (siehe Was nie ankommt).
| Ereignistyp | Nutzlast-Kern | Wann es entsteht |
|---|---|---|
identity.user.created |
userId, tenantId, email, initialRoles |
Ein Benutzerkonto wurde angelegt. |
identity.user.updated |
userId, changedFields, newValues |
Profildaten eines Kontos wurden geändert. |
identity.user.role.changed |
userId, previousRoles, newRoles |
Die Rollen eines Kontos wurden geändert. |
identity.user.suspended |
userId, reason, cascadeSource |
Ein Konto wurde gesperrt. |
identity.user.deleted |
userId, deletedById, pseudonymizationJobId |
Ein Konto wurde gelöscht, und die Pseudonymisierung ist angestoßen. |
identity.user.pseudonymized |
userId, pseudonymId, entriesReplaced |
Personenbezogene Einträge eines gelöschten Kontos wurden ersetzt. |
identity.user.mfa.enabled |
userId, tenantId, enabledAt |
Der zweite Faktor wurde eingerichtet. |
identity.user.mfa.disabled |
userId, tenantId, disabledAt |
Der zweite Faktor wurde entfernt. |
identity.user.mfa.recovery-codes.regenerated |
userId, tenantId, regeneratedAt |
Neue Wiederherstellungscodes wurden erzeugt. |
identity.user.password-changed |
userId, via, changedAt |
Das Passwort wurde geändert, via nennt den Weg. |
identity.api-key.minted |
apiKeyId, name, keyPrefix, scope |
Ein API-Schlüssel wurde erstellt. |
identity.api-key.revoked |
apiKeyId, revokedById, reason |
Ein API-Schlüssel wurde widerrufen. |
identity.scim-token.minted |
scimTokenId, tenantId, tokenPrefix, createdById |
Ein SCIM-Zugang für das Personalverzeichnis der Organisation wurde ausgestellt. |
identity.scim-token.revoked |
scimTokenId, tenantId, revokedById, reason |
Ein SCIM-Zugang wurde widerrufen. Der Abgleich aus dem Personalverzeichnis steht damit still. |
identity.oauth.client.registered |
clientId, name, redirectUris, registeredIp |
Eine fremde Anwendung hat sich für den delegierten Zugang angemeldet. Zugriff bekommt sie erst nach einer Einwilligung. |
identity.oauth.client.blocked |
clientId, name, blockedById, reason, revokedGrants |
Der Plattformbetrieb hat eine Anwendung gesperrt, revokedGrants zählt die damit erloschenen Zugänge. |
identity.oauth.client.unblocked |
clientId, name, unblockedById |
Die Sperre einer Anwendung wurde aufgehoben. Die erloschenen Zugänge kommen dadurch nicht zurück. |
identity.oauth.grant.granted |
clientId, clientName, tenantId, userId, scopes |
Ein Konto hat einer Anwendung Rechte übertragen, sie gelten nur für diese Organisation. |
identity.oauth.grant.denied |
clientId, clientName, tenantId, userId, requestedScopes |
Ein Konto hat die Anfrage einer Anwendung abgelehnt, es entstand kein Zugang. |
identity.oauth.token.issued |
tokenId, clientId, userId, scopes, rotated |
Eine Anwendung hat ein Zugriffs- und ein Erneuerungs-Token erhalten, nach einer Einwilligung oder als Erneuerung (rotated). |
identity.oauth.token.revoked |
clientId, userId, revokedGrants, reason |
Zugänge einer Anwendung wurden ungültig gemacht, reason nennt den Anlass. |
identity.device.registered |
deviceId, certFingerprint, hardwareInfo |
Ein Gerät hat sich erstmals bei der Plattform gemeldet. |
identity.device.cert.rotated |
deviceId, oldFingerprint, newFingerprint |
Das Zertifikat eines Geräts wurde erneuert. |
identity.device.reconnected |
deviceId, reconnectedById, previousHardwareSerial |
Ein Web-Display wurde auf einen anderen Browser übertragen. Es bleibt gekoppelt. |
identity.device.released |
deviceId, previousTenantId, reason, wipeLevel |
Ein Gerät hat Ihre Organisation verlassen, und seine Displays sind entfernt. reason nennt den Grund (reconnect, factory, removed, ops, tenant-deleted), wipeLevel die Stufe, mit der es sich leert. |
identity.device.blocked |
deviceId, previousTenantId, reason, blockedAt |
Ein Gerät wurde als verloren gemeldet oder vom Betreiber gesperrt. Es gehört keiner Organisation mehr und kann sich nicht anmelden, bis die Sperre aufgehoben ist. |
identity.device.reregistration-requested |
deviceId, tenantId, deviceName, requestedAt |
Ein gekoppeltes Gerät hat sich mit einem neuen Schlüssel angemeldet, vermutlich wurde es neu aufgesetzt. Es wartet, bis jemand in der Geräteakte entscheidet. |
identity.device.reregistration-decided |
deviceId, decision, decidedById, allowedUntil |
Über ein neu gemeldetes Gerät wurde entschieden. decision ist keep (Displays behalten), reconnect (neu koppeln) oder block (sperren). |
identity.renderer.minted |
rendererSessionId, playerId, expiresAt |
Eine Wiedergabe-Sitzung eines Displays wurde ausgestellt (Maschinenverkehr). |
identity.renderer.revoked |
rendererSessionId, playerId, reason |
Eine Wiedergabe-Sitzung wurde entzogen (Maschinenverkehr). |
Sitzungen und Anmeldung
Anmeldungen, Verlängerung von Sitzungen, Einmal-Links und das Handeln des Plattformbetriebs im Namen eines Kontos. sessions.session.theft-detected ist der Alarm bei einem wiederverwendeten Sitzungs-Token.
| Ereignistyp | Nutzlast-Kern | Wann es entsteht |
|---|---|---|
sessions.login.succeeded |
sessionId, userId, kind, method |
Eine Anmeldung ist gelungen, method nennt den Weg. |
sessions.login.failed |
email, reason, ipAddress |
Eine Anmeldung ist gescheitert. |
sessions.mfa.verified |
sessionId, userId, via |
Der zweite Faktor wurde bestätigt. |
sessions.mfa.failed |
sessionId, userId, attemptCount |
Der zweite Faktor wurde falsch eingegeben. |
sessions.session.refreshed |
sessionId, familyId, userId |
Eine Sitzung wurde verlängert (Dauerverkehr). |
sessions.session.theft-detected |
sessionId, familyId, replayedHashPrefix |
Ein bereits verbrauchtes Sitzungs-Token wurde erneut vorgelegt. |
sessions.session.terminated |
sessionId, userId, reason |
Eine Sitzung wurde beendet. |
sessions.session.all-terminated |
userId, revokedCount, keptSessionId |
Alle Sitzungen eines Kontos wurden beendet. |
sessions.password-reset.requested |
passwordResetId, subjectKind, purpose |
Ein Passwort-Zurücksetzen wurde angefordert. |
sessions.password-reset.completed |
passwordResetId, userId, subjectKind |
Ein Passwort wurde über das Zurücksetzen neu gesetzt. |
sessions.magic-link.requested |
magicLinkId, email, expiresAt |
Ein Anmeldelink wurde angefordert. |
sessions.magic-link.consumed |
magicLinkId, sessionId, userId |
Ein Anmeldelink wurde genutzt. |
sessions.impersonation.started |
operatorUserId, targetUserId, reason, expiresAt |
Der Plattformbetrieb handelt im Namen eines Kontos. |
sessions.impersonation.ended |
operatorUserId, targetUserId, endedBy |
Das Handeln im Namen eines Kontos wurde beendet. |
Abrechnung
Vertrag, Rechnungen, Zahlungsmittel und die freigeschalteten Funktionen. Ein Paketwechsel meldet sich zweimal: subscription.package-changed sagt, dass der Vertrag auf einem anderen Paket steht (bei jedem Wechsel), und feature-entitlements.changed sagt, dass sich einer der Anzeige-Schalter bewegt hat, und nennt in changedKeys, welcher. Getrennte Ereignisse für Auf- und Abstieg gibt es nicht — die Richtung steht in from und to.
| Ereignistyp | Nutzlast-Kern | Wann es entsteht |
|---|---|---|
billing.subscription.created |
subscriptionId, tenantId, status, billingCycle, currentPeriodEnd |
Ein Vertrag wurde angelegt. |
billing.subscription.activated |
subscriptionId, tenantId, from (trial/past_due) |
Der Vertrag ist aktiv, from nennt den vorigen Zustand. |
billing.subscription.past-due |
subscriptionId, graceUntil, reason (payment-failed/trial-ended) |
Zahlung ausgeblieben oder Testphase beendet. graceUntil nennt die Frist. |
billing.subscription.grace-lapsed |
subscriptionId, tenantId, graceLapsedAt, suspendsAt |
Die Frist ist verstrichen, suspendsAt nennt die Sperre. |
billing.subscription.trial-ending |
subscriptionId, tenantId, trialEndsAt, daysLeft |
Die Testphase endet bald, daysLeft nennt die Resttage. |
billing.subscription.suspended |
subscriptionId, tenantId |
Der Vertrag wurde ausgesetzt. |
billing.subscription.canceled |
subscriptionId, reason |
Der Vertrag wurde gekündigt. |
billing.subscription.package-changed |
tenantId, from (nullable), to, at |
Der Vertrag steht auf einem anderen Paket. Es kommt bei jedem Wechsel, die Richtung steht in from und to. |
billing.subscription.period-rolled |
subscriptionId, tenantId, periodStart, periodEnd, cameFromTrial |
Eine neue Abrechnungsperiode hat begonnen. |
billing.subscription.cancel-scheduled |
subscriptionId, tenantId, effectiveAt, reason |
Eine Kündigung wurde zum Termin vorgemerkt. |
billing.subscription.cancel-revoked |
subscriptionId, tenantId, at |
Eine vorgemerkte Kündigung wurde zurückgenommen. |
billing.subscription.trial-extended |
subscriptionId, tenantId, days, trialEndsAt, reason |
Die Testphase wurde verlängert. |
billing.subscription.license-conflict |
subscriptionId, tenantId, devices, licenses, deadline |
Die bezahlte Verringerung der gebuchten Displays ist wirksam, und es laufen mehr Geräte, als Displays gebucht sind. Die überzähligen laufen bis deadline weiter. |
billing.subscription.license-conflict-enforced |
subscriptionId, tenantId, frozen, licenses |
Die Frist ist abgelaufen, frozen zählt die eingefrorenen Displays. Sie bleiben es, bis die Organisation Displays dazubucht oder ein Gerät abkoppelt. |
billing.subscription.pending-change-failed |
subscriptionId, tenantId, kind (quantity/package), pendingQuantity, usedDisplays, effectiveAt |
Eine vorgemerkte Änderung ist nicht wirksam geworden, weil mehr Displays belegt sind, als sie vorsieht. Sie bleibt stehen und wirkt zum nächsten Periodenende. |
billing.invoice.issued |
invoiceId, invoiceNumber, amountCents, currency |
Eine Rechnung wurde gestellt. |
billing.invoice.paid |
invoiceId, invoiceNumber, amountCents, paidAt |
Eine Rechnung wurde bezahlt. |
billing.invoice.payment-failed |
invoiceId, amountCents, attemptCount |
Eine Zahlung ist gescheitert. |
billing.invoice.refunded |
invoiceId, reason, refundId |
Eine Rechnung wurde erstattet. |
billing.invoice.credited |
invoiceId, creditNoteId, creditNoteNumber, amountCents, settlement, reason |
Zu einer Rechnung wurde eine Gutschrift erstellt. |
billing.invoice.voided |
invoiceId, invoiceNumber, reason |
Eine Rechnung wurde storniert. |
billing.invoice.written-off |
invoiceId, invoiceNumber, amountCents, reason |
Eine Rechnung wurde ausgebucht. |
billing.invoice.dunned |
invoiceId, noticeId, noticeNumber, level, deadlineAt |
Eine Mahnung wurde erstellt, level nennt die Stufe. |
billing.vat-id.confirmed |
tenantId, countryCode, requestId |
Die Umsatzsteuer-Identnummer wurde bestätigt. |
billing.vat-id.invalidated |
tenantId, countryCode, previousStatus |
Die Umsatzsteuer-Identnummer gilt nicht mehr. |
billing.payment-method.attached |
tenantId, stripePaymentMethodId, kind, lastFour |
Ein Zahlungsmittel wurde hinterlegt. |
billing.payment-method.removed |
tenantId, stripePaymentMethodId |
Ein Zahlungsmittel wurde entfernt. |
billing.payment-way.switched |
tenantId, before, after (invoice/stripe) |
Der Zahlweg wurde gewechselt (invoice oder stripe). |
billing.feature-entitlements.changed |
tenantId, before, after, changedKeys |
Einer der Anzeige-Schalter für Funktionen hat sich bewegt, changedKeys nennt welche. |
billing.item-override.ending |
tenantId, subscriptionId, skuCode, validUntilDate, effectiveUnitPriceCents, listUnitPriceCents |
Eine Sonderkondition läuft demnächst aus. |
billing.item-override.expired |
tenantId, subscriptionId, skuCode, validUntilDate, listUnitPriceCents |
Eine Sonderkondition ist abgelaufen. |
billing.checkout.started |
checkoutRef, tenantId, purpose, packageCode, billingCycle, entry |
Ein Kaufvorgang wurde begonnen. |
billing.checkout.finished |
checkoutRef, tenantId, purpose, outcome, paymentWay |
Ein Kaufvorgang wurde beendet, outcome nennt den Ausgang. |
Beitritt und Einrichtung
Einladungen, Einrichtungsassistent, Bereitstellung einer neuen Organisation, Beitrittsanfragen und Selbst-Registrierung.
| Ereignistyp | Nutzlast-Kern | Wann es entsteht |
|---|---|---|
onboarding.invitation.sent |
invitationId, email, defaultRoleId, expiresAt |
Eine Einladung wurde verschickt. |
onboarding.invitation.resent |
invitationId, email, expiresAt |
Eine Einladung wurde erneut verschickt. |
onboarding.invitation.revoked |
invitationId, email, revokedById |
Eine Einladung wurde zurückgezogen. |
onboarding.invitation.accepted |
invitationId, email, acceptedByUserId |
Eine Einladung wurde angenommen. |
onboarding.invitation.expired |
invitationId, tenantId, email |
Eine Einladung ist abgelaufen. |
onboarding.setup-step.completed |
tenantId, step, via |
Ein Schritt des Einrichtungsassistenten wurde abgeschlossen. |
onboarding.setup-wizard.completed |
tenantId, completedAt |
Der Einrichtungsassistent wurde abgeschlossen. |
onboarding.tenant.provisioning-started |
tenantId, slug, provisionedById |
Die Bereitstellung einer neuen Organisation hat begonnen. |
onboarding.tenant.provisioning-completed |
tenantId, subscriptionId, ownerEmail |
Die Bereitstellung einer neuen Organisation ist abgeschlossen. |
onboarding.join-request.received |
joinRequestId, tenantId, email, displayName |
Eine Beitrittsanfrage ist eingegangen. |
onboarding.join-request.decided |
joinRequestId, tenantId, email, decision (accepted/rejected), decidedById |
Eine Beitrittsanfrage wurde entschieden (accepted oder rejected). |
onboarding.self-registration.changed |
enabled, reason, changedById |
Der Plattform-Schalter der Selbst-Registrierung wurde umgelegt (Plattformbetrieb). |
onboarding.signup.started |
funnelRef, entry |
Eine Selbst-Registrierung wurde begonnen. |
onboarding.signup.verified |
funnelRef, route (create/join/sso) |
Die Adresse einer Selbst-Registrierung wurde bestätigt, route nennt den Weg. |
onboarding.signup.completed |
funnelRef, tenantId |
Eine Selbst-Registrierung ist abgeschlossen. |
onboarding.terms.accepted |
tenantId, userId, occasion, documents, locale, acceptedAt |
Vertragsdokumente wurden angenommen, documents nennt welche. |