Skip to content

Action Library — the (action × entity) catalog

The Library is the single catalog every permission is built from. Each entry is one (action × entity) pair — a verb bound to a concrete thing — carrying the variable slots it accepts and the event it emits.

entry = (action, entity) → { variable slots, emitted event, operation }

A bare action string (device.access.approve) is abstract — it names nothing real. Bound to an entity (DeviceBinding) it becomes substance: a thing the system can grant, check, and seal. Everything downstream references this catalog:

  • Permissions are catalog entries (managed IsSystemPermission, or custom org rows).
  • Forms / approval types pick an action from it.
  • The Action List at submission draws its fields from the entry’s variable slots.
  • The ceiling check compares scopes that are entries in it.

The vocabulary is the event catalog — every grantable action is an event a principal causes (entity.action), so the Library is the grantable subset of Events.

Each entry also carries a RiskLevel (0 Routine → 4 Sovereign) that routes how the grant is approved — auto-grant, supervisor, owner-passkey, or multi-approval (see Event & system control). The Library splits in two: a business tier (this page) and a platform tier — the highest-risk control over events, ownership, and keys, on Event & system control. Orgs extend it with Custom actions.

Axowl-defined actions, grouped by entity. Variables show name[kind]:

  • Ceiling-bearing (the subsume check compares these): [ref] entity-reference · [set] categorical · [num] numeric.
  • Input only (carried into the action, never compared by the ceiling): [in].

Every entry also accepts the lifecycle controls uses / ttl / exp (see Capability grants), plus a RiskLevel that routes its approval.

RiskLevel at a glance (exact value is set per action in the catalog; these are the typical tiers):

  • 0–1 Routine / Standard (auto-grant) — most create / reads / invite.
  • 2 Elevated (supervisor) — assignRole · changeRole · grantAccess · grant · suspend / remove / revokeAccess member · createRefund · approve settlement.
  • 3 Critical (owner passkey) — delegate permission · delete application · anonymize / delete / merge user · revoke device.

Platform-tier actions (3–4) live on Event & system control.

ActionEntityVariablesEmits
approveAccessDeviceBindingdevice[ref] os_class[set]device.lifecycle.activated
revokeDeviceBindingdevice[ref]device.lifecycle.revoked
blockDeviceBindingdevice[ref] reason[in]device.lifecycle.blocked
inviteConnectedId (member)email[in] role[ref]org.member.invited
assignRoleConnectedId (member)member[ref] role[ref · level-ordered]connectedId.authorization.role_assigned
changeRoleConnectedId (member)member[ref] role[ref]org.member.role_changed
suspendConnectedId (member)member[ref]org.member.suspended
removeConnectedId (member)member[ref]org.member.removed
revokeAccessConnectedId (member)member[ref]org.member.access_revoked
createRolename[in]auth.role.created
assignRolemember[ref] role[ref]auth.role.assigned
addPermissionRolerole[ref] scope[ref]auth.role.permission_added
removePermissionRolerole[ref] scope[ref]auth.role.permission_removed
createPermissionscope[set]auth.perm.created
grantPermissionmember[ref] scope[ref]auth.perm.granted
revokePermissionmember[ref] scope[ref]auth.perm.revoked
delegatePermissionmember[ref] scope[ref] amount[num]auth.perm.delegated
registerPasskeyUserCredentialmember[ref]device.passkey.registered
revokePasskeyUserCredentialcredential[ref]device.passkey.revoked
trustDeviceBindingdevice[ref]device.lifecycle.trusted
issueEnrollmentTokenDeviceBindingdevice_class[set]device.enrollment.token_issued
ActionEntityVariablesEmits
createApplicationname[in]app.lifecycle.created
deleteApplicationapp[ref]app.lifecycle.deleted
grantAccessApplicationapp[ref] member[ref] level[set]app.access.granted
revokeAccessApplicationapp[ref] member[ref]app.access.revoked
changeSecurityApplicationapp[ref]app.sec.oauth_settings_changed
create / update / deleteAppGroupgroup[ref]org.app_group.* (derived)
enableIntegrationmodule[set]org.integration.enabled
disconnectIntegrationmodule[set]org.integration.disconnected
grantPermissionIntegrationmodule[set] group[ref] scopes[set]org.integration.permission_granted
ActionEntityVariablesEmits
createTeamname[in]reporting.team.created
setLeadTeamteam[ref] member[ref]reporting.team.lead_changed
addMemberTeamteam[ref] member[ref]reporting.membership.added
removeMemberTeamteam[ref] member[ref]reporting.membership.removed
addReportingConnectedIdmember[ref] supervisor[ref]reporting.relationship.added
ActionEntityVariablesEmits
updateSettingsOrganizationorg.settings.updated
configureSSOOrganizationprovider[in]org.access.sso_configured

