Role routes: review, staff, vacate
The Role Verbs review, staff, vacate as api.sb routes, with inputs, result, refusals and an example.
Reference for Role, one group of Role routes.
Role.review
Review checks one Role against its contract for a period and records a Role Review. Verb page.
POST /{namespace}/ roles/ {role}/ reviewPath: role. Body, as JSON: the other inputs. Emits Role.reviewed.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
role | Role | required | The Role to review. |
period | string | required | The period it covers, such as 2026-W43. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
role | Role | required | The reviewed Role. |
roleReview | Role Review | required | The recorded Role Review. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ roles/ role_oloMFMUeCH/ review \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"period": "Example period"}'{
"api": "https: //api.sb/ leaseline.app",
"role": {
"$id": "https: //api.sb/ leaseline.app/ roles/ role_oloMFMUeCH",
"$type": "Role",
"name": "Success Manager",
"status": "filled"
},
"roleReview": {
"$id": "https: //api.sb/ leaseline.app/ role-reviews/ rolereview_Eflst84AOW",
"$type": "RoleReview",
"role": "role_oloMFMUeCH",
"period": "2026-W43"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Role.review",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Role.staff
Staff fills a Role with a Worker, human or agent, who then performs the Role’s Verbs under its Permissions. Verb page.
POST /{namespace}/ roles/ {role}/ staffPath: role. Body, as JSON: the other inputs. Emits Role.staffed.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
role | Role | required | The Role to fill. |
worker | Worker | required | The Worker who fills it. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
role | Role | required | The staffed Role. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| The record is not in a state that allows this Verb, so the call is refused. | refused | Read the record, run the Verb that moves it to an allowed state, then retry. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ roles/ role_oloMFMUeCH/ staff \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"worker": "worker_whZFpOKWIV"}'{
"api": "https: //api.sb/ leaseline.app",
"role": {
"$id": "https: //api.sb/ leaseline.app/ roles/ role_oloMFMUeCH",
"$type": "Role",
"name": "Success Manager",
"status": "filled"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Role.staff",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Role.vacate
Vacate 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. Verb page.
POST /{namespace}/ roles/ {role}/ vacatePath: role. Body, as JSON: the other inputs. Emits Role.vacated.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
role | Role | required | The Role to empty. |
reason | text | Why the seat empties. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
role | Role | required | The vacant Role. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ roles/ role_oloMFMUeCH/ vacate \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"{
"api": "https: //api.sb/ leaseline.app",
"role": {
"$id": "https: //api.sb/ leaseline.app/ roles/ role_oloMFMUeCH",
"$type": "Role",
"name": "Success Manager",
"status": "filled"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Role.vacate",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}