@toa.io/extensions.exposition 1.0.0-alpha.9 → 1.0.0-alpha.91
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 +14 -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 +20 -10
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +5 -2
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- 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 +16 -5
- 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 +32 -15
- package/components/identity.federation/operations/authenticate.d.ts +2 -2
- package/components/identity.federation/operations/authenticate.js +4 -11
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/{create.js → incept.js} +6 -7
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js +4 -2
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
- package/components/identity.federation/operations/lib/jwt.d.ts +5 -5
- package/components/identity.federation/operations/lib/jwt.js +25 -12
- package/components/identity.federation/operations/lib/jwt.js.map +1 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/operations/types/configuration.d.ts +14 -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.d.ts → types/context.d.ts} +15 -7
- 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 +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +6 -19
- package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
- package/components/identity.federation/source/lib/assertions-as-values.ts +5 -2
- package/components/identity.federation/source/lib/jwt.test.ts +123 -4
- package/components/identity.federation/source/lib/jwt.ts +36 -16
- package/components/identity.federation/source/types/configuration.ts +15 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +3 -0
- package/components/identity.federation/tsconfig.json +5 -4
- package/components/identity.roles/manifest.toa.yaml +16 -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 +19 -4
- package/components/identity.tokens/operations/authenticate.d.ts +2 -2
- package/components/identity.tokens/operations/authenticate.js +12 -5
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.js +1 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +5 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +8 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +14 -6
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +9 -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 +121 -0
- package/documentation/access.md +75 -38
- package/documentation/authorities.md +49 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +61 -22
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +17 -22
- package/documentation/introspection.md +82 -0
- package/documentation/octets.md +95 -67
- package/documentation/protocol.md +13 -3
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/documentation/vary.md +14 -14
- package/features/access.feature +77 -46
- package/features/annotation.feature +1 -0
- package/features/auth.claim.feature +170 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +2 -0
- package/features/cache.feature +109 -5
- package/features/cors.feature +6 -1
- package/features/debug.feature +34 -0
- package/features/directives.feature +3 -0
- package/features/dynamic.feature +48 -0
- package/features/errors.feature +32 -7
- package/features/etag.feature +108 -0
- package/features/flow.feature +96 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +97 -26
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +66 -11
- package/features/identity.roles.feature +250 -7
- package/features/identity.tokens.feature +54 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +38 -1
- package/features/methods.feature +47 -0
- package/features/{octets.meta.feature → octets.attributes.feature} +16 -12
- package/features/octets.cloudinary.feature +68 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +13 -55
- package/features/octets.feature +83 -107
- package/features/octets.workflows.feature +242 -58
- 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 +38 -3
- package/features/routes.feature +93 -2
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Database.ts +16 -9
- package/features/steps/Gateway.ts +23 -6
- package/features/steps/IdP.ts +30 -25
- package/features/steps/Parameters.ts +44 -1
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +14 -1
- 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.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 +22 -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 +0 -2
- package/features/steps/components/octets.tester/operations/foo.js +1 -2
- 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 +14 -3
- package/features/steps/components/users/manifest.toa.yaml +0 -1
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
- package/features/streams.feature +5 -0
- package/features/timing.feature +4 -1
- package/features/vary.feature +71 -0
- package/package.json +23 -14
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/put.cos.yaml +25 -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 +5 -6
- package/source/Endpoint.ts +59 -17
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +65 -18
- package/source/HTTP/Context.ts +26 -3
- package/source/HTTP/Server.ts +60 -46
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +45 -2
- package/source/HTTP/messages.ts +32 -8
- 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 +5 -2
- 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 -20
- package/source/deployment.ts +33 -23
- package/source/directives/auth/Authorization.ts +45 -22
- package/source/directives/auth/Delegate.ts +42 -0
- package/source/directives/auth/Echo.ts +19 -5
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Incept.ts +4 -3
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +22 -14
- package/source/directives/auth/Scheme.ts +1 -1
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +2 -2
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/cors/CORS.ts +1 -1
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/flow/Compose.ts +68 -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 +3 -1
- package/source/directives/io/IO.ts +1 -1
- package/source/directives/io/Input.ts +4 -4
- package/source/directives/io/Output.ts +5 -4
- package/source/directives/octets/Context.ts +3 -2
- package/source/directives/octets/Delete.ts +11 -11
- package/source/directives/octets/Get.ts +84 -0
- package/source/directives/octets/Octets.ts +8 -12
- package/source/directives/octets/{Store.ts → Put.ts} +36 -21
- package/source/directives/octets/Workflow.ts +1 -1
- 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/workflows/Execution.ts +60 -8
- package/source/directives/octets/workflows/Workflow.ts +4 -4
- 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/directives/vary/Directive.ts +2 -1
- package/source/directives/vary/Embed.ts +14 -8
- package/source/directives/vary/Vary.ts +6 -4
- package/source/directives/vary/embeddings/Authority.ts +8 -0
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/Language.ts +2 -2
- package/source/directives/vary/embeddings/Parameter.ts +14 -0
- package/source/directives/vary/embeddings/index.ts +6 -4
- package/source/exceptions.ts +17 -11
- package/source/manifest.ts +10 -11
- package/source/root.ts +5 -5
- 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 +5 -5
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +39 -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 +49 -10
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +9 -2
- package/transpiled/HTTP/Context.js +16 -2
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +13 -2
- package/transpiled/HTTP/Server.js +46 -39
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +7 -1
- 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 +30 -7
- 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 +5 -2
- 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 -5
- package/transpiled/Tenant.js +2 -13
- 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/Authorization.d.ts +1 -1
- package/transpiled/directives/auth/Authorization.js +33 -19
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +10 -0
- package/transpiled/directives/auth/Delegate.js +34 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/Echo.d.ts +4 -3
- package/transpiled/directives/auth/Echo.js +13 -3
- 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/Incept.js +4 -3
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +20 -14
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Scheme.js +1 -1
- package/transpiled/directives/auth/Scheme.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 +1 -1
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +10 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +2 -1
- package/transpiled/directives/cache/Control.js +29 -12
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cors/CORS.js +1 -1
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/flow/Compose.d.ts +8 -0
- package/transpiled/directives/flow/Compose.js +74 -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 +3 -1
- 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 +2 -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/octets/Context.js +4 -24
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.js +8 -8
- 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} +24 -29
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.js +8 -12
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +7 -2
- package/transpiled/directives/octets/{Store.js → Put.js} +26 -19
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.js +1 -1
- 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/workflows/Execution.d.ts +5 -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 +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -1
- package/transpiled/directives/octets/workflows/Workflow.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/directives/vary/Directive.d.ts +2 -1
- package/transpiled/directives/vary/Embed.d.ts +2 -1
- package/transpiled/directives/vary/Embed.js +8 -6
- package/transpiled/directives/vary/Embed.js.map +1 -1
- package/transpiled/directives/vary/Vary.d.ts +2 -2
- package/transpiled/directives/vary/Vary.js +3 -3
- package/transpiled/directives/vary/Vary.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
- package/transpiled/directives/vary/embeddings/Authority.js +10 -0
- package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
- package/transpiled/directives/vary/embeddings/Language.js +2 -2
- package/transpiled/directives/vary/embeddings/Language.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
- package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
- package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
- package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
- package/transpiled/directives/vary/embeddings/index.js +8 -4
- package/transpiled/directives/vary/embeddings/index.js.map +1 -1
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +10 -5
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +5 -5
- 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/tsconfig.json +8 -2
- 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.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.js.map +0 -1
- package/components/identity.federation/source/schemas.ts +0 -61
- 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/features/steps/components/octets.tester/operations/diversify.js +0 -14
- 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/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/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
- /package/{components/identity.federation/operations → transpiled/directives/flow}/types.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,8 @@ 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` property within the configuration
|
|
66
|
+
Trusted providers are specified using the `identity.federation` property within the configuration
|
|
67
|
+
annotation.
|
|
73
68
|
|
|
74
69
|
```yaml
|
|
75
70
|
# context.toa.yaml
|
|
@@ -77,13 +72,13 @@ Trusted providers are specified using the `identity.federation` property within
|
|
|
77
72
|
configuration:
|
|
78
73
|
identity.federation:
|
|
79
74
|
trust:
|
|
80
|
-
-
|
|
81
|
-
|
|
75
|
+
- iss: https://accounts.google.com
|
|
76
|
+
aud:
|
|
82
77
|
- <GOOGLE_CLIENT_ID>
|
|
83
78
|
|
|
84
|
-
-
|
|
79
|
+
- iss: https://appleid.apple.com
|
|
85
80
|
|
|
86
|
-
-
|
|
81
|
+
- iss: private.entity
|
|
87
82
|
secrets:
|
|
88
83
|
HS384:
|
|
89
84
|
key0: <THE-SECRET-STRING-FOR-HS384>
|
|
@@ -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
|
+
```
|
package/documentation/octets.md
CHANGED
|
@@ -14,26 +14,28 @@ 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
26
|
The value of the directive is `null` or an object with the following properties:
|
|
27
27
|
|
|
28
|
+
- `limit`: [maximum size](#stream-size-limit) of the incoming stream.
|
|
28
29
|
- `accept`: a media type or an array of media types that are acceptable.
|
|
29
30
|
If the `accept` property is not specified, any media type is acceptable (which is the default).
|
|
30
31
|
- `workflow`: [workflow](#workflows) to be executed once the content is successfully stored.
|
|
32
|
+
- `trust`: a list of [trusted origins](#downloading-external-content).
|
|
31
33
|
|
|
32
34
|
```yaml
|
|
33
35
|
/images:
|
|
34
36
|
octets:context: images
|
|
35
37
|
POST:
|
|
36
|
-
octets:
|
|
38
|
+
octets:put:
|
|
37
39
|
accept:
|
|
38
40
|
- image/jpeg
|
|
39
41
|
- image/png
|
|
@@ -43,7 +45,7 @@ The value of the directive is `null` or an object with the following properties:
|
|
|
43
45
|
analyze: images.analyze
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
Non-standard `content-
|
|
48
|
+
Non-standard `content-attributes` header can be used
|
|
47
49
|
to set initial [metadata](/extensions/storages/readme.md#entry) value for the Entry.
|
|
48
50
|
|
|
49
51
|
The value of the `content-meta` header is a comma-separated list of key-value string pairs.
|
|
@@ -52,22 +54,67 @@ If no value is provided for a key, the string `true` is used.
|
|
|
52
54
|
```http
|
|
53
55
|
POST /images/ HTTP/1.1
|
|
54
56
|
content-type: image/jpeg
|
|
55
|
-
content-
|
|
56
|
-
content-
|
|
57
|
+
content-attributes: foo, bar=baz
|
|
58
|
+
content-attributes: baz=1
|
|
57
59
|
```
|
|
58
60
|
|
|
59
61
|
```yaml
|
|
60
|
-
|
|
62
|
+
attributes:
|
|
61
63
|
foo: 'true'
|
|
62
64
|
bar: 'baz'
|
|
63
65
|
baz: '1'
|
|
64
66
|
```
|
|
65
67
|
|
|
66
|
-
If the Entry already exists, the `content-
|
|
68
|
+
If the Entry already exists, the `content-attributes` header is ignored.
|
|
69
|
+
|
|
70
|
+
### Stream size limit
|
|
71
|
+
|
|
72
|
+
The `limit` property can be used to set the maximum size of the incoming stream in bytes.
|
|
73
|
+
|
|
74
|
+
The property value can be specified as a number
|
|
75
|
+
(representing bytes) or a string that combines a number with a unit (e.g., `1MB`).
|
|
76
|
+
Both [binary and decimal prefixes](https://en.wikipedia.org/wiki/Binary_prefix) are supported.
|
|
77
|
+
If the prefix or unit is specified _incorrectly_ (e.g., `1mb`),
|
|
78
|
+
it will default to a binary prefix interpretation.
|
|
79
|
+
|
|
80
|
+
- `1b`, `1B`: 1 byte
|
|
81
|
+
- `1KB`: 1000 bytes
|
|
82
|
+
- `1KiB`: 1024 bytes
|
|
83
|
+
- `1kb`: 1024 bytes
|
|
84
|
+
|
|
85
|
+
The default value is `64MiB`.
|
|
86
|
+
|
|
87
|
+
### Downloading external content
|
|
88
|
+
|
|
89
|
+
The `octets:put` directive can be used to download external content:
|
|
90
|
+
|
|
91
|
+
```http
|
|
92
|
+
POST /images/ HTTP/1.1
|
|
93
|
+
content-location: https://example.com/image.jpg
|
|
94
|
+
content-length: 0
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Requests with `content-location` header must have an empty body (`content-length: 0` header).
|
|
98
|
+
|
|
99
|
+
Target origin must be allowed by the `trust` property,
|
|
100
|
+
which can contain a list of trusted origins or regular expressions to match the full URL.
|
|
101
|
+
|
|
102
|
+
URL of the downloaded content is stored in the `origin` property of
|
|
103
|
+
the [Entry](/extensions/storages/readme.md#entry).
|
|
104
|
+
|
|
105
|
+
```yaml
|
|
106
|
+
/images:
|
|
107
|
+
octets:context: images
|
|
108
|
+
POST:
|
|
109
|
+
octets:put:
|
|
110
|
+
trust:
|
|
111
|
+
- https://example.com
|
|
112
|
+
- ^https://example\.com/[a-z]+\.jpe?g$
|
|
113
|
+
```
|
|
67
114
|
|
|
68
115
|
### Response
|
|
69
116
|
|
|
70
|
-
The response of the `octets:
|
|
117
|
+
The response of the `octets:put` directive is the created Entry.
|
|
71
118
|
|
|
72
119
|
```
|
|
73
120
|
201 Created
|
|
@@ -78,12 +125,13 @@ type: image/jpeg
|
|
|
78
125
|
created: 1698004822358
|
|
79
126
|
```
|
|
80
127
|
|
|
81
|
-
If the `octets:
|
|
128
|
+
If the `octets:put` directive contains a `workflow`, the response
|
|
82
129
|
is [multipart](protocol.md#multipart-types).
|
|
83
130
|
The first part represents the created Entry, which is sent immediately after the BLOB is stored,
|
|
84
131
|
while subsequent parts are results from the workflow endpoints, sent as soon as they are available.
|
|
85
132
|
|
|
86
|
-
In case a workflow endpoint returns an `Error`, the error part is sent,
|
|
133
|
+
In case a workflow endpoint returns an `Error`, the error part is sent,
|
|
134
|
+
and the response is closed.
|
|
87
135
|
Error's properties are added to the error part, among with the `step` identifier.
|
|
88
136
|
|
|
89
137
|
```
|
|
@@ -91,20 +139,33 @@ Error's properties are added to the error part, among with the `step` identifier
|
|
|
91
139
|
content-type: multipart/yaml; boundary=cut
|
|
92
140
|
|
|
93
141
|
--cut
|
|
142
|
+
|
|
94
143
|
id: eecd837c
|
|
95
144
|
type: image/jpeg
|
|
96
145
|
created: 1698004822358
|
|
146
|
+
|
|
97
147
|
--cut
|
|
98
|
-
|
|
148
|
+
|
|
149
|
+
step: optimize
|
|
150
|
+
status: completed
|
|
151
|
+
|
|
99
152
|
--cut
|
|
153
|
+
|
|
154
|
+
step: resize
|
|
100
155
|
error:
|
|
101
|
-
step: resize
|
|
102
156
|
code: TOO_SMALL
|
|
103
157
|
message: Image is too small
|
|
158
|
+
status: completed
|
|
159
|
+
|
|
160
|
+
--cut
|
|
161
|
+
|
|
162
|
+
step: analyze
|
|
163
|
+
status: exception
|
|
164
|
+
|
|
104
165
|
--cut--
|
|
105
166
|
```
|
|
106
167
|
|
|
107
|
-
## `octets:
|
|
168
|
+
## `octets:get`
|
|
108
169
|
|
|
109
170
|
Fetches the content of a stored BLOB corresponding to the request path, and returns it as the
|
|
110
171
|
response body with the corresponding `content-type`, `content-length`
|
|
@@ -116,22 +177,18 @@ The value of the directive is an object with the following properties:
|
|
|
116
177
|
|
|
117
178
|
- `meta`: `boolean` indicating whether an Entry is accessible.
|
|
118
179
|
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
180
|
|
|
124
181
|
```yaml
|
|
125
182
|
/images:
|
|
126
183
|
octets:context: images
|
|
127
184
|
/*:
|
|
128
185
|
GET:
|
|
129
|
-
octets:
|
|
186
|
+
octets:get:
|
|
130
187
|
blob: false # prevent access to the original BLOB
|
|
131
188
|
meta: true # allow access to an Entry
|
|
132
189
|
```
|
|
133
190
|
|
|
134
|
-
The `octets:
|
|
191
|
+
The `octets:get: ~` declaration is equivalent to defaults.
|
|
135
192
|
|
|
136
193
|
To access an Entry, the `accept` request header must contain the `octets.entry` subtype
|
|
137
194
|
in
|
|
@@ -142,32 +199,6 @@ GET /images/eecd837c HTTP/1.1
|
|
|
142
199
|
accept: application/vnd.toa.octets.entry+yaml
|
|
143
200
|
```
|
|
144
201
|
|
|
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
202
|
## `octets:delete`
|
|
172
203
|
|
|
173
204
|
Delete the entry corresponding to the request path.
|
|
@@ -193,22 +224,6 @@ the entry is deleted.
|
|
|
193
224
|
|
|
194
225
|
The error returned by the workflow prevents the deletion of the entry.
|
|
195
226
|
|
|
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
227
|
## `octets:workflow`
|
|
213
228
|
|
|
214
229
|
Execute a [workflow](#workflows) on the entry under the request path.
|
|
@@ -227,21 +242,23 @@ A workflow is a list of endpoints to be called.
|
|
|
227
242
|
The following input will be passed to each endpoint:
|
|
228
243
|
|
|
229
244
|
```yaml
|
|
245
|
+
authority: string
|
|
230
246
|
storage: string
|
|
231
247
|
path: string
|
|
232
248
|
entry: Entry
|
|
233
249
|
parameters: Record<string, string> # route parameters
|
|
234
250
|
```
|
|
235
251
|
|
|
236
|
-
|
|
237
|
-
|
|
252
|
+
- [Storages](/extensions/storages/readme.md)
|
|
253
|
+
- [Authorities](authorities.md)
|
|
254
|
+
- Example [workflow step processor](../features/steps/components/octets.tester)
|
|
238
255
|
|
|
239
256
|
A _workflow unit_ is an object with keys referencing the workflow step identifier, and an endpoint
|
|
240
257
|
as value.
|
|
241
258
|
Steps within a workflow unit are executed in parallel.
|
|
242
259
|
|
|
243
260
|
```yaml
|
|
244
|
-
octets:
|
|
261
|
+
octets:put:
|
|
245
262
|
workflow:
|
|
246
263
|
resize: images.resize
|
|
247
264
|
analyze: images.analyze
|
|
@@ -251,11 +268,22 @@ A workflow can be a single unit, or an array of units.
|
|
|
251
268
|
If it's an array, the workflow units are executed in sequence.
|
|
252
269
|
|
|
253
270
|
```yaml
|
|
254
|
-
octets:
|
|
271
|
+
octets:put:
|
|
255
272
|
workflow:
|
|
256
273
|
- optimize: images.optimize # executed first
|
|
257
274
|
- resize: images.resize # executed second
|
|
258
275
|
analyze: images.analyze # executed in parallel with `resize`
|
|
259
276
|
```
|
|
260
277
|
|
|
261
|
-
If one of the workflow units returns an error,
|
|
278
|
+
If one of the workflow units returns or throws an error,
|
|
279
|
+
the execution of the workflow is interrupted.
|
|
280
|
+
|
|
281
|
+
### Workflow tasks
|
|
282
|
+
|
|
283
|
+
A workflow unit which value starts with `task:` prefix will be executed as a Task.
|
|
284
|
+
|
|
285
|
+
```yaml
|
|
286
|
+
octets:put:
|
|
287
|
+
workflow:
|
|
288
|
+
optimize: task:images.optimize
|
|
289
|
+
```
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
The following media types are supported for both requests and responses:
|
|
6
6
|
|
|
7
|
-
- `application/msgpack` using [msgpackr](https://github.com/kriszyp/msgpackr)
|
|
8
|
-
- `application/yaml` using [js-yaml](https://github.com/nodeca/js-yaml)
|
|
9
7
|
- `application/json`
|
|
8
|
+
- `application/yaml` using [js-yaml](https://github.com/nodeca/js-yaml)
|
|
9
|
+
- `application/msgpack` using [msgpackr](https://github.com/kriszyp/msgpackr)
|
|
10
10
|
- `text/plain`
|
|
11
11
|
|
|
12
12
|
The response format is determined by content negotiation
|
|
@@ -26,7 +26,7 @@ foo: bar
|
|
|
26
26
|
|
|
27
27
|
### Multipart types
|
|
28
28
|
|
|
29
|
-
Multipart responses are
|
|
29
|
+
Multipart responses are encoded using content negotiation,
|
|
30
30
|
and the `content-type` of the response is set to one of the custom `multipart/` subtypes,
|
|
31
31
|
corresponding to the type of
|
|
32
32
|
the parts:
|
|
@@ -38,6 +38,9 @@ the parts:
|
|
|
38
38
|
| `multipart/json` | `application/json` |
|
|
39
39
|
| `multipart/text` | `text/plain` |
|
|
40
40
|
|
|
41
|
+
Multipart responses are started with a text chunk `ACK`, and finished with a text
|
|
42
|
+
chunk `FIN`.
|
|
43
|
+
|
|
41
44
|
Example:
|
|
42
45
|
|
|
43
46
|
```
|
|
@@ -49,10 +52,14 @@ accept: application/yaml
|
|
|
49
52
|
200 OK
|
|
50
53
|
content-type: multipart/yaml; boundary=cut
|
|
51
54
|
|
|
55
|
+
--cut
|
|
56
|
+
ACK
|
|
52
57
|
--cut
|
|
53
58
|
foo: bar
|
|
54
59
|
--cut
|
|
55
60
|
baz: qux
|
|
61
|
+
--cut
|
|
62
|
+
FIN
|
|
56
63
|
--cut--
|
|
57
64
|
```
|
|
58
65
|
|
|
@@ -72,6 +79,9 @@ The following request headers are allowed:
|
|
|
72
79
|
- `accept`
|
|
73
80
|
- `authorization`
|
|
74
81
|
- `content-type`
|
|
82
|
+
- `etag`
|
|
83
|
+
- `if-match`
|
|
84
|
+
- `if-none-match`
|
|
75
85
|
- headers used by the [`vary:embed` directive](vary.md#embeddings)
|
|
76
86
|
|
|
77
87
|
The following response headers are exposed:
|
package/documentation/query.md
CHANGED
|
@@ -77,8 +77,12 @@ query:
|
|
|
77
77
|
|
|
78
78
|
### Path variables
|
|
79
79
|
|
|
80
|
-
Path variables are prepended to the `criteria` request query parameter
|
|
81
|
-
|
|
80
|
+
Path variables are prepended to the `criteria` request query parameter except for
|
|
81
|
+
the [`POST` method](#post-method).
|
|
82
|
+
|
|
83
|
+
If query criteria starts with logical operator (`,` or `;`), then path variables are prepended
|
|
84
|
+
accordingly.
|
|
85
|
+
`AND` logical operator is used by default.
|
|
82
86
|
|
|
83
87
|
Given the following declaration:
|
|
84
88
|
|
|
@@ -92,7 +96,7 @@ exposition:
|
|
|
92
96
|
GET:
|
|
93
97
|
endpoint: observe
|
|
94
98
|
query:
|
|
95
|
-
criteria: state==hot; # open criteria
|
|
99
|
+
criteria: ,state==hot; # open criteria
|
|
96
100
|
```
|
|
97
101
|
|
|
98
102
|
and the following request:
|
|
@@ -104,7 +108,7 @@ GET /dummies/cool/?criteria=rank==5
|
|
|
104
108
|
Operation call will have the following query criteria:
|
|
105
109
|
|
|
106
110
|
```yaml
|
|
107
|
-
criteria: state==hot;
|
|
111
|
+
criteria: (type==cool,state==hot);(rank=5)
|
|
108
112
|
```
|
|
109
113
|
|
|
110
114
|
#### POST method
|
|
@@ -173,6 +177,10 @@ Constant values can be declared using the shortcut:
|
|
|
173
177
|
limit: 10
|
|
174
178
|
```
|
|
175
179
|
|
|
180
|
+
```http
|
|
181
|
+
GET /dummies/?omit=100&limit=10
|
|
182
|
+
```
|
|
183
|
+
|
|
176
184
|
## Sort
|
|
177
185
|
|
|
178
186
|
The `sort` query property defines the result order of Observations within an `objects` scope
|
|
@@ -209,6 +217,8 @@ GET /dummies/?sort=timestamp:asc
|
|
|
209
217
|
|
|
210
218
|
## Selectors
|
|
211
219
|
|
|
220
|
+

|
|
221
|
+
|
|
212
222
|
The `selectors` query property contains a list of Entity properties allowed for a client to use in
|
|
213
223
|
the `criteria` and `sort` query parameters.
|
|
214
224
|
If no value is provided, then no selectors are allowed.
|
|
@@ -225,6 +235,21 @@ A list of Entity properties to be included in the Observation result.
|
|
|
225
235
|
projection: [id, title, timestamp]
|
|
226
236
|
```
|
|
227
237
|
|
|
238
|
+
## Parameters
|
|
239
|
+
|
|
240
|
+
By default, the only query parameters allowed are described above. Arbitrary query parameters
|
|
241
|
+
can be allowed by specifying them in the `parameters` property.
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
parameters: [foo, bar]
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
These parameters are embedded in the operation call input, which must be an object.
|
|
248
|
+
|
|
249
|
+
```http
|
|
250
|
+
GET /dummies/?foo=0&bar=baz
|
|
251
|
+
```
|
|
252
|
+
|
|
228
253
|
## Optimistic concurrency control
|
|
229
254
|
|
|
230
255
|
If an operation returns an object with `_version` property,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Directive family Require
|
|
2
|
+
|
|
3
|
+
The `require` directive family provides the ability to specify HTTP request requirements to be met.
|
|
4
|
+
|
|
5
|
+
## Headers
|
|
6
|
+
|
|
7
|
+
`require:header` requires a specific header to be present in the request, and `require:headers`
|
|
8
|
+
requires a set of headers to be present.
|
|
9
|
+
|
|
10
|
+
```yaml
|
|
11
|
+
exposition:
|
|
12
|
+
/:id:
|
|
13
|
+
require:header: if-match # enforce concurrency control
|
|
14
|
+
PUT: transit
|
|
15
|
+
```
|
package/documentation/tree.md
CHANGED
|
@@ -56,6 +56,19 @@ as it provides a more specific match compared to the generic `/users/:id` route.
|
|
|
56
56
|
|
|
57
57
|
The priority of Routes with the same specificity is determined by the order of declaration.
|
|
58
58
|
|
|
59
|
+
## Route forwarding
|
|
60
|
+
|
|
61
|
+
A Route can be forwarded to another Route by specifying the destination Route as the value of the
|
|
62
|
+
Route.
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
/destination/:var: ...
|
|
66
|
+
/static: /destination/hello
|
|
67
|
+
/variables/:bar: /destination/:bar
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Forwarding Route variables are mapped to the forwarded Route variables if they have the same name.
|
|
71
|
+
|
|
59
72
|
## Methods
|
|
60
73
|
|
|
61
74
|
Methods are mappings of the HTTP methods to the corresponding operations.
|
package/documentation/vary.md
CHANGED
|
@@ -7,16 +7,15 @@ operation call.
|
|
|
7
7
|
|
|
8
8
|
```yaml
|
|
9
9
|
exposition:
|
|
10
|
-
|
|
11
|
-
toa: the.toa.io
|
|
12
|
-
/:
|
|
10
|
+
/:group:
|
|
13
11
|
vary:languages: [en, fr]
|
|
14
12
|
GET:
|
|
15
13
|
vary:embed:
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
app: authority # predefined embeddings
|
|
15
|
+
lang: language
|
|
18
16
|
token: :x-access-token # raw header value
|
|
19
|
-
|
|
17
|
+
group: /:group # route parameter
|
|
18
|
+
endpoint: observe
|
|
20
19
|
```
|
|
21
20
|
|
|
22
21
|
## Embeddings
|
|
@@ -30,13 +29,9 @@ If the value is an array, the first non-empty embedding function's result is use
|
|
|
30
29
|
> If a property is already present in the input, the embedded value will overwrite its current
|
|
31
30
|
> value.
|
|
32
31
|
|
|
33
|
-
###
|
|
32
|
+
### Authority
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
The list of domains is defined by the `vary:realms` directive,
|
|
37
|
-
which is a map of realm names to their domain names.
|
|
38
|
-
|
|
39
|
-
The `realm` embedding substitutes the realm identified based on the `host` request header.
|
|
34
|
+
The `authority` embedding substitutes request [authority identifier](authorities.md).
|
|
40
35
|
|
|
41
36
|
### Language
|
|
42
37
|
|
|
@@ -47,8 +42,8 @@ If neither of the supported languages matches, the first supported language is u
|
|
|
47
42
|
|
|
48
43
|
### Raw header values
|
|
49
44
|
|
|
50
|
-
|
|
51
|
-
values to be embedded into an operation call.
|
|
45
|
+
Values in the embedding map starting with a semicolon (:) are the names of HTTP request headers
|
|
46
|
+
whose values to be embedded into an operation call.
|
|
52
47
|
The names of these headers are then included in the `vary` HTTP response header
|
|
53
48
|
and [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)
|
|
54
49
|
of the [CORS](protocol.md#cors).
|
|
@@ -56,6 +51,11 @@ of the [CORS](protocol.md#cors).
|
|
|
56
51
|
[Multiple header fields](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) are embedded
|
|
57
52
|
as a comma-separated list.
|
|
58
53
|
|
|
54
|
+
### Route parameters
|
|
55
|
+
|
|
56
|
+
Values in the embedding map starting with `/:` are the names of route parameters whose values
|
|
57
|
+
to be embedded into an operation call.
|
|
58
|
+
|
|
59
59
|
### Fallbacks
|
|
60
60
|
|
|
61
61
|
If the embedding function is an array, the first non-empty resolved value is used.
|