@toa.io/extensions.exposition 1.0.0-alpha.15 → 1.0.0-alpha.150
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 +1 -1
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/manifest.toa.yaml +47 -10
- 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 +8 -6
- 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 +8 -4
- 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 +11 -9
- package/components/identity.basic/source/types.ts +8 -4
- package/components/identity.federation/manifest.toa.yaml +81 -38
- package/components/identity.federation/operations/authenticate.d.ts +16 -3
- package/components/identity.federation/operations/authenticate.js +26 -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 +13 -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 +24 -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/Ctx.d.ts +7 -0
- package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/lib/Ctx.js} +1 -1
- 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/lib/decode.js +59 -0
- 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/{assertions-as-values.js → discovery.js} +23 -19
- 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 +37 -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 +45 -19
- package/components/identity.federation/source/decode.ts +11 -0
- package/components/identity.federation/source/incept.ts +38 -0
- package/components/identity.federation/source/lib/Configuration.ts +39 -0
- package/components/identity.federation/source/lib/Ctx.ts +8 -0
- package/components/identity.federation/source/lib/Payload.ts +6 -0
- package/components/identity.federation/source/lib/decode.ts +48 -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 +42 -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 +39 -0
- package/components/identity.otp/operations/authenticate.d.ts +12 -0
- package/components/identity.otp/operations/authenticate.js +30 -0
- package/components/identity.otp/operations/authenticate.js.map +1 -0
- package/components/identity.otp/operations/issue.d.ts +10 -0
- package/components/identity.otp/operations/issue.js +13 -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 +5 -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 +46 -0
- package/components/identity.otp/source/issue.ts +22 -0
- package/components/identity.otp/source/lib/Context.ts +14 -0
- package/components/identity.otp/source/lib/Entity.ts +5 -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 +3 -1
- package/components/identity.roles/operations/grant.js +2 -2
- package/components/identity.roles/operations/grant.js.map +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +2 -2
- package/components/identity.tokens/manifest.toa.yaml +97 -13
- package/components/identity.tokens/operations/authenticate.d.ts +3 -3
- package/components/identity.tokens/operations/authenticate.js +15 -11
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.d.ts +12 -3
- package/components/identity.tokens/operations/decrypt.js +62 -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 +24 -7
- 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 +74 -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/source/authenticate.test.ts +22 -9
- package/components/identity.tokens/source/authenticate.ts +18 -13
- package/components/identity.tokens/source/decrypt.test.ts +33 -18
- package/components/identity.tokens/source/decrypt.ts +91 -20
- package/components/identity.tokens/source/encrypt.test.ts +47 -13
- package/components/identity.tokens/source/encrypt.ts +36 -11
- 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 +85 -0
- package/components/identity.tokens/source/revoke.ts +2 -2
- package/components/octets.storage/manifest.toa.yaml +11 -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 +83 -31
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +123 -51
- package/documentation/dev.md +30 -0
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +129 -24
- package/documentation/introspection.md +82 -0
- package/documentation/map.md +86 -0
- package/documentation/octets.md +122 -69
- package/documentation/passkeys.md +4 -0
- package/documentation/protocol.md +11 -4
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/features/access.feature +122 -9
- package/features/annotation.feature +1 -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 +2 -0
- package/features/cache.feature +164 -5
- package/features/cors.feature +8 -2
- package/features/debug.feature +34 -0
- package/features/dev.feature +56 -0
- package/features/directives.feature +3 -0
- package/features/dynamic.feature +48 -0
- package/features/errors.feature +29 -6
- package/features/etag.feature +109 -1
- package/features/flow.feature +148 -0
- package/features/identity.bans.feature +12 -3
- package/features/identity.basic.feature +104 -21
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +170 -44
- package/features/identity.otp.feature +71 -0
- package/features/identity.roles.feature +60 -20
- package/features/identity.tokens.feature +12 -44
- package/features/identtiy.tokens.custom.feature +247 -0
- package/features/interruptions.feature +19 -0
- package/features/introspection.feature +153 -0
- package/features/io.feature +9 -1
- package/features/map.feature +304 -0
- package/features/methods.feature +47 -0
- package/features/octets.cloudinary.feature +71 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +13 -55
- package/features/octets.feature +90 -114
- package/features/octets.head.feature +40 -0
- package/features/octets.location.feature +83 -0
- package/features/octets.meta.feature +65 -15
- package/features/octets.workflows.feature +339 -66
- package/features/passkeys.feature +66 -0
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +77 -2
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +34 -2
- package/features/routes.feature +93 -2
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Common.ts +4 -0
- package/features/steps/Gateway.ts +26 -7
- package/features/steps/HTTP.ts +25 -2
- 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 +45 -2
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +12 -0
- package/features/steps/components/echo/operations/echo.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/greeter/manifest.toa.yaml +0 -1
- package/features/steps/components/octets.tester/manifest.toa.yaml +25 -3
- 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 +0 -2
- package/features/steps/components/octets.tester/operations/echo.js +1 -1
- package/features/steps/components/octets.tester/operations/foo.js +1 -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 +12 -4
- package/features/steps/components/sequences/manifest.toa.yaml +0 -1
- 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 -2
- package/features/streams.feature +5 -0
- package/features/timestamps.feature +41 -0
- package/features/timing.feature +4 -1
- package/package.json +28 -17
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/method.cos.yaml +2 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/put.cos.yaml +28 -0
- package/schemas/query.cos.yaml +4 -10
- package/source/Annotation.ts +3 -3
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +1 -0
- package/source/Directive.test.ts +1 -1
- package/source/Directive.ts +14 -8
- package/source/Endpoint.ts +70 -17
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +73 -19
- package/source/HTTP/Context.ts +29 -7
- package/source/HTTP/Server.ts +120 -49
- package/source/HTTP/exceptions.ts +12 -0
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +46 -2
- package/source/HTTP/messages.ts +44 -9
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +68 -21
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +123 -33
- package/source/RTD/Context.ts +1 -1
- package/source/RTD/Endpoint.ts +3 -0
- package/source/RTD/Method.ts +16 -0
- package/source/RTD/Node.ts +29 -13
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/Tree.ts +2 -2
- package/source/RTD/factory.ts +4 -1
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +37 -24
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -12
- package/source/deployment.ts +33 -23
- package/source/directives/auth/Anonymous.ts +3 -3
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Assert.ts +35 -0
- package/source/directives/auth/Authorization.ts +70 -27
- package/source/directives/auth/Delegate.ts +9 -5
- 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 +62 -24
- package/source/directives/auth/Input.ts +72 -0
- package/source/directives/auth/Role.ts +5 -9
- 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 +12 -7
- package/source/directives/cache/Cache.ts +15 -6
- package/source/directives/cache/Control.ts +45 -19
- package/source/directives/cors/CORS.ts +3 -2
- package/source/directives/dev/Development.ts +12 -7
- package/source/directives/dev/Sleep.ts +40 -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 +4 -2
- package/source/directives/io/IO.ts +1 -1
- package/source/directives/io/Input.ts +8 -5
- package/source/directives/io/Output.ts +5 -4
- 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 +3 -2
- package/source/directives/octets/Delete.ts +21 -17
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/Octets.ts +9 -12
- package/source/directives/octets/{Store.ts → Put.ts} +52 -38
- package/source/directives/octets/Workflow.ts +9 -3
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/schemas.ts +4 -8
- package/source/directives/octets/types.ts +2 -0
- package/source/directives/octets/workflows/Execution.ts +61 -8
- package/source/directives/octets/workflows/Workflow.ts +17 -7
- package/source/directives/octets/workflows/index.ts +1 -1
- 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 +2 -1
- package/source/manifest.ts +10 -11
- package/source/root.ts +16 -1
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -3
- 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 +1 -0
- package/transpiled/Directive.js +13 -8
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +46 -9
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +3 -2
- package/transpiled/Factory.js +18 -10
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +3 -0
- package/transpiled/Gateway.js +55 -12
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +9 -2
- package/transpiled/HTTP/Context.js +19 -6
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +15 -4
- package/transpiled/HTTP/Server.js +87 -42
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +6 -0
- package/transpiled/HTTP/exceptions.js +13 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/index.js +3 -3
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +2 -1
- package/transpiled/HTTP/messages.js +40 -8
- 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 +50 -19
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +10 -1
- package/transpiled/Query.js +87 -30
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +1 -1
- package/transpiled/RTD/Endpoint.d.ts +1 -0
- package/transpiled/RTD/Method.d.ts +4 -0
- package/transpiled/RTD/Method.js +11 -0
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +4 -1
- package/transpiled/RTD/Node.js +23 -12
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +1 -1
- package/transpiled/RTD/Route.js +0 -1
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js +4 -1
- package/transpiled/RTD/factory.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 +5 -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 -4
- package/transpiled/Tenant.js +2 -7
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -20
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.d.ts +2 -2
- package/transpiled/directives/auth/Anonymous.js +2 -2
- 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 +4 -3
- package/transpiled/directives/auth/Authorization.js +54 -24
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +5 -4
- package/transpiled/directives/auth/Delegate.js +7 -3
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- 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 +47 -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 +1 -1
- package/transpiled/directives/auth/Role.js +4 -6
- 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 +3 -3
- package/transpiled/directives/cache/Cache.js +12 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +3 -2
- package/transpiled/directives/cache/Control.js +32 -15
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cors/CORS.js +3 -2
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +1 -1
- package/transpiled/directives/dev/Development.js +13 -7
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/dev/Sleep.d.ts +8 -0
- package/transpiled/directives/dev/Sleep.js +36 -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.js +4 -2
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/IO.js +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.js +4 -2
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Output.js +2 -2
- package/transpiled/directives/io/Output.js.map +1 -1
- 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.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.js +4 -24
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.js +15 -12
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
- package/transpiled/directives/octets/{Fetch.js → Get.js} +25 -29
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.js +9 -12
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +8 -2
- package/transpiled/directives/octets/{Store.js → Put.js} +33 -27
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.js +7 -2
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- 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 +4 -8
- package/transpiled/directives/octets/schemas.js +3 -6
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +2 -0
- package/transpiled/directives/octets/workflows/Execution.d.ts +6 -1
- package/transpiled/directives/octets/workflows/Execution.js +44 -9
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.d.ts +8 -3
- package/transpiled/directives/octets/workflows/Workflow.js +9 -4
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/octets/workflows/index.d.ts +1 -1
- package/transpiled/directives/octets/workflows/index.js.map +1 -1
- 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.js +2 -1
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +16 -1
- 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/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/lib/assertions-as-values.d.ts +0 -4
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +0 -1
- package/components/identity.federation/operations/lib/jwt.d.ts +0 -20
- package/components/identity.federation/operations/lib/jwt.js +0 -136
- package/components/identity.federation/operations/lib/jwt.js.map +0 -1
- package/components/identity.federation/operations/schemas.d.ts +0 -59
- 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/create.ts +0 -26
- package/components/identity.federation/source/lib/assertions-as-values.ts +0 -19
- package/components/identity.federation/source/lib/jwt.test.ts +0 -56
- package/components/identity.federation/source/lib/jwt.ts +0 -171
- package/components/identity.federation/source/schemas.ts +0 -61
- package/components/identity.federation/source/types.ts +0 -56
- package/components/identity.tokens/operations/types.d.ts +0 -39
- package/components/identity.tokens/operations/types.js.map +0 -1
- package/components/identity.tokens/source/types.ts +0 -47
- 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 -75
- package/features/steps/IdP.ts +0 -154
- package/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/features/vary.feature +0 -203
- 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.test.ts +0 -126
- package/source/directives/octets/Fetch.ts +0 -100
- package/source/directives/octets/List.ts +0 -72
- package/source/directives/octets/Permute.ts +0 -44
- package/source/directives/vary/Directive.ts +0 -7
- package/source/directives/vary/Embed.ts +0 -68
- package/source/directives/vary/Vary.ts +0 -50
- package/source/directives/vary/embeddings/Embedding.ts +0 -7
- package/source/directives/vary/embeddings/Header.ts +0 -32
- package/source/directives/vary/embeddings/Language.ts +0 -31
- package/source/directives/vary/embeddings/Parameter.ts +0 -14
- package/source/directives/vary/embeddings/index.ts +0 -11
- package/source/directives/vary/index.ts +0 -3
- package/transpiled/directives/octets/Fetch.js.map +0 -1
- package/transpiled/directives/octets/List.d.ts +0 -16
- package/transpiled/directives/octets/List.js +0 -74
- package/transpiled/directives/octets/List.js.map +0 -1
- package/transpiled/directives/octets/Permute.d.ts +0 -11
- package/transpiled/directives/octets/Permute.js +0 -58
- package/transpiled/directives/octets/Permute.js.map +0 -1
- package/transpiled/directives/octets/Store.js.map +0 -1
- package/transpiled/directives/vary/Directive.d.ts +0 -6
- package/transpiled/directives/vary/Directive.js.map +0 -1
- package/transpiled/directives/vary/Embed.d.ts +0 -11
- package/transpiled/directives/vary/Embed.js +0 -51
- 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 -6
- 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 -28
- 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/Parameter.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Parameter.js +0 -14
- package/transpiled/directives/vary/embeddings/Parameter.js.map +0 -1
- package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/index.js +0 -12
- 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 → map}/Directive.js +0 -0
|
@@ -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,17 +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
|
-
- <GOOGLE_CLIENT_ID>
|
|
74
|
+
- iss: https://accounts.google.com
|
|
75
|
+
aud: <GOOGLE_CLIENT_ID>
|
|
83
76
|
|
|
84
|
-
-
|
|
77
|
+
- iss: https://appleid.apple.com
|
|
78
|
+
aud: <APPLE_CLIENT_ID>
|
|
79
|
+
secret: <APPLE_CLIENT_SECRET> # enables Authorization Code Flow
|
|
85
80
|
|
|
86
|
-
-
|
|
81
|
+
- iss: private.entity
|
|
87
82
|
secrets:
|
|
88
83
|
HS384:
|
|
89
84
|
key0: <THE-SECRET-STRING-FOR-HS384>
|
|
90
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
|
|
91
168
|
```
|
|
92
169
|
|
|
93
170
|
## Identity inception
|
|
@@ -115,7 +192,7 @@ exposition:
|
|
|
115
192
|
The value of the `auth:incept` directive refers to the name of the response property that will be
|
|
116
193
|
returned by the `POST` operation, containing the created entity identifier.
|
|
117
194
|
|
|
118
|
-
A request with Identity inception
|
|
195
|
+
A request with Identity inception may contain (non-existent) credentials that will be associated
|
|
119
196
|
with the created Identity.
|
|
120
197
|
|
|
121
198
|
```http
|
|
@@ -137,6 +214,34 @@ id: 2428c31ecb6e4a51a24ef52f0c4181b9
|
|
|
137
214
|
As a result of processing the above request, the provided Basic credentials associated with the
|
|
138
215
|
Identity `2428c31ecb6e4a51a24ef52f0c4181b9` are created.
|
|
139
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
|
+
|
|
140
245
|
## FAQ
|
|
141
246
|
|
|
142
247
|
<dl>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Resource introspection
|
|
2
|
+
|
|
3
|
+
Any resource can be introspected by sending an `OPTIONS` request to the resource's path.
|
|
4
|
+
The response will contain the resource's input and output schemas for each supported method.
|
|
5
|
+
|
|
6
|
+
Introspection properties:
|
|
7
|
+
|
|
8
|
+
- `route` route parameters
|
|
9
|
+
- `query` query parameters
|
|
10
|
+
- `input` input schema
|
|
11
|
+
- `output` output schema
|
|
12
|
+
- `errors` error codes
|
|
13
|
+
|
|
14
|
+
```http
|
|
15
|
+
OPTIONS /pots/:id/ HTTP/1.1
|
|
16
|
+
accept: application/yaml
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```http
|
|
20
|
+
200 OK
|
|
21
|
+
Allow: GET, POST, OPTIONS
|
|
22
|
+
|
|
23
|
+
GET:
|
|
24
|
+
route:
|
|
25
|
+
id:
|
|
26
|
+
type: string
|
|
27
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
28
|
+
output:
|
|
29
|
+
type: array
|
|
30
|
+
items:
|
|
31
|
+
type: object
|
|
32
|
+
properties:
|
|
33
|
+
title:
|
|
34
|
+
type: string
|
|
35
|
+
maxLength: 64
|
|
36
|
+
volume:
|
|
37
|
+
type: number
|
|
38
|
+
exclusiveMinimum: 0
|
|
39
|
+
maximum: 1000
|
|
40
|
+
temperature:
|
|
41
|
+
type: number
|
|
42
|
+
exclusiveMinimum: 0
|
|
43
|
+
maximum: 300
|
|
44
|
+
additionalProperties: false
|
|
45
|
+
required:
|
|
46
|
+
- id
|
|
47
|
+
- title
|
|
48
|
+
- volume
|
|
49
|
+
POST:
|
|
50
|
+
route:
|
|
51
|
+
id:
|
|
52
|
+
type: string
|
|
53
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
54
|
+
input:
|
|
55
|
+
type: object
|
|
56
|
+
properties:
|
|
57
|
+
title:
|
|
58
|
+
type: string
|
|
59
|
+
maxLength: 64
|
|
60
|
+
temperature:
|
|
61
|
+
type: number
|
|
62
|
+
exclusiveMinimum: 0
|
|
63
|
+
maximum: 300
|
|
64
|
+
volume:
|
|
65
|
+
type: number
|
|
66
|
+
exclusiveMinimum: 0
|
|
67
|
+
maximum: 1000
|
|
68
|
+
additionalProperties: false
|
|
69
|
+
required:
|
|
70
|
+
- title
|
|
71
|
+
- volume
|
|
72
|
+
output:
|
|
73
|
+
type: object
|
|
74
|
+
properties:
|
|
75
|
+
id:
|
|
76
|
+
type: string
|
|
77
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
78
|
+
additionalProperties: false
|
|
79
|
+
errors:
|
|
80
|
+
- NO_WAY
|
|
81
|
+
- WONT_CREATE
|
|
82
|
+
```
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# HTTP context mapping
|
|
2
|
+
|
|
3
|
+
The `map` directive family is used to map HTTP request parts to operation call input properties.
|
|
4
|
+
|
|
5
|
+
[Features](../features/map.feature).
|
|
6
|
+
|
|
7
|
+
## TL;DR
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
exposition:
|
|
11
|
+
/:group:
|
|
12
|
+
languages: [en, fr] # supported languages
|
|
13
|
+
GET:
|
|
14
|
+
map:authority: hostname # request authority (e.g., hostname)
|
|
15
|
+
map:language: lang # requested language
|
|
16
|
+
map:headers: # raw header values
|
|
17
|
+
token: x-access-token
|
|
18
|
+
map:segments: # route parameters
|
|
19
|
+
group: group
|
|
20
|
+
map:claims: # Bearer token claims
|
|
21
|
+
address: email
|
|
22
|
+
verified: email_verified
|
|
23
|
+
endpoint: observe
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The operation input type must be an object.
|
|
27
|
+
If the input already contains the specified keys, they will be overwritten.
|
|
28
|
+
|
|
29
|
+
## Authority
|
|
30
|
+
|
|
31
|
+
The `map:authority` directive maps the [authority identifier](authorities.md) to an operation call
|
|
32
|
+
input property specified by the directive value.
|
|
33
|
+
|
|
34
|
+
### Language
|
|
35
|
+
|
|
36
|
+
The `map:language` mapping sets the [most matching](https://github.com/jshttp/negotiator) language
|
|
37
|
+
code based on the `accept-language` request header and a list of supported languages defined by
|
|
38
|
+
the `map:languages` directive, and also adds `accept-language` to the `Vary` HTTP response header
|
|
39
|
+
value.
|
|
40
|
+
|
|
41
|
+
If none of the supported languages match, the first supported language is used.
|
|
42
|
+
|
|
43
|
+
> `map:languages` has a shorthand form: `languages: [en, fr]`.
|
|
44
|
+
|
|
45
|
+
## Header values
|
|
46
|
+
|
|
47
|
+
The `map:headers` directive maps the values of HTTP request headers to operation call input
|
|
48
|
+
properties.
|
|
49
|
+
The value of the directive is a map where keys are the names of the input properties and values are
|
|
50
|
+
the names of the HTTP request headers.
|
|
51
|
+
|
|
52
|
+
The names of these headers are then included in the `Vary` HTTP response header
|
|
53
|
+
and [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)
|
|
54
|
+
of the [CORS](protocol.md#cors).
|
|
55
|
+
|
|
56
|
+
[Multiple header fields](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) are combined
|
|
57
|
+
as a comma-separated list.
|
|
58
|
+
|
|
59
|
+
## Route parameters
|
|
60
|
+
|
|
61
|
+
The `map:segments` directive maps the values of route parameters to operation call input properties.
|
|
62
|
+
The value of the directive is a map where keys are the names of the input properties, and values are
|
|
63
|
+
the names of the route parameters.
|
|
64
|
+
|
|
65
|
+
Parameter name may be prefixed with `~`
|
|
66
|
+
to indicate that the parameter should not be available to the
|
|
67
|
+
remaining directives or used as criteria in the operation call.
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
/:id/:tag:
|
|
71
|
+
POST:
|
|
72
|
+
map:segments:
|
|
73
|
+
id: id
|
|
74
|
+
tag: ~tag
|
|
75
|
+
endpoint: create
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Bearer token claims
|
|
79
|
+
|
|
80
|
+
The `map:claims` directive maps the values of
|
|
81
|
+
the [token claims](https://datatracker.ietf.org/doc/html/rfc7519#section-4).
|
|
82
|
+
The value of the directive is a map where keys are the names of the input properties and values are
|
|
83
|
+
the names of the claims.
|
|
84
|
+
|
|
85
|
+
If the claim is not present in the token or the request is not authenticated using
|
|
86
|
+
the [`Bearer` scheme](identity.md#bearer-scheme), the input properties are not set.
|
package/documentation/octets.md
CHANGED
|
@@ -14,26 +14,32 @@ directives under the current RTD Node.
|
|
|
14
14
|
octets:context: images
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
## `octets:
|
|
17
|
+
## `octets:put`
|
|
18
18
|
|
|
19
19
|
Stores the content of the request body into a storage, under the request path with
|
|
20
20
|
specified `content-type`.
|
|
21
21
|
|
|
22
22
|
If request's `content-type` is not acceptable, or if the request body does not pass
|
|
23
|
-
the [validation](/extensions/storages/readme.md#async-putpath-string-stream-readable-
|
|
23
|
+
the [validation](/extensions/storages/readme.md#async-putpath-string-stream-readable-options-options-maybeentry),
|
|
24
24
|
the request is rejected with a `415 Unsupported Media Type` response.
|
|
25
25
|
|
|
26
|
-
The value of the directive
|
|
26
|
+
The value of the directive must be `null` (defaults) or an object with the following optional
|
|
27
|
+
properties:
|
|
27
28
|
|
|
29
|
+
- `location`: a string that represents the path to store the
|
|
30
|
+
content.
|
|
31
|
+
If not specified, the path is the same as the request path.
|
|
32
|
+
- `limit`: [maximum size](#stream-size-limit) of the incoming stream.
|
|
28
33
|
- `accept`: a media type or an array of media types that are acceptable.
|
|
29
34
|
If the `accept` property is not specified, any media type is acceptable (which is the default).
|
|
30
35
|
- `workflow`: [workflow](#workflows) to be executed once the content is successfully stored.
|
|
36
|
+
- `trust`: a list of [trusted origins](#downloading-external-content).
|
|
31
37
|
|
|
32
38
|
```yaml
|
|
33
39
|
/images:
|
|
34
40
|
octets:context: images
|
|
35
41
|
POST:
|
|
36
|
-
octets:
|
|
42
|
+
octets:put:
|
|
37
43
|
accept:
|
|
38
44
|
- image/jpeg
|
|
39
45
|
- image/png
|
|
@@ -43,31 +49,97 @@ The value of the directive is `null` or an object with the following properties:
|
|
|
43
49
|
analyze: images.analyze
|
|
44
50
|
```
|
|
45
51
|
|
|
46
|
-
|
|
52
|
+
### Headers
|
|
53
|
+
|
|
54
|
+
`content-id` header can be used to set the ID of the Entry.
|
|
55
|
+
The value must match the following regular expression `^[a-zA-Z0-9-_]{1,16}$`.
|
|
56
|
+
|
|
57
|
+
Non-standard `content-attributes` header can be used
|
|
47
58
|
to set initial [metadata](/extensions/storages/readme.md#entry) value for the Entry.
|
|
48
59
|
|
|
49
|
-
The value of the `content-
|
|
60
|
+
The value of the `content-attributes` header is a comma-separated list of key-value string pairs.
|
|
50
61
|
If no value is provided for a key, the string `true` is used.
|
|
51
62
|
|
|
52
63
|
```http
|
|
53
64
|
POST /images/ HTTP/1.1
|
|
54
65
|
content-type: image/jpeg
|
|
55
|
-
content-
|
|
56
|
-
content-
|
|
66
|
+
content-id: example-id
|
|
67
|
+
content-attributes: foo, bar=baz
|
|
68
|
+
content-attributes: baz=1
|
|
57
69
|
```
|
|
58
70
|
|
|
59
71
|
```yaml
|
|
60
|
-
|
|
72
|
+
attributes:
|
|
61
73
|
foo: 'true'
|
|
62
74
|
bar: 'baz'
|
|
63
75
|
baz: '1'
|
|
64
76
|
```
|
|
65
77
|
|
|
66
|
-
If the Entry already exists, the `content-
|
|
78
|
+
If the Entry already exists, the `content-attributes` header is ignored.
|
|
79
|
+
|
|
80
|
+
### Location
|
|
81
|
+
|
|
82
|
+
The `location` property can be used to store the content under a different path.
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
/images:
|
|
86
|
+
octets:context: images
|
|
87
|
+
POST:
|
|
88
|
+
octets:put:
|
|
89
|
+
location: /archive
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Physical storage path is constructed by resolving the `location`
|
|
93
|
+
property [relative](https://datatracker.ietf.org/doc/html/rfc3986#section-5) to the request path.
|
|
94
|
+
|
|
95
|
+
### Stream size limit
|
|
96
|
+
|
|
97
|
+
The `limit` property can be used to set the maximum size of the incoming stream in bytes.
|
|
98
|
+
|
|
99
|
+
The property value can be specified as a number
|
|
100
|
+
(representing bytes) or a string that combines a number with a unit (e.g., `1MB`).
|
|
101
|
+
Both [binary and decimal prefixes](https://en.wikipedia.org/wiki/Binary_prefix) are supported.
|
|
102
|
+
If the prefix or unit is specified _incorrectly_ (e.g., `1mb`),
|
|
103
|
+
it will default to a binary prefix interpretation.
|
|
104
|
+
|
|
105
|
+
- `1b`, `1B`: 1 byte
|
|
106
|
+
- `1KB`: 1000 bytes
|
|
107
|
+
- `1KiB`: 1024 bytes
|
|
108
|
+
- `1kb`: 1024 bytes
|
|
109
|
+
|
|
110
|
+
The default value is `64MiB`.
|
|
111
|
+
|
|
112
|
+
### Downloading external content
|
|
113
|
+
|
|
114
|
+
The `octets:put` directive can be used to download external content:
|
|
115
|
+
|
|
116
|
+
```http
|
|
117
|
+
POST /images/ HTTP/1.1
|
|
118
|
+
content-location: https://example.com/image.jpg
|
|
119
|
+
content-length: 0
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Requests with `content-location` header must have an empty body (`content-length: 0` header).
|
|
123
|
+
|
|
124
|
+
Target origin must be allowed by the `trust` property,
|
|
125
|
+
which can contain a list of trusted origins or regular expressions to match the full URL.
|
|
126
|
+
|
|
127
|
+
URL of the downloaded content is stored in the `origin` property of
|
|
128
|
+
the [Entry](/extensions/storages/readme.md#entry).
|
|
129
|
+
|
|
130
|
+
```yaml
|
|
131
|
+
/images:
|
|
132
|
+
octets:context: images
|
|
133
|
+
POST:
|
|
134
|
+
octets:put:
|
|
135
|
+
trust:
|
|
136
|
+
- https://example.com
|
|
137
|
+
- ^https://example\.com/[a-z]+\.jpe?g$
|
|
138
|
+
```
|
|
67
139
|
|
|
68
140
|
### Response
|
|
69
141
|
|
|
70
|
-
The response of the `octets:
|
|
142
|
+
The response of the `octets:put` directive is the created Entry.
|
|
71
143
|
|
|
72
144
|
```
|
|
73
145
|
201 Created
|
|
@@ -78,12 +150,13 @@ type: image/jpeg
|
|
|
78
150
|
created: 1698004822358
|
|
79
151
|
```
|
|
80
152
|
|
|
81
|
-
If the `octets:
|
|
153
|
+
If the `octets:put` directive contains a `workflow`, the response
|
|
82
154
|
is [multipart](protocol.md#multipart-types).
|
|
83
155
|
The first part represents the created Entry, which is sent immediately after the BLOB is stored,
|
|
84
156
|
while subsequent parts are results from the workflow endpoints, sent as soon as they are available.
|
|
85
157
|
|
|
86
|
-
In case a workflow endpoint returns an `Error`, the error part is sent,
|
|
158
|
+
In case a workflow endpoint returns an `Error`, the error part is sent,
|
|
159
|
+
and the response is closed.
|
|
87
160
|
Error's properties are added to the error part, among with the `step` identifier.
|
|
88
161
|
|
|
89
162
|
```
|
|
@@ -91,20 +164,33 @@ Error's properties are added to the error part, among with the `step` identifier
|
|
|
91
164
|
content-type: multipart/yaml; boundary=cut
|
|
92
165
|
|
|
93
166
|
--cut
|
|
167
|
+
|
|
94
168
|
id: eecd837c
|
|
95
169
|
type: image/jpeg
|
|
96
170
|
created: 1698004822358
|
|
171
|
+
|
|
97
172
|
--cut
|
|
98
|
-
|
|
173
|
+
|
|
174
|
+
step: optimize
|
|
175
|
+
status: completed
|
|
176
|
+
|
|
99
177
|
--cut
|
|
178
|
+
|
|
179
|
+
step: resize
|
|
100
180
|
error:
|
|
101
|
-
step: resize
|
|
102
181
|
code: TOO_SMALL
|
|
103
182
|
message: Image is too small
|
|
183
|
+
status: completed
|
|
184
|
+
|
|
185
|
+
--cut
|
|
186
|
+
|
|
187
|
+
step: analyze
|
|
188
|
+
status: exception
|
|
189
|
+
|
|
104
190
|
--cut--
|
|
105
191
|
```
|
|
106
192
|
|
|
107
|
-
## `octets:
|
|
193
|
+
## `octets:get`
|
|
108
194
|
|
|
109
195
|
Fetches the content of a stored BLOB corresponding to the request path, and returns it as the
|
|
110
196
|
response body with the corresponding `content-type`, `content-length`
|
|
@@ -116,22 +202,18 @@ The value of the directive is an object with the following properties:
|
|
|
116
202
|
|
|
117
203
|
- `meta`: `boolean` indicating whether an Entry is accessible.
|
|
118
204
|
Defaults to `false`.
|
|
119
|
-
- `blob`: `boolean` indicating whether the original BLOB is accessible,
|
|
120
|
-
[BLOB variant](/extensions/storages/readme.md#async-fetchpath-string-maybereadable) must be
|
|
121
|
-
specified in the path otherwise.
|
|
122
|
-
Defaults to `true`.
|
|
123
205
|
|
|
124
206
|
```yaml
|
|
125
207
|
/images:
|
|
126
208
|
octets:context: images
|
|
127
209
|
/*:
|
|
128
210
|
GET:
|
|
129
|
-
octets:
|
|
211
|
+
octets:get:
|
|
130
212
|
blob: false # prevent access to the original BLOB
|
|
131
213
|
meta: true # allow access to an Entry
|
|
132
214
|
```
|
|
133
215
|
|
|
134
|
-
The `octets:
|
|
216
|
+
The `octets:get: ~` declaration is equivalent to defaults.
|
|
135
217
|
|
|
136
218
|
To access an Entry, the `accept` request header must contain the `octets.entry` subtype
|
|
137
219
|
in
|
|
@@ -142,32 +224,6 @@ GET /images/eecd837c HTTP/1.1
|
|
|
142
224
|
accept: application/vnd.toa.octets.entry+yaml
|
|
143
225
|
```
|
|
144
226
|
|
|
145
|
-
## `octets:list`
|
|
146
|
-
|
|
147
|
-
Lists the entries stored under the request path.
|
|
148
|
-
|
|
149
|
-
The value of the directive is an object with the following properties:
|
|
150
|
-
|
|
151
|
-
- `meta`: `boolean` indicating whether the list of Entries is accessible.
|
|
152
|
-
Defaults to `false`, which means that only entry identifiers are returned.
|
|
153
|
-
|
|
154
|
-
```yaml
|
|
155
|
-
/images:
|
|
156
|
-
octets:context: images
|
|
157
|
-
GET:
|
|
158
|
-
octets:list:
|
|
159
|
-
meta: true
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
The `octets:list: ~` declaration is equivalent to defaults.
|
|
163
|
-
|
|
164
|
-
To access a list of Entries, the `accept` request header must contain the `octets.entries` subtype:
|
|
165
|
-
|
|
166
|
-
```http
|
|
167
|
-
GET /images/ HTTP/1.1
|
|
168
|
-
accept: application/vnd.toa.octets.entries+yaml
|
|
169
|
-
```
|
|
170
|
-
|
|
171
227
|
## `octets:delete`
|
|
172
228
|
|
|
173
229
|
Delete the entry corresponding to the request path.
|
|
@@ -193,22 +249,6 @@ the entry is deleted.
|
|
|
193
249
|
|
|
194
250
|
The error returned by the workflow prevents the deletion of the entry.
|
|
195
251
|
|
|
196
|
-
## `octets:permute`
|
|
197
|
-
|
|
198
|
-
Performs
|
|
199
|
-
a [permutation](/extensions/storages/readme.md#async-permutepath-string-ids-string-maybevoid) on the
|
|
200
|
-
entries
|
|
201
|
-
under the request path.
|
|
202
|
-
|
|
203
|
-
```yaml
|
|
204
|
-
/images:
|
|
205
|
-
octets:context: images
|
|
206
|
-
PUT:
|
|
207
|
-
octets:permute: ~
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
The request body must be a list of entry identifiers.
|
|
211
|
-
|
|
212
252
|
## `octets:workflow`
|
|
213
253
|
|
|
214
254
|
Execute a [workflow](#workflows) on the entry under the request path.
|
|
@@ -227,21 +267,23 @@ A workflow is a list of endpoints to be called.
|
|
|
227
267
|
The following input will be passed to each endpoint:
|
|
228
268
|
|
|
229
269
|
```yaml
|
|
270
|
+
authority: string
|
|
230
271
|
storage: string
|
|
231
272
|
path: string
|
|
232
273
|
entry: Entry
|
|
233
274
|
parameters: Record<string, string> # route parameters
|
|
234
275
|
```
|
|
235
276
|
|
|
236
|
-
|
|
237
|
-
|
|
277
|
+
- [Storages](/extensions/storages/readme.md)
|
|
278
|
+
- [Authorities](authorities.md)
|
|
279
|
+
- Example [workflow step processor](../features/steps/components/octets.tester)
|
|
238
280
|
|
|
239
281
|
A _workflow unit_ is an object with keys referencing the workflow step identifier, and an endpoint
|
|
240
282
|
as value.
|
|
241
283
|
Steps within a workflow unit are executed in parallel.
|
|
242
284
|
|
|
243
285
|
```yaml
|
|
244
|
-
octets:
|
|
286
|
+
octets:put:
|
|
245
287
|
workflow:
|
|
246
288
|
resize: images.resize
|
|
247
289
|
analyze: images.analyze
|
|
@@ -251,11 +293,22 @@ A workflow can be a single unit, or an array of units.
|
|
|
251
293
|
If it's an array, the workflow units are executed in sequence.
|
|
252
294
|
|
|
253
295
|
```yaml
|
|
254
|
-
octets:
|
|
296
|
+
octets:put:
|
|
255
297
|
workflow:
|
|
256
298
|
- optimize: images.optimize # executed first
|
|
257
299
|
- resize: images.resize # executed second
|
|
258
300
|
analyze: images.analyze # executed in parallel with `resize`
|
|
259
301
|
```
|
|
260
302
|
|
|
261
|
-
If one of the workflow units returns an error,
|
|
303
|
+
If one of the workflow units returns or throws an error,
|
|
304
|
+
the execution of the workflow is interrupted.
|
|
305
|
+
|
|
306
|
+
### Workflow tasks
|
|
307
|
+
|
|
308
|
+
A workflow unit which value starts with `task:` prefix will be executed as a Task.
|
|
309
|
+
|
|
310
|
+
```yaml
|
|
311
|
+
octets:put:
|
|
312
|
+
workflow:
|
|
313
|
+
optimize: task:images.optimize
|
|
314
|
+
```
|