@toa.io/definitions 1.0.0-alpha.288 → 1.0.0-alpha.292
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
# [1.0.0-alpha.292](https://github.com/toa-io/toa/compare/v1.0.0-alpha.291...v1.0.0-alpha.292) (2026-09-07)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **cli:** the deployment library is a peer, and the binary is the CLI's ([a923f81](https://github.com/toa-io/toa/commit/a923f8173a55ed1c091213a7c7db1863ca1d0ba6))
|
|
11
|
+
* **definitions:** an operation is read from its source ([56ee048](https://github.com/toa-io/toa/commit/56ee0485e7f00fa52bd9de9a4b0c780127b3ee87))
|
|
12
|
+
* **definitions:** the version of Toa is the definitions package's ([3d0272e](https://github.com/toa-io/toa/commit/3d0272ea0ab862f4b6c2e58a2f003f92d0f8a87f))
|
|
13
|
+
* **definitions:** what a package declares is read from one package ([7052341](https://github.com/toa-io/toa/commit/70523411b5d9e2b204c999aa02365173f3bb518d))
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2020-present Artem Gurtovoi
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"label":"configuration-values","manifest":{"namespace":"configuration","name":"values","entity":{"properties":{"component":{"type":"string"},"epoch":{"type":"string"},"configuration":{"type":"object"},"originator":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["component","epoch","configuration","originator","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_lookup","keys":{"component":"asc","epoch":"asc","CREATED":"desc"},"sparse":true}}]}],"associated":false,"custom":false},"operations":{"get":{"query":false,"input":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"}},"required":["component"]},"output":{"type":"object","nullable":true,"properties":{"configuration":{"type":"object"},"schema":{"type":"object"},"epoch":{"type":"string"}},"required":["configuration","epoch"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"fetch":{"query":false,"input":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"}},"required":["component","epoch"]}},"output":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"},"configuration":{"type":"object","nullable":true},"created":{"type":"integer"}},"required":["component","epoch","configuration","created"]}},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"list":{"query":false,"output":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"},"schema":{"type":"object"},"configuration":{"type":"object"}},"required":["component","epoch","schema","configuration"]}},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"create":{"query":false,"input":{"type":"object","properties":{"component":{"type":"string"},"configuration":{"type":"object"},"originator":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},"required":["component","configuration","originator"]},"errors":["UNKNOWN_COMPONENT","INVALID_CONFIGURATION"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.configuration/components/configuration.values","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/configuration/values","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"role","value":"system:configuration:get"}]}],"directives":[]}},{"path":"/:component","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"get","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"role","value":"system:configuration:get"}]},{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":["id","epoch"]},{"family":"auth","name":"rule","value":{"role":"system:configuration:create","delegate":"originator"}}]}],"directives":[{"family":"map","name":"segments","value":{"component":"component"}}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"
|
|
1
|
+
[{"label":"configuration-values","manifest":{"namespace":"configuration","name":"values","entity":{"properties":{"component":{"type":"string"},"epoch":{"type":"string"},"configuration":{"type":"object"},"originator":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["component","epoch","configuration","originator","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_lookup","keys":{"component":"asc","epoch":"asc","CREATED":"desc"},"sparse":true}}]}],"associated":false,"custom":false},"operations":{"get":{"query":false,"input":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"}},"required":["component"]},"output":{"type":"object","nullable":true,"properties":{"configuration":{"type":"object"},"schema":{"type":"object"},"epoch":{"type":"string"}},"required":["configuration","epoch"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"fetch":{"query":false,"input":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"}},"required":["component","epoch"]}},"output":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"},"configuration":{"type":"object","nullable":true},"created":{"type":"integer"}},"required":["component","epoch","configuration","created"]}},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"list":{"query":false,"output":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"},"schema":{"type":"object"},"configuration":{"type":"object"}},"required":["component","epoch","schema","configuration"]}},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"create":{"query":false,"input":{"type":"object","properties":{"component":{"type":"string"},"configuration":{"type":"object"},"originator":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},"required":["component","configuration","originator"]},"errors":["UNKNOWN_COMPONENT","INVALID_CONFIGURATION"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.configuration/components/configuration.values","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/configuration/values","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"role","value":"system:configuration:get"}]}],"directives":[]}},{"path":"/:component","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"get","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"role","value":"system:configuration:get"}]},{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":["id","epoch"]},{"family":"auth","name":"rule","value":{"role":"system:configuration:create","delegate":"originator"}}]}],"directives":[{"family":"map","name":"segments","value":{"component":"component"}}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"f2d37596","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"label":"exposition-octets","manifest":{"namespace":"exposition","name":"octets","operations":{"put":{"bindings":[],"input":{"properties":{"location":{"type":"string"},"accept":{"type":"string"},"limit":{"type":"number"},"trust":{},"storage":{"type":"string"},"request":{}},"type":"object","required":["storage","request"]},"errors":["LOCATION_UNTRUSTED","LOCATION_LENGTH","LOCATION_UNAVAILABLE","INVALID_ID","NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"get":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"head":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"delete":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}}},"path":"@toa.io/extensions.exposition/components/exposition.octets","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.storages":[]},"version":"a6f00a83"}},{"label":"identity-bans","manifest":{"namespace":"identity","name":"bans","entity":{"associated":true,"properties":{"comment":{"type":"string"},"banned":{"type":"boolean"},"originator":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["banned","originator","id"],"blank":{"banned":false},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"properties":{"comment":{"type":"string"},"banned":{"type":"boolean"},"originator":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object","required":["banned","originator"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.bans","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/bans","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"PUT","mapping":{"endpoint":"transit","query":{},"paged":false,"namespace":"identity","component":"bans"},"directives":[]}],"directives":[{"family":"io","name":"output","value":false},{"family":"auth","name":"rule","value":{"role":"system:identity:bans","delegate":"originator"}}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"b6135553","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-basic","manifest":{"namespace":"identity","name":"basic","entity":{"associated":true,"properties":{"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","username","password","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_authority_username","keys":{"authority":"asc","username":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"index_username","keys":{"authority":"asc","username":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","output":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"input":{"properties":{"username":{"type":"string"},"password":{"type":"string"},"authority":{"type":"string"},"inception":{"description":"Whether the credentials are being created rather than changed","type":"boolean"}},"type":"object"},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"create":{"forward":"transit","query":false,"input":{"properties":{"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"inception":{"description":"Whether the credentials are being created rather than changed","type":"boolean"}},"type":"object","required":["authority","username","password"]},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"concurrency":"retry","output":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"add":{"input":{"properties":{"id":{"type":"string"},"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"}},"type":"object","required":["id","authority","username","password"]},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"incept":{"input":{"properties":{"authority":{"type":"string"},"id":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","id","credentials"]},"output":{"properties":{"id":{"type":"string"}},"type":"object"},"errors":["INVALID_CREDENTIALS"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","credentials"]},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object"},"errors":["NOT_FOUND","PASSWORD_MISMATCH"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"check":{"input":{"type":"object","properties":{"username":{"type":"string","minLength":1}},"required":["username"]},"output":{"type":"null"},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"info":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"output":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.basic","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/basic","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"output","value":["id"]}]}],"directives":[]}},{"path":"/:id","node":{"routes":[],"methods":[{"verb":"PATCH","mapping":{"endpoint":"transit","query":{},"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"auth","name":"scheme","value":"basic"}]},{"verb":"POST","mapping":{"endpoint":"add","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"id":"id"}}]},{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id"}},{"family":"io","name":"output","value":false}]}],"directives":[{"family":"io","name":"output","value":["id"]},{"family":"io","name":"input","value":["username","password"]},{"family":"auth","name":"role","value":"system:identity:basic"},{"family":"auth","name":"id","value":"id"}]}},{"path":"/usernames/:username","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"check","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"auth","name":"anonymous","value":true}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"rounds":{"type":"integer","minimum":1},"pepper":{"description":"Hashing pepper, a secret","type":"string","format":"secret"},"principal":{"description":"Basic credentials whose Identity is granted the `system` role","type":"object","properties":{"authority":{"type":"string"},"username":{"type":"string"}},"required":["authority","username"],"additionalProperties":false},"username":{"type":"array","items":{"type":"string"}},"password":{"type":"array","items":{"type":"string"}}},"required":["rounds","username","password"]},"defaults":{"rounds":10,"username":["^.{1,128}$"],"password":["^.{8,32}$"]}}},"version":"c38102e5","events":{"principal":{"conditioned":true,"subjective":true,"path":"@toa.io/extensions.exposition/components/identity.basic","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}},"prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}}}},{"label":"identity-clients","manifest":{"namespace":"identity","name":"clients","entity":{"associated":true,"properties":{"authority":{"type":"string"},"name":{"description":"client_name","type":"string","maxLength":128},"uris":{"description":"redirect_uris","type":"array","minItems":1,"maxItems":8,"items":{"type":"string","maxLength":2048}},"uri":{"description":"client_uri","type":"string","maxLength":2048},"logo":{"description":"logo_uri","type":"string","maxLength":2048},"scope":{"type":"string","maxLength":512},"expires":{"description":"When a registration nothing has used is swept","type":"number"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","uris","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_authority","keys":{"authority":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"name":{"type":"string"},"uri":{"type":"string"},"logo":{"type":"string"},"scope":{"type":"string"},"uris":{"type":"array","items":{"type":"string"}},"expires":{"type":"number"}},"required":["authority","uris"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"register":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"client_name":{"type":"string","maxLength":128},"client_uri":{"type":"string","maxLength":2048},"logo_uri":{"type":"string","maxLength":2048},"redirect_uris":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","maxLength":2048}},"scope":{"type":"string","maxLength":512},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_method":{"type":"string"}},"required":["authority","redirect_uris"]},"output":{"type":"object","properties":{"status":{"description":"Read and removed by `map:status`","type":"number"},"client_id":{"type":"string"},"client_id_issued_at":{"type":"number"},"client_name":{"type":"string"},"client_uri":{"type":"string"},"logo_uri":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_method":{"type":"string"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"describe":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"id":{"description":"client_id, which is an https URL when the client publishes its own metadata","type":"string","maxLength":2048},"redirect":{"description":"Asked about together with the client, since only this component may answer it","type":"string","maxLength":2048}},"required":["authority","id"]},"output":{"type":"object","properties":{"client_id":{"type":"string"},"client_name":{"type":"string"},"client_uri":{"type":"string"},"logo_uri":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}},"permitted":{"description":"Whether `redirect` is one this client may receive a code at","type":"boolean"}}},"errors":["UNKNOWN_CLIENT"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.clients","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/clients","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"describe","query":null,"paged":false,"namespace":"identity","component":"clients"},"directives":[{"family":"auth","name":"anyone","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"id":"id"}},{"family":"io","name":"output","value":["client_id","client_name","client_uri","logo_uri","redirect_uris"]}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"register","query":null,"paged":false,"namespace":"identity","component":"clients"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["client_name","client_uri","logo_uri","redirect_uris","scope","grant_types","response_types","token_endpoint_auth_method"]},{"family":"io","name":"output","value":true},{"family":"io","name":"throttle","value":{"key":"ip","requests":10,"interval":3600}},{"family":"io","name":"status","value":"status"},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"trust":{"description":"Origins whose Client ID Metadata Documents may be read; none are without one","type":"array","items":{"type":"string","pattern":"^https://"}},"lifetime":{"description":"Seconds a Client ID Metadata Document is held before it is read again","type":"integer","minimum":1},"ttl":{"description":"Seconds a registration nothing has used is kept","type":"integer","minimum":1},"size":{"description":"Bytes of a Client ID Metadata Document that are read","type":"integer","minimum":1},"timeout":{"description":"Milliseconds a Client ID Metadata Document has to arrive","type":"integer","minimum":1}}},"defaults":{"trust":[],"lifetime":3600,"ttl":2592000,"size":16384,"timeout":3000}},"@toa.io/extensions.stash":null},"version":"2a4537cc","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-credentials","manifest":{"namespace":"identity","name":"credentials","operations":{"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"output":{"type":"object","properties":{"basic":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"]},"federation":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"iss":{"type":"string"},"CREATED":{"type":"number"}},"required":["id","iss","CREATED"]}},"passkeys":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"aid":{"type":"string"},"synced":{"type":"boolean"},"label":{"type":"string"},"CREATED":{"type":"number"}},"required":["id","aid","synced","CREATED"]}}},"required":["basic","federation","passkeys"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.credentials","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/credentials","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"credentials"},"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":true}]}],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}},"version":"64070c17"}},{"label":"identity-federation","manifest":{"namespace":"identity","name":"federation","entity":{"properties":{"authority":{"description":"The authority token is valid for","type":"string"},"iss":{"description":"The issuer, or signer, of the token, URI like `https://accounts.google.com`","type":"string"},"sub":{"description":"The ID that represents the principal making the request","type":"string"},"identity":{"description":"Identity associated with these credentials","type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","iss","sub","identity","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_token","keys":{"authority":"asc","iss":"asc","sub":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"unique_identity","keys":{"authority":"asc","iss":"asc","identity":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"index_list","keys":{"authority":"asc","identity":"asc","CREATED":"desc"},"sparse":true}}]}],"associated":false,"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"properties":{"authority":{"type":"string"},"iss":{"type":"string"},"sub":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","iss","sub","identity"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"create":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"},"id":{"type":"string"}},"type":"object","required":["scheme","authority","credentials","id"]},"errors":["EXISTS","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"incept":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"},"id":{"type":"string"}},"type":"object","required":["scheme","authority","credentials","id"]},"output":{"properties":{"id":{"type":"string"}},"type":"object"},"errors":["EXISTS","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["scheme","authority","credentials"]},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"},"claims":{"properties":{"iss":{"type":"string"},"aud":{"type":"string"},"sub":{"type":"string"}},"additionalProperties":true,"required":["iss","sub"],"type":"object"}},"required":["id","claims"],"type":"object"}},"type":"object"},"errors":["NOT_FOUND","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"decode":{"input":{"type":"string"},"output":{"properties":{"iss":{"type":"string"},"aud":{"type":"string"},"sub":{"type":"string"}},"additionalProperties":true,"required":["iss","sub"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"credential":{"type":"string"}},"type":"object","required":["authority","identity","credential"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.federation","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/federation","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[{"path":"/:credential","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id","credential":"credential"}},{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["scheme","credentials"]},{"family":"io","name":"output","value":["id","iss","CREATED"]}]},{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id"}},{"family":"io","name":"output","value":["id","iss","CREATED"]}]}],"directives":[{"family":"auth","name":"id","value":"id"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"trust":{"type":"array","items":{"title":"Trusted Identity Providers","type":"object","additionalProperties":false,"properties":{"iss":{"description":"Allowed values for a token `iss` field","type":"string","format":"uri"},"aud":{"description":"Acceptable `aud` value(s)","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"uniqueItems":true,"minItems":1}]},"signature":{"properties":{"iss":{"type":"string"},"kid":{"type":"string"},"key":{"description":"PKCS8 private key in PEM form","type":"string"}},"required":["iss","kid","key"]},"secret":{"description":"Client secret for the Identity Provider. Required for Authorization Code Flow.","type":"string"}},"required":["iss","aud"]}},"principal":{"title":"Principal","description":"Subject that will be assigned the `system` Role","type":"object","properties":{"authority":{"type":"string"},"iss":{"type":"string","format":"uri"},"sub":{"type":"string"}},"required":["authority","iss","sub"],"additionalProperties":false},"assert":{"title":"Implicitly incept Identity for new credentials","type":"boolean"}},"additionalProperties":false},"defaults":{"trust":[],"assert":true}}},"version":"00d8e34b","events":{"principal":{"conditioned":true,"subjective":true,"path":"@toa.io/extensions.exposition/components/identity.federation","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}},"prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}}}},{"label":"identity-grants","manifest":{"namespace":"identity","name":"grants","entity":{"associated":true,"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string"}},"kid":{"description":"The identity.keys record backing the access token, revoked with the grant","type":"string"},"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","identity","client","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_identity","keys":{"authority":"asc","identity":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string"}},"kid":{"type":"string"}},"required":["authority","identity","client"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"authorize":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string","maxLength":2048},"redirect":{"type":"string","maxLength":2048},"challenge":{"description":"PKCE code challenge, S256 of the verifier","type":"string","minLength":43,"maxLength":128},"method":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string","maxLength":2048}}},"required":["authority","identity","client","redirect","challenge","method"]},"output":{"type":"object","properties":{"status":{"description":"Read and removed by `io:status`","type":"number"},"code":{"type":"string"},"expires_in":{"type":"number"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"exchange":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"grant_type":{"type":"string"},"code":{"type":"string","maxLength":512},"code_verifier":{"type":"string","minLength":43,"maxLength":128},"redirect_uri":{"type":"string","maxLength":2048},"client_id":{"type":"string","maxLength":2048},"resource":{"description":"A form repeats a name to say a list, so either shape arrives","type":["string","array"]}},"required":["authority","grant_type"]},"output":{"type":"object","properties":{"status":{"type":"number"},"access_token":{"type":"string"},"token_type":{"type":"string"},"expires_in":{"type":"number"},"scope":{"type":"string"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"errors":["NOT_FOUND"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.grants","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/grants","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"revoke","query":{},"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"output","value":["id","client","scope","resource","CREATED"]}]},{"verb":"POST","mapping":{"endpoint":"authorize","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"input","value":["client","redirect","challenge","method","scope","resource"]},{"family":"io","name":"output","value":["code","expires_in","error","error_description"]},{"family":"io","name":"status","value":"status"},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}}]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"exchange","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["grant_type","code","code_verifier","redirect_uri","client_id","resource"]},{"family":"io","name":"output","value":true},{"family":"io","name":"status","value":"status"},{"family":"io","name":"throttle","value":{"key":"ip","requests":60,"interval":60}},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"lifetime":{"description":"Seconds an authorization code may be redeemed within","type":"integer","minimum":1,"maximum":600},"token":{"description":"Seconds an access token is valid for; 0 is until it is revoked","type":"integer","minimum":0}},"required":["lifetime","token"]},"defaults":{"lifetime":60,"token":2592000}},"@toa.io/extensions.stash":null},"version":"923befeb","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-keys","manifest":{"namespace":"identity","name":"keys","entity":{"properties":{"identity":{"type":"string"},"key":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"expires":{"type":"number"},"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["identity","key","label","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_identity","keys":{"identity":"asc"}}}]}],"associated":false,"custom":false},"operations":{"create":{"query":false,"input":{"properties":{"identity":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"expires":{"type":"number"}},"required":["identity","label"],"type":"object"},"output":{"properties":{"id":{"type":"string"},"key":{"type":"string"}},"required":["id","key"],"type":"object"},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"input":{"properties":{"identity":{"type":"string"}},"required":["identity"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"disable":{"concurrency":"retry","type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.bans.created":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"},"identity.bans.updated":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"},"identity.roles.deleted":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.keys","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/keys","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"terminate","query":{},"paged":false,"namespace":"identity","component":"keys"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"query":{"sort":"CREATED:desc"},"endpoint":"enumerate","paged":true,"namespace":"identity","component":"keys"},"directives":[{"family":"io","name":"output","value":["id","label","expires","revokedAt","CREATED"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:keys"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}},"version":"9345b3dc","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-otp","manifest":{"namespace":"identity","name":"otp","entity":{"properties":{"authority":{"type":"string"},"username":{"type":"string","minLength":1,"maxLength":256},"identity":{"type":"string","pattern":"^[0-9a-f]{32}$"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","username","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_username","keys":{"authority":"asc","username":"asc"}}}]}],"associated":false,"custom":false},"operations":{"issue":{"input":{"properties":{"authority":{"type":"string"},"username":{"type":"string","minLength":1,"maxLength":256},"identity":{"type":"string","pattern":"^[0-9a-f]{32}$"},"lifetime":{"description":"OTP expiration time in seconds","type":"number","minimum":1,"maximum":3600}},"required":["authority","username"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"required":["authority","credentials"],"type":"object"},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object"},"errors":["INVALID_CREDENTIALS","EXPIRED","TOO_MANY_ATTEMPTS","NOT_FOUND"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.otp","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/otp","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"issue","query":null,"paged":false,"namespace":"identity","component":"otp"},"directives":[{"family":"io","name":"input","value":[]},{"family":"io","name":"output","value":["code"]},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"username":"identity"}}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:otp"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"properties":{"lifetime":{"description":"OTP expiration time in seconds","type":"number","minimum":1,"maximum":3600},"attempts":{"description":"Failed authentication attempts allowed per username within `lifetime`","type":"integer","minimum":1}},"type":"object"},"defaults":{"lifetime":300,"attempts":5}},"@toa.io/extensions.stash":null},"version":"baa7494c","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-passkeys","manifest":{"namespace":"identity","name":"passkeys","entity":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"kid":{"type":"string"},"aid":{"description":"AAGUID","type":"string"},"synced":{"description":"credentialBackedUp","type":"boolean"},"key":{"description":"Base64-encoded Uint8Array","type":"string"},"counter":{"type":"number","minimum":0},"transports":{"type":"array","items":{"type":"string"}},"label":{"type":"string","minLength":1,"maxLength":64},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","identity","kid","aid","synced","key","counter","CREATED","id"],"blank":{"counter":0},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_list","keys":{"authority":"asc","identity":"asc","CREATED":"desc"}}},{"index":{"name":"index_key","keys":{"authority":"asc","kid":"asc"}}}]}],"associated":false,"custom":false},"operations":{"challenge":{"input":{"type":"object","properties":{"type":{"type":"string","enum":["creation","request"]},"authority":{"type":"string"},"identity":{"type":"string"}},"required":["type","authority"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"create":{"query":false,"errors":["FAILED","INVALID"],"input":{"type":"object","properties":{"authority":{"type":"string"},"origin":{"type":"string"},"identity":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"id":{"type":"string"},"response":{"type":"object","properties":{"attestationObject":{"type":"string"},"clientDataJSON":{"type":"string"},"transports":{"type":"array","items":{"type":"string"}},"publicKeyAlgorithm":{"type":"number"},"publicKey":{"type":"string"},"authenticatorData":{"type":"string"}},"required":["authenticatorData","attestationObject","clientDataJSON","transports","publicKeyAlgorithm","publicKey"]}}},"authenticatorAttachment":{"type":"string","nullable":true},"clientExtensionResults":{"type":"object"}},"required":["authority","identity","origin","label","id","type","response"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"use":{"concurrency":"retry","query":true,"errors":["FAILED","INVALID"],"input":{"type":"object","properties":{"origin":{"type":"string"},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"authenticatorData":{"type":"string"},"clientDataJSON":{"type":"string"},"signature":{"type":"string"},"userHandle":{"type":"string"}}},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"type":"object"}},"required":["origin","id","response"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"errors":["MISS","FAILED","INVALID"],"input":{"type":"object","properties":{"authority":{"type":"string"},"origin":{"type":"string"},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"authenticatorData":{"type":"string"},"clientDataJSON":{"type":"string"},"signature":{"type":"string"},"userHandle":{"type":"string"}}},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"type":"object"}},"required":["authority","origin","id","response"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"id":{"type":"string"}},"required":["authority","identity","id"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.passkeys","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/passkeys","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/challenges","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"challenge","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":["identity","challenge","timeout","userVerification","authenticatorSelection","pubKeyCredParams","allowCredentials","excludeCredentials"]}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"challenge","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"output","value":["identity","challenge","timeout","userVerification","authenticatorSelection","pubKeyCredParams","allowCredentials","excludeCredentials"]},{"family":"auth","name":"incept","value":"identity"}]}],"directives":[{"family":"auth","name":"anonymous","value":true}]}},{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity","id":"id"}},{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"map","name":"headers","value":{"origin":"origin"}},{"family":"io","name":"output","value":["id","aid","synced","label","CREATED","UPDATED"]}]},{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":["id","aid","synced","label","CREATED","UPDATED"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"}]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"authenticate","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"auth","name":"incept","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"headers","value":{"origin":"origin"}},{"family":"io","name":"output","value":["identity"]}]}],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"algorithms":{"type":"array","items":{"type":"number"}},"timeout":{"type":"integer"},"verification":{"description":"AuthenticatorSelectionCriteria.userVerification","type":"string","enum":["required","preferred","discouraged"]},"residence":{"description":"AuthenticatorSelectionCriteria.residentKey","type":"string","enum":["required","preferred","discouraged"]}}},"defaults":{"algorithms":[-7,-257],"timeout":60000,"residence":"required"}},"@toa.io/extensions.stash":null},"version":"6c7bcae1","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-roles","manifest":{"namespace":"identity","name":"roles","entity":{"properties":{"grantor":{"type":"string"},"identity":{"type":"string","pattern":"[a-z0-9]{32}"},"role":{"type":"string","pattern":"^[a-zA-Z0-9]{0,32}(:[a-zA-Z0-9]{0,32}){0,8}$"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["identity","role","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_role","keys":{"identity":"asc","role":"asc"},"unique":true,"partial":{"DELETED":null}}}]}],"associated":false,"custom":false},"operations":{"grant":{"query":false,"input":{"properties":{"grantor":{"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"type":"object"},"identity":{"type":"string","pattern":"[a-z0-9]{32}"},"role":{"type":"string","pattern":"^[a-zA-Z0-9]{0,32}(:[a-zA-Z0-9]{0,32}){0,8}$"}},"type":"object","required":["identity","role"]},"errors":["INACCESSIBLE_SCOPE"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"list":{"output":{"type":"array","items":{"type":"string"}},"type":"observation","scope":"objects","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"principal":{"input":{"properties":{"id":{"type":"string"}},"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.basic.principal":{"operation":"principal","conditioned":false,"adaptive":false},"identity.federation.principal":{"operation":"principal","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.roles","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.roles","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/roles","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:role","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"terminate","query":{},"paged":false,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"grant","query":null,"paged":false,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":["id","grantor"]},{"family":"auth","name":"rule","value":{"delegate":"grantor","role":"system:identity:roles:delegation"}}]},{"verb":"GET","mapping":{"endpoint":"list","query":{},"paged":true,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"id","value":"identity"}]}],"directives":[{"family":"auth","name":"role","value":"system:identity:roles"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"d4a6f74f","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-tokens","manifest":{"namespace":"identity","name":"tokens","entity":{"associated":true,"properties":{"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"required":["id"],"custom":false},"operations":{"encrypt":{"input":{"properties":{"lifetime":{"type":"number","minimum":0},"scopes":{"type":"array","items":{"type":"string"}},"permissions":{"type":"object","patternProperties":{"^.*$":{"type":"array","items":{"type":"string"}}}},"key":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"}},"required":["id","key"]},"authority":{"type":"string"},"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"}},"type":"object","required":["authority","identity"]},"output":{"type":"string"},"errors":["INACCESSIBLE_SCOPE"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"decrypt":{"input":{"type":"string"},"output":{"required":["iss","iat","identity","refresh","custom"],"properties":{"iss":{"description":"The authority the token names as its issuer","type":"string"},"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"},"iat":{"type":"string"},"exp":{"type":"string"},"custom":{"type":"boolean"},"refresh":{"type":"boolean"}},"type":"object"},"errors":["INVALID_TOKEN","INVALID_KEY","FORGED_KEY","REVOKED_KEY"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","credentials"]},"output":{"required":["identity","refresh"],"properties":{"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"},"refresh":{"type":"boolean"}},"type":"object"},"errors":["UNRECOGNIZED","AUTHORITY_MISMATCH","TOKEN_REVOKED","INVALID_TOKEN","INVALID_KEY","FORGED_KEY","REVOKED_KEY"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"issue":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"lifetime":{"type":"number","minimum":0},"scopes":{"type":"array","items":{"type":"string"}},"permissions":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"label":{"type":"string","minLength":1,"maxLength":64}},"required":["authority","identity","label"]},"output":{"required":["kid","token"],"properties":{"kid":{"type":"string"},"exp":{"type":"number"},"token":{"type":"string"}},"type":"object"},"errors":["INACCESSIBLE_SCOPE"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"concurrency":"retry","type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.bans.created":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.tokens","bridge":"@toa.io/bridges.node"},"identity.bans.updated":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.tokens","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.tokens","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/tokens","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"issue","query":null,"paged":false,"namespace":"identity","component":"tokens"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["lifetime","label","scopes","permissions"]},{"family":"io","name":"output","value":["kid","exp","token","label"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:tokens"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"keys":{"type":"array","minItems":1,"contains":{"not":{"properties":{"format":{"const":"paseto"}},"required":["format"]}},"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"key":{"type":"string","format":"secret"},"format":{"type":"string","enum":["jwe","paseto"]}},"required":["id","key"],"additionalProperties":false}},"lifetime":{"description":"Token expiration time in seconds (default 30 days)","type":"integer"},"refresh":{"description":"Token refresh time in seconds (default 10 minutes)","type":"integer"},"cache":{"description":"Custom token keys LRU cache configuration","properties":{"max":{"type":"integer"},"ttl":{"type":"integer"}},"required":["max","ttl"]}},"required":["keys","lifetime","refresh","cache"]},"defaults":{"lifetime":2592000,"refresh":600,"cache":{"max":1024,"ttl":600000}}}},"version":"1929eb6d","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
|
|
1
|
+
[{"label":"exposition-octets","manifest":{"namespace":"exposition","name":"octets","operations":{"put":{"bindings":[],"input":{"properties":{"location":{"type":"string"},"accept":{"type":"string"},"limit":{"type":"number"},"trust":{},"storage":{"type":"string"},"request":{}},"type":"object","required":["storage","request"]},"errors":["LOCATION_UNTRUSTED","LOCATION_LENGTH","LOCATION_UNAVAILABLE","INVALID_ID","NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"get":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"head":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"delete":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}}},"path":"@toa.io/extensions.exposition/components/exposition.octets","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.storages":[]},"version":"a6f00a83"}},{"label":"identity-bans","manifest":{"namespace":"identity","name":"bans","entity":{"associated":true,"properties":{"comment":{"type":"string"},"banned":{"type":"boolean"},"originator":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["banned","originator","id"],"blank":{"banned":false},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"properties":{"comment":{"type":"string"},"banned":{"type":"boolean"},"originator":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object","required":["banned","originator"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.bans","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/bans","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"PUT","mapping":{"endpoint":"transit","query":{},"paged":false,"namespace":"identity","component":"bans"},"directives":[]}],"directives":[{"family":"io","name":"output","value":false},{"family":"auth","name":"rule","value":{"role":"system:identity:bans","delegate":"originator"}}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"c11888a7","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-basic","manifest":{"namespace":"identity","name":"basic","entity":{"associated":true,"properties":{"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","username","password","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_authority_username","keys":{"authority":"asc","username":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"index_username","keys":{"authority":"asc","username":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","output":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"input":{"properties":{"username":{"type":"string"},"password":{"type":"string"},"authority":{"type":"string"},"inception":{"description":"Whether the credentials are being created rather than changed","type":"boolean"}},"type":"object"},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"create":{"forward":"transit","query":false,"input":{"properties":{"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"inception":{"description":"Whether the credentials are being created rather than changed","type":"boolean"}},"type":"object","required":["authority","username","password"]},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"concurrency":"retry","output":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"add":{"input":{"properties":{"id":{"type":"string"},"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"}},"type":"object","required":["id","authority","username","password"]},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"incept":{"input":{"properties":{"authority":{"type":"string"},"id":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","id","credentials"]},"output":{"properties":{"id":{"type":"string"}},"type":"object"},"errors":["INVALID_CREDENTIALS"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","credentials"]},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object"},"errors":["NOT_FOUND","PASSWORD_MISMATCH"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"check":{"input":{"type":"object","properties":{"username":{"type":"string","minLength":1}},"required":["username"]},"output":{"type":"null"},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"info":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"output":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.basic","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/basic","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"output","value":["id"]}]}],"directives":[]}},{"path":"/:id","node":{"routes":[],"methods":[{"verb":"PATCH","mapping":{"endpoint":"transit","query":{},"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"auth","name":"scheme","value":"basic"}]},{"verb":"POST","mapping":{"endpoint":"add","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"id":"id"}}]},{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id"}},{"family":"io","name":"output","value":false}]}],"directives":[{"family":"io","name":"output","value":["id"]},{"family":"io","name":"input","value":["username","password"]},{"family":"auth","name":"role","value":"system:identity:basic"},{"family":"auth","name":"id","value":"id"}]}},{"path":"/usernames/:username","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"check","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"auth","name":"anonymous","value":true}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"rounds":{"type":"integer","minimum":1},"pepper":{"description":"Hashing pepper, a secret","type":"string","format":"secret"},"principal":{"description":"Basic credentials whose Identity is granted the `system` role","type":"object","properties":{"authority":{"type":"string"},"username":{"type":"string"}},"required":["authority","username"],"additionalProperties":false},"username":{"type":"array","items":{"type":"string"}},"password":{"type":"array","items":{"type":"string"}}},"required":["rounds","username","password"]},"defaults":{"rounds":10,"username":["^.{1,128}$"],"password":["^.{8,32}$"]}}},"version":"8d288da8","events":{"principal":{"conditioned":true,"subjective":true,"path":"@toa.io/extensions.exposition/components/identity.basic","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}},"prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}}}},{"label":"identity-clients","manifest":{"namespace":"identity","name":"clients","entity":{"associated":true,"properties":{"authority":{"type":"string"},"name":{"description":"client_name","type":"string","maxLength":128},"uris":{"description":"redirect_uris","type":"array","minItems":1,"maxItems":8,"items":{"type":"string","maxLength":2048}},"uri":{"description":"client_uri","type":"string","maxLength":2048},"logo":{"description":"logo_uri","type":"string","maxLength":2048},"scope":{"type":"string","maxLength":512},"expires":{"description":"When a registration nothing has used is swept","type":"number"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","uris","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_authority","keys":{"authority":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"name":{"type":"string"},"uri":{"type":"string"},"logo":{"type":"string"},"scope":{"type":"string"},"uris":{"type":"array","items":{"type":"string"}},"expires":{"type":"number"}},"required":["authority","uris"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"register":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"client_name":{"type":"string","maxLength":128},"client_uri":{"type":"string","maxLength":2048},"logo_uri":{"type":"string","maxLength":2048},"redirect_uris":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","maxLength":2048}},"scope":{"type":"string","maxLength":512},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_method":{"type":"string"}},"required":["authority","redirect_uris"]},"output":{"type":"object","properties":{"status":{"description":"Read and removed by `map:status`","type":"number"},"client_id":{"type":"string"},"client_id_issued_at":{"type":"number"},"client_name":{"type":"string"},"client_uri":{"type":"string"},"logo_uri":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_method":{"type":"string"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"describe":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"id":{"description":"client_id, which is an https URL when the client publishes its own metadata","type":"string","maxLength":2048},"redirect":{"description":"Asked about together with the client, since only this component may answer it","type":"string","maxLength":2048}},"required":["authority","id"]},"output":{"type":"object","properties":{"client_id":{"type":"string"},"client_name":{"type":"string"},"client_uri":{"type":"string"},"logo_uri":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}},"permitted":{"description":"Whether `redirect` is one this client may receive a code at","type":"boolean"}}},"errors":["UNKNOWN_CLIENT"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.clients","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/clients","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"describe","query":null,"paged":false,"namespace":"identity","component":"clients"},"directives":[{"family":"auth","name":"anyone","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"id":"id"}},{"family":"io","name":"output","value":["client_id","client_name","client_uri","logo_uri","redirect_uris"]}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"register","query":null,"paged":false,"namespace":"identity","component":"clients"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["client_name","client_uri","logo_uri","redirect_uris","scope","grant_types","response_types","token_endpoint_auth_method"]},{"family":"io","name":"output","value":true},{"family":"io","name":"throttle","value":{"key":"ip","requests":10,"interval":3600}},{"family":"io","name":"status","value":"status"},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"trust":{"description":"Origins whose Client ID Metadata Documents may be read; none are without one","type":"array","items":{"type":"string","pattern":"^https://"}},"lifetime":{"description":"Seconds a Client ID Metadata Document is held before it is read again","type":"integer","minimum":1},"ttl":{"description":"Seconds a registration nothing has used is kept","type":"integer","minimum":1},"size":{"description":"Bytes of a Client ID Metadata Document that are read","type":"integer","minimum":1},"timeout":{"description":"Milliseconds a Client ID Metadata Document has to arrive","type":"integer","minimum":1}}},"defaults":{"trust":[],"lifetime":3600,"ttl":2592000,"size":16384,"timeout":3000}},"@toa.io/extensions.stash":null},"version":"f53951fa","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-credentials","manifest":{"namespace":"identity","name":"credentials","operations":{"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"output":{"type":"object","properties":{"basic":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"]},"federation":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"iss":{"type":"string"},"CREATED":{"type":"number"}},"required":["id","iss","CREATED"]}},"passkeys":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"aid":{"type":"string"},"synced":{"type":"boolean"},"label":{"type":"string"},"CREATED":{"type":"number"}},"required":["id","aid","synced","CREATED"]}}},"required":["basic","federation","passkeys"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.credentials","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/credentials","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"credentials"},"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":true}]}],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}},"version":"7c0d8cab"}},{"label":"identity-federation","manifest":{"namespace":"identity","name":"federation","entity":{"properties":{"authority":{"description":"The authority token is valid for","type":"string"},"iss":{"description":"The issuer, or signer, of the token, URI like `https://accounts.google.com`","type":"string"},"sub":{"description":"The ID that represents the principal making the request","type":"string"},"identity":{"description":"Identity associated with these credentials","type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","iss","sub","identity","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_token","keys":{"authority":"asc","iss":"asc","sub":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"unique_identity","keys":{"authority":"asc","iss":"asc","identity":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"index_list","keys":{"authority":"asc","identity":"asc","CREATED":"desc"},"sparse":true}}]}],"associated":false,"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"properties":{"authority":{"type":"string"},"iss":{"type":"string"},"sub":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","iss","sub","identity"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"create":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"},"id":{"type":"string"}},"type":"object","required":["scheme","authority","credentials","id"]},"errors":["EXISTS","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"incept":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"},"id":{"type":"string"}},"type":"object","required":["scheme","authority","credentials","id"]},"output":{"properties":{"id":{"type":"string"}},"type":"object"},"errors":["EXISTS","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["scheme","authority","credentials"]},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"},"claims":{"properties":{"iss":{"type":"string"},"aud":{"type":"string"},"sub":{"type":"string"}},"additionalProperties":true,"required":["iss","sub"],"type":"object"}},"required":["id","claims"],"type":"object"}},"type":"object"},"errors":["NOT_FOUND","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"decode":{"input":{"type":"string"},"output":{"properties":{"iss":{"type":"string"},"aud":{"type":"string"},"sub":{"type":"string"}},"additionalProperties":true,"required":["iss","sub"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"credential":{"type":"string"}},"type":"object","required":["authority","identity","credential"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.federation","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/federation","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[{"path":"/:credential","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id","credential":"credential"}},{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["scheme","credentials"]},{"family":"io","name":"output","value":["id","iss","CREATED"]}]},{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id"}},{"family":"io","name":"output","value":["id","iss","CREATED"]}]}],"directives":[{"family":"auth","name":"id","value":"id"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"trust":{"type":"array","items":{"title":"Trusted Identity Providers","type":"object","additionalProperties":false,"properties":{"iss":{"description":"Allowed values for a token `iss` field","type":"string","format":"uri"},"aud":{"description":"Acceptable `aud` value(s)","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"uniqueItems":true,"minItems":1}]},"signature":{"properties":{"iss":{"type":"string"},"kid":{"type":"string"},"key":{"description":"PKCS8 private key in PEM form","type":"string"}},"required":["iss","kid","key"]},"secret":{"description":"Client secret for the Identity Provider. Required for Authorization Code Flow.","type":"string"}},"required":["iss","aud"]}},"principal":{"title":"Principal","description":"Subject that will be assigned the `system` Role","type":"object","properties":{"authority":{"type":"string"},"iss":{"type":"string","format":"uri"},"sub":{"type":"string"}},"required":["authority","iss","sub"],"additionalProperties":false},"assert":{"title":"Implicitly incept Identity for new credentials","type":"boolean"}},"additionalProperties":false},"defaults":{"trust":[],"assert":true}}},"version":"2c263ae0","events":{"principal":{"conditioned":true,"subjective":true,"path":"@toa.io/extensions.exposition/components/identity.federation","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}},"prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}}}},{"label":"identity-grants","manifest":{"namespace":"identity","name":"grants","entity":{"associated":true,"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string"}},"kid":{"description":"The identity.keys record backing the access token, revoked with the grant","type":"string"},"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","identity","client","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_identity","keys":{"authority":"asc","identity":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string"}},"kid":{"type":"string"}},"required":["authority","identity","client"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"authorize":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string","maxLength":2048},"redirect":{"type":"string","maxLength":2048},"challenge":{"description":"PKCE code challenge, S256 of the verifier","type":"string","minLength":43,"maxLength":128},"method":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string","maxLength":2048}}},"required":["authority","identity","client","redirect","challenge","method"]},"output":{"type":"object","properties":{"status":{"description":"Read and removed by `io:status`","type":"number"},"code":{"type":"string"},"expires_in":{"type":"number"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"exchange":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"grant_type":{"type":"string"},"code":{"type":"string","maxLength":512},"code_verifier":{"type":"string","minLength":43,"maxLength":128},"redirect_uri":{"type":"string","maxLength":2048},"client_id":{"type":"string","maxLength":2048},"resource":{"description":"A form repeats a name to say a list, so either shape arrives","type":["string","array"]}},"required":["authority","grant_type"]},"output":{"type":"object","properties":{"status":{"type":"number"},"access_token":{"type":"string"},"token_type":{"type":"string"},"expires_in":{"type":"number"},"scope":{"type":"string"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"errors":["NOT_FOUND"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.grants","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/grants","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"revoke","query":{},"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"output","value":["id","client","scope","resource","CREATED"]}]},{"verb":"POST","mapping":{"endpoint":"authorize","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"input","value":["client","redirect","challenge","method","scope","resource"]},{"family":"io","name":"output","value":["code","expires_in","error","error_description"]},{"family":"io","name":"status","value":"status"},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}}]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"exchange","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["grant_type","code","code_verifier","redirect_uri","client_id","resource"]},{"family":"io","name":"output","value":true},{"family":"io","name":"status","value":"status"},{"family":"io","name":"throttle","value":{"key":"ip","requests":60,"interval":60}},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"lifetime":{"description":"Seconds an authorization code may be redeemed within","type":"integer","minimum":1,"maximum":600},"token":{"description":"Seconds an access token is valid for; 0 is until it is revoked","type":"integer","minimum":0}},"required":["lifetime","token"]},"defaults":{"lifetime":60,"token":2592000}},"@toa.io/extensions.stash":null},"version":"84bcd571","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-keys","manifest":{"namespace":"identity","name":"keys","entity":{"properties":{"identity":{"type":"string"},"key":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"expires":{"type":"number"},"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["identity","key","label","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_identity","keys":{"identity":"asc"}}}]}],"associated":false,"custom":false},"operations":{"create":{"query":false,"input":{"properties":{"identity":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"expires":{"type":"number"}},"required":["identity","label"],"type":"object"},"output":{"properties":{"id":{"type":"string"},"key":{"type":"string"}},"required":["id","key"],"type":"object"},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"input":{"properties":{"identity":{"type":"string"}},"required":["identity"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"disable":{"concurrency":"retry","type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.bans.created":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"},"identity.bans.updated":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"},"identity.roles.deleted":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.keys","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/keys","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"terminate","query":{},"paged":false,"namespace":"identity","component":"keys"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"query":{"sort":"CREATED:desc"},"endpoint":"enumerate","paged":true,"namespace":"identity","component":"keys"},"directives":[{"family":"io","name":"output","value":["id","label","expires","revokedAt","CREATED"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:keys"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}},"version":"fa74b9a4","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-otp","manifest":{"namespace":"identity","name":"otp","entity":{"properties":{"authority":{"type":"string"},"username":{"type":"string","minLength":1,"maxLength":256},"identity":{"type":"string","pattern":"^[0-9a-f]{32}$"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","username","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_username","keys":{"authority":"asc","username":"asc"}}}]}],"associated":false,"custom":false},"operations":{"issue":{"input":{"properties":{"authority":{"type":"string"},"username":{"type":"string","minLength":1,"maxLength":256},"identity":{"type":"string","pattern":"^[0-9a-f]{32}$"},"lifetime":{"description":"OTP expiration time in seconds","type":"number","minimum":1,"maximum":3600}},"required":["authority","username"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"required":["authority","credentials"],"type":"object"},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object"},"errors":["INVALID_CREDENTIALS","EXPIRED","TOO_MANY_ATTEMPTS","NOT_FOUND"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.otp","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/otp","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"issue","query":null,"paged":false,"namespace":"identity","component":"otp"},"directives":[{"family":"io","name":"input","value":[]},{"family":"io","name":"output","value":["code"]},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"username":"identity"}}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:otp"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"properties":{"lifetime":{"description":"OTP expiration time in seconds","type":"number","minimum":1,"maximum":3600},"attempts":{"description":"Failed authentication attempts allowed per username within `lifetime`","type":"integer","minimum":1}},"type":"object"},"defaults":{"lifetime":300,"attempts":5}},"@toa.io/extensions.stash":null},"version":"d6921af1","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-passkeys","manifest":{"namespace":"identity","name":"passkeys","entity":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"kid":{"type":"string"},"aid":{"description":"AAGUID","type":"string"},"synced":{"description":"credentialBackedUp","type":"boolean"},"key":{"description":"Base64-encoded Uint8Array","type":"string"},"counter":{"type":"number","minimum":0},"transports":{"type":"array","items":{"type":"string"}},"label":{"type":"string","minLength":1,"maxLength":64},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","identity","kid","aid","synced","key","counter","CREATED","id"],"blank":{"counter":0},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_list","keys":{"authority":"asc","identity":"asc","CREATED":"desc"}}},{"index":{"name":"index_key","keys":{"authority":"asc","kid":"asc"}}}]}],"associated":false,"custom":false},"operations":{"challenge":{"input":{"type":"object","properties":{"type":{"type":"string","enum":["creation","request"]},"authority":{"type":"string"},"identity":{"type":"string"}},"required":["type","authority"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"create":{"query":false,"errors":["FAILED","INVALID"],"input":{"type":"object","properties":{"authority":{"type":"string"},"origin":{"type":"string"},"identity":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"id":{"type":"string"},"response":{"type":"object","properties":{"attestationObject":{"type":"string"},"clientDataJSON":{"type":"string"},"transports":{"type":"array","items":{"type":"string"}},"publicKeyAlgorithm":{"type":"number"},"publicKey":{"type":"string"},"authenticatorData":{"type":"string"}},"required":["authenticatorData","attestationObject","clientDataJSON","transports","publicKeyAlgorithm","publicKey"]}}},"authenticatorAttachment":{"type":"string","nullable":true},"clientExtensionResults":{"type":"object"}},"required":["authority","identity","origin","label","id","type","response"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"use":{"concurrency":"retry","query":true,"errors":["FAILED","INVALID"],"input":{"type":"object","properties":{"origin":{"type":"string"},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"authenticatorData":{"type":"string"},"clientDataJSON":{"type":"string"},"signature":{"type":"string"},"userHandle":{"type":"string"}}},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"type":"object"}},"required":["origin","id","response"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"errors":["MISS","FAILED","INVALID"],"input":{"type":"object","properties":{"authority":{"type":"string"},"origin":{"type":"string"},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"authenticatorData":{"type":"string"},"clientDataJSON":{"type":"string"},"signature":{"type":"string"},"userHandle":{"type":"string"}}},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"type":"object"}},"required":["authority","origin","id","response"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"id":{"type":"string"}},"required":["authority","identity","id"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.passkeys","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/passkeys","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/challenges","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"challenge","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":["identity","challenge","timeout","userVerification","authenticatorSelection","pubKeyCredParams","allowCredentials","excludeCredentials"]}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"challenge","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"output","value":["identity","challenge","timeout","userVerification","authenticatorSelection","pubKeyCredParams","allowCredentials","excludeCredentials"]},{"family":"auth","name":"incept","value":"identity"}]}],"directives":[{"family":"auth","name":"anonymous","value":true}]}},{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity","id":"id"}},{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"map","name":"headers","value":{"origin":"origin"}},{"family":"io","name":"output","value":["id","aid","synced","label","CREATED","UPDATED"]}]},{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":["id","aid","synced","label","CREATED","UPDATED"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"}]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"authenticate","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"auth","name":"incept","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"headers","value":{"origin":"origin"}},{"family":"io","name":"output","value":["identity"]}]}],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"algorithms":{"type":"array","items":{"type":"number"}},"timeout":{"type":"integer"},"verification":{"description":"AuthenticatorSelectionCriteria.userVerification","type":"string","enum":["required","preferred","discouraged"]},"residence":{"description":"AuthenticatorSelectionCriteria.residentKey","type":"string","enum":["required","preferred","discouraged"]}}},"defaults":{"algorithms":[-7,-257],"timeout":60000,"residence":"required"}},"@toa.io/extensions.stash":null},"version":"daeabd80","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-roles","manifest":{"namespace":"identity","name":"roles","entity":{"properties":{"grantor":{"type":"string"},"identity":{"type":"string","pattern":"[a-z0-9]{32}"},"role":{"type":"string","pattern":"^[a-zA-Z0-9]{0,32}(:[a-zA-Z0-9]{0,32}){0,8}$"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["identity","role","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_role","keys":{"identity":"asc","role":"asc"},"unique":true,"partial":{"DELETED":null}}}]}],"associated":false,"custom":false},"operations":{"grant":{"query":false,"input":{"properties":{"grantor":{"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"type":"object"},"identity":{"type":"string","pattern":"[a-z0-9]{32}"},"role":{"type":"string","pattern":"^[a-zA-Z0-9]{0,32}(:[a-zA-Z0-9]{0,32}){0,8}$"}},"type":"object","required":["identity","role"]},"errors":["INACCESSIBLE_SCOPE"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"list":{"output":{"type":"array","items":{"type":"string"}},"type":"observation","scope":"objects","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"principal":{"input":{"properties":{"id":{"type":"string"}},"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.basic.principal":{"operation":"principal","conditioned":false,"adaptive":false},"identity.federation.principal":{"operation":"principal","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.roles","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.roles","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/roles","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:role","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"terminate","query":{},"paged":false,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"grant","query":null,"paged":false,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":["id","grantor"]},{"family":"auth","name":"rule","value":{"delegate":"grantor","role":"system:identity:roles:delegation"}}]},{"verb":"GET","mapping":{"endpoint":"list","query":{},"paged":true,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"id","value":"identity"}]}],"directives":[{"family":"auth","name":"role","value":"system:identity:roles"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"8af74c97","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-tokens","manifest":{"namespace":"identity","name":"tokens","entity":{"associated":true,"properties":{"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"required":["id"],"custom":false},"operations":{"encrypt":{"input":{"properties":{"lifetime":{"type":"number","minimum":0},"scopes":{"type":"array","items":{"type":"string"}},"permissions":{"type":"object","patternProperties":{"^.*$":{"type":"array","items":{"type":"string"}}}},"key":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"}},"required":["id","key"]},"authority":{"type":"string"},"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"}},"type":"object","required":["authority","identity"]},"output":{"type":"string"},"errors":["INACCESSIBLE_SCOPE"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"decrypt":{"input":{"type":"string"},"output":{"required":["iss","iat","identity","refresh","custom"],"properties":{"iss":{"description":"The authority the token names as its issuer","type":"string"},"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"},"iat":{"type":"string"},"exp":{"type":"string"},"custom":{"type":"boolean"},"refresh":{"type":"boolean"}},"type":"object"},"errors":["INVALID_TOKEN","INVALID_KEY","FORGED_KEY","REVOKED_KEY"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","credentials"]},"output":{"required":["identity","refresh"],"properties":{"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"},"refresh":{"type":"boolean"}},"type":"object"},"errors":["UNRECOGNIZED","AUTHORITY_MISMATCH","TOKEN_REVOKED","INVALID_TOKEN","INVALID_KEY","FORGED_KEY","REVOKED_KEY"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"issue":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"lifetime":{"type":"number","minimum":0},"scopes":{"type":"array","items":{"type":"string"}},"permissions":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"label":{"type":"string","minLength":1,"maxLength":64}},"required":["authority","identity","label"]},"output":{"required":["kid","token"],"properties":{"kid":{"type":"string"},"exp":{"type":"number"},"token":{"type":"string"}},"type":"object"},"errors":["INACCESSIBLE_SCOPE"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"concurrency":"retry","type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.bans.created":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.tokens","bridge":"@toa.io/bridges.node"},"identity.bans.updated":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.tokens","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.tokens","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/tokens","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"issue","query":null,"paged":false,"namespace":"identity","component":"tokens"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["lifetime","label","scopes","permissions"]},{"family":"io","name":"output","value":["kid","exp","token","label"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:tokens"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"keys":{"type":"array","minItems":1,"contains":{"not":{"properties":{"format":{"const":"paseto"}},"required":["format"]}},"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"key":{"type":"string","format":"secret"},"format":{"type":"string","enum":["jwe","paseto"]}},"required":["id","key"],"additionalProperties":false}},"lifetime":{"description":"Token expiration time in seconds (default 30 days)","type":"integer"},"refresh":{"description":"Token refresh time in seconds (default 10 minutes)","type":"integer"},"cache":{"description":"Custom token keys LRU cache configuration","properties":{"max":{"type":"integer"},"ttl":{"type":"integer"}},"required":["max","ttl"]}},"required":["keys","lifetime","refresh","cache"]},"defaults":{"lifetime":2592000,"refresh":600,"cache":{"max":1024,"ttl":600000}}}},"version":"f05d9762","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"label":"introspection-edges","manifest":{"namespace":"introspection","name":"edges","entity":{"associated":true,"properties":{"src":{"description":"What caused the call — another operation, an event, or a service","type":"object","properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"},"event":{"type":"string"},"service":{"type":"string"}}},"dst":{"description":"What was called","type":"object","required":["namespace","component","operation"],"properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"}}},"sample":{"description":"The last call observed on this edge","type":"object","required":["at","outcome"],"properties":{"at":{"type":"integer"},"input":{},"outcome":{"type":"string"}}},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["src","dst","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"merge":{"concurrency":"retry","input":{"type":"object","properties":{"edges":{"description":"What each replica observed since its last flush, by edge id","type":"object","additionalProperties":{"type":"object","properties":{"src":{"description":"What caused the call — another operation, an event, or a service","type":"object","properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"},"event":{"type":"string"},"service":{"type":"string"}}},"dst":{"description":"What was called","type":"object","required":["namespace","component","operation"],"properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"}}},"sample":{"description":"The last call observed on this edge","type":"object","required":["at","outcome"],"properties":{"at":{"type":"integer"},"input":{},"outcome":{"type":"string"}}}},"required":["src","dst"]}}},"required":["edges"]},"type":"transition","scope":"objects","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.introspection/components/introspection.edges","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":false,"@toa.io/extensions.exposition":{"routes":[{"path":"/introspection/edges","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"observe","query":{},"paged":false,"namespace":"introspection","component":"edges"},"directives":[]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"enumerate","query":{"limit":{"value":10000,"range":[1,10000]}},"paged":true,"namespace":"introspection","component":"edges"},"directives":[]}],"directives":[{"family":"auth","name":"role","value":"system:introspection"},{"family":"io","name":"output","value":true},{"family":"cache","name":"control","value":"max-age=60, public"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"
|
|
1
|
+
[{"label":"introspection-edges","manifest":{"namespace":"introspection","name":"edges","entity":{"associated":true,"properties":{"src":{"description":"What caused the call — another operation, an event, or a service","type":"object","properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"},"event":{"type":"string"},"service":{"type":"string"}}},"dst":{"description":"What was called","type":"object","required":["namespace","component","operation"],"properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"}}},"sample":{"description":"The last call observed on this edge","type":"object","required":["at","outcome"],"properties":{"at":{"type":"integer"},"input":{},"outcome":{"type":"string"}}},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["src","dst","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"merge":{"concurrency":"retry","input":{"type":"object","properties":{"edges":{"description":"What each replica observed since its last flush, by edge id","type":"object","additionalProperties":{"type":"object","properties":{"src":{"description":"What caused the call — another operation, an event, or a service","type":"object","properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"},"event":{"type":"string"},"service":{"type":"string"}}},"dst":{"description":"What was called","type":"object","required":["namespace","component","operation"],"properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"}}},"sample":{"description":"The last call observed on this edge","type":"object","required":["at","outcome"],"properties":{"at":{"type":"integer"},"input":{},"outcome":{"type":"string"}}}},"required":["src","dst"]}}},"required":["edges"]},"type":"transition","scope":"objects","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.introspection/components/introspection.edges","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":false,"@toa.io/extensions.exposition":{"routes":[{"path":"/introspection/edges","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"observe","query":{},"paged":false,"namespace":"introspection","component":"edges"},"directives":[]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"enumerate","query":{"limit":{"value":10000,"range":[1,10000]}},"paged":true,"namespace":"introspection","component":"edges"},"directives":[]}],"directives":[{"family":"auth","name":"role","value":"system:introspection"},{"family":"io","name":"output","value":true},{"family":"cache","name":"control","value":"max-age=60, public"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"dd4f7aaa","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"introspection-nodes","manifest":{"namespace":"introspection","name":"nodes","entity":{"associated":true,"properties":{"version":{"type":"string"},"entity":{},"operations":{},"events":{},"receivers":{},"extensions":{},"namespace":{"type":"string"},"component":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["namespace","component","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"merge":{"concurrency":"retry","input":{"type":"object","properties":{"nodes":{"description":"What each announced component describes of itself, by its id","type":"object","additionalProperties":{"type":"object","properties":{"version":{"type":"string"},"entity":{},"operations":{},"events":{},"receivers":{},"extensions":{},"namespace":{"type":"string"},"component":{"type":"string"}},"required":["namespace","component"]}}},"required":["nodes"]},"type":"transition","scope":"objects","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.introspection/components/introspection.nodes","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":false,"@toa.io/extensions.exposition":{"routes":[{"path":"/introspection/nodes","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"observe","query":{},"paged":false,"namespace":"introspection","component":"nodes"},"directives":[]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"enumerate","query":{"limit":{"value":1000,"range":[1,1000]}},"paged":true,"namespace":"introspection","component":"nodes"},"directives":[]}],"directives":[{"family":"auth","name":"role","value":"system:introspection"},{"family":"io","name":"output","value":true},{"family":"cache","name":"control","value":"max-age=60, public"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"c1b78a37","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"label":"realtime-streams","manifest":{"namespace":"realtime","name":"streams","operations":{"create":{"input":{"properties":{"key":{"type":"string"},"token":{"type":"string"}},"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"push":{"output":{"type":"null"},"bindings":[],"input":{"properties":{"data":{},"key":{"type":"string"},"event":{"type":"string"}},"type":"object","required":["key","event"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false}},"path":"@toa.io/extensions.realtime/components/realtime.streams","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/realtime/streams","node":{"routes":[{"path":"/:key","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"realtime","component":"streams"},"directives":[]}],"directives":[{"family":"auth","name":"id","value":"key"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"properties":{"maxlen":{"type":"number"},"expire":{"type":"number"}},"type":"object","required":["maxlen","expire"]},"defaults":{"maxlen":1000,"expire":300}},"@toa.io/extensions.state":null,"@toa.io/extensions.stash":null},"version":"
|
|
1
|
+
[{"label":"realtime-streams","manifest":{"namespace":"realtime","name":"streams","operations":{"create":{"input":{"properties":{"key":{"type":"string"},"token":{"type":"string"}},"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"push":{"output":{"type":"null"},"bindings":[],"input":{"properties":{"data":{},"key":{"type":"string"},"event":{"type":"string"}},"type":"object","required":["key","event"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false}},"path":"@toa.io/extensions.realtime/components/realtime.streams","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/realtime/streams","node":{"routes":[{"path":"/:key","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"realtime","component":"streams"},"directives":[]}],"directives":[{"family":"auth","name":"id","value":"key"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"properties":{"maxlen":{"type":"number"},"expire":{"type":"number"}},"type":"object","required":["maxlen","expire"]},"defaults":{"maxlen":1000,"expire":300}},"@toa.io/extensions.state":null,"@toa.io/extensions.stash":null},"version":"08f82fc1"}}]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toa.io/definitions",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.292",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "What Toa packages declare, read without running them",
|
|
6
6
|
"author": "temich <tema.gurtovoy@gmail.com>",
|
|
@@ -21,14 +21,14 @@
|
|
|
21
21
|
"access": "public"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@toa.io/generic": "1.0.0-alpha.
|
|
25
|
-
"@toa.io/pointer": "1.0.0-alpha.
|
|
26
|
-
"@toa.io/schemas": "1.0.0-alpha.
|
|
24
|
+
"@toa.io/generic": "1.0.0-alpha.292",
|
|
25
|
+
"@toa.io/pointer": "1.0.0-alpha.292",
|
|
26
|
+
"@toa.io/schemas": "1.0.0-alpha.292",
|
|
27
27
|
"oxc-parser": "0.149.0"
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
30
|
"transpile": "tsc",
|
|
31
|
-
"prepack": "node transpiled/digest/generate.js",
|
|
31
|
+
"prepack": "tsc && node transpiled/digest/generate.js",
|
|
32
32
|
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
33
33
|
},
|
|
34
34
|
"exports": {
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
"./*": "./transpiled/*/index.js"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@toa.io/core": "1.0.0-alpha.
|
|
39
|
+
"@toa.io/core": "1.0.0-alpha.292",
|
|
40
40
|
"openspan": "1.0.0-alpha.286"
|
|
41
|
-
}
|
|
41
|
+
},
|
|
42
|
+
"gitHead": "0f6aa3ad9dbec86bb632a7975ea61d1dde1d8fc5"
|
|
42
43
|
}
|