Thing methods: relate, resolve, restore
The Thing Verbs relate, resolve, restore as typed SDK methods, with inputs, result, refusals and an example.
Reference for Thing, one group of Thing methods.
Thing.relate
Relate links two Things by a Relationship their Nouns declare, readable from both ends at once. Verb page.
interface ThingVerbs {
relate(input: ThingRelateInput, options?: SB.CallOptions): SB.Call<ThingRelateOutput>
}Emits Thing.related.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
thing | Thing | required | The source Thing. |
predicate | string | required | The Relationship as read from the source, such as places. |
to | Thing | required | The target Thing. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
relationship | Relationship | required | The Relationship, with its provenance. |
thing | Thing | required | The Thing the Relationship starts from. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| A predicate that neither Noun declares | refused | Clear what the check names, then call it again. | None. |
Example
import { $ } from 'startup-builder'
const { relationship, thing } = await $.Thing.relate({ thing: 'thing_8ds0r9vvRl', predicate: 'Example predicate', to: 'thing_8ds0r9vvRl' })Thing.resolve
Resolve finds the one Thing of a Noun that matches given properties, or creates it, and says which it did. Verb page.
interface ThingVerbs {
resolve(input: ThingResolveInput, options?: SB.CallOptions): SB.Call<ThingResolveOutput>
}Emits Thing.resolved.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
noun | Noun | required | The Noun to resolve. |
match | json | required | The properties that identify the Thing, such as an email address. |
set | json | Properties to write on the found or created Thing. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
thing | Thing | The Thing found or created; empty when held. | |
decision | string | required | What happened: found, created, or held when two or more Things match. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
import { $ } from 'startup-builder'
const { thing, decision } = await $.Thing.resolve({ noun: 'noun_v0akLUrXCN', match: {} })Thing.restore
Restore brings back a deleted Thing, or one an undone Action removed, with its history and Relationships intact. Verb page.
interface ThingVerbs {
restore(input: ThingRestoreInput, options?: SB.CallOptions): SB.Call<Thing>
}Emits Thing.restored.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
thing | Thing | required | The deleted Thing. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
thing | Thing | required | The Thing, back in every list and query it left. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| The Thing is not deleted | refused | Clear what the check names, then call it again. | None. |
Example
import { $ } from 'startup-builder'
const thing = await $.Thing.restore({ thing: 'thing_8ds0r9vvRl' })