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.
public sealed class CaepInteropProfilePolicy : Abblix.SecurityEvents.Events.IEventPayloadPolicyInheritance 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.
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.
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.
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.