shared-signals.dev

Reference

Event types

Every event type defined by the OpenID Shared Signals specifications, with its claims and an example SET payload. Summaries are ours; the linked specs are normative.

CAEP events

Session and access-condition changes while a user is signed in. Specification →

caep Session Revoked interop profile A session for the subject has been terminated. Receivers should end any corresponding sessions they hold.

A use case in the CAEP Interoperability Profile: Transmitters must include a non-empty reason_admin, and Receivers must handle every allowed value of this event’s fields.

https://schemas.openid.net/secevent/caep/event-type/session-revoked

ClaimMeaning
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "opaque",
    "id": "dMTlD|1600802906337.16|16008.16"
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/session-revoked": {
      "event_timestamp": 1760390391
    }
  }
}
caep Token Claims Change Claims in a token previously issued for the subject have changed — for example a role or group membership — so the Receiver may want to re-evaluate access.

https://schemas.openid.net/secevent/caep/event-type/token-claims-change

ClaimMeaning
claimsREQUIREDObject holding the claim names and their new values.
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "iss_sub",
    "iss": "https://idp.example.com/",
    "sub": "248289761001"
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/token-claims-change": {
      "event_timestamp": 1760390391,
      "claims": {
        "role": "ro-admin"
      }
    }
  }
}
caep Credential Change interop profile A credential was created, revoked, updated or deleted — a password reset, a new passkey, a revoked certificate.

A use case in the CAEP Interoperability Profile: Transmitters must include a non-empty reason_admin, and Receivers must handle every allowed value of this event’s fields.

https://schemas.openid.net/secevent/caep/event-type/credential-change

ClaimMeaning
credential_typeREQUIREDpassword, pin, x509, fido2-platform, fido2-roaming, fido-u2f, verifiable-credential, phone-voice, phone-sms, app, …
change_typeREQUIREDcreate, revoke, update, or delete.
friendly_nameOPTIONALDisplay name of the credential.
x509_issuer / x509_serialOPTIONALIdentify an X.509 credential.
fido2_aaguidOPTIONALAuthenticator model of a FIDO2 credential.
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "email",
    "email": "alice@example.com"
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/credential-change": {
      "event_timestamp": 1760390391,
      "credential_type": "fido2-roaming",
      "change_type": "create",
      "fido2_aaguid": "accced6a-63f5-490a-9eea-e59bc1896cfc",
      "friendly_name": "Security key"
    }
  }
}
caep Assurance Level Change The authentication assurance level for the subject went up or down (for example, NIST AAL or eIDAS levels).

https://schemas.openid.net/secevent/caep/event-type/assurance-level-change

ClaimMeaning
namespaceREQUIREDAssurance framework: RFC8176, RFC6711, ISO-IEC-29115, NIST-IAL, NIST-AAL, NIST-FAL, or a custom value.
current_levelREQUIREDThe new level.
previous_levelOPTIONALThe level before the change.
change_directionOPTIONALincrease or decrease.
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "iss_sub",
    "iss": "https://idp.example.com/",
    "sub": "248289761001"
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/assurance-level-change": {
      "event_timestamp": 1760390391,
      "namespace": "NIST-AAL",
      "current_level": "nist-aal2",
      "previous_level": "nist-aal1",
      "change_direction": "increase"
    }
  }
}
caep Device Compliance Change interop profile A device moved into or out of compliance with policy — typically sent by an MDM or endpoint security product.

A use case in the CAEP Interoperability Profile: Transmitters must include a non-empty reason_admin, and Receivers must handle every allowed value of this event’s fields.

https://schemas.openid.net/secevent/caep/event-type/device-compliance-change

ClaimMeaning
current_statusREQUIREDcompliant or not-compliant.
previous_statusREQUIREDcompliant or not-compliant.
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "complex",
    "device": {
      "format": "opaque",
      "id": "device-1234"
    },
    "tenant": {
      "format": "opaque",
      "id": "tenant-5678"
    }
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/device-compliance-change": {
      "event_timestamp": 1760390391,
      "current_status": "not-compliant",
      "previous_status": "compliant",
      "initiating_entity": "policy"
    }
  }
}
caep Session Established A new session was established for the subject — useful for correlating sessions across products.

