Skip to content

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

PropertyTypeRequiredDescription
namestringrequiredThe singular, capitalized name.
propertiesjsonIts properties, each with a name, a type, and whether it is required.
publishedInVersionThe first published Version that serves it; from then on, edits go through a Change and delete refuses.
statusstringrequiredOne of draft, published or retired.

Object

JSON
{
  "$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.launch acts on Startup. actedOnBy, inverse actsOn.
  • A Noun is curated in many Datasets: a Dataset collects and vouches for the Things of exactly one Noun. curatedIn, inverse curates.
  • A Noun is defined in many Systems: the Nouns a System keeps records of; several Systems can share one Noun. definedIn, inverse defines.
  • A Noun is exposed by one Capability: a Capability exposes Verbs on one Noun family, metered, limited and logged under one key. exposedBy, inverse exposes.
  • A Noun’s instances are many Things: a Thing takes the properties, relationships and Verbs of every Noun it is an instance of. instances, inverse instanceOf.
  • A Noun moves through one Lifecycle: a Noun’s Lifecycle lists the states its Things move through and the Verbs that move them. movesThrough, inverse governs.

Lifecycle

Noun lifecycle: draft, published, retired (ends)draft → published: on Version.deployedpublished → retired: Noun.retiredraftpublishedretired
StateMeaningMoves 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
publishedA published Version serves it; edits go through a Change, and delete refuses.retired by Noun.retire
retiredNew Versions leave it out; its records, its history and every pinned Version keep serving.None: it ends here.

Verbs

  1. createCreates a Noun.
    POST /{namespace}/nounsdoNoun.created
  2. getReturns one Noun by id.
    GET /{namespace}/nouns/{id}readNo Event
  3. listReturns Nouns, newest first, one page at a time.
    GET /{namespace}/nounsreadNo Event
  4. updateChanges the given properties of a Noun.
    PATCH /{namespace}/nouns/{id}doNoun.updated
  5. deleteDeletes a Noun; its history is kept.
    DELETE /{namespace}/nouns/{id}doNoun.deleted
  6. retireRetire removes a published Noun from new Versions; its records, its history and every pinned Version keep serving.
    POST /{namespace}/nouns/{noun}/retiredoNoun.retired
  7. traceTrace 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}/tracedoNoun.traced

Permissions

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

Operationowneradminmemberviewer
Noun.createYesYesYesNo
Noun.getYesYesYesYes
Noun.listYesYesYesYes
Noun.updateYesYesYesNo
Noun.deleteYesYesYesNo
Noun.retireYesNoNoNo
Noun.traceYesYesYesNo

Call it

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