Custom actions — how an org composes its own
Built exactly like a managed action
Section titled “Built exactly like a managed action”A custom action uses the same grammar, the same variable kinds, the same ceiling, and the same lifecycle as a managed one. Only two things differ: the org defines it (not Axowl), and the operation runs in the org’s own system.
To compose one, an org supplies four things:
| Part | What it is | Example (a logistics org) |
|---|---|---|
| Target entity | a business object — an existing Axowl entity, or one the org names | Shipment |
| Action verb | what is done to it | approve |
| Variable slots | the limits the grant can carry, each with a kind | region[set] · value[num] |
| Event | a custom event the action emits (sealed into the chain) | shipment.approved |
That composes the catalog entry:
shipment.approve:region=KR,value<=50000,uses=*└─ scope ─┘ └────── variable bag ──────┘Composition rules
Section titled “Composition rules”- Same grammar.
namespace.resource.action:key{op}value— the org picks thenamespace(their system) andresource(their entity). - Same kinds. Ceiling-bearing
[ref]entity-reference ·[set]categorical ·[num]numeric (compared by subsume), and[in]input-only (carried, not compared) — the operator encodes the kind, the value is always a string. - Same ceiling. A custom action is still bounded by the approver’s authority — an org admin can only delegate within what they hold.
- Same lifecycle.
uses/ttl/expapply unchanged (ttl/expare the time add-on). - Same RiskLevel model. The org assigns a RiskLevel → it routes to the matching approval tier, exactly like managed actions.
- Origin = custom. Stored as an org-scoped catalog row (
IsSystemPermission = false), versus managed rows on the system org.
Managed vs custom — at a glance
Section titled “Managed vs custom — at a glance”| Managed | Custom | |
|---|---|---|
| Defined by | Axowl (code + event catalog) | the org (in-app) |
| Operation runs in | Axowl | the org’s own system (via SDK) |
| Catalog row | system org · IsSystemPermission | org-scoped row |
| Removable | no (Axowl-owned) | yes (the org’s own) |
| Grammar · kinds · ceiling · lifecycle | — | identical |
Related: Action Library · Event & system control · Capability grants · SDK overview