Skip to content

CaepInteropProfilePolicy Class

What the CAEP Interoperability Profile 1.0 demands of a TRANSMITTER's payload, on top of what CAEP 1.0 permits: each of its three use cases requires reason_admin to carry a non-empty object.

C#
public sealed class CaepInteropProfilePolicy : Abblix.SecurityEvents.Events.IEventPayloadPolicy

Inheritance System.Object → CaepInteropProfilePolicy

Implements IEventPayloadPolicy

Remarks

Section 3.1 says "The reason_admin field of the event MUST be populated with a non-empty object"; Sections 3.2 and 3.3 name the actor outright, "Transmitters MUST populate this value with a non-empty object". The obligation is the transmitter's alone - neither document asks a receiver to reject an event without it.

CAEP 1.0 leaves the member optional - Section 2, "The following claims are optional unless otherwise specified in the event definition" - and defines no event-specific claim for session-revoked (Section 3.1.1), so an empty payload is well-formed under the base specification and the property stays nullable. What CAEP 1.0 does say about the member once it appears is "The object MUST contain one or more key/value pairs", so an EMPTY object is outside the base specification too and this policy is not the only thing that would be wrong to emit it.

Registering it is how a deployment claims the profile. A host that does not is emitting CAEP 1.0 events, which is a smaller claim and a valid one.

Constructors

CaepInteropProfilePolicy() Constructor

Claims all three use cases.

C#
public CaepInteropProfilePolicy();

Remarks

Spelled out rather than left to the parameter's default, because a container cannot satisfy a params array: without this, the natural registration AddSingleton<IEventPayloadPolicy, CaepInteropProfilePolicy>() compiles and then fails when the policy is first resolved.

CaepInteropProfilePolicy(string[]) Constructor

What the CAEP Interoperability Profile 1.0 demands of a TRANSMITTER's payload, on top of what CAEP 1.0 permits: each of its three use cases requires reason_admin to carry a non-empty object.

C#
public CaepInteropProfilePolicy(params string[] claimedUseCases);

Parameters

claimedUseCases System.String[]

The use cases this deployment claims, by event type; empty claims all three. The profile's Section 1 says "Support for all use cases listed herein is not required in order to be considered compliant with this profile. An implementation can choose specific use cases to support", so a deployment conforming through one of them may still emit the others as plain CAEP 1.0 events. Naming the claimed ones is how it keeps that freedom, and the default is deliberately the strict reading: a transmitter that has not thought about it is better refused than quietly non-conformant.

Remarks

Section 3.1 says "The reason_admin field of the event MUST be populated with a non-empty object"; Sections 3.2 and 3.3 name the actor outright, "Transmitters MUST populate this value with a non-empty object". The obligation is the transmitter's alone - neither document asks a receiver to reject an event without it.

CAEP 1.0 leaves the member optional - Section 2, "The following claims are optional unless otherwise specified in the event definition" - and defines no event-specific claim for session-revoked (Section 3.1.1), so an empty payload is well-formed under the base specification and the property stays nullable. What CAEP 1.0 does say about the member once it appears is "The object MUST contain one or more key/value pairs", so an EMPTY object is outside the base specification too and this policy is not the only thing that would be wrong to emit it.

Registering it is how a deployment claims the profile. A host that does not is emitting CAEP 1.0 events, which is a smaller claim and a valid one.

Methods

CaepInteropProfilePolicy.RefusalOf(string, IEventPayload) Method

Why this deployment will not emit the event, or null when it will.

C#
public string? RefusalOf(string eventType, Abblix.SecurityEvents.Events.IEventPayload? payload);

Parameters

eventType System.String

The event type URI the payload is carried under.

payload IEventPayload

The payload the application built; null for an event that carries none.

Implements RefusalOf(string, IEventPayload)

Returns

System.String
An operator-facing sentence naming what is missing, or null to let the event go.