Role
A Role is a seat that owns a set of work and holds the Permissions to do it, filled by a Human or an Agent.
The work and its Permissions stay with the seat when a new filler takes it.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
name | string | required | The title of the seat. |
responsibilities | text | The work the seat owns. | |
status | string | required | One of vacant or filled. |
autonomy | json | How much its agent does without asking: a rung, assist, supervised or full, with another rung per decision class where it differs. |
Object
{
"$id": "https: //api.sb/ kilnbakery.com/ roles/ role_1",
"$type": "Role",
"name": "Kiln Bakery",
"responsibilities": "Example responsibilities",
"status": "vacant",
"autonomy": {
"default": "supervised",
"byClass": {
"high": "assist"
}
}
}Relationships
- A Role is filled by many Workers: a Worker, human or agent, fills a Role and acts under its Permissions; one Agent can fill Roles in many Startups.
filledBy, inversefills. - A Role holds many Permissions: a Role’s Permissions are what its Worker may do: Verbs on Nouns within a scope and a Limit.
holds, inverseheldBy. - A Role has many Openings: an Opening is a need for a Human in one Role, taking a share of that Role’s work.
openings, inversestaffs. - A Role has many Personas: the Role whose Permissions a Persona signs in with, so an App compiles its Dashboards and Verbs from one record.
personas, inverseholds. - A Role requires many Skills: the Skills, each at a level, a Worker needs to fill the Role.
requires, inverserequiredBy. - A Role has many Role Reviews: each Role Review checks one Role, and a Role keeps every review it has had.
roleReviews, inversereviews. - A Role has one Team: a Team groups the Roles that do one kind of work under one owner.
team, inversegroups.
Lifecycle
| State | Meaning | Moves to |
|---|---|---|
vacant (first) | No Worker fills it, so its work waits for the Role above. | filled by Role.staff |
filled | A Human or an Agent fills it and performs its Verbs under its Permissions. | vacant by Role.vacate; vacant on Agent.retired when the Agent filling this Role is retired; vacant on Agent.deleted when the Agent filling this Role is deleted; vacant on Human.deleted when the Human filling this Role is deleted |
Verbs
createCreates a Role.POST /{namespace}/rolesgetReturns one Role by id.GET /{namespace}/roles/{id}listReturns Roles, newest first, one page at a time.GET /{namespace}/rolesupdateChanges the given properties of a Role.PATCH /{namespace}/roles/{id}deleteDeletes a Role; its history is kept.DELETE /{namespace}/roles/{id}reviewReview checks one Role against its contract for a period and records a Role Review.POST /{namespace}/roles/{role}/reviewstaffStaff fills a Role with a Worker, human or agent, who then performs the Role’s Verbs under its Permissions.POST /{namespace}/roles/{role}/staffvacateVacate takes the Worker out of a Role, and the seat’s Tasks route to the Role it escalates to until a new Worker is staffed.POST /{namespace}/roles/{role}/vacate
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Role.create | Yes | Yes | No | No |
Role.get | Yes | Yes | Yes | Yes |
Role.list | Yes | Yes | Yes | Yes |
Role.update | Yes | Yes | No | No |
Role.delete | Yes | Yes | No | No |
Role.review | Yes | Yes | No | No |
Role.staff | Yes | Yes | No | No |
Role.vacate | Yes | Yes | No | No |
Call it
Staff the latest role with a worker.Example
The Customer Lead Role at a tutoring marketplace owns first replies and refunds under $100. An Agent fills it on weekdays and the Founder on weekends; the $100 refund Limit binds both.