https://schemas.openid.net/secevent/caep/event-type/session-established

ClaimMeaning
ipsOPTIONALIP addresses of the user agent.
fp_uaOPTIONALFingerprint of the user agent.
acr / amrOPTIONALAuthentication context class and methods used.
ext_idOPTIONALExternal session identifier.
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "email",
    "email": "alice@example.com"
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/session-established": {
      "event_timestamp": 1760390391,
      "ips": [
        "192.0.2.10"
      ],
      "acr": "AAL2",
      "amr": [
        "pwd",
        "otp"
      ],
      "fp_ua": "abb0b6e7da81a42233f8f2b1a8ddb1b9a4c81611"
    }
  }
}
caep Session Presented An existing session was presented to the Transmitter — lets a Receiver see where a session is being used.

https://schemas.openid.net/secevent/caep/event-type/session-presented

ClaimMeaning
ipsOPTIONALIP addresses of the user agent.
fp_uaOPTIONALFingerprint of the user agent.
ext_idOPTIONALExternal session identifier.
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "email",
    "email": "alice@example.com"
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/session-presented": {
      "event_timestamp": 1760390391,
      "ips": [
        "198.51.100.7"
      ],
      "fp_ua": "abb0b6e7da81a42233f8f2b1a8ddb1b9a4c81611",
      "ext_id": "12345"
    }
  }
}
caep Risk Level Change interop profile The Transmitter’s assessed risk level for a user, device, session or other principal changed.

A use case in the CAEP Interoperability Profile: Transmitters must include a non-empty reason_admin, and Receivers must handle every allowed value of this event’s fields.

https://schemas.openid.net/secevent/caep/event-type/risk-level-change

ClaimMeaning
principalREQUIREDWhat the risk is about: USER, DEVICE, SESSION, TENANT, ORG_UNIT, GROUP, …
current_levelREQUIREDLOW, MEDIUM, or HIGH.
previous_levelOPTIONALLOW, MEDIUM, or HIGH; absent means unknown.
risk_reasonRECOMMENDEDWhy the risk changed.
event_timestampOPTIONALWhen the event occurred (NumericDate). Optional on every CAEP event.
initiating_entityOPTIONALWho caused the event: admin, user, policy, or system.
reason_admin / reason_userOPTIONALLocalised, human-readable explanation for an administrator or end user.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "email",
    "email": "alice@example.com"
  },
  "events": {
    "https://schemas.openid.net/secevent/caep/event-type/risk-level-change": {
      "event_timestamp": 1760390391,
      "principal": "USER",
      "current_level": "HIGH",
      "previous_level": "LOW",
      "risk_reason": "PASSWORD_FOUND_IN_DATA_BREACH"
    }
  }
}

RISC events

Account-level changes: compromise, lifecycle, recovery. Specification →

risc Account Credential Change Required The account needs a credential change, for example because a password may have been exposed.

https://schemas.openid.net/secevent/risc/event-type/account-credential-change-required

No event-specific claims.

{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "email",
    "email": "alice@example.com"
  },
  "events": {
    "https://schemas.openid.net/secevent/risc/event-type/account-credential-change-required": {}
  }
}
risc Account Purged The account has been permanently deleted.

https://schemas.openid.net/secevent/risc/event-type/account-purged

No event-specific claims.

risc Account Disabled The account has been disabled and can no longer be used.

https://schemas.openid.net/secevent/risc/event-type/account-disabled

ClaimMeaning
reasonOPTIONALhijacking or bulk-account.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "iss_sub",
    "iss": "https://idp.example.com/",
    "sub": "248289761001"
  },
  "events": {
    "https://schemas.openid.net/secevent/risc/event-type/account-disabled": {
      "reason": "hijacking"
    }
  }
}
risc Account Enabled A previously disabled account has been re-enabled.

https://schemas.openid.net/secevent/risc/event-type/account-enabled

No event-specific claims.

risc Identifier Changed The subject’s identifier (e.g. email or phone) changed. The SET is about the old identifier.

