@toa.io/extensions.exposition 1.0.0-alpha.2 → 1.0.0-alpha.200
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/components/context.toa.yaml +2 -2
- package/components/identity.bans/manifest.toa.yaml +15 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +86 -13
- package/components/identity.basic/operations/add.d.ts +3 -0
- package/components/identity.basic/operations/add.js +16 -0
- package/components/identity.basic/operations/add.js.map +1 -0
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +7 -4
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- package/components/identity.basic/operations/check.d.ts +7 -0
- package/components/identity.basic/operations/check.js +15 -0
- package/components/identity.basic/operations/check.js.map +1 -0
- package/components/identity.basic/operations/incept.d.ts +12 -0
- package/components/identity.basic/operations/incept.js +26 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +4 -4
- package/components/identity.basic/operations/transit.js +14 -9
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/types.d.ts +16 -6
- package/components/identity.basic/source/add.ts +14 -0
- package/components/identity.basic/source/authenticate.ts +18 -7
- package/components/identity.basic/source/check.ts +20 -0
- package/components/identity.basic/source/incept.ts +38 -0
- package/components/identity.basic/source/transit.ts +17 -13
- package/components/identity.basic/source/types.ts +17 -6
- package/components/identity.federation/manifest.toa.yaml +77 -29
- package/components/identity.federation/operations/authenticate.d.ts +16 -3
- package/components/identity.federation/operations/authenticate.js +25 -15
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/decode.d.ts +3 -0
- package/components/identity.federation/operations/decode.js +12 -0
- package/components/identity.federation/operations/decode.js.map +1 -0
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/incept.js +22 -0
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/Configuration.d.ts +39 -0
- package/components/identity.federation/operations/lib/Configuration.js +3 -0
- package/components/identity.federation/operations/lib/Configuration.js.map +1 -0
- package/components/identity.federation/operations/lib/Context.d.ts +7 -0
- package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/lib/Context.js} +1 -1
- package/components/identity.federation/operations/lib/Context.js.map +1 -0
- package/components/identity.federation/operations/lib/Ctx.d.ts +6 -0
- package/components/identity.federation/operations/lib/Ctx.js +3 -0
- package/components/identity.federation/operations/lib/Ctx.js.map +1 -0
- package/components/identity.federation/operations/lib/Payload.d.ts +5 -0
- package/components/identity.federation/operations/lib/Payload.js +3 -0
- package/components/identity.federation/operations/lib/Payload.js.map +1 -0
- package/components/identity.federation/operations/lib/decode.d.ts +3 -0
- package/components/identity.federation/operations/{assertions-as-values.cjs → lib/decode.js} +19 -19
- package/components/identity.federation/operations/lib/decode.js.map +1 -0
- package/components/identity.federation/operations/lib/discovery.d.ts +4 -0
- package/components/identity.federation/operations/lib/discovery.js +49 -0
- package/components/identity.federation/operations/lib/discovery.js.map +1 -0
- package/components/identity.federation/operations/lib/errors.d.ts +11 -0
- package/components/identity.federation/operations/lib/errors.js +15 -0
- package/components/identity.federation/operations/lib/errors.js.map +1 -0
- package/components/identity.federation/operations/lib/exchange.d.ts +3 -0
- package/components/identity.federation/operations/lib/exchange.js +107 -0
- package/components/identity.federation/operations/lib/exchange.js.map +1 -0
- package/components/identity.federation/operations/lib/index.d.ts +3 -0
- package/components/identity.federation/operations/lib/index.js +8 -0
- package/components/identity.federation/operations/lib/index.js.map +1 -0
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/operations/types/Scheme.d.ts +1 -0
- package/components/identity.federation/operations/types/Scheme.js +3 -0
- package/components/identity.federation/operations/types/Scheme.js.map +1 -0
- package/components/identity.federation/operations/types/configuration.d.ts +20 -0
- package/components/identity.federation/operations/types/configuration.js +3 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/types/context.d.ts +36 -0
- package/components/identity.federation/operations/types/context.js +3 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/types/entity.js +3 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +4 -0
- package/components/identity.federation/operations/types/index.js +21 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +44 -19
- package/components/identity.federation/source/decode.ts +10 -0
- package/components/identity.federation/source/incept.ts +37 -0
- package/components/identity.federation/source/lib/Configuration.ts +39 -0
- package/components/identity.federation/source/lib/Ctx.ts +7 -0
- package/components/identity.federation/source/lib/Payload.ts +6 -0
- package/components/identity.federation/source/lib/decode.ts +28 -0
- package/components/identity.federation/source/lib/discovery.ts +30 -0
- package/components/identity.federation/source/lib/errors.ts +12 -0
- package/components/identity.federation/source/lib/exchange.ts +116 -0
- package/components/identity.federation/source/lib/index.ts +3 -0
- package/components/identity.federation/source/types/Scheme.ts +1 -0
- package/components/identity.federation/source/types/configuration.ts +21 -0
- package/components/identity.federation/source/types/context.ts +40 -0
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +4 -0
- package/components/identity.federation/tsconfig.json +5 -4
- package/components/identity.keys/manifest.toa.yaml +57 -0
- package/components/identity.keys/operations/create.d.ts +22 -0
- package/components/identity.keys/operations/create.js +16 -0
- package/components/identity.keys/operations/create.js.map +1 -0
- package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.keys/source/create.ts +35 -0
- package/components/identity.keys/tsconfig.json +9 -0
- package/components/identity.otp/manifest.toa.yaml +55 -0
- package/components/identity.otp/operations/authenticate.d.ts +12 -0
- package/components/identity.otp/operations/authenticate.js +31 -0
- package/components/identity.otp/operations/authenticate.js.map +1 -0
- package/components/identity.otp/operations/issue.d.ts +12 -0
- package/components/identity.otp/operations/issue.js +22 -0
- package/components/identity.otp/operations/issue.js.map +1 -0
- package/components/identity.otp/operations/lib/Context.d.ts +13 -0
- package/components/identity.otp/operations/lib/Context.js +3 -0
- package/components/identity.otp/operations/lib/Context.js.map +1 -0
- package/components/identity.otp/operations/lib/Entity.d.ts +6 -0
- package/components/identity.otp/operations/lib/Entity.js +3 -0
- package/components/identity.otp/operations/lib/Entity.js.map +1 -0
- package/components/identity.otp/operations/lib/index.d.ts +1 -0
- package/components/identity.otp/operations/lib/index.js +3 -0
- package/components/identity.otp/operations/lib/index.js.map +1 -0
- package/components/identity.otp/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.otp/source/authenticate.ts +48 -0
- package/components/identity.otp/source/issue.ts +35 -0
- package/components/identity.otp/source/lib/Context.ts +14 -0
- package/components/identity.otp/source/lib/Entity.ts +6 -0
- package/components/identity.otp/source/lib/index.ts +1 -0
- package/components/identity.otp/tsconfig.json +9 -0
- package/components/identity.passkeys/manifest.toa.yaml +268 -0
- package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
- package/components/identity.passkeys/operations/authenticate.js +34 -0
- package/components/identity.passkeys/operations/authenticate.js.map +1 -0
- package/components/identity.passkeys/operations/challenge.d.ts +35 -0
- package/components/identity.passkeys/operations/challenge.js +73 -0
- package/components/identity.passkeys/operations/challenge.js.map +1 -0
- package/components/identity.passkeys/operations/create.d.ts +19 -0
- package/components/identity.passkeys/operations/create.js +58 -0
- package/components/identity.passkeys/operations/create.js.map +1 -0
- package/components/identity.passkeys/operations/delete.d.ts +8 -0
- package/components/identity.passkeys/operations/delete.js +12 -0
- package/components/identity.passkeys/operations/delete.js.map +1 -0
- package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
- package/components/identity.passkeys/operations/lib/const.js +5 -0
- package/components/identity.passkeys/operations/lib/const.js.map +1 -0
- package/components/identity.passkeys/operations/list.d.ts +7 -0
- package/components/identity.passkeys/operations/list.js +15 -0
- package/components/identity.passkeys/operations/list.js.map +1 -0
- package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
- package/components/identity.passkeys/operations/types/Configuration.js +3 -0
- package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
- package/components/identity.passkeys/operations/types/Context.d.ts +15 -0
- package/components/identity.passkeys/operations/types/Context.js +3 -0
- package/components/identity.passkeys/operations/types/Context.js.map +1 -0
- package/components/identity.passkeys/operations/types/Passkey.d.ts +13 -0
- package/components/identity.passkeys/operations/types/Passkey.js +3 -0
- package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
- package/components/identity.passkeys/operations/types/index.d.ts +2 -0
- package/components/identity.passkeys/operations/types/index.js +3 -0
- package/components/identity.passkeys/operations/types/index.js.map +1 -0
- package/components/identity.passkeys/operations/use.d.ts +16 -0
- package/components/identity.passkeys/operations/use.js +57 -0
- package/components/identity.passkeys/operations/use.js.map +1 -0
- package/components/identity.passkeys/source/authenticate.ts +48 -0
- package/components/identity.passkeys/source/challenge.ts +115 -0
- package/components/identity.passkeys/source/create.ts +77 -0
- package/components/identity.passkeys/source/delete.ts +15 -0
- package/components/identity.passkeys/source/lib/const.ts +1 -0
- package/components/identity.passkeys/source/list.ts +17 -0
- package/components/identity.passkeys/source/types/Configuration.ts +6 -0
- package/components/identity.passkeys/source/types/Context.ts +16 -0
- package/components/identity.passkeys/source/types/Passkey.ts +14 -0
- package/components/identity.passkeys/source/types/index.ts +2 -0
- package/components/identity.passkeys/source/use.ts +75 -0
- package/components/identity.passkeys/tsconfig.json +9 -0
- package/components/identity.roles/manifest.toa.yaml +21 -6
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +1 -4
- package/components/identity.roles/operations/list.js.map +1 -1
- package/components/identity.roles/operations/principal.d.ts +4 -6
- package/components/identity.roles/operations/principal.js +6 -1
- package/components/identity.roles/operations/principal.js.map +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +32 -0
- package/components/identity.roles/source/lib/Entity.ts +5 -0
- package/components/identity.roles/source/list.ts +2 -4
- package/components/identity.roles/source/principal.ts +10 -8
- package/components/identity.tokens/manifest.toa.yaml +104 -9
- package/components/identity.tokens/operations/authenticate.d.ts +3 -3
- package/components/identity.tokens/operations/authenticate.js +20 -13
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.d.ts +13 -3
- package/components/identity.tokens/operations/decrypt.js +65 -17
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.d.ts +3 -3
- package/components/identity.tokens/operations/encrypt.js +26 -6
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/issue.d.ts +24 -0
- package/components/identity.tokens/operations/issue.js +59 -0
- package/components/identity.tokens/operations/issue.js.map +1 -0
- package/components/identity.tokens/operations/lib/index.d.ts +2 -0
- package/components/identity.tokens/operations/lib/index.js +19 -0
- package/components/identity.tokens/operations/lib/index.js.map +1 -0
- package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
- package/components/identity.tokens/operations/lib/pad.js +5 -0
- package/components/identity.tokens/operations/lib/pad.js.map +1 -0
- package/components/identity.tokens/operations/lib/types.d.ts +75 -0
- package/components/identity.tokens/operations/lib/types.js.map +1 -0
- package/components/identity.tokens/operations/revoke.d.ts +2 -2
- package/components/identity.tokens/operations/revoke.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +22 -9
- package/components/identity.tokens/source/authenticate.ts +23 -15
- package/components/identity.tokens/source/decrypt.test.ts +33 -18
- package/components/identity.tokens/source/decrypt.ts +95 -20
- package/components/identity.tokens/source/encrypt.test.ts +71 -12
- package/components/identity.tokens/source/encrypt.ts +37 -9
- package/components/identity.tokens/source/issue.ts +82 -0
- package/components/identity.tokens/source/lib/index.ts +2 -0
- package/components/identity.tokens/source/lib/pad.ts +1 -0
- package/components/identity.tokens/source/lib/paseto.test.ts +16 -0
- package/components/identity.tokens/source/lib/types.ts +86 -0
- package/components/identity.tokens/source/revoke.ts +2 -2
- package/components/octets.storage/manifest.toa.yaml +13 -11
- package/components/octets.storage/operations/get.js +3 -3
- package/components/octets.storage/operations/head.js +7 -0
- package/components/octets.storage/operations/put.js +135 -0
- package/documentation/access.md +100 -38
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +171 -64
- package/documentation/dev.md +30 -0
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +135 -23
- package/documentation/introspection.md +82 -0
- package/documentation/io.md +96 -0
- package/documentation/map.md +96 -0
- package/documentation/notes/desync.jpg +0 -0
- package/documentation/notes/peers.md +59 -0
- package/documentation/notes/throttling.md +82 -0
- package/documentation/octets.md +128 -63
- package/documentation/passkeys.md +4 -0
- package/documentation/protocol.md +14 -4
- package/documentation/query.md +100 -8
- package/documentation/require.md +15 -0
- package/documentation/tree.md +35 -4
- package/features/access.feature +141 -49
- package/features/annotation.feature +2 -0
- package/features/auth.assert.feature +57 -0
- package/features/auth.claims.feature +170 -0
- package/features/auth.incept.feature +120 -0
- package/features/auth.input.feature +59 -0
- package/features/auth.issue.feature +32 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +99 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +5 -1
- package/features/cache.feature +167 -5
- package/features/cors.feature +33 -8
- package/features/debug.feature +34 -0
- package/features/dev.feature +87 -0
- package/features/directives.feature +5 -0
- package/features/dynamic.feature +62 -7
- package/features/errors.feature +36 -10
- package/features/etag.feature +236 -0
- package/features/flow.feature +148 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +218 -20
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +177 -14
- package/features/identity.otp.feature +71 -0
- package/features/identity.roles.feature +272 -7
- package/features/identity.tokens.feature +16 -4
- package/features/identtiy.tokens.custom.feature +247 -0
- package/features/interruptions.feature +19 -0
- package/features/introspection.feature +153 -0
- package/features/io.feature +204 -0
- package/features/io.throttle.feature +40 -0
- package/features/map.feature +328 -0
- package/features/methods.feature +47 -0
- package/features/octets.cloudinary.feature +223 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +15 -55
- package/features/octets.feature +91 -113
- package/features/octets.head.feature +40 -0
- package/features/octets.location.feature +83 -0
- package/features/octets.meta.feature +68 -17
- package/features/octets.workflows.feature +377 -60
- package/features/passkeys.feature +66 -0
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +151 -3
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +41 -3
- package/features/routes.feature +110 -12
- package/features/server.feature +21 -0
- package/features/steps/.env.example +5 -0
- package/features/steps/Common.ts +4 -0
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +27 -5
- package/features/steps/HTTP.ts +26 -3
- package/features/steps/IDP.ts +334 -0
- package/features/steps/Identity.ts +51 -0
- package/features/steps/OTP.ts +39 -0
- package/features/steps/Parameters.ts +88 -2
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +17 -0
- package/features/steps/components/echo/operations/echo.js +7 -0
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo/operations/ping.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +26 -2
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/bar.js +0 -1
- package/features/steps/components/octets.tester/operations/baz.js +1 -1
- package/features/steps/components/octets.tester/operations/echo.js +1 -1
- package/features/steps/components/octets.tester/operations/foo.js +2 -2
- package/features/steps/components/octets.tester/operations/id.js +7 -0
- package/features/steps/components/octets.tester/operations/identity.js +7 -0
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +26 -6
- package/features/steps/components/users/manifest.toa.yaml +4 -2
- package/features/steps/components/users/operations/create.js +15 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
- package/features/streams.feature +5 -0
- package/features/timestamps.feature +41 -0
- package/features/timing.feature +69 -0
- package/package.json +31 -22
- package/readme.md +19 -13
- package/schemas/annotation.cos.yaml +9 -1
- package/schemas/io/input.cos.yaml +3 -0
- package/schemas/io/message.cos.yaml +5 -0
- package/schemas/io/output.cos.yaml +5 -0
- package/schemas/io/throttle.cos.yaml +36 -0
- package/schemas/method.cos.yaml +2 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/put.cos.yaml +28 -0
- package/schemas/octets/workflow.cos.yaml +12 -0
- package/schemas/query.cos.yaml +6 -10
- package/schemas/querystring.cos.yaml +2 -0
- package/source/Annotation.ts +6 -2
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +7 -4
- package/source/Directive.test.ts +12 -10
- package/source/Directive.ts +44 -47
- package/source/Endpoint.ts +128 -16
- package/source/Factory.ts +31 -12
- package/source/Gateway.ts +99 -52
- package/source/HTTP/Context.ts +92 -0
- package/source/HTTP/Server.ts +198 -121
- package/source/HTTP/Timing.ts +40 -0
- package/source/HTTP/exceptions.ts +32 -8
- package/source/HTTP/formats/index.ts +3 -4
- package/source/HTTP/formats/json.ts +0 -2
- package/source/HTTP/formats/msgpack.ts +0 -1
- package/source/HTTP/formats/text.ts +0 -2
- package/source/HTTP/formats/yaml.ts +0 -1
- package/source/HTTP/index.ts +1 -0
- package/source/HTTP/messages.test.ts +72 -9
- package/source/HTTP/messages.ts +119 -51
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +70 -23
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +131 -33
- package/source/RTD/Context.ts +8 -11
- package/source/RTD/Directives.ts +32 -4
- package/source/RTD/Endpoint.ts +9 -4
- package/source/RTD/Match.ts +2 -7
- package/source/RTD/Method.ts +23 -13
- package/source/RTD/Node.ts +37 -22
- package/source/RTD/Route.ts +12 -5
- package/source/RTD/Tree.ts +22 -17
- package/source/RTD/factory.ts +7 -7
- package/source/RTD/segment.ts +2 -0
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +37 -24
- package/source/RTD/syntax/types.ts +8 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -20
- package/source/deployment.ts +35 -19
- package/source/directives/auth/Anonymous.ts +5 -4
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Assert.ts +35 -0
- package/source/directives/auth/Authorization.ts +81 -35
- package/source/directives/auth/Delegate.ts +39 -0
- package/source/directives/auth/Echo.ts +16 -6
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Id.ts +1 -1
- package/source/directives/auth/Incept.ts +72 -23
- package/source/directives/auth/Input.ts +72 -0
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +27 -21
- package/source/directives/auth/Rule.ts +3 -5
- package/source/directives/auth/Scheme.ts +5 -5
- package/source/directives/auth/create.ts +11 -0
- package/source/directives/auth/schemes.ts +5 -2
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +13 -8
- package/source/directives/cache/Cache.ts +17 -8
- package/source/directives/cache/Control.ts +49 -23
- package/source/directives/cache/types.ts +1 -1
- package/source/directives/cors/CORS.ts +25 -17
- package/source/directives/dev/Development.ts +17 -10
- package/source/directives/dev/Faulty.ts +26 -0
- package/source/directives/dev/Sleep.ts +55 -0
- package/source/directives/dev/types.ts +1 -1
- package/source/directives/flow/Compose.ts +92 -0
- package/source/directives/flow/Fetch.ts +86 -0
- package/source/directives/flow/Flow.ts +42 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +7 -0
- package/source/directives/index.ts +8 -5
- package/source/directives/io/Directive.ts +14 -0
- package/source/directives/io/IO.ts +55 -0
- package/source/directives/io/Input.ts +53 -0
- package/source/directives/io/Message.ts +1 -0
- package/source/directives/io/Output.ts +70 -0
- package/source/directives/io/Throttle.ts +32 -0
- package/source/directives/io/index.ts +3 -0
- package/source/directives/io/lib/throttle/Configuration.test.ts +40 -0
- package/source/directives/io/lib/throttle/Configuration.ts +58 -0
- package/source/directives/io/lib/throttle/Interval.ts +31 -0
- package/source/directives/io/lib/throttle/Keys.ts +40 -0
- package/source/directives/io/lib/throttle/Quota.ts +22 -0
- package/source/directives/io/lib/throttle/Quotas.test.ts +136 -0
- package/source/directives/io/lib/throttle/Quotas.ts +83 -0
- package/source/directives/io/lib/throttle/components/Component.ts +5 -0
- package/source/directives/io/lib/throttle/components/IP.ts +40 -0
- package/source/directives/io/lib/throttle/components/Path.ts +8 -0
- package/source/directives/io/lib/throttle/components/index.ts +13 -0
- package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
- package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
- package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
- package/source/directives/io/lib/throttle/index.ts +2 -0
- package/source/directives/io/schemas.test.ts +9 -0
- package/source/directives/io/schemas.ts +15 -0
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Claims.ts +58 -0
- package/source/directives/map/Directive.ts +4 -0
- package/source/directives/map/Headers.ts +38 -0
- package/source/directives/map/Language.ts +42 -0
- package/source/directives/map/Languages.ts +11 -0
- package/source/directives/map/Map.ts +61 -0
- package/source/directives/map/Mapping.ts +19 -0
- package/source/directives/{vary → map}/Properties.ts +2 -4
- package/source/directives/map/Segments.ts +33 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/octets/Context.ts +8 -6
- package/source/directives/octets/Delete.ts +38 -22
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Get.ts +96 -0
- package/source/directives/octets/Octets.ts +19 -18
- package/source/directives/octets/Put.ts +140 -0
- package/source/directives/octets/Workflow.ts +54 -0
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/schemas.test.ts +21 -0
- package/source/directives/octets/schemas.ts +6 -8
- package/source/directives/octets/types.ts +2 -7
- package/source/directives/octets/{workflow → workflows}/Execution.ts +62 -10
- package/source/directives/octets/{workflow → workflows}/Workflow.ts +18 -7
- package/source/directives/octets/workflows/index.ts +1 -0
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/exceptions.ts +32 -9
- package/source/io.ts +2 -2
- package/source/manifest.ts +10 -11
- package/source/root.ts +20 -0
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +5 -2
- package/transpiled/Branch.d.ts +1 -0
- package/transpiled/Composition.d.ts +0 -1
- package/transpiled/Composition.js +0 -4
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Context.d.ts +7 -4
- package/transpiled/Directive.d.ts +11 -21
- package/transpiled/Directive.js +32 -17
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +12 -8
- package/transpiled/Endpoint.js +111 -7
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +3 -2
- package/transpiled/Factory.js +20 -6
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +7 -8
- package/transpiled/Gateway.js +72 -37
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +32 -0
- package/transpiled/HTTP/Context.js +63 -0
- package/transpiled/HTTP/Context.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +22 -10
- package/transpiled/HTTP/Server.js +177 -102
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/Timing.d.ts +10 -0
- package/transpiled/HTTP/Timing.js +29 -0
- package/transpiled/HTTP/Timing.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +16 -4
- package/transpiled/HTTP/exceptions.js +34 -10
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/index.d.ts +1 -1
- package/transpiled/HTTP/formats/index.js +3 -3
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/formats/json.d.ts +1 -1
- package/transpiled/HTTP/formats/json.js +1 -2
- package/transpiled/HTTP/formats/json.js.map +1 -1
- package/transpiled/HTTP/formats/msgpack.d.ts +1 -1
- package/transpiled/HTTP/formats/msgpack.js.map +1 -1
- package/transpiled/HTTP/formats/text.d.ts +1 -1
- package/transpiled/HTTP/formats/text.js +1 -2
- package/transpiled/HTTP/formats/text.js.map +1 -1
- package/transpiled/HTTP/formats/yaml.d.ts +1 -1
- package/transpiled/HTTP/formats/yaml.js +1 -2
- package/transpiled/HTTP/formats/yaml.js.map +1 -1
- package/transpiled/HTTP/index.d.ts +1 -0
- package/transpiled/HTTP/index.js +1 -0
- package/transpiled/HTTP/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +10 -21
- package/transpiled/HTTP/messages.js +87 -32
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Introspection.d.ts +9 -0
- package/transpiled/Introspection.js +3 -0
- package/transpiled/Introspection.js.map +1 -0
- package/transpiled/Mapping.d.ts +11 -2
- package/transpiled/Mapping.js +53 -21
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +12 -1
- package/transpiled/Query.js +93 -30
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +8 -7
- package/transpiled/RTD/Directives.d.ts +22 -4
- package/transpiled/RTD/Endpoint.d.ts +7 -4
- package/transpiled/RTD/Match.d.ts +2 -4
- package/transpiled/RTD/Method.d.ts +11 -7
- package/transpiled/RTD/Method.js +11 -0
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +8 -7
- package/transpiled/RTD/Node.js +24 -12
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +2 -1
- package/transpiled/RTD/Route.js +7 -3
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +8 -7
- package/transpiled/RTD/Tree.js +7 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.d.ts +2 -4
- package/transpiled/RTD/factory.js +5 -2
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/segment.d.ts +1 -0
- package/transpiled/RTD/segment.js +2 -0
- package/transpiled/RTD/segment.js.map +1 -1
- package/transpiled/RTD/syntax/parse.js +34 -22
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +7 -3
- package/transpiled/RTD/syntax/types.js +1 -1
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.d.ts +4 -4
- package/transpiled/Remotes.js +6 -5
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +5 -5
- package/transpiled/Tenant.js +3 -14
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +29 -16
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.d.ts +2 -2
- package/transpiled/directives/auth/Anonymous.js +4 -5
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Anyone.d.ts +6 -0
- package/transpiled/directives/auth/Anyone.js +14 -0
- package/transpiled/directives/auth/Anyone.js.map +1 -0
- package/transpiled/directives/auth/Assert.d.ts +7 -0
- package/transpiled/directives/auth/Assert.js +57 -0
- package/transpiled/directives/auth/Assert.js.map +1 -0
- package/transpiled/directives/auth/Authorization.d.ts +6 -6
- package/transpiled/directives/auth/Authorization.js +59 -27
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +9 -0
- package/transpiled/directives/auth/Delegate.js +33 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/Echo.d.ts +4 -4
- package/transpiled/directives/auth/Echo.js +11 -4
- package/transpiled/directives/auth/Echo.js.map +1 -1
- package/transpiled/directives/auth/Federation.d.ts +16 -0
- package/transpiled/directives/auth/Federation.js +57 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Id.d.ts +1 -1
- package/transpiled/directives/auth/Id.js.map +1 -1
- package/transpiled/directives/auth/Incept.d.ts +7 -5
- package/transpiled/directives/auth/Incept.js +57 -18
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Input.d.ts +13 -0
- package/transpiled/directives/auth/Input.js +49 -0
- package/transpiled/directives/auth/Input.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +5 -2
- package/transpiled/directives/auth/Role.js +26 -20
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Rule.d.ts +2 -4
- package/transpiled/directives/auth/Rule.js +2 -2
- package/transpiled/directives/auth/Rule.js.map +1 -1
- package/transpiled/directives/auth/Scheme.d.ts +2 -2
- package/transpiled/directives/auth/Scheme.js +4 -4
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/create.d.ts +2 -0
- package/transpiled/directives/auth/create.js +14 -0
- package/transpiled/directives/auth/create.js.map +1 -0
- package/transpiled/directives/auth/schemes.d.ts +2 -1
- package/transpiled/directives/auth/schemes.js +5 -2
- package/transpiled/directives/auth/schemes.js.map +1 -1
- package/transpiled/directives/auth/split.js +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +10 -7
- package/transpiled/directives/cache/Cache.d.ts +5 -5
- package/transpiled/directives/cache/Cache.js +12 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +6 -5
- package/transpiled/directives/cache/Control.js +34 -17
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cache/types.d.ts +1 -1
- package/transpiled/directives/cors/CORS.d.ts +2 -3
- package/transpiled/directives/cors/CORS.js +22 -15
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +4 -4
- package/transpiled/directives/dev/Development.js +15 -7
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/dev/Faulty.d.ts +8 -0
- package/transpiled/directives/dev/Faulty.js +26 -0
- package/transpiled/directives/dev/Faulty.js.map +1 -0
- package/transpiled/directives/dev/Sleep.d.ts +9 -0
- package/transpiled/directives/dev/Sleep.js +48 -0
- package/transpiled/directives/dev/Sleep.js.map +1 -0
- package/transpiled/directives/dev/types.d.ts +1 -1
- package/transpiled/directives/flow/Compose.d.ts +9 -0
- package/transpiled/directives/flow/Compose.js +94 -0
- package/transpiled/directives/flow/Compose.js.map +1 -0
- package/transpiled/directives/flow/Fetch.d.ts +12 -0
- package/transpiled/directives/flow/Fetch.js +58 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +33 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +6 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.d.ts +2 -2
- package/transpiled/directives/index.js +7 -4
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Directive.d.ts +11 -0
- package/transpiled/directives/io/Directive.js.map +1 -0
- package/transpiled/directives/io/IO.d.ts +11 -0
- package/transpiled/directives/io/IO.js +43 -0
- package/transpiled/directives/io/IO.js.map +1 -0
- package/transpiled/directives/io/Input.d.ts +11 -0
- package/transpiled/directives/io/Input.js +65 -0
- package/transpiled/directives/io/Input.js.map +1 -0
- package/transpiled/directives/io/Message.d.ts +1 -0
- package/transpiled/directives/io/Message.js +3 -0
- package/transpiled/directives/io/Message.js.map +1 -0
- package/transpiled/directives/io/Output.d.ts +13 -0
- package/transpiled/directives/io/Output.js +76 -0
- package/transpiled/directives/io/Output.js.map +1 -0
- package/transpiled/directives/io/Throttle.d.ts +11 -0
- package/transpiled/directives/{octets/Permute.js → io/Throttle.js} +21 -21
- package/transpiled/directives/io/Throttle.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +2 -0
- package/transpiled/directives/io/index.js +6 -0
- package/transpiled/directives/io/index.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Configuration.d.ts +23 -0
- package/transpiled/directives/io/lib/throttle/Configuration.js +27 -0
- package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Interval.d.ts +9 -0
- package/transpiled/directives/io/lib/throttle/Interval.js +31 -0
- package/transpiled/directives/io/lib/throttle/Interval.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Keys.d.ts +12 -0
- package/transpiled/directives/io/lib/throttle/Keys.js +34 -0
- package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Quota.d.ts +8 -0
- package/transpiled/directives/io/lib/throttle/Quota.js +22 -0
- package/transpiled/directives/io/lib/throttle/Quota.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/Quotas.d.ts +26 -0
- package/transpiled/directives/io/lib/throttle/Quotas.js +61 -0
- package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Component.d.ts +4 -0
- package/transpiled/directives/io/lib/throttle/components/Component.js +3 -0
- package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/IP.d.ts +6 -0
- package/transpiled/directives/io/lib/throttle/components/IP.js +33 -0
- package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/components/Path.js +10 -0
- package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/components/index.js +10 -0
- package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.js +3 -0
- package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.js +19 -0
- package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.js +8 -0
- package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
- package/transpiled/directives/io/lib/throttle/index.d.ts +2 -0
- package/transpiled/directives/io/lib/throttle/index.js +8 -0
- package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +9 -0
- package/transpiled/directives/io/schemas.js +15 -0
- package/transpiled/directives/io/schemas.js.map +1 -0
- package/transpiled/directives/map/Authority.d.ts +6 -0
- package/transpiled/directives/map/Authority.js +19 -0
- package/transpiled/directives/map/Authority.js.map +1 -0
- package/transpiled/directives/map/Claims.d.ts +10 -0
- package/transpiled/directives/map/Claims.js +44 -0
- package/transpiled/directives/map/Claims.js.map +1 -0
- package/transpiled/directives/map/Directive.d.ts +3 -0
- package/transpiled/directives/map/Directive.js +3 -0
- package/transpiled/directives/map/Directive.js.map +1 -0
- package/transpiled/directives/map/Headers.d.ts +7 -0
- package/transpiled/directives/map/Headers.js +34 -0
- package/transpiled/directives/map/Headers.js.map +1 -0
- package/transpiled/directives/map/Language.d.ts +10 -0
- package/transpiled/directives/map/Language.js +38 -0
- package/transpiled/directives/map/Language.js.map +1 -0
- package/transpiled/directives/map/Languages.d.ts +4 -0
- package/transpiled/directives/map/Languages.js +17 -0
- package/transpiled/directives/map/Languages.js.map +1 -0
- package/transpiled/directives/map/Map.d.ts +13 -0
- package/transpiled/directives/map/Map.js +46 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +13 -0
- package/transpiled/directives/map/Mapping.js +13 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
- package/transpiled/directives/{vary → map}/Properties.js +1 -3
- package/transpiled/directives/map/Properties.js.map +1 -0
- package/transpiled/directives/map/Segments.d.ts +6 -0
- package/transpiled/directives/map/Segments.js +30 -0
- package/transpiled/directives/map/Segments.js.map +1 -0
- package/transpiled/directives/map/index.d.ts +2 -0
- package/transpiled/directives/map/index.js +6 -0
- package/transpiled/directives/map/index.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +4 -4
- package/transpiled/directives/octets/Context.js +8 -26
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.d.ts +5 -4
- package/transpiled/directives/octets/Delete.js +32 -17
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.d.ts +8 -0
- package/transpiled/directives/octets/Directive.js +8 -0
- package/transpiled/directives/octets/Directive.js.map +1 -0
- package/transpiled/directives/octets/Get.d.ts +17 -0
- package/transpiled/directives/octets/Get.js +96 -0
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.d.ts +4 -4
- package/transpiled/directives/octets/Octets.js +15 -14
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +13 -5
- package/transpiled/directives/octets/Put.js +101 -0
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.d.ts +15 -0
- package/transpiled/directives/octets/{List.js → Workflow.js} +29 -30
- package/transpiled/directives/octets/Workflow.js.map +1 -0
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +21 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/schemas.d.ts +6 -8
- package/transpiled/directives/octets/schemas.js +4 -6
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +2 -5
- package/transpiled/directives/octets/{workflow → workflows}/Execution.d.ts +7 -1
- package/transpiled/directives/octets/workflows/Execution.js +89 -0
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -0
- package/transpiled/directives/octets/{workflow → workflows}/Workflow.d.ts +8 -3
- package/transpiled/directives/octets/{workflow → workflows}/Workflow.js +10 -4
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -0
- package/transpiled/directives/octets/workflows/index.d.ts +1 -0
- package/transpiled/directives/octets/workflows/index.js.map +1 -0
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +22 -7
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/io.d.ts +2 -2
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +20 -0
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +1 -1
- package/transpiled/schemas.js +2 -2
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/create.d.ts +0 -10
- package/components/identity.basic/operations/create.js +0 -10
- package/components/identity.basic/operations/create.js.map +0 -1
- package/components/identity.basic/source/create.ts +0 -18
- package/components/identity.federation/operations/assertions-as-values.cjs.map +0 -1
- package/components/identity.federation/operations/assertions-as-values.d.cts +0 -4
- package/components/identity.federation/operations/create.d.ts +0 -10
- package/components/identity.federation/operations/create.js +0 -15
- package/components/identity.federation/operations/create.js.map +0 -1
- package/components/identity.federation/operations/jwt.cjs +0 -112
- package/components/identity.federation/operations/jwt.cjs.map +0 -1
- package/components/identity.federation/operations/jwt.d.cts +0 -19
- package/components/identity.federation/operations/schemas.d.ts +0 -43
- package/components/identity.federation/operations/schemas.js +0 -9
- package/components/identity.federation/operations/schemas.js.map +0 -1
- package/components/identity.federation/operations/types.d.ts +0 -51
- package/components/identity.federation/operations/types.js.map +0 -1
- package/components/identity.federation/source/assertions-as-values.cts +0 -20
- package/components/identity.federation/source/create.ts +0 -26
- package/components/identity.federation/source/jwt.cts +0 -143
- package/components/identity.federation/source/schemas.ts +0 -45
- package/components/identity.federation/source/types.ts +0 -56
- package/components/identity.tokens/operations/types.d.ts +0 -40
- package/components/identity.tokens/operations/types.js.map +0 -1
- package/components/identity.tokens/source/types.ts +0 -48
- package/components/octets.storage/operations/fetch.js +0 -46
- package/components/octets.storage/operations/list.js +0 -7
- package/components/octets.storage/operations/permute.js +0 -7
- package/components/octets.storage/operations/store.js +0 -11
- package/documentation/vary.md +0 -69
- package/features/steps/IdP.ts +0 -120
- package/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/features/vary.feature +0 -150
- package/schemas/octets/context.cos.yaml +0 -1
- package/schemas/octets/fetch.cos.yaml +0 -3
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/HTTP/Server.fixtures.ts +0 -40
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Fetch.ts +0 -84
- package/source/directives/octets/List.ts +0 -62
- package/source/directives/octets/Permute.ts +0 -37
- package/source/directives/octets/Store.ts +0 -102
- package/source/directives/octets/workflow/index.ts +0 -1
- package/source/directives/vary/Directive.ts +0 -6
- package/source/directives/vary/Embed.ts +0 -62
- package/source/directives/vary/Vary.ts +0 -48
- package/source/directives/vary/embeddings/Embedding.ts +0 -6
- package/source/directives/vary/embeddings/Header.ts +0 -30
- package/source/directives/vary/embeddings/Language.ts +0 -31
- package/source/directives/vary/embeddings/index.ts +0 -11
- package/source/directives/vary/index.ts +0 -3
- package/transpiled/HTTP/Server.fixtures.d.ts +0 -10
- package/transpiled/HTTP/Server.fixtures.js +0 -31
- package/transpiled/HTTP/Server.fixtures.js.map +0 -1
- package/transpiled/directives/octets/Fetch.d.ts +0 -17
- package/transpiled/directives/octets/Fetch.js +0 -76
- package/transpiled/directives/octets/Fetch.js.map +0 -1
- package/transpiled/directives/octets/List.d.ts +0 -15
- package/transpiled/directives/octets/List.js.map +0 -1
- package/transpiled/directives/octets/Permute.d.ts +0 -10
- package/transpiled/directives/octets/Permute.js.map +0 -1
- package/transpiled/directives/octets/Store.js +0 -80
- package/transpiled/directives/octets/Store.js.map +0 -1
- package/transpiled/directives/octets/workflow/Execution.js +0 -55
- package/transpiled/directives/octets/workflow/Execution.js.map +0 -1
- package/transpiled/directives/octets/workflow/Workflow.js.map +0 -1
- package/transpiled/directives/octets/workflow/index.d.ts +0 -1
- package/transpiled/directives/octets/workflow/index.js.map +0 -1
- package/transpiled/directives/vary/Directive.d.ts +0 -5
- package/transpiled/directives/vary/Directive.js.map +0 -1
- package/transpiled/directives/vary/Embed.d.ts +0 -10
- package/transpiled/directives/vary/Embed.js +0 -49
- package/transpiled/directives/vary/Embed.js.map +0 -1
- package/transpiled/directives/vary/Properties.js.map +0 -1
- package/transpiled/directives/vary/Vary.d.ts +0 -10
- package/transpiled/directives/vary/Vary.js +0 -36
- package/transpiled/directives/vary/Vary.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Header.js +0 -26
- package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Language.js +0 -28
- package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
- package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/index.js +0 -10
- package/transpiled/directives/vary/embeddings/index.js.map +0 -1
- package/transpiled/directives/vary/index.d.ts +0 -2
- package/transpiled/directives/vary/index.js +0 -6
- package/transpiled/directives/vary/index.js.map +0 -1
- /package/components/{identity.federation/operations → identity.tokens/operations/lib}/types.js +0 -0
- /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
- /package/{components/identity.tokens/operations → transpiled/directives/flow}/types.js +0 -0
- /package/transpiled/directives/{vary → io}/Directive.js +0 -0
- /package/transpiled/directives/octets/{workflow → workflows}/index.js +0 -0
|
@@ -20,7 +20,7 @@ and pepper.
|
|
|
20
20
|
configuration:
|
|
21
21
|
identity.basic:
|
|
22
22
|
rounds: 10 # salt rounds
|
|
23
|
-
|
|
23
|
+
pepper: '' # hashing pepper
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
### Credentials constraints
|
|
@@ -74,6 +74,12 @@ username: string
|
|
|
74
74
|
password: string
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
+
Returns `201 Created` if the Identity is created,
|
|
78
|
+
or `422 Unprocessable Entity` with one of the error codes:
|
|
79
|
+
|
|
80
|
+
- `INVALID_USERNAME` - `username` does not match constraints
|
|
81
|
+
- `INVALID_PASSWORD` - `password` does not match constraints
|
|
82
|
+
|
|
77
83
|
Access is [anonymous](access.md#anonymous).
|
|
78
84
|
|
|
79
85
|
#### `/identity/basic/:id/`
|
|
@@ -89,6 +95,23 @@ password?: string
|
|
|
89
95
|
|
|
90
96
|
Access requires basic credentials of the modified Identity or `system:identity:basic` role.
|
|
91
97
|
|
|
98
|
+
<code>POST</code> Incept new basic credentials. Request body is as follows:
|
|
99
|
+
|
|
100
|
+
```yaml
|
|
101
|
+
username: string
|
|
102
|
+
password: string
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Identity should not have associated basic credentials. Access requires any credentials of the Identity.
|
|
106
|
+
|
|
107
|
+
#### `/identity/basic/usernames/:username/`
|
|
108
|
+
|
|
109
|
+
<code>GET</code> Check if the username is available.
|
|
110
|
+
|
|
111
|
+
`username` must be Base64 URL encoded.
|
|
112
|
+
|
|
113
|
+
Returns empty response with status `204` if the username is already taken or `404` if it is available.
|
|
114
|
+
|
|
92
115
|
## Identity federation (OpenID connect)
|
|
93
116
|
|
|
94
117
|
The `identity.federation` component manages OpenID Connect federated identities.
|
|
@@ -96,9 +119,14 @@ The `identity.federation` component manages OpenID Connect federated identities.
|
|
|
96
119
|
Both implicit identities creation and forced [identity inception](./identity.md) are supported
|
|
97
120
|
as in case with basic credentials. `principal` is also working in the same way.
|
|
98
121
|
|
|
99
|
-
The configuration schema alongside default values is described in
|
|
122
|
+
The configuration schema alongside default values is described in
|
|
123
|
+
the [component manifest](../components/identity.federation/manifest.toa.yaml).
|
|
100
124
|
|
|
101
|
-
No federated tokens are accepted by default until at least one entry is added to the `trust`
|
|
125
|
+
No federated tokens are accepted by default until at least one entry is added to the `trust`
|
|
126
|
+
configuration.
|
|
127
|
+
|
|
128
|
+
Toa supports either asymmetric RS256 or symmetric HS256 / HS384 / HS512 tokens with pre-shared
|
|
129
|
+
secrets.
|
|
102
130
|
|
|
103
131
|
```yaml
|
|
104
132
|
# context.toa.yaml
|
|
@@ -106,15 +134,20 @@ No federated tokens are accepted by default until at least one entry is added to
|
|
|
106
134
|
configuration:
|
|
107
135
|
identity.federation:
|
|
108
136
|
trust:
|
|
109
|
-
-
|
|
110
|
-
|
|
137
|
+
- iss: https://token.actions.githubusercontent.com
|
|
138
|
+
aud:
|
|
111
139
|
- https://github.com/tinovyatkin
|
|
112
140
|
- https://github.com/temich
|
|
141
|
+
|
|
142
|
+
- issuer: some.private.issuer
|
|
143
|
+
secrets:
|
|
144
|
+
HS256:
|
|
145
|
+
k1: <secret-to-be-used-for-hs256>
|
|
113
146
|
```
|
|
114
147
|
|
|
115
|
-
##
|
|
148
|
+
## Local tokens
|
|
116
149
|
|
|
117
|
-
The `identity.tokens` component manages
|
|
150
|
+
The `identity.tokens` component manages local authentication tokens.
|
|
118
151
|
|
|
119
152
|
These tokens carry the information required to authenticate the Identity and authorize access.
|
|
120
153
|
|
|
@@ -125,46 +158,114 @@ The new token is issued each time the request is made:
|
|
|
125
158
|
1. Using authentication scheme other than `Token`.
|
|
126
159
|
2. Using `Token` authentication scheme with an [obsolete token](#token-rotation).
|
|
127
160
|
|
|
161
|
+
When the token is issued it is sent in the `authorization` response header and the `cache-control`
|
|
162
|
+
is set to `no-store`.
|
|
163
|
+
|
|
164
|
+
```http
|
|
165
|
+
authorization: Token ...
|
|
166
|
+
cache-control: no-store
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Custom tokens
|
|
170
|
+
|
|
171
|
+
Custom tokens can be issued with a specific set of permissions and scopes for the own Identity or by
|
|
172
|
+
an Identity with the `system:identity:tokens` role.
|
|
173
|
+
|
|
174
|
+
Tokens are issued with custom secret keys and are not subject to [token rotation](#token-rotation).
|
|
175
|
+
To invalidate a custom token, its secret key must be deleted.
|
|
176
|
+
|
|
177
|
+
Custom tokens have no `refresh` period, that is, never become obsolete and never refreshed.
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
POST /identity/tokens/<identity>/
|
|
181
|
+
host: nex.toa.io
|
|
182
|
+
authorization: ...
|
|
183
|
+
accept: application/yaml
|
|
184
|
+
content-type: application/yaml
|
|
185
|
+
|
|
186
|
+
lifetime: 3600
|
|
187
|
+
scopes: [app:developer]
|
|
188
|
+
permissions:
|
|
189
|
+
/users/fc8e66dd/: [GET, PUT]
|
|
190
|
+
/posts/fc8e66dd/**/comments/: [*]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
201 Created
|
|
195
|
+
content-type: application/yaml
|
|
196
|
+
|
|
197
|
+
token: <token>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
- `lifetime`: Issued token will be valid for this period
|
|
201
|
+
(default is specified in [the configuration](#token-rotation)).
|
|
202
|
+
The value of `0` means the token will not expire, which is supported, but
|
|
203
|
+
**strongly not recommended** for production environments.
|
|
204
|
+
- `scopes`: Issued token will assume only specified [role scopes](access.md#roles).
|
|
205
|
+
- `permissions`: Issued token will have permissions to access only specified resources and methods.
|
|
206
|
+
Supports [glob patterns](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html)
|
|
207
|
+
and a wildcard method.
|
|
208
|
+
|
|
209
|
+
> `roles` and `permissions` are additional restrictions applied on top of the Identity’s inherent
|
|
210
|
+
> privileges.
|
|
211
|
+
|
|
212
|
+
### Custom token invalidation
|
|
213
|
+
|
|
214
|
+
Custom tokens can be invalidated by deleting the secret key used to issue them.
|
|
215
|
+
This can be done by the Identity that issued the token or by an Identity with
|
|
216
|
+
the `system:identity:keys` role.
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
DELETE /identity/keys/<identity>/<key.id>/
|
|
220
|
+
authorization: ...
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Token secret key `id` can be obtained from the list of issued tokens (or from the footer of the
|
|
224
|
+
token itself).
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
GET /identity/keys/<identity>/
|
|
228
|
+
authorization: ...
|
|
229
|
+
```
|
|
230
|
+
|
|
128
231
|
### Token encryption
|
|
129
232
|
|
|
130
233
|
Issued tokens are encrypted
|
|
131
234
|
with [PASETO V3 encryption](https://github.com/panva/paseto/blob/main/docs/README.md#v3encryptpayload-key-options)
|
|
132
|
-
using the `
|
|
235
|
+
using the first key from the `keys` configuration value.
|
|
133
236
|
|
|
134
237
|
```yaml
|
|
135
238
|
# context.toa.yaml
|
|
136
239
|
|
|
137
240
|
configuration:
|
|
138
|
-
identity.
|
|
139
|
-
|
|
241
|
+
identity.tokens:
|
|
242
|
+
keys:
|
|
243
|
+
2024q1: $TOKEN_SECRET_2024Q1
|
|
140
244
|
```
|
|
141
245
|
|
|
142
|
-
|
|
246
|
+
At least one key in the `keys` configuration value is required.
|
|
143
247
|
|
|
144
248
|
> Valid secret key may be generated using the [`toa key` command](/runtime/cli/readme.md#key).
|
|
145
249
|
|
|
146
250
|
### Token rotation
|
|
147
251
|
|
|
148
252
|
Issued tokens are valid for a `lifetime` period defined in the configuration. After the `refresh`
|
|
149
|
-
period, the token is
|
|
150
|
-
|
|
151
|
-
provided one has
|
|
152
|
-
been [revoked](#token-revocation).
|
|
253
|
+
period, the token is considered obsolete (yet still valid), and a new token
|
|
254
|
+
is [issued](#issuing-tokens) unless the provided one has been [revoked](#token-revocation).
|
|
153
255
|
|
|
154
256
|
This essentially means that if the client uses the token at least once every `lifetime` period, it
|
|
155
|
-
will always have a
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
the `refresh` period of the currently issued tokens has expired.
|
|
257
|
+
will always have a valid token to authenticate with.
|
|
258
|
+
Also, token revocation or changing roles of an Identity will take effect once the `refresh` period
|
|
259
|
+
of the currently issued tokens has expired.
|
|
159
260
|
|
|
160
261
|
Adjusting these two values is a delicate trade-off between security, performance and client
|
|
161
|
-
|
|
262
|
+
convenience.
|
|
162
263
|
|
|
163
264
|
```yaml
|
|
164
265
|
# context.toa.yaml
|
|
165
266
|
|
|
166
267
|
configuration:
|
|
167
|
-
identity.
|
|
268
|
+
identity.tokens:
|
|
168
269
|
lifetime: 2592000 # seconds, 30 days
|
|
169
270
|
refresh: 600 # seconds, 10 minutes
|
|
170
271
|
```
|
|
@@ -182,49 +283,24 @@ Token revocation takes effect once the `refresh` period of the currently issued
|
|
|
182
283
|
|
|
183
284
|
### Secret rotation
|
|
184
285
|
|
|
185
|
-
Tokens are always encrypted using the `
|
|
186
|
-
|
|
187
|
-
the `key0` and `key1` values in order.
|
|
188
|
-
|
|
189
|
-
`key0` is considered the "current key," and `key1` is considered the "previous key."
|
|
190
|
-
|
|
191
|
-
```yaml
|
|
192
|
-
# context.toa.yaml
|
|
193
|
-
|
|
194
|
-
configuration:
|
|
195
|
-
identity.basic:
|
|
196
|
-
key0: $TOKEN_ENCRYPTION_KEY_2023Q3
|
|
197
|
-
key1: $TOKEN_ENCRYPTION_KEY_2023Q2
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Secret rotation is performed by adding a new key as the `key0` value and moving the existing `key0`
|
|
201
|
-
to the `key1` value.
|
|
202
|
-
|
|
203
|
-
When rolling out the new secret key, there will be a period of time when the new key is deployed to
|
|
204
|
-
some Exposition
|
|
205
|
-
instances. During this time, these instances will start using the new key to encrypt tokens, while
|
|
206
|
-
other instances will
|
|
207
|
-
continue using the current key and will not be able to decrypt tokens encrypted with the new key.
|
|
286
|
+
Tokens are always encrypted using the first key from the `keys` configuration value,
|
|
287
|
+
and decrypted by the key used to encrypt them.
|
|
208
288
|
|
|
209
|
-
To
|
|
289
|
+
To rotate the secret key, a new key must be added to the top of the `keys` configuration value, that
|
|
290
|
+
is, it will be used to encrypt new tokens.
|
|
210
291
|
|
|
211
|
-
|
|
292
|
+
Old keys must be removed only after the `refresh` period of the previously issued tokens has
|
|
293
|
+
expired.
|
|
212
294
|
|
|
213
|
-
>
|
|
214
|
-
>
|
|
215
|
-
>
|
|
216
|
-
> the current `key1`
|
|
217
|
-
> value.
|
|
218
|
-
|
|
219
|
-
1. Deploy the new secret key to all Exposition instances as `key1`. This enables all instances to
|
|
220
|
-
decrypt tokens
|
|
221
|
-
encrypted with the new key while still using the current key for encryption.
|
|
295
|
+
> Let's say you are adding a new secret key each quarter: `2024Q1`, `2024Q2` and so on.
|
|
296
|
+
> The old key `2024Q1` must be removed from the configuration only when the `refresh` period after
|
|
297
|
+
> the new key `2024Q2` was added has expired.
|
|
222
298
|
|
|
223
299
|
```yaml
|
|
224
300
|
# context.toa.yaml
|
|
225
301
|
|
|
226
302
|
configuration:
|
|
227
|
-
identity.
|
|
303
|
+
identity.tokens:
|
|
228
304
|
key0: $TOKEN_ENCRYPTION_KEY_2023Q3
|
|
229
305
|
key1: $TOKEN_ENCRYPTION_KEY_2023Q4
|
|
230
306
|
```
|
|
@@ -237,18 +313,31 @@ configuration:
|
|
|
237
313
|
# context.toa.yaml
|
|
238
314
|
|
|
239
315
|
configuration:
|
|
240
|
-
identity.
|
|
316
|
+
identity.tokens:
|
|
241
317
|
key0: $TOKEN_ENCRYPTION_KEY_2023Q4
|
|
242
318
|
key1: $TOKEN_ENCRYPTION_KEY_2023Q3
|
|
243
319
|
```
|
|
244
320
|
|
|
245
|
-
|
|
321
|
+
### Token resources
|
|
322
|
+
|
|
323
|
+
`/identity/tokens/`
|
|
324
|
+
|
|
325
|
+
`POST` Issue a new token for the Identity. Request body is as follows:
|
|
326
|
+
|
|
327
|
+
```yaml
|
|
328
|
+
lifetime?: number # seconds
|
|
329
|
+
```
|
|
246
330
|
|
|
247
|
-
|
|
331
|
+
Providing a value of `0` will result in the token being issued with no expiration.
|
|
332
|
+
However, it will still become invalid once the encryption key used is out
|
|
333
|
+
of [rotation](#secret-rotation).
|
|
248
334
|
|
|
249
|
-
|
|
335
|
+
## Roles
|
|
250
336
|
|
|
251
|
-
|
|
337
|
+
The `identity.roles` component manages roles of an Identity used
|
|
338
|
+
by [access authorization](access.md#role).
|
|
339
|
+
|
|
340
|
+
### `/identity/roles/:id/`
|
|
252
341
|
|
|
253
342
|
`GET` Get roles of an Identity.
|
|
254
343
|
|
|
@@ -260,13 +349,16 @@ Access requires credentials of the Identity or `system:identity:roles` role.
|
|
|
260
349
|
role: string
|
|
261
350
|
```
|
|
262
351
|
|
|
263
|
-
|
|
352
|
+
To assign arbitrary roles, the `system:identity:roles` role is required.
|
|
353
|
+
|
|
354
|
+
An Identity having `system:identity:roles:delegation` role can delegate roles within its own
|
|
355
|
+
Role Scopes (see [Role Hierarchies](access.md#hierarchies)).
|
|
264
356
|
|
|
265
357
|
## Banned Identities
|
|
266
358
|
|
|
267
359
|
The `identity.bans` component manages banned identities.
|
|
268
|
-
A banned identity will fail to authenticate with any associated credentials
|
|
269
|
-
the `refresh` period).
|
|
360
|
+
A banned identity will fail to authenticate with any associated credentials
|
|
361
|
+
(except [tokens](#stateless-tokens) within the `refresh` period).
|
|
270
362
|
|
|
271
363
|
```http
|
|
272
364
|
PUT /identity/bans/:id/
|
|
@@ -274,6 +366,7 @@ authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
|
|
|
274
366
|
content-type: application/yaml
|
|
275
367
|
|
|
276
368
|
banned: true
|
|
369
|
+
comment: Bye bye
|
|
277
370
|
```
|
|
278
371
|
|
|
279
372
|
Access requires `system:identity:bans` role.
|
|
@@ -297,3 +390,17 @@ roles:
|
|
|
297
390
|
- developer
|
|
298
391
|
- system:identity:roles
|
|
299
392
|
```
|
|
393
|
+
|
|
394
|
+
When no credentials are provided, transient Identity is created.
|
|
395
|
+
|
|
396
|
+
```http
|
|
397
|
+
GET /identity/
|
|
398
|
+
accept: application/yaml
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
```
|
|
402
|
+
201 Created
|
|
403
|
+
|
|
404
|
+
id: 332017649c814649b25ee466c1fe4534
|
|
405
|
+
roles: []
|
|
406
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Development tools
|
|
2
|
+
|
|
3
|
+
## `dev:stub`
|
|
4
|
+
|
|
5
|
+
Returns a successful response with the given body.
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
/foo:
|
|
9
|
+
dev:sub: Hello!
|
|
10
|
+
/bar:
|
|
11
|
+
dev:sub:
|
|
12
|
+
hello: world
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## `dev:sleep`
|
|
16
|
+
|
|
17
|
+
Enables random delay before processing the request, up to given maximum time in milliseconds.
|
|
18
|
+
|
|
19
|
+
Desired delay range can be set in the `sleep` request header as a JSON array of two numbers, the minimum
|
|
20
|
+
and maximum delay in milliseconds.
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
/foo:
|
|
24
|
+
dev:sleep: 1000
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```http
|
|
28
|
+
GET /foo/ HTTP/1.1
|
|
29
|
+
sleep: [500, 1000]
|
|
30
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Request flow
|
|
2
|
+
|
|
3
|
+
## `flow:fetch`
|
|
4
|
+
|
|
5
|
+
Fetches the content from the resource returned by the specified endpoint.
|
|
6
|
+
|
|
7
|
+
The value of the directive is a `string` specifying endpoint to be called for the redirection
|
|
8
|
+
request.
|
|
9
|
+
|
|
10
|
+
Request `authority`, `path` and `parameters` are passed as input to the redirection endpoint,
|
|
11
|
+
and it must return a URL `string`, an `Error` or an object with the following properties:
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
url: string
|
|
15
|
+
options?:
|
|
16
|
+
method?: string
|
|
17
|
+
headers?: Record<string, string>
|
|
18
|
+
body?: string
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If it returns a URL or Request, then the response to the specified request is returned as the
|
|
22
|
+
response to the original request, along with the `content-type`, `content-length`, and `etag`
|
|
23
|
+
headers.
|
|
24
|
+
|
|
25
|
+
## `flow:compose`
|
|
26
|
+
|
|
27
|
+
Compose an object from a response stream in object mode.
|
|
28
|
+
|
|
29
|
+
The value of the directive is an object whose values are JavaScript expressions
|
|
30
|
+
accessing the response stream objects composed into an array named `$`.
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
flow:compose:
|
|
34
|
+
one: $[0].status
|
|
35
|
+
two: $[1].data.foo
|
|
36
|
+
three: $[2].amount
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
flow:compose:
|
|
41
|
+
sum: $[0].value + $[1].value
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Be careful.
|
|
@@ -1,36 +1,30 @@
|
|
|
1
1
|
# Identity
|
|
2
2
|
|
|
3
3
|
Identity is the fundamental entity within an authentication system that represents the **unique
|
|
4
|
-
identifier** of an
|
|
5
|
-
individual, organization, application or device.
|
|
4
|
+
identifier** of an individual, organization, application or device.
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Identity.
|
|
6
|
+
To prove its Identity, the request originator must provide a valid _credentials_ that are associated
|
|
7
|
+
with that Identity.
|
|
10
8
|
|
|
11
9
|
Identity is intrinsically linked to credentials, as an Identity is established only when the first
|
|
12
|
-
set of credentials
|
|
13
|
-
for that Identity is created.
|
|
10
|
+
set of credentials for that Identity is created.
|
|
14
11
|
In other words, the creation of credentials marks the inception of an Identity.
|
|
15
12
|
Once the last credentials are removed from the Identity, it ceases to exist.
|
|
16
13
|
Without credentials, there is no basis for defining or asserting an Identity.
|
|
17
14
|
|
|
18
15
|
## Authentication
|
|
19
16
|
|
|
20
|
-
The
|
|
21
|
-
authentication
|
|
22
|
-
schemes.
|
|
17
|
+
The Authentication system resolves provided credentials to an Identity using one of the supported
|
|
18
|
+
authentication schemes.
|
|
23
19
|
|
|
24
20
|
The Authentication is request-agnostic, meaning it does not depend on the specific URL being
|
|
25
|
-
requested or the content of
|
|
26
|
-
the request body.
|
|
21
|
+
requested or the content of the request body.
|
|
27
22
|
The only information it handles is the value of the `Authorization` header.
|
|
28
23
|
|
|
29
|
-
> Except for its own [management resources](
|
|
24
|
+
> Except for its own [management resources](components.md).
|
|
30
25
|
|
|
31
26
|
If the provided credentials are not valid or not associated with an Identity, then Authentication
|
|
32
|
-
interrupts request
|
|
33
|
-
processing and responds with an authentication error.
|
|
27
|
+
interrupts request processing and responds with an authentication error.
|
|
34
28
|
|
|
35
29
|
### Basic scheme
|
|
36
30
|
|
|
@@ -52,8 +46,8 @@ Authrization: Token v4.local.eyJzdWIiOiJqb2hu...
|
|
|
52
46
|
|
|
53
47
|
The `Token` is the **primary** authentication scheme.
|
|
54
48
|
If request originators use an alternative authentication scheme, they will receive a response
|
|
55
|
-
containing `Token`
|
|
56
|
-
|
|
49
|
+
containing `Token`credentials and will be required to switch to the `Token` scheme for any
|
|
50
|
+
subsequent requests.
|
|
57
51
|
Continued use of other authentication schemes will result in temporary blocking of requests.
|
|
58
52
|
|
|
59
53
|
See [`identity.tokens` component](components.md#stateless-tokens).
|
|
@@ -69,7 +63,7 @@ to [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.ht
|
|
|
69
63
|
Authorization: Bearer eyJhbGciOiJIUzI1...
|
|
70
64
|
```
|
|
71
65
|
|
|
72
|
-
Trusted providers are specified using the `identity.federation`
|
|
66
|
+
Trusted providers are specified using the `identity.federation` configuration.
|
|
73
67
|
|
|
74
68
|
```yaml
|
|
75
69
|
# context.toa.yaml
|
|
@@ -77,10 +71,100 @@ Trusted providers are specified using the `identity.federation` property within
|
|
|
77
71
|
configuration:
|
|
78
72
|
identity.federation:
|
|
79
73
|
trust:
|
|
80
|
-
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
-
|
|
74
|
+
- iss: https://accounts.google.com
|
|
75
|
+
aud: <GOOGLE_CLIENT_ID>
|
|
76
|
+
|
|
77
|
+
- iss: https://appleid.apple.com
|
|
78
|
+
aud: <APPLE_CLIENT_ID>
|
|
79
|
+
secret: <APPLE_CLIENT_SECRET> # enables Authorization Code Flow
|
|
80
|
+
|
|
81
|
+
- iss: private.entity
|
|
82
|
+
secrets:
|
|
83
|
+
HS384:
|
|
84
|
+
key0: <THE-SECRET-STRING-FOR-HS384>
|
|
85
|
+
key1: <THE-SECRET-STRING-FOR-HS384> # selected by `kid` in the JWT header
|
|
86
|
+
principal:
|
|
87
|
+
iss: https://accounts.google.com
|
|
88
|
+
sub: 4218230498234
|
|
89
|
+
implicit: true
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
`principal` specifies the values of the `iss` and `sub` claims of an Identity that will be granted
|
|
93
|
+
with a `system` role.
|
|
94
|
+
|
|
95
|
+
`implicit` indicates whether the Identity should be implicitly created when a valid token for a
|
|
96
|
+
non-existent Identity is provided (default `false`).
|
|
97
|
+
|
|
98
|
+
### Authorization Code Flow
|
|
99
|
+
|
|
100
|
+
[OAuth 2.0 RFC 6749, section 4.1](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
GET /identity/
|
|
104
|
+
authorization: Code <credentials>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`<credentials>` is a base64-encoded JSON containing the following properties:
|
|
108
|
+
|
|
109
|
+
```yaml
|
|
110
|
+
code: authorization code
|
|
111
|
+
iss: code issuer
|
|
112
|
+
for: redirect URI
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Trust configuration for the issuer requires `aud` and either `secret` or `signature`
|
|
116
|
+
values to enable the Authorization Code Flow.
|
|
117
|
+
|
|
118
|
+
> If `aud` is an array, the first value is used.
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
# context.toa.yaml
|
|
122
|
+
configuration:
|
|
123
|
+
identity.federation:
|
|
124
|
+
trust:
|
|
125
|
+
- iss: https://accounts.google.com
|
|
126
|
+
aud: 1045282659797-n705sf85j4b2rodtpdn43od43tvseiet.apps.googleusercontent.com
|
|
127
|
+
secret: $GOOGLE_CLIENT_SECRET
|
|
128
|
+
- iss: https://appleid.apple.com
|
|
129
|
+
aud: io.toa.services.id
|
|
130
|
+
signature:
|
|
131
|
+
iss: team-id
|
|
132
|
+
kid: key-id
|
|
133
|
+
key: $APPLE_PRIVATE_KEY
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### OTP scheme
|
|
137
|
+
|
|
138
|
+
One-time passwords.
|
|
139
|
+
|
|
140
|
+
Passwords can be issued by calling `identity.otp.issue` operation, with the following input:
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
authority: string
|
|
144
|
+
username: string
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The reply will contain the `code` property of type `string` formed as a random 6-digit number,
|
|
148
|
+
valid for 60 seconds by default.
|
|
149
|
+
|
|
150
|
+
```yaml
|
|
151
|
+
code: 123456
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
OTP can be used with `OTP` authentication formatted as `base64(username:password)`.
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
GET /identity/ HTTP/1.1
|
|
158
|
+
authentication: OTP dXNlcm5hbWU6MTIzNDU2
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
OTP expiration time can be configured using the `identity.otp` configuration.
|
|
162
|
+
|
|
163
|
+
```yaml
|
|
164
|
+
# context.toa.yaml
|
|
165
|
+
configuration:
|
|
166
|
+
identity.otp:
|
|
167
|
+
lifetime: 60 # seconds
|
|
84
168
|
```
|
|
85
169
|
|
|
86
170
|
## Identity inception
|
|
@@ -108,7 +192,7 @@ exposition:
|
|
|
108
192
|
The value of the `auth:incept` directive refers to the name of the response property that will be
|
|
109
193
|
returned by the `POST` operation, containing the created entity identifier.
|
|
110
194
|
|
|
111
|
-
A request with Identity inception
|
|
195
|
+
A request with Identity inception may contain (non-existent) credentials that will be associated
|
|
112
196
|
with the created Identity.
|
|
113
197
|
|
|
114
198
|
```http
|
|
@@ -130,6 +214,34 @@ id: 2428c31ecb6e4a51a24ef52f0c4181b9
|
|
|
130
214
|
As a result of processing the above request, the provided Basic credentials associated with the
|
|
131
215
|
Identity `2428c31ecb6e4a51a24ef52f0c4181b9` are created.
|
|
132
216
|
|
|
217
|
+
> `auth:incept` directive may have a `null` value, which means that the Identity will be created
|
|
218
|
+
> without any associated entity.
|
|
219
|
+
|
|
220
|
+
Inception is supported for `Basic` and `Bearer` authentication schemes.
|
|
221
|
+
|
|
222
|
+
## Identity assertion
|
|
223
|
+
|
|
224
|
+
`auth:assert` directive is used to ensure that given credentials are associated with an existing
|
|
225
|
+
Identity or to create a new Identity if it does not exist.
|
|
226
|
+
The directive itself does not allow or deny access to the requested resource.
|
|
227
|
+
|
|
228
|
+
> Used authentication scheme must support inception.
|
|
229
|
+
|
|
230
|
+
```yaml
|
|
231
|
+
/accounts/echo:
|
|
232
|
+
auth:assert: true
|
|
233
|
+
auth:anyone: true
|
|
234
|
+
endpoint: echo
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
```http
|
|
238
|
+
GET /accounts/echo/
|
|
239
|
+
authorization: Basic new-or-existent-credentials
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
If new Identity is created and endpoint returns a successful response, the status code `201 Created`
|
|
243
|
+
is returned.
|
|
244
|
+
|
|
133
245
|
## FAQ
|
|
134
246
|
|
|
135
247
|
<dl>
|