Keys, signing-key rotation, plugin tokens, domain, policy, seal, and sovereign org actions live in the higher-risk Event & system control tier — not here.

ActionEntityVariablesEmits
createRefundInvoiceinvoice[ref] amount[num]payments.refund.created
cancelInvoiceinvoice[ref]payments.invoice.cancelled
approveSettlementsettlement[ref] amount[num]commerce.settlement.approved
adjustSettlementsettlement[ref] amount[num]commerce.settlement.adjusted
cancelSubscriptionSubscriptionsubscription[ref]payments.sub.cancelled
applyDiscountInvoiceinvoice[ref] percent[num]payments.billing.discount_applied
create / cancelMeetingmeeting[ref]business.meeting.*
ActionEntityVariablesEmits
createEndUserappgroup[ref]enduser.lifecycle.created
suspendEndUserenduser[ref]enduser.status.suspended
activateEndUserenduser[ref]enduser.status.activated
deleteEndUserenduser[ref]enduser.lifecycle.deleted
ActionEntityVariablesEmits
verifyIdentityUsermember[ref]user.identity.verified
linkExternalSystemUsermember[ref] system[in]user.identity.external_system_linked
anonymizeUsermember[ref]user.lifecycle.anonymized
deleteUsermember[ref]user.lifecycle.deleted
recoverUsermember[ref]user.lifecycle.recovered
mergeUsermember[ref] into[ref]user.lifecycle.merged

GDPR / PIPA actions — anonymize / delete / recover are high-risk and sealed for proof.

ActionEntityVariablesEmits
defineAssetDefinitionname[in]asset.definition.created
issueAssetInstancedefinition[ref] holder[ref]asset.instance.issued
revokeAssetInstanceinstance[ref]asset.instance.revoked

The grantable capability is the right to initiate a given approval type:

ActionEntityVariablesEmits
initiateApprovalType (WorkItem)type[ref]reporting.approval.requested

Not every event is an action you delegate. The Library is the principal-action subset; these stay out:

  • Detection*.security.* (suspicious login, anomaly, tampering, brute force), integrity.data.*
  • Automatic / system*.session.* (created / refreshed / expired), audit.rollup.created, *.monitoring.*, auth.perm.cache_*, session.activity.heartbeat
  • Lifecycle by-products — events emitted as a result of a granted action, not the action itself
  • Reads / views — viewing data (a member, a report, an audit page) is mostly event-light and is handled by plain RBAC, outside this grant-Library. The Library is the mutation / decision catalog — the things a principal causes, which emit a sealed event. (A read that must be proven — e.g. a sensitive export — can still emit an event and be added.)

These appear in the audit chain; they are simply never something a person is granted the right to cause.

This page is the business tier. Three more pages complete the Library:

  • Event & system control — the platform tier: controlling the event/audit pipeline, ownership, and keys. Highest RiskLevel; includes registerCustomEvent (“the right to define rights”).
  • Custom actions — how an org composes its own actions (same grammar, kinds, ceiling, lifecycle; the operation runs in the org’s system).
  • Protected boundary — what is never grantable at any tier: the sealed chain, hardware keys, immutable scopes, the no-escalation ceiling. Protected by mechanism, not approval.

Related: Event & system control · Custom actions · Capability grants · Roles & permissions · Events