@toa.io/definitions 1.0.0-alpha.307 → 1.0.0-alpha.309
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/digest/extensions.cadence.json +1 -1
- package/digest/extensions.configuration.json +1 -1
- package/digest/extensions.exposition.json +1 -1
- package/digest/extensions.introspection.json +1 -1
- package/digest/extensions.realtime.json +1 -1
- package/package.json +3 -3
- package/transpiled/bridges.node/ignore.d.ts +11 -0
- package/transpiled/bridges.node/ignore.js +49 -0
- package/transpiled/bridges.node/ignore.js.map +1 -0
- package/transpiled/bridges.node/index.d.ts +1 -0
- package/transpiled/bridges.node/index.js +1 -0
- package/transpiled/bridges.node/index.js.map +1 -1
- package/transpiled/map.d.ts +1 -1
- package/transpiled/map.js +1 -1
- package/transpiled/map.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"label":"cadence-metronome","manifest":{"namespace":"cadence","name":"metronome","entity":{"properties":{"lane":{"description":"Which dispatcher takes this row, as the outbox partitions its lanes","type":"integer"},"due":{"description":"When the call is to be made, in milliseconds since the epoch","type":"integer"},"expires":{"description":"After this the call is not made at all. A scan bounds on it, so a call nothing was running to make in time is a row nobody reads, rather than an event anything sees.\n","type":"integer"},"endpoint":{"description":"What to call, as `namespace.component.operation`","type":"string"},"request":{"description":"The request to make, as it was handed over","type":"object"},"trail":{"description":"The chain of hops that asked for the call, which the call is then made by. A delay is a hop like any other, so a circle routed through one is still a circle. Absent where the caller detached the call, and on a row written before this existed.\n","type":"array","items":{"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},"REGION":{"type":"integer","minimum":0}},"required":["lane","due","expires","endpoint","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_due","keys":{"lane":"asc","due":"asc"}}}]},{"id":"0003-pending-index","steps":[{"index":{"name":"index_due","keys":{"lane":"asc","due":"asc"},"partial":{"DELETED":null}}}]},{"id":"0004-retention","steps":[{"index":{"name":"index_deleted","keys":{"DELETED":"asc"},"ttl":2592000}}]}],"associated":false,"custom":false},"operations":{"delay":{"query":false,"input":{"type":"object","properties":{"endpoint":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9]*\\.[a-zA-Z][a-zA-Z0-9]*\\.[a-zA-Z][_a-zA-Z0-9]*$"},"request":{"type":"object"},"trail":{"type":"array","items":{"type":"string"}},"interval":{"description":"Milliseconds from now","type":"integer","minimum":0},"overdue":{"description":"Milliseconds the call may be late and still be made, or null for no bound. Stated rather than defaulted: only the caller knows whether a late call is still the right call.\n","type":"integer","nullable":true,"minimum":0}},"required":["endpoint","interval","overdue"]},"output":{"type":"string"},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"settle":{"query":true,"concurrency":"retry","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.cadence/components/cadence.metronome","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":{},"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.cadence":{}},"version":"
|
|
1
|
+
[{"label":"cadence-metronome","manifest":{"namespace":"cadence","name":"metronome","entity":{"properties":{"lane":{"description":"Which dispatcher takes this row, as the outbox partitions its lanes","type":"integer"},"due":{"description":"When the call is to be made, in milliseconds since the epoch","type":"integer"},"expires":{"description":"After this the call is not made at all. A scan bounds on it, so a call nothing was running to make in time is a row nobody reads, rather than an event anything sees.\n","type":"integer"},"endpoint":{"description":"What to call, as `namespace.component.operation`","type":"string"},"request":{"description":"The request to make, as it was handed over","type":"object"},"trail":{"description":"The chain of hops that asked for the call, which the call is then made by. A delay is a hop like any other, so a circle routed through one is still a circle. Absent where the caller detached the call, and on a row written before this existed.\n","type":"array","items":{"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},"REGION":{"type":"integer","minimum":0}},"required":["lane","due","expires","endpoint","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_due","keys":{"lane":"asc","due":"asc"}}}]},{"id":"0003-pending-index","steps":[{"index":{"name":"index_due","keys":{"lane":"asc","due":"asc"},"partial":{"DELETED":null}}}]},{"id":"0004-retention","steps":[{"index":{"name":"index_deleted","keys":{"DELETED":"asc"},"ttl":2592000}}]}],"associated":false,"custom":false},"operations":{"delay":{"query":false,"input":{"type":"object","properties":{"endpoint":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9]*\\.[a-zA-Z][a-zA-Z0-9]*\\.[a-zA-Z][_a-zA-Z0-9]*$"},"request":{"type":"object"},"trail":{"type":"array","items":{"type":"string"}},"interval":{"description":"Milliseconds from now","type":"integer","minimum":0},"overdue":{"description":"Milliseconds the call may be late and still be made, or null for no bound. Stated rather than defaulted: only the caller knows whether a late call is still the right call.\n","type":"integer","nullable":true,"minimum":0}},"required":["endpoint","interval","overdue"]},"output":{"type":"string"},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"settle":{"query":true,"concurrency":"retry","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.cadence/components/cadence.metronome","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":{},"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.cadence":{}},"version":"723c0188","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":"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},"REGION":{"type":"integer","minimum":0}},"required":["component","epoch","configuration","originator","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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},"REGION":{"type":"integer","minimum":0}},"required":["component","epoch","configuration","originator","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"87a9cbd2","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":{},"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.storages":[]},"version":"280937f3"},"packages":{"@aws-sdk/client-s3":"3.1127.0","@aws-sdk/lib-storage":"3.1127.0","cloudinary":"2.11.0"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["banned","originator","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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"},{"id":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"cc6cb9f3","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},"REGION":{"type":"integer","minimum":0}},"required":["authority","username","password","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":"computation","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":{},"@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":"adebe210","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"}}}},"packages":{"@node-rs/bcrypt":"1.10.8"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["authority","uris","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"244c5b26","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":{},"@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":"d9148d47"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["authority","iss","sub","identity","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"48651e8b","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"}}}},"packages":{"jose":"6.2.10"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["authority","identity","client","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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","status"]},{"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":"5e8fa968","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},"REGION":{"type":"integer","minimum":0}},"required":["identity","key","label","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"88ed2342","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},"REGION":{"type":"integer","minimum":0}},"required":["authority","username","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"dcbb1ff7","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},"REGION":{"type":"integer","minimum":0}},"required":["authority","identity","kid","aid","synced","key","counter","CREATED","id","VERSION","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"a846dd97","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"}}},"packages":{"@simplewebauthn/server":"14.0.0"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["identity","role","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"ab339dfd","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},"REGION":{"type":"integer","minimum":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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"prototype":"system"}],"required":["id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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"}}}},"audience":{"description":"Resource URIs this token may be presented at (RFC 8707)","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"},"aud":{"description":"Resource URIs this token may be presented at","type":["string","array"]},"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"}}},"audience":{"description":"Resource URIs this token may be presented at (RFC 8707)","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":{},"@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":"e78e71ed","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"}}},"packages":{"jose":"6.2.10","lru-cache":"11.5.2","paseto":"4.0.0"}}]
|
|
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":{},"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.storages":[]},"version":"263bb6e0"},"packages":{"@aws-sdk/client-s3":"3.1127.0","@aws-sdk/lib-storage":"3.1127.0","cloudinary":"2.11.0"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["banned","originator","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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"},{"id":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"2b12b1c2","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},"REGION":{"type":"integer","minimum":0}},"required":["authority","username","password","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":"computation","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":{},"@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":"ee80f71b","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"}}}},"packages":{"@node-rs/bcrypt":"1.10.8"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["authority","uris","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"e472a601","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":{},"@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":"1fb913de"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["authority","iss","sub","identity","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"fd381fe7","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"}}}},"packages":{"jose":"6.2.10"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["authority","identity","client","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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","status"]},{"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":"b9eeacb6","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},"REGION":{"type":"integer","minimum":0}},"required":["identity","key","label","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"3f56d139","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},"REGION":{"type":"integer","minimum":0}},"required":["authority","username","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"88973b40","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},"REGION":{"type":"integer","minimum":0}},"required":["authority","identity","kid","aid","synced","key","counter","CREATED","id","VERSION","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"dfce89c7","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"}}},"packages":{"@simplewebauthn/server":"14.0.0"}},{"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},"REGION":{"type":"integer","minimum":0}},"required":["identity","role","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"383dadb2","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},"REGION":{"type":"integer","minimum":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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"prototype":"system"}],"required":["id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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"}}}},"audience":{"description":"Resource URIs this token may be presented at (RFC 8707)","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"},"aud":{"description":"Resource URIs this token may be presented at","type":["string","array"]},"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"}}},"audience":{"description":"Resource URIs this token may be presented at (RFC 8707)","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":{},"@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":"3170c4d1","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"}}},"packages":{"jose":"6.2.10","lru-cache":"11.5.2","paseto":"4.0.0"}}]
|
|
@@ -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"}}},"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},"REGION":{"type":"integer","minimum":0}},"required":["src","dst","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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"}}}},"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":{},"@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":"fab9050a","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},"REGION":{"type":"integer","minimum":0}},"required":["namespace","component","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"9885a051","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-signals","manifest":{"namespace":"introspection","name":"signals","entity":{"properties":{"type":{"description":"What the processes are being told to do","type":"string","enum":["halt","stop"]},"seconds":{"description":"How long every process stays disconnected before it builds itself again","type":"integer","minimum":0},"quiescence":{"description":"How long the deployment is given to go quiet before the map is read","type":"integer","minimum":0},"grace":{"description":"How long a process that has found the deployment busy waits before it leaves","type":"integer","minimum":2,"maximum":120},"signal":{"description":"The halt a stop answers","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},"REGION":{"type":"integer","minimum":0}},"required":["type","seconds","quiescence","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"prototype":"system"}],"associated":false,"custom":false},"operations":{"create":{"description":"Tell every process of this deployment to do something.","query":false,"forward":"transit","input":{"type":"object","properties":{"type":{"type":"string"},"seconds":{"type":"integer"},"quiescence":{"type":"integer"},"grace":{"type":"integer"},"signal":{"type":"string"}},"required":["type","seconds","quiescence"]},"concurrency":"retry","type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"transit":{"concurrency":"retry","input":{"type":"object","properties":{"type":{"type":"string"},"seconds":{"type":"integer"},"quiescence":{"type":"integer"},"grace":{"type":"integer"},"signal":{"type":"string"}},"required":["type","seconds","quiescence"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"configuration":{"description":"What a signal of this deployment may ask for, in seconds.","output":{"type":"object","properties":{"halt":{"type":"object","properties":{"duration":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":2},"quiescence":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":2}},"required":["duration","quiescence"]}}},"type":"computation","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.introspection/components/introspection.signals","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":{},"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":false,"@toa.io/extensions.exposition":{"routes":[{"path":"/introspection/signals","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"configuration","query":null,"paged":false,"namespace":"introspection","component":"signals"},"directives":[]},{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"introspection","component":"signals"},"directives":[]}],"directives":[{"family":"auth","name":"role","value":"system:halt"},{"family":"io","name":"output","value":true}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"c927e495","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":"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"}}},"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},"REGION":{"type":"integer","minimum":0}},"required":["src","dst","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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"}}}},"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":{},"@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":"03750fcb","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},"REGION":{"type":"integer","minimum":0}},"required":["namespace","component","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"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":{},"@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":"8333fd35","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-signals","manifest":{"namespace":"introspection","name":"signals","entity":{"properties":{"type":{"description":"What the processes are being told to do","type":"string","enum":["halt","stop"]},"seconds":{"description":"How long every process stays disconnected before it builds itself again","type":"integer","minimum":0},"quiescence":{"description":"How long the deployment is given to go quiet before the map is read","type":"integer","minimum":0},"grace":{"description":"How long a process that has found the deployment busy waits before it leaves","type":"integer","minimum":2,"maximum":120},"signal":{"description":"The halt a stop answers","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},"REGION":{"type":"integer","minimum":0}},"required":["type","seconds","quiescence","id","VERSION","CREATED","UPDATED","DELETED","REGION"],"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":"system:0002-region","steps":[{"update":{"filter":{"REGION":{"$exists":false}},"update":{"$set":{"REGION":0}}}}],"prototype":"system"}],"associated":false,"custom":false},"operations":{"create":{"description":"Tell every process of this deployment to do something.","query":false,"forward":"transit","input":{"type":"object","properties":{"type":{"type":"string"},"seconds":{"type":"integer"},"quiescence":{"type":"integer"},"grace":{"type":"integer"},"signal":{"type":"string"}},"required":["type","seconds","quiescence"]},"concurrency":"retry","type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"transit":{"concurrency":"retry","input":{"type":"object","properties":{"type":{"type":"string"},"seconds":{"type":"integer"},"quiescence":{"type":"integer"},"grace":{"type":"integer"},"signal":{"type":"string"}},"required":["type","seconds","quiescence"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"configuration":{"description":"What a signal of this deployment may ask for, in seconds.","output":{"type":"object","properties":{"halt":{"type":"object","properties":{"duration":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":2},"quiescence":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":2}},"required":["duration","quiescence"]}}},"type":"computation","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.introspection/components/introspection.signals","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":{},"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":false,"@toa.io/extensions.exposition":{"routes":[{"path":"/introspection/signals","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"configuration","query":null,"paged":false,"namespace":"introspection","component":"signals"},"directives":[]},{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"introspection","component":"signals"},"directives":[]}],"directives":[{"family":"auth","name":"role","value":"system:halt"},{"family":"io","name":"output","value":true}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"eb59d022","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":{},"@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":[{"family":"io","name":"readonly","value":false}]}],"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":{},"@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":[{"family":"io","name":"readonly","value":false}]}],"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":"e149f7b0"}}]
|
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.309",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "What Toa packages declare, read without running them",
|
|
6
6
|
"author": "temich <tema.gurtovoy@gmail.com>",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"./*": "./transpiled/*/index.js"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@toa.io/core": "1.0.0-alpha.
|
|
47
|
+
"@toa.io/core": "1.0.0-alpha.308",
|
|
48
48
|
"openspan": "1.0.0-alpha.305",
|
|
49
49
|
"oxc-parser": "0.149.0"
|
|
50
50
|
},
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"optional": true
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "6e0cd9ef0c9b9f4f9db666f6f19fc44e61bf2606"
|
|
60
60
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a component's version is not made of.
|
|
3
|
+
*
|
|
4
|
+
* A component is built in more than one way — an image this runtime writes, a `Dockerfile` an
|
|
5
|
+
* application keeps beside it — and a version is the same only where both hash the same files.
|
|
6
|
+
* What no build ships, or what every build writes for itself, is left out here so that neither
|
|
7
|
+
* has to say so.
|
|
8
|
+
*
|
|
9
|
+
* A component adds to this with `ignore`, and puts one of these back with `!`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ignore: string[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a component's version is not made of.
|
|
3
|
+
*
|
|
4
|
+
* A component is built in more than one way — an image this runtime writes, a `Dockerfile` an
|
|
5
|
+
* application keeps beside it — and a version is the same only where both hash the same files.
|
|
6
|
+
* What no build ships, or what every build writes for itself, is left out here so that neither
|
|
7
|
+
* has to say so.
|
|
8
|
+
*
|
|
9
|
+
* A component adds to this with `ignore`, and puts one of these back with `!`.
|
|
10
|
+
*/
|
|
11
|
+
export const ignore = [
|
|
12
|
+
// installed dependencies: platform- and install-specific, and what they are is `package.json`
|
|
13
|
+
'**/node_modules/**',
|
|
14
|
+
// written by the install
|
|
15
|
+
'package-lock.json',
|
|
16
|
+
'npm-shrinkwrap.json',
|
|
17
|
+
'yarn.lock',
|
|
18
|
+
'pnpm-lock.yaml',
|
|
19
|
+
'bun.lock*',
|
|
20
|
+
// never shipped
|
|
21
|
+
'**/.git/**',
|
|
22
|
+
'**/.hg/**',
|
|
23
|
+
'**/.svn/**',
|
|
24
|
+
// left out of a build by convention
|
|
25
|
+
'**/*.test.*',
|
|
26
|
+
'**/*.spec.*',
|
|
27
|
+
'**/__tests__/**',
|
|
28
|
+
// Node loads none of them, and they are generated as often as not
|
|
29
|
+
'**/*.d.ts',
|
|
30
|
+
// they describe a build rather than the component
|
|
31
|
+
'**/Dockerfile*',
|
|
32
|
+
'**/.dockerignore',
|
|
33
|
+
// what a tool wrote
|
|
34
|
+
'coverage/**',
|
|
35
|
+
'.nyc_output/**',
|
|
36
|
+
'**/*.tsbuildinfo',
|
|
37
|
+
'.cache/**',
|
|
38
|
+
'**/*.log',
|
|
39
|
+
// what a machine wrote
|
|
40
|
+
'**/.DS_Store',
|
|
41
|
+
'**/Thumbs.db',
|
|
42
|
+
'**/*.swp',
|
|
43
|
+
'.idea/**',
|
|
44
|
+
'.vscode/**',
|
|
45
|
+
// no component holds one, and what it holds differs everywhere
|
|
46
|
+
'.env',
|
|
47
|
+
'.env.*'
|
|
48
|
+
];
|
|
49
|
+
//# sourceMappingURL=ignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../source/bridges.node/ignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,8FAA8F;IAC9F,oBAAoB;IAEpB,yBAAyB;IACzB,mBAAmB;IACnB,qBAAqB;IACrB,WAAW;IACX,gBAAgB;IAChB,WAAW;IAEX,gBAAgB;IAChB,YAAY;IACZ,WAAW;IACX,YAAY;IAEZ,oCAAoC;IACpC,aAAa;IACb,aAAa;IACb,iBAAiB;IAEjB,kEAAkE;IAClE,WAAW;IAEX,kDAAkD;IAClD,gBAAgB;IAChB,kBAAkB;IAElB,oBAAoB;IACpB,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,WAAW;IACX,UAAU;IAEV,uBAAuB;IACvB,cAAc;IACd,cAAc;IACd,UAAU;IACV,UAAU;IACV,YAAY;IAEZ,+DAA+D;IAC/D,MAAM;IACN,QAAQ;CACT,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/bridges.node/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/bridges.node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA"}
|
package/transpiled/map.d.ts
CHANGED
package/transpiled/map.js
CHANGED
package/transpiled/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../source/map.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAA;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../source/map.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAA;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,QAAQ,CAAA"}
|