AclEntry class

AclEntry

Constructors

AclEntry({required String subject, required String role, List<String>? scopes, List<String>? allowedKeys, String? label, String? createdAt, String? createdBy, String? updatedAt, String? updatedBy, String? expiresAt, AclEntryStepUp? stepUp, AclEntryApprove? approve, Ext? ext})
const
AclEntry.fromJson(Map<String, dynamic> json)
Read this payload from a decoded JSON object.
factory

Properties

allowedKeys → List<String>?
Key identifiers this subject may invoke the maintainer's signing oracle on. INTERSECTS WITH scopes — it can only narrow, never widen: a key named here that lies outside the entry's scopes remains unreachable, exactly as if it were not named. ABSENT means every key within the entry's scopes (the behaviour of entries that pre-date this member); explicit null is equivalent to absent, and producers SHOULD omit the member instead. PRESENT-BUT-EMPTY means authorized on NO keys — the opposite of absent, and deliberately so: emptiness is never a wildcard (CONVENTIONS.md §5). A consumer MUST preserve and enforce the absent-vs-empty distinction end to end; collapsing the two (e.g. by testing emptiness alone) re-creates the empty-means-unrestricted class of privilege-escalation defect this family's conventions exist to prevent.
final
approve → AclEntryApprove?
Approve-authority: what this subject may confer on others by ratifying an approval, as distinct from scopes, which is what it may exercise itself. The two axes are independent, and that independence is the point — it is what lets a maintainer configure a least-privilege approver who can authorize an operation in a scope it has no authority to perform. OMISSION MEANS NOTHING IS CONFERRED. An absent approve, an absent all, and an empty scopes are all equivalent to "this subject may ratify nothing". A consumer that does not implement this member therefore confers less than the producer intended rather than more, which is the direction a missed member has to fail in. A subject with approve-authority is NOT thereby authorized to act. Consumers MUST resolve the two axes separately: reading approve to answer "may this party ratify X" and scopes to answer "may this party do X". Collapsing them grants an approver the ability to perform what it was only meant to sign off on.
final
createdAt → String?
final
createdBy → String?
VID of the party that originally added this entry.
final
expiresAt → String?
Optional time after which the entry is no longer effective.
final
ext → Ext?
Ecosystem-defined extension members per SPEC.md §4.5.1. Reverse-DNS-namespaced; consumers MUST ignore unrecognized namespaces.
final
hashCode → int
The hash code for this object.
no setterinherited
label → String?
Optional human-readable label.
final
role → String
Opaque role identifier interpreted by the ACL maintainer.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
scopes → List<String>?
Opaque scope identifiers (e.g. contexts, domains, resource prefixes).
final
stepUp → AclEntryStepUp?
Per-entry authentication step-up configuration, consumed by the ACL maintainer when it gates an operation behind a step-up (see auth/step-up/policy/0.1). ADDITIVE-ONLY: a per-entry setting MAY raise the assurance required of this subject above the maintainer's system-wide floor, but MUST NOT lower it. The maintainer resolves the effective requirement as the strictest of (system floor, this entry).
final
subject → String
VID of the party in the ACL. Compared by exact string equality (SPEC.md §4.8); producers SHOULD emit canonical form.
final
updatedAt → String?
final
updatedBy → String?
VID of the party that last modified this entry.
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toJson() → Map<String, dynamic>
Serialize to a JSON-encodable map, omitting absent members.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited