Skip to content
โ—‡ AirawatOS Developer
๐Ÿšง Under development โ€” this portal is being built track by track. Content will keep growing, and some sections are still placeholders.

Build

Designing a role (an actor)

Nouns are the data, verbs are the actions โ€” roles are who is allowed to act, and they're governed too.

A role is a governed name for a kind of actor โ€” urban.pollution-control-officer, health.records-officer, judge. Like a noun or a verb, a role is a shared standard: it's proposed, a steward approves it, and it becomes part of the network's actor vocabulary (Governance & Decisions). Apps then gate their actions on roles, so "who may do this" is a governed decision, not code buried in an app.

There are two kinds of role, and telling them apart is the main design choice.

1. Person roles (what someone's job is)

The everyday kind: a role a person holds in an organization โ€” an officer, a clerk, a judge, a manager. These map to real posts. You:

A user's effective roles are their identity roles plus any role grants, so giving someone a role takes effect immediately โ€” the role-gated apps and actions light up without touching their login.

2. Data-governance roles (what an org is to a category of data)

A different, subtler kind โ€” not "what is this person's job," but "what standing does an organization have over a class of data." The clearest example is the custodian: the agency responsible for holding and operating a category of records. This is the data-protection idea โ€” a data subject (the person the data is about), a custodian/controller (the agency), and everyone else.

You meet this the moment you design subject-owned data (see Data Ownership & Consent). A citizen owns their record; the holding agency still needs to work with it. So the schema names a custodian role, and whoever the tenant assigns to that role gets operational read and edit โ€” without asking the citizen each time. But the custodian's reach stops at operating the record: sharing it onward is consent, and consent stays with the subject. A custodian may work the data; only the owner may give it away.

These roles are governed and assigned the same way as person roles (dictionary + Org Setup), but they carry a data-governance meaning, so name and use them deliberately โ€” a custodian is not a job title, it's a responsibility over data.

Design considerations

The short version

A role is a governed name for an actor. Decide whether it's a person role (a job โ€” assigned via Org Setup postings, optionally scoped) or a data-governance role (a custodian/controller over a data category โ€” named on the schema, consent still the subject's). Reuse before proposing, name for the actor, scope instead of multiplying, and remember: roles decide who may act, never what the code may do.

Related: Governance & Decisions (how roles and decisions are governed), Data Ownership & Consent (the custodian role), and Designing a schema (where x-custodian-role lives).