Skip to content

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

PropertyTypeRequiredDescription
namestringrequiredThe title of the seat.
responsibilitiestextThe work the seat owns.
statusstringrequiredOne of vacant or filled.
autonomyjsonHow much its agent does without asking: a rung, assist, supervised or full, with another rung per decision class where it differs.

Object

JSON
{
  "$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

Lifecycle

Role lifecycle: vacant, filledvacant → filled: Role.stafffilled → vacant: Role.vacatefilled → vacant: on Agent.retiredfilled → vacant: on Agent.deletedfilled → vacant: on Human.deletedvacantfilled
StateMeaningMoves to
vacant (first)No Worker fills it, so its work waits for the Role above.filled by Role.staff
filledA 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

  1. createCreates a Role.
    POST /{namespace}/rolesdoRole.created
  2. getReturns one Role by id.
    GET /{namespace}/roles/{id}readNo Event
  3. listReturns Roles, newest first, one page at a time.
    GET /{namespace}/rolesreadNo Event
  4. updateChanges the given properties of a Role.
    PATCH /{namespace}/roles/{id}doRole.updated
  5. deleteDeletes a Role; its history is kept.
    DELETE /{namespace}/roles/{id}doRole.deleted
  6. reviewReview checks one Role against its contract for a period and records a Role Review.
    POST /{namespace}/roles/{role}/reviewdoRole.reviewed
  7. staffStaff fills a Role with a Worker, human or agent, who then performs the Role’s Verbs under its Permissions.
    POST /{namespace}/roles/{role}/staffdoRole.staffed
  8. vacateVacate 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}/vacatedoRole.vacated

Permissions

Which Access level may call each Verb. One-way Verbs wait their delay window.

Operationowneradminmemberviewer
Role.createYesYesNoNo
Role.getYesYesYesYes
Role.listYesYesYesYes
Role.updateYesYesNoNo
Role.deleteYesYesNoNo
Role.reviewYesYesNoNo
Role.staffYesYesNoNo
Role.vacateYesYesNoNo

Call it

Text
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.