Thing routes: share, unrelate
The Thing Verbs share, unrelate as api.sb routes, with inputs, result, refusals and an example.
Reference for Thing, one group of Thing routes.
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. |
Example
curl -X POST https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl/ share \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-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. |
Example
curl -X POST https: //api.sb/ leaseline.app/ things/ thing_8ds0r9vvRl/ unrelate \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-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"
}
}