Noun
A Noun is a type of record, with its properties, its relationships, and the Verbs that act on it.
Each record is a Thing of exactly one Noun.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
name | string | required | The singular, capitalized name. |
properties | json | Its properties, each with a name, a type, and whether it is required. | |
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/ kilnbakery.com/ nouns/ noun_1",
"$type": "Noun",
"name": "Kiln Bakery",
"properties": {},
"publishedIn": "version_1",
"status": "draft"
}Relationships
- A Noun is acted on by many Verbs: every Verb acts on one Noun, which names it:
Startup.launchacts on Startup.actedOnBy, inverseactsOn. - A Noun is curated in many Datasets: a Dataset collects and vouches for the Things of exactly one Noun.
curatedIn, inversecurates. - A Noun is defined in many Systems: the Nouns a System keeps records of; several Systems can share one Noun.
definedIn, inversedefines. - A Noun is exposed by one Capability: a Capability exposes Verbs on one Noun family, metered, limited and logged under one key.
exposedBy, inverseexposes. - A Noun’s instances are many Things: a Thing takes the properties, relationships and Verbs of every Noun it is an instance of.
instances, inverseinstanceOf. - A Noun moves through one Lifecycle: a Noun’s Lifecycle lists the states its Things move through and the Verbs that move them.
movesThrough, inversegoverns.
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 Noun |
published | A published Version serves it; edits go through a Change, and delete refuses. | retired by Noun.retire |
retired | New Versions leave it out; its records, its history and every pinned Version keep serving. | None: it ends here. |
Verbs
createCreates a Noun.POST /{namespace}/nounsgetReturns one Noun by id.GET /{namespace}/nouns/{id}listReturns Nouns, newest first, one page at a time.GET /{namespace}/nounsupdateChanges the given properties of a Noun.PATCH /{namespace}/nouns/{id}deleteDeletes a Noun; its history is kept.DELETE /{namespace}/nouns/{id}retireRetire removes a published Noun from new Versions; its records, its history and every pinned Version keep serving.POST /{namespace}/nouns/{noun}/retiretraceTrace lists every Verb, Process, Offer, Dashboard and Version that references a Noun, so an edit or a retire shows its reach first.POST /{namespace}/nouns/{noun}/trace
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Noun.create | Yes | Yes | Yes | No |
Noun.get | Yes | Yes | Yes | Yes |
Noun.list | Yes | Yes | Yes | Yes |
Noun.update | Yes | Yes | Yes | No |
Noun.delete | Yes | Yes | Yes | No |
Noun.retire | Yes | No | No | No |
Noun.trace | Yes | Yes | Yes | No |
Call it
Retire the latest noun.Example
Offer is a Noun. Every Offer record has a price and terms, includes one Product, and moves only through Verbs such as Offer.publish and Offer.accept.