https://schemas.openid.net/secevent/risc/event-type/identifier-changed

ClaimMeaning
new-valueOPTIONALThe new identifier value.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "email",
    "email": "alice@example.com"
  },
  "events": {
    "https://schemas.openid.net/secevent/risc/event-type/identifier-changed": {
      "new-value": "alice.smith@example.com"
    }
  }
}
risc Identifier Recycled The identifier now belongs to a different person — e.g. a reissued email address or phone number.

https://schemas.openid.net/secevent/risc/event-type/identifier-recycled

No event-specific claims.

risc Credential Compromise A credential for the subject was found to be compromised.

https://schemas.openid.net/secevent/risc/event-type/credential-compromise

ClaimMeaning
credential_typeREQUIREDSame values as CAEP Credential Change.
event_timestampOPTIONALWhen the compromise was detected.
reason_admin / reason_userOPTIONALHuman-readable explanations.
{
  "iss": "https://tr.example.com/",
  "jti": "756E69717565206964656E746966696572",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "txn": "8675309",
  "sub_id": {
    "format": "email",
    "email": "alice@example.com"
  },
  "events": {
    "https://schemas.openid.net/secevent/risc/event-type/credential-compromise": {
      "credential_type": "password",
      "event_timestamp": 1760390391
    }
  }
}
risc Opt In The account owner opted in to RISC event exchange.

https://schemas.openid.net/secevent/risc/event-type/opt-in

No event-specific claims.

risc Opt Out Initiated The account owner started opting out; it takes effect after a grace period.

https://schemas.openid.net/secevent/risc/event-type/opt-out-initiated

No event-specific claims.

risc Opt Out Cancelled A pending opt-out was cancelled.

https://schemas.openid.net/secevent/risc/event-type/opt-out-cancelled

No event-specific claims.

risc Opt Out Effective The opt-out is now in effect; no further events about this subject will be sent.

https://schemas.openid.net/secevent/risc/event-type/opt-out-effective

No event-specific claims.

risc Recovery Activated Account recovery was started for the subject.

https://schemas.openid.net/secevent/risc/event-type/recovery-activated

No event-specific claims.

risc Recovery Information Changed Recovery information (backup email, phone, etc.) was changed.

https://schemas.openid.net/secevent/risc/event-type/recovery-information-changed

No event-specific claims.

risc Sessions Revoked deprecated All sessions for the account were revoked.

Deprecated — new implementations MUST use CAEP Session Revoked.

https://schemas.openid.net/secevent/risc/event-type/sessions-revoked

No event-specific claims.

SSF stream events

Housekeeping events about the stream itself, defined by the framework. Specification →

ssf Verification Sent by the Transmitter when a Receiver asks it to verify a stream end-to-end; echoes back the Receiver-supplied state.

https://schemas.openid.net/secevent/ssf/event-type/verification

ClaimMeaning
stateOPTIONALOpaque value the Receiver passed in the verification request.
{
  "iss": "https://tr.example.com/",
  "jti": "123456",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "sub_id": {
    "format": "opaque",
    "id": "f67e39a0a4d34d56b3aa1bc4cff0069f"
  },
  "events": {
    "https://schemas.openid.net/secevent/ssf/event-type/verification": {
      "state": "VGhpcyBpcyBhbiBleGFtcGxlIHN0YXRlIHZhbHVlLgo="
    }
  }
}
ssf Stream Updated The Transmitter changed the stream’s status (enabled, paused, disabled) on its own initiative.

https://schemas.openid.net/secevent/ssf/event-type/stream-updated

ClaimMeaning
statusREQUIREDenabled, paused, or disabled.
reasonOPTIONALWhy the status changed.
{
  "iss": "https://tr.example.com/",
  "jti": "123456",
  "iat": 1760390400,
  "aud": "https://rp.example.com/",
  "sub_id": {
    "format": "opaque",
    "id": "f67e39a0a4d34d56b3aa1bc4cff0069f"
  },
  "events": {
    "https://schemas.openid.net/secevent/ssf/event-type/stream-updated": {
      "status": "paused",
      "reason": "License is not valid"
    }
  }
}