Thing routes: restore, share, unrelate
The Thing Verbs restore, share, unrelate as api.sb routes, with inputs, result, refusals and an example.
curl -X POST https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl/ share \
-H "Authorization: Bearer $SB_TOKEN" \
-H "Content-Type: application/ json" \
-d '{"to": "party_hmQWaPrAyZ", "verbs": ["Example verbs"]}'
Thing.sharenpx startup-builder do Thing.share --data '{"thing": "thing_8ds0r9vvRl", "to": "party_hmQWaPrAyZ", "verbs": ["Example verbs"]}'
Thing.share{
"name": "do",
"arguments": {
"code": "return await $.Thing.share({ thing: 'thing_8ds0r9vvRl', to: 'party_hmQWaPrAyZ', verbs: ['Example verbs'] })"
}
}
Thing.shareimport { $ } from 'startup-builder'
const { permission, thing } = await $.Thing.share({ thing: 'thing_8ds0r9vvRl', to: 'party_hmQWaPrAyZ', verbs: ['Example verbs'] })
Thing.shareReference for Thing, one group of Thing routes.
Thing.restore
Restore brings back a deleted Thing, or one an undone Action removed, with its history and Relationships intact. Verb page.
POST /{namespace}/ things/ {thing}/ restorePath: 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. |
thing is missing, or is not a thing | invalid-input | Send thing as a thing, then call it again. | None. |
The Idempotency-Key was sent before with another operation or other input | idempotency-mismatch | Send a new key for new input; reuse a key only to retry the same request. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl/ restore \
-H "Authorization: Bearer $SB_TOKEN" \
-H "Idempotency-Key: leaseline-thing-restore-1"{
"api": "https: //api.sb/ leaseline.app",
"thing": {
"$id": "https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl",
"$type": "Thing",
"id": "Example id",
"type": [
"noun_v0akLUrXCN"
]
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Thing.restore",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Thing.share
Share grants a person, a Role or a guest Verbs on one record and everything it contains. Verb page.
POST /{namespace}/ things/ {thing}/ sharePath: thing. Body, as JSON: the other inputs. Emits Thing.shared.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
thing | Thing | required | The record to share. |
to | Party | required | Who receives the grant: a person, or a guest who fills only the guest Role. |
verbs | string[] | required | The Verbs granted, such as get and comment. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
permission | Permission | required | The grant, scoped to the record and its contents. |
thing | Thing | required | The Thing shared. |
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. |
thing is missing, or is not a thing | invalid-input | Send thing as a thing, then call it again. | None. |
to is missing, or is not a party | invalid-input | Send to as a party, then call it again. | None. |
verbs is missing, or is not a string list | invalid-input | Send verbs as a string list, then call it again. | None. |
The Idempotency-Key was sent before with another operation or other input | idempotency-mismatch | Send a new key for new input; reuse a key only to retry the same request. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl/ share \
-H "Authorization: Bearer $SB_TOKEN" \
-H "Idempotency-Key: leaseline-thing-share-1" \
-H "Content-Type: application/ json" \
-d '{"to": "party_hmQWaPrAyZ", "verbs": ["Example verbs"]}'{
"api": "https: //api.sb/ leaseline.app",
"permission": {
"$id": "https: //api.sb/ leaseline.app/ permissions/ permission_1IFL54Tlfx",
"$type": "Permission",
"scope": "Example scope"
},
"thing": {
"$id": "https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl",
"$type": "Thing",
"id": "Example id",
"type": [
"noun_v0akLUrXCN"
]
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Thing.share",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Thing.unrelate
Unrelate ends a Relationship between two Things; the link stays in history and reads back at any earlier moment. Verb page.
POST /{namespace}/ things/ {thing}/ unrelatePath: thing. Body, as JSON: the other inputs. Emits Thing.unrelated.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
thing | Thing | required | The source Thing. |
predicate | string | required | The Relationship as read from the source. |
to | Thing | required | The target Thing. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
relationship | Relationship | required | The ended Relationship. |
thing | Thing | required | The Thing the Relationship started 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. |
thing is missing, or is not a thing | invalid-input | Send thing as a thing, then call it again. | None. |
predicate is missing, or is not a string | invalid-input | Send predicate as a string, then call it again. | None. |
to is missing, or is not a thing | invalid-input | Send to as a thing, then call it again. | None. |
The Idempotency-Key was sent before with another operation or other input | idempotency-mismatch | Send a new key for new input; reuse a key only to retry the same request. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl/ unrelate \
-H "Authorization: Bearer $SB_TOKEN" \
-H "Idempotency-Key: leaseline-thing-unrelate-1" \
-H "Content-Type: application/ json" \
-d '{"predicate": "Example predicate", "to": "thing_8ds0r9vvRl"}'{
"api": "https: //api.sb/ leaseline.app",
"relationship": {
"$id": "https: //api.sb/ leaseline.app/ relationships/ relationship_iUVcHztTJh",
"$type": "Relationship",
"predicate": "Example predicate",
"inverse": "Example inverse"
},
"thing": {
"$id": "https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl",
"$type": "Thing",
"id": "Example id",
"type": [
"noun_v0akLUrXCN"
]
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Thing.unrelate",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}