Task
A Task is an Action waiting on a Worker, with an assignee, a due time, and a place in that Worker’s inbox.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
due | datetime | When the Task is due. | |
priority | integer | Its rank in the inbox, highest first. | |
recurrence | string | The schedule a recurring duty repeats on. |
Inherited from Action: 11 properties
| Property | Type | Required | Description |
|---|---|---|---|
status | string | required | One of pending, done, failed, canceled, or refused. |
reason | string | Why a pending Action waits: queued, running, retrying, awaitingWorker, awaitingInput, awaitingSource, awaitingAction, or awaitingTime. | |
mode | string | required | How the caller invoked it: try, send, or do. |
by | Worker | The Worker that performed it. | |
for | Party | The Party it was done on behalf of. | |
via | string | The Interface or request it arrived through. | |
on | string | The Action or Event that caused it, such as the failed attempt a retry follows. | |
thing | string | The record, at the Version the Action was decided against. | |
input | json | The input it was called with. | |
createdAt | datetime | When it was called. | |
reserved | money | The most this Action may cost, held against its Limits from the check until it settles, billed misses included. |
Object
{
"$id": "https: //api.sb/ routewise.dev/ tasks/ task_1",
"$type": "Task",
"status": "pending",
"reason": "queued",
"mode": "try",
"by": "worker_1",
"for": "party_1",
"via": "API",
"on": "Invoice.overdue",
"thing": "invoice_1@v3",
"input": {},
"createdAt": "2026-10-22T12: 00: 00Z",
"reserved": {
"amount": 25,
"currency": "USD"
},
"due": "2026-10-22T12: 00: 00Z",
"priority": 1,
"recurrence": "Weekly on Friday"
}Relationships
- A Task is assigned to one Worker: the Worker a Task waits on; the Task sits in that Worker’s inbox until it is done.
assignedTo, inversetasks. - A Task has one Project: a Project is made of Tasks.
project, inverseplans.
Verbs
createCreates a Task.POST /{namespace}/tasksgetReturns one Task by id.GET /{namespace}/tasks/{id}listReturns Tasks, newest first, one page at a time.GET /{namespace}/tasksupdateChanges the given properties of a Task.PATCH /{namespace}/tasks/{id}deleteDeletes a Task; its history is kept.DELETE /{namespace}/tasks/{id}assignAssign gives a Task to a Worker, human or agent, and places it in that Worker’s worklist.POST /{namespace}/tasks/{task}/assignclaimClaim takes an offered Task from a shared queue or a handoff and makes the calling Worker its assignee.POST /{namespace}/tasks/{task}/claimcompleteComplete marks a Task done and resumes the Action that waited on it.POST /{namespace}/tasks/{task}/completedelegateDelegate passes a Task to another Role along a declared handoff and keeps its history.POST /{namespace}/tasks/{task}/delegateescalateEscalate moves a Task to the Role its current Role escalates to, with the reason attached.POST /{namespace}/tasks/{task}/escalatenextNext returns the oldest open Task the calling Worker’s Roles may claim, without claiming it.POST /{namespace}/tasks/nextreturnReturn hands an offered Task back to its sender, unchanged, with the reason the receiver cannot take it.POST /{namespace}/tasks/{task}/return
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Task.create | Yes | Yes | Yes | No |
Task.get | Yes | Yes | Yes | Yes |
Task.list | Yes | Yes | Yes | Yes |
Task.update | Yes | Yes | Yes | No |
Task.delete | Yes | Yes | Yes | No |
Task.assign | Yes | Yes | Yes | No |
Task.claim | Yes | Yes | Yes | No |
Task.complete | Yes | Yes | Yes | No |
Task.delegate | Yes | Yes | Yes | No |
Task.escalate | Yes | Yes | Yes | No |
Task.next | Yes | Yes | Yes | No |
Task.return | Yes | Yes | Yes | No |
Call it
Assign the latest task with a worker.Example
A parent asks a tutoring marketplace to reschedule. The reply is a Task assigned to the Customer Lead, due in 15 minutes, at the top of its inbox.