Transmitter metadata.
Current stream configuration.
Asks the transmitter to include events about a subject in this stream.
RFC 9493 subject identifier, e.g. Subject.issSub(iss, sub)
Optionalopts: { verified?: boolean } = {}Creates a stream using this receiver's delivery settings and requested events.
Deletes the stream at the transmitter.
Optionalopts: { keepalive?: boolean } = {}
keepalive: let the request outlive the page (used on pagehide).
Loads transmitter metadata from its well-known SSF configuration endpoint.
All streams the transmitter has for this receiver.
Removes a handler previously registered with onEvent / on
Called for every accepted event, after type-specific handlers.
CAEP assurance-level-change: authentication assurance changed (payload.current_level, previous_level, change_direction).
CAEP credential-change: a credential was created/revoked/updated/deleted (payload.credential_type, change_type).
CAEP device-compliance-change: device compliance changed (payload.current_status: "compliant" | "not-compliant").
Called with (error, context) when a SET is rejected, a handler throws, or polling fails.
Registers a handler for any event type URI (CAEP, RISC, or custom).
CAEP risk-level-change: the risk level of a principal changed (payload.current_level, previous_level, risk_reason, principal).
CAEP session-established: a new session was established (payload.acr, amr, fp_ua, ext_id).
CAEP session-presented: a session was presented to a service (payload.fp_ua, ext_id).
CAEP session-revoked: the session(s) for the subject were revoked; terminate local sessions.
SSF stream-updated event (payload.status, payload.reason).
CAEP token-claims-change: claims in previously issued tokens changed (payload.claims).
Called for events with no type-specific handler.
SSF verification event (payload.state).
Performs one RFC 8936 poll request, acknowledging previously processed SETs.
Triggers an immediate poll (poll delivery only).
Validates a SET and runs its handlers. Use this if you receive SETs through your own transport.
Compact JWS SET
the dispatched events (empty for a replayed jti)
PUT (replace) the stream configuration.
Requests a verification event (SSF §8.1.4) and resolves when it is received.
Optionalopts: { state?: string; timeoutMs?: number } = {}Discovers the transmitter, creates (or reuses) a stream, and starts polling when using poll delivery.
If the transmitter refuses a new stream because this receiver already has one (HTTP 409) or has as many
as it may hold (HTTP 403 — iya-sts's answer past ssf.maxStreams), an existing stream is reused and
re-pointed at this receiver's delivery settings: the one whose description is this receiver's, or else
the first.
With catchUp, the SETs already queued on the stream are polled and dispatched before this resolves,
e.g. so that a session revoked while the receiver was stopped is acted on before the session is used.
Optionalopts: { catchUp?: boolean } = {}Stops polling and optionally deletes the stream at the transmitter.
Optionalopts: { deleteStream?: boolean } = {}PATCH the stream configuration.
Validates a SET (RFC 8417 / SSF 1.0 §4) without dispatching it.
Duplicate jtis return an empty array.
OpenID Shared Signals Framework 1.0 receiver with first-class CAEP handlers.
Register a handler per CAEP event: receiver.onSessionRevoked(async (evt) => { ... }) .onCredentialChange(async (evt) => { ... }); or pass them as
handlers: { sessionRevoked, credentialChange, ... }. Any other event type (e.g. RISC) can be handled withonEvent(uri, handler).