Thing
A Thing is an instance of one or more Nouns, with an identity, a current state, and the union of their properties.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
id | string | required | The stable identifier, which never changes. |
type | list of Noun | required | The Nouns this Thing is an instance of. |
state | string | The current state in its lifecycle. | |
outside | json | The ids this Thing has in outside tools, one per Integration, so a re-run matches instead of duplicating. |
Object
{
"$id": "https: //api.sb/ quietcopy.com/ things/ thing_1",
"$type": "Thing",
"id": "Example id",
"type": [
"noun_1"
],
"state": "Example state",
"outside": {}
}Relationships
- A Thing is acted on by many Actions: the Thing an Action changes; a Thing’s history is the Actions that acted on it.
actedOnBy, inverseactsOn. - A Thing aims for many Goals: every Thing pursues Goals, such as a Startup’s quarterly objective or a Team’s weekly target.
aimsFor, inverseheldBy. - A Thing has many Comments: a Comment is an internal note on one Thing, never sent to a Contact.
comments, inverseannotates. - A Thing is configured by many Settings: the Thing whose choice a Setting holds; everything below it inherits the value unless it sets its own.
configuredBy, inverseconfigures. - A Thing has many Dashboards: a Dashboard summarizes one scope, such as a Studio, a Startup, a Team, or a Role.
dashboards, inverseviews. - A Thing is decided by many Decisions: a Decision records one choice about a Thing and stays on that Thing’s record forever.
decidedBy, inversedecides. - A Thing is an instance of many Nouns: a Thing takes the properties, relationships and Verbs of every Noun it is an instance of.
instanceOf, inverseinstances. - A Thing has many Issues: an Issue is about one Thing, such as a Product, a Page, or an Order.
issues, inversereports. - A Thing is a member of many Collections: Members are listed one by one or matched by the Collection’s saved query; a Thing can belong to many Collections.
memberOf, inversecontains. - A Thing is versioned as many Versions: every published change to a Thing’s definition is an immutable Version, kept forever.
versionedAs, inverseversionOf.
Verbs
createCreates a Thing.POST /{namespace}/thingsgetReturns one Thing by id.GET /{namespace}/things/{id}listReturns Things, newest first, one page at a time.GET /{namespace}/thingsupdateChanges the given properties of a Thing.PATCH /{namespace}/things/{id}deleteDeletes a Thing; its history is kept.DELETE /{namespace}/things/{id}relateRelate links two Things by a Relationship their Nouns declare, readable from both ends at once.POST /{namespace}/things/{thing}/relateresolveResolve finds the one Thing of a Noun that matches given properties, or creates it, and says which it did.POST /{namespace}/things/resolveshareShare grants a person, a Role or a guest Verbs on one record and everything it contains.POST /{namespace}/things/{thing}/shareunrelateUnrelate ends a Relationship between two Things; the link stays in history and reads back at any earlier moment.POST /{namespace}/things/{thing}/unrelate
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Thing.create | Yes | Yes | Yes | No |
Thing.get | Yes | Yes | Yes | Yes |
Thing.list | Yes | Yes | Yes | Yes |
Thing.update | Yes | Yes | Yes | No |
Thing.delete | Yes | Yes | Yes | No |
Thing.relate | Yes | Yes | Yes | No |
Thing.resolve | Yes | Yes | Yes | No |
Thing.share | Yes | Yes | Yes | No |
Thing.unrelate | Yes | Yes | Yes | No |
Call it
Share the latest thing with a party.Example
One recruiting agency is a single Thing that is both an Organization and a Customer, with one id and the properties of both Nouns.