Verb
A Verb is an action an Agent or a person performs on a Noun, emitting one event when it completes.
A Verb is an action an Agent or a Human performs on a Noun, emitting one Event when it completes. Its name is Noun.verb, and its Event is the past tense: Offer.publish emits Offer.published.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
name | string | required | The camelCase action form. |
event | string | required | The event the Verb emits. |
publishedIn | Version | The first published Version that serves it; from then on, edits go through a Change and delete refuses. | |
status | string | required | One of draft, published or retired. |
Object
{
"$id": "https: //api.sb/ patentpad.com/ verbs/ verb_1",
"$type": "Verb",
"name": "PatentPad",
"event": "Example event",
"publishedIn": "version_1",
"status": "draft"
}Relationships
- A Verb acts on one Noun: every Verb acts on one Noun, which names it:
Startup.launchacts on Startup.actsOn, inverseactedOnBy. - A Verb is allowed by many Permissions: each Permission allows one Verb, within its scope and Limit.
allowedBy, inverseallows. - A Verb defaults to one Mode: the Mode a call uses when the caller names none:
try,sendordo.defaultsTo, inversedefaultFor. - A Verb is exposed as many Tools: a Tool is one Verb under one name on every Interface, such as
Contact.create.exposedAs, inverseexposes. - A Verb is graded by many Evaluators: the Verbs whose results the Evaluator scores against its rubric before they count as done.
gradedBy, inversegrades. - A Verb is implemented by many Functions: a Function is how a Verb runs: code, a generative model, an Agent or a Human, and the caller never sees which.
implementedBy, inverseimplements. - A Verb is invoked as many Actions: each Action performs one Verb, which fixes its inputs, the Event it emits and its delay window.
invokedAs, inverseinvokes. - A Verb is reserved by many Reserved Acts: the Verb the law reserves to a credentialed Human in the act’s jurisdiction.
reservedBy, inversereserves. - A Verb types many Relationships: a Relationship reads through a Verb whose forms name it from each side, such as
makesandmadeBy.types, inversetypedBy.
Lifecycle
| State | Meaning | Moves to |
|---|---|---|
draft (first) | Defined and editable; no published Version serves it. | published on Version.deployed when the deployed Version is the first to include this Verb |
published | A published Version serves it; edits go through a Change, and delete refuses. | retired by Verb.retire |
retired | New Versions leave it out; callers pinned to earlier Versions keep calling it. | None: it ends here. |
Verbs
createCreates a Verb.POST /{namespace}/verbsgetReturns one Verb by id.GET /{namespace}/verbs/{id}listReturns Verbs, newest first, one page at a time.GET /{namespace}/verbsupdateChanges the given properties of a Verb.PATCH /{namespace}/verbs/{id}deleteDeletes a Verb; its history is kept.DELETE /{namespace}/verbs/{id}retireRetire removes a published Verb from new Versions; callers pinned to earlier Versions keep calling it.POST /{namespace}/verbs/{verb}/retire
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Verb.create | Yes | Yes | Yes | No |
Verb.get | Yes | Yes | Yes | Yes |
Verb.list | Yes | Yes | Yes | Yes |
Verb.update | Yes | Yes | Yes | No |
Verb.delete | Yes | Yes | Yes | No |
Verb.retire | Yes | No | No | No |
Call it
Retire the latest verb.Example
An Agent runs Offer.publish on a $49-a-month contract-review Offer. The run is one Action: the Offer opens for acceptance, and Offer.published records the moment.