@toa.io/extensions.exposition 1.0.0-alpha.0 → 1.0.0-alpha.100
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 +12 -0
- package/components/identity.bans/manifest.toa.yaml +15 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +21 -8
- package/components/identity.basic/operations/authenticate.d.ts +13 -0
- package/components/identity.basic/operations/authenticate.js +27 -0
- package/components/identity.basic/operations/authenticate.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 +12 -0
- package/components/identity.basic/operations/transit.js +55 -0
- package/components/identity.basic/operations/transit.js.map +1 -0
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/operations/types.d.ts +42 -0
- package/components/identity.basic/operations/types.js +3 -0
- package/components/identity.basic/operations/types.js.map +1 -0
- package/components/identity.basic/source/authenticate.ts +16 -6
- 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/events/principal.js +22 -0
- package/components/identity.federation/manifest.toa.yaml +119 -0
- package/components/identity.federation/operations/authenticate.d.ts +14 -0
- package/components/identity.federation/operations/authenticate.js +20 -0
- package/components/identity.federation/operations/authenticate.js.map +1 -0
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/incept.js +14 -0
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/assertions-as-values.d.ts +4 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js +47 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -0
- package/components/identity.federation/operations/lib/get.d.ts +1 -0
- package/components/identity.federation/operations/lib/get.js +64 -0
- package/components/identity.federation/operations/lib/get.js.map +1 -0
- package/components/identity.federation/operations/lib/jwt.d.ts +19 -0
- package/components/identity.federation/operations/lib/jwt.js +140 -0
- package/components/identity.federation/operations/lib/jwt.js.map +1 -0
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.federation/operations/types/configuration.d.ts +15 -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 +49 -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 +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 +36 -0
- package/components/identity.federation/source/incept.ts +26 -0
- package/components/identity.federation/source/lib/assertions-as-values.ts +22 -0
- package/components/identity.federation/source/lib/get.ts +82 -0
- package/components/identity.federation/source/lib/jwt.test.ts +179 -0
- package/components/identity.federation/source/lib/jwt.ts +178 -0
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/types/context.ts +55 -0
- 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 +10 -0
- package/components/identity.roles/manifest.toa.yaml +18 -5
- 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 +2 -0
- package/components/identity.roles/operations/list.js +8 -0
- package/components/identity.roles/operations/list.js.map +1 -0
- package/components/identity.roles/operations/principal.d.ts +13 -0
- package/components/identity.roles/operations/principal.js +13 -0
- package/components/identity.roles/operations/principal.js.map +1 -0
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -0
- 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 +18 -4
- package/components/identity.tokens/operations/authenticate.d.ts +9 -0
- package/components/identity.tokens/operations/authenticate.js +39 -0
- package/components/identity.tokens/operations/authenticate.js.map +1 -0
- package/components/identity.tokens/operations/decrypt.d.ts +3 -0
- package/components/identity.tokens/operations/decrypt.js +33 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -0
- package/components/identity.tokens/operations/encrypt.d.ts +8 -0
- package/components/identity.tokens/operations/encrypt.js +26 -0
- package/components/identity.tokens/operations/encrypt.js.map +1 -0
- package/components/identity.tokens/operations/revoke.d.ts +2 -0
- package/components/identity.tokens/operations/revoke.js +8 -0
- package/components/identity.tokens/operations/revoke.js.map +1 -0
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.tokens/operations/types.d.ts +46 -0
- package/components/identity.tokens/operations/types.js +3 -0
- package/components/identity.tokens/operations/types.js.map +1 -0
- 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 +10 -10
- 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 +132 -0
- package/cucumber.js +0 -1
- package/documentation/access.md +80 -38
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +93 -24
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +34 -23
- package/documentation/introspection.md +82 -0
- package/documentation/io.md +56 -0
- package/documentation/map.md +73 -0
- package/documentation/octets.md +162 -65
- package/documentation/protocol.md +34 -4
- package/documentation/query.md +79 -9
- package/documentation/require.md +15 -0
- package/documentation/tree.md +35 -4
- package/features/access.feature +141 -49
- package/features/annotation.feature +2 -0
- package/features/auth.claims.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 +5 -1
- package/features/cache.feature +112 -5
- package/features/cors.feature +78 -0
- package/features/debug.feature +34 -0
- package/features/directives.feature +5 -0
- package/features/dynamic.feature +62 -7
- package/features/errors.feature +36 -10
- package/features/etag.feature +205 -0
- package/features/flow.feature +96 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +146 -21
- package/features/identity.feature +37 -9
- package/features/identity.federation.feature +268 -0
- package/features/identity.roles.feature +251 -7
- package/features/identity.tokens.feature +57 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +204 -0
- package/features/map.feature +241 -0
- package/features/methods.feature +47 -0
- package/features/octets.cloudinary.feature +68 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +81 -0
- package/features/octets.feature +85 -133
- package/features/octets.head.feature +40 -0
- package/features/octets.meta.feature +116 -0
- package/features/octets.workflows.feature +391 -34
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +86 -3
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +103 -0
- package/features/routes.feature +145 -10
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Captures.ts +6 -0
- package/features/steps/Components.ts +18 -6
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +25 -6
- package/features/steps/HTTP.ts +40 -87
- package/features/steps/IdP.ts +155 -0
- package/features/steps/Parameters.ts +51 -2
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/Workspace.ts +5 -7
- package/features/steps/components/echo/manifest.toa.yaml +14 -0
- package/features/steps/components/echo/operations/error.js +11 -0
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.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 +1 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +26 -2
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/bar.js +0 -1
- package/features/steps/components/octets.tester/operations/baz.js +0 -2
- package/features/steps/components/octets.tester/operations/concat.js +7 -0
- package/features/steps/components/octets.tester/operations/echo.js +7 -0
- 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 +26 -6
- package/features/steps/components/sequences/manifest.toa.yaml +1 -0
- package/features/steps/components/users/manifest.toa.yaml +3 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +14 -0
- package/features/steps/tsconfig.json +1 -1
- package/features/streams.feature +5 -0
- package/features/timing.feature +69 -0
- package/package.json +25 -20
- package/readme.md +19 -13
- package/schemas/annotation.cos.yaml +2 -1
- package/schemas/io/input.cos.yaml +3 -0
- package/schemas/io/message.cos.yaml +5 -0
- package/schemas/io/output.cos.yaml +5 -0
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/delete.cos.yaml +2 -1
- package/schemas/octets/{fetch.cos.yaml → get.cos.yaml} +0 -1
- package/schemas/octets/put.cos.yaml +25 -0
- package/schemas/octets/workflow.cos.yaml +12 -0
- package/schemas/query.cos.yaml +4 -10
- package/schemas/querystring.cos.yaml +1 -0
- package/source/Annotation.ts +3 -2
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +7 -4
- package/source/Directive.test.ts +14 -8
- package/source/Directive.ts +30 -52
- package/source/Endpoint.ts +105 -16
- package/source/Factory.ts +37 -17
- package/source/Gateway.ts +94 -42
- package/source/HTTP/Context.ts +90 -0
- package/source/HTTP/Server.ts +115 -92
- package/source/HTTP/Timing.ts +40 -0
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/formats/msgpack.ts +9 -6
- package/source/HTTP/formats/text.ts +1 -1
- package/source/HTTP/formats/yaml.ts +1 -1
- package/source/HTTP/index.ts +1 -0
- package/source/HTTP/messages.test.ts +71 -9
- package/source/HTTP/messages.ts +66 -46
- package/source/Interception.ts +24 -0
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +69 -23
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +123 -33
- package/source/RTD/Context.ts +8 -11
- package/source/RTD/Directives.ts +28 -4
- package/source/RTD/Endpoint.ts +9 -4
- package/source/RTD/Match.ts +2 -7
- package/source/RTD/Method.ts +23 -13
- package/source/RTD/Node.ts +37 -22
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/Tree.ts +20 -16
- package/source/RTD/factory.ts +7 -7
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +41 -28
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -20
- package/source/deployment.ts +35 -20
- package/source/directives/auth/Anonymous.ts +3 -2
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Authorization.ts +170 -0
- 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 +14 -8
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +27 -17
- package/source/directives/auth/Rule.ts +2 -2
- package/source/directives/auth/Scheme.ts +3 -3
- package/source/directives/auth/index.ts +2 -2
- package/source/directives/auth/schemes.ts +2 -1
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +10 -7
- package/source/directives/cache/Cache.ts +42 -0
- package/source/directives/cache/Control.ts +47 -21
- package/source/directives/cache/index.ts +2 -2
- package/source/directives/cache/types.ts +2 -2
- package/source/directives/cors/CORS.ts +63 -0
- package/source/directives/cors/index.ts +3 -0
- package/source/directives/dev/{Family.ts → Development.ts} +5 -6
- package/source/directives/dev/Stub.ts +4 -4
- package/source/directives/dev/Throw.ts +4 -4
- package/source/directives/dev/index.ts +2 -2
- package/source/directives/dev/types.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 +13 -6
- package/source/directives/io/Directive.ts +11 -0
- package/source/directives/io/IO.ts +43 -0
- package/source/directives/io/Input.ts +50 -0
- package/source/directives/io/Message.ts +1 -0
- package/source/directives/io/Output.ts +70 -0
- package/source/directives/io/index.ts +3 -0
- package/source/directives/io/schemas.ts +12 -0
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Claims.ts +37 -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 +56 -0
- package/source/directives/map/Mapping.ts +13 -0
- package/source/directives/map/Properties.ts +15 -0
- package/source/directives/map/Segments.ts +26 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/octets/Context.ts +9 -7
- package/source/directives/octets/Delete.ts +65 -12
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/{Family.ts → Octets.ts} +22 -20
- package/source/directives/octets/Put.ts +142 -0
- package/source/directives/octets/Workflow.ts +48 -0
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/index.ts +2 -2
- package/source/directives/octets/schemas.test.ts +21 -0
- package/source/directives/octets/schemas.ts +9 -6
- package/source/directives/octets/types.ts +2 -8
- package/source/directives/octets/workflows/Execution.ts +128 -0
- package/source/directives/octets/workflows/Workflow.ts +37 -0
- package/source/directives/octets/workflows/index.ts +1 -0
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/exceptions.ts +23 -11
- package/source/io.ts +4 -0
- package/source/manifest.test.ts +6 -14
- package/source/manifest.ts +18 -16
- package/source/root.ts +5 -0
- package/source/schemas.ts +7 -3
- package/transpiled/Annotation.d.ts +8 -0
- package/transpiled/Annotation.js +3 -0
- package/transpiled/Annotation.js.map +1 -0
- package/transpiled/Branch.d.ts +8 -0
- package/transpiled/Branch.js +3 -0
- package/transpiled/Branch.js.map +1 -0
- package/transpiled/Composition.d.ts +13 -0
- package/transpiled/Composition.js +39 -0
- package/transpiled/Composition.js.map +1 -0
- package/transpiled/Context.d.ts +8 -0
- package/transpiled/Context.js +3 -0
- package/transpiled/Context.js.map +1 -0
- package/transpiled/Directive.d.ts +18 -0
- package/transpiled/Directive.js +77 -0
- package/transpiled/Directive.js.map +1 -0
- package/transpiled/Endpoint.d.ts +24 -0
- package/transpiled/Endpoint.js +131 -0
- package/transpiled/Endpoint.js.map +1 -0
- package/transpiled/Factory.d.ts +10 -0
- package/transpiled/Factory.js +81 -0
- package/transpiled/Factory.js.map +1 -0
- package/transpiled/Gateway.d.ts +21 -0
- package/transpiled/Gateway.js +132 -0
- package/transpiled/Gateway.js.map +1 -0
- package/transpiled/HTTP/Context.d.ts +31 -0
- package/transpiled/HTTP/Context.js +61 -0
- package/transpiled/HTTP/Context.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +36 -0
- package/transpiled/HTTP/Server.js +148 -0
- package/transpiled/HTTP/Server.js.map +1 -0
- package/transpiled/HTTP/Timing.d.ts +10 -0
- package/transpiled/HTTP/Timing.js +29 -0
- package/transpiled/HTTP/Timing.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +40 -0
- package/transpiled/HTTP/exceptions.js +83 -0
- package/transpiled/HTTP/exceptions.js.map +1 -0
- package/transpiled/HTTP/formats/index.d.ts +10 -0
- package/transpiled/HTTP/formats/index.js +38 -0
- package/transpiled/HTTP/formats/index.js.map +1 -0
- package/transpiled/HTTP/formats/json.d.ts +6 -0
- package/transpiled/HTTP/formats/json.js +17 -0
- package/transpiled/HTTP/formats/json.js.map +1 -0
- package/transpiled/HTTP/formats/msgpack.d.ts +6 -0
- package/transpiled/HTTP/formats/msgpack.js +17 -0
- package/transpiled/HTTP/formats/msgpack.js.map +1 -0
- package/transpiled/HTTP/formats/text.d.ts +8 -0
- package/transpiled/HTTP/formats/text.js +15 -0
- package/transpiled/HTTP/formats/text.js.map +1 -0
- package/transpiled/HTTP/formats/yaml.d.ts +6 -0
- package/transpiled/HTTP/formats/yaml.js +41 -0
- package/transpiled/HTTP/formats/yaml.js.map +1 -0
- package/transpiled/HTTP/index.d.ts +4 -0
- package/transpiled/HTTP/index.js +21 -0
- package/transpiled/HTTP/index.js.map +1 -0
- package/transpiled/HTTP/messages.d.ts +20 -0
- package/transpiled/HTTP/messages.js +96 -0
- package/transpiled/HTTP/messages.js.map +1 -0
- package/transpiled/Interception.d.ts +9 -0
- package/transpiled/Interception.js +19 -0
- package/transpiled/Interception.js.map +1 -0
- 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 +17 -0
- package/transpiled/Mapping.js +69 -0
- package/transpiled/Mapping.js.map +1 -0
- package/transpiled/Query.d.ts +22 -0
- package/transpiled/Query.js +164 -0
- package/transpiled/Query.js.map +1 -0
- package/transpiled/RTD/Context.d.ts +12 -0
- package/transpiled/RTD/Context.js +3 -0
- package/transpiled/RTD/Context.js.map +1 -0
- package/transpiled/RTD/Directives.d.ts +22 -0
- package/transpiled/RTD/Directives.js +3 -0
- package/transpiled/RTD/Directives.js.map +1 -0
- package/transpiled/RTD/Endpoint.d.ts +12 -0
- package/transpiled/RTD/Endpoint.js +3 -0
- package/transpiled/RTD/Endpoint.js.map +1 -0
- package/transpiled/RTD/Match.d.ts +9 -0
- package/transpiled/RTD/Match.js +3 -0
- package/transpiled/RTD/Match.js.map +1 -0
- package/transpiled/RTD/Method.d.ts +13 -0
- package/transpiled/RTD/Method.js +27 -0
- package/transpiled/RTD/Method.js.map +1 -0
- package/transpiled/RTD/Node.d.ts +22 -0
- package/transpiled/RTD/Node.js +73 -0
- package/transpiled/RTD/Node.js.map +1 -0
- package/transpiled/RTD/Route.d.ts +14 -0
- package/transpiled/RTD/Route.js +48 -0
- package/transpiled/RTD/Route.js.map +1 -0
- package/transpiled/RTD/Tree.d.ts +14 -0
- package/transpiled/RTD/Tree.js +45 -0
- package/transpiled/RTD/Tree.js.map +1 -0
- package/transpiled/RTD/factory.d.ts +4 -0
- package/transpiled/RTD/factory.js +39 -0
- package/transpiled/RTD/factory.js.map +1 -0
- package/transpiled/RTD/index.d.ts +8 -0
- package/transpiled/RTD/index.js +38 -0
- package/transpiled/RTD/index.js.map +1 -0
- package/transpiled/RTD/segment.d.ts +8 -0
- package/transpiled/RTD/segment.js +25 -0
- package/transpiled/RTD/segment.js.map +1 -0
- package/transpiled/RTD/syntax/index.d.ts +2 -0
- package/transpiled/RTD/syntax/index.js +19 -0
- package/transpiled/RTD/syntax/index.js.map +1 -0
- package/transpiled/RTD/syntax/parse.d.ts +4 -0
- package/transpiled/RTD/syntax/parse.js +140 -0
- package/transpiled/RTD/syntax/parse.js.map +1 -0
- package/transpiled/RTD/syntax/types.d.ts +43 -0
- package/transpiled/RTD/syntax/types.js +5 -0
- package/transpiled/RTD/syntax/types.js.map +1 -0
- package/transpiled/Remotes.d.ts +9 -0
- package/transpiled/Remotes.js +26 -0
- package/transpiled/Remotes.js.map +1 -0
- package/transpiled/Tenant.d.ts +13 -0
- package/transpiled/Tenant.js +23 -0
- package/transpiled/Tenant.js.map +1 -0
- package/transpiled/deployment.d.ts +3 -0
- package/transpiled/deployment.js +79 -0
- package/transpiled/deployment.js.map +1 -0
- package/transpiled/directives/auth/Anonymous.d.ts +6 -0
- package/transpiled/directives/auth/Anonymous.js +16 -0
- package/transpiled/directives/auth/Anonymous.js.map +1 -0
- 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/Authorization.d.ts +19 -0
- package/transpiled/directives/auth/Authorization.js +141 -0
- package/transpiled/directives/auth/Authorization.js.map +1 -0
- 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 +7 -0
- package/transpiled/directives/auth/Echo.js +23 -0
- package/transpiled/directives/auth/Echo.js.map +1 -0
- 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 +7 -0
- package/transpiled/directives/auth/Id.js +17 -0
- package/transpiled/directives/auth/Id.js.map +1 -0
- package/transpiled/directives/auth/Incept.d.ts +10 -0
- package/transpiled/directives/auth/Incept.js +64 -0
- package/transpiled/directives/auth/Incept.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +14 -0
- package/transpiled/directives/auth/Role.js +52 -0
- package/transpiled/directives/auth/Role.js.map +1 -0
- package/transpiled/directives/auth/Rule.d.ts +9 -0
- package/transpiled/directives/auth/Rule.js +22 -0
- package/transpiled/directives/auth/Rule.js.map +1 -0
- package/transpiled/directives/auth/Scheme.d.ts +7 -0
- package/transpiled/directives/auth/Scheme.js +47 -0
- package/transpiled/directives/auth/Scheme.js.map +1 -0
- package/transpiled/directives/auth/index.d.ts +2 -0
- package/transpiled/directives/auth/index.js +6 -0
- package/transpiled/directives/auth/index.js.map +1 -0
- package/transpiled/directives/auth/schemes.d.ts +3 -0
- package/transpiled/directives/auth/schemes.js +10 -0
- package/transpiled/directives/auth/schemes.js.map +1 -0
- package/transpiled/directives/auth/split.d.ts +2 -0
- package/transpiled/directives/auth/split.js +38 -0
- package/transpiled/directives/auth/split.js.map +1 -0
- package/transpiled/directives/auth/types.d.ts +31 -0
- package/transpiled/directives/auth/types.js +3 -0
- package/transpiled/directives/auth/types.js.map +1 -0
- package/transpiled/directives/cache/Cache.d.ts +11 -0
- package/transpiled/directives/cache/Cache.js +34 -0
- package/transpiled/directives/cache/Cache.js.map +1 -0
- package/transpiled/directives/cache/Control.d.ts +10 -0
- package/transpiled/directives/cache/Control.js +59 -0
- package/transpiled/directives/cache/Control.js.map +1 -0
- package/transpiled/directives/cache/Exact.d.ts +4 -0
- package/transpiled/directives/cache/Exact.js +11 -0
- package/transpiled/directives/cache/Exact.js.map +1 -0
- package/transpiled/directives/cache/index.d.ts +2 -0
- package/transpiled/directives/cache/index.js +6 -0
- package/transpiled/directives/cache/index.js.map +1 -0
- package/transpiled/directives/cache/types.d.ts +7 -0
- package/transpiled/directives/cache/types.js +3 -0
- package/transpiled/directives/cache/types.js.map +1 -0
- package/transpiled/directives/cors/CORS.d.ts +10 -0
- package/transpiled/directives/cors/CORS.js +52 -0
- package/transpiled/directives/cors/CORS.js.map +1 -0
- package/transpiled/directives/cors/index.d.ts +2 -0
- package/transpiled/directives/cors/index.js +6 -0
- package/transpiled/directives/cors/index.js.map +1 -0
- package/transpiled/directives/dev/Development.d.ts +9 -0
- package/transpiled/directives/dev/Development.js +29 -0
- package/transpiled/directives/dev/Development.js.map +1 -0
- package/transpiled/directives/dev/Stub.d.ts +7 -0
- package/transpiled/directives/dev/Stub.js +14 -0
- package/transpiled/directives/dev/Stub.js.map +1 -0
- package/transpiled/directives/dev/Throw.d.ts +7 -0
- package/transpiled/directives/dev/Throw.js +14 -0
- package/transpiled/directives/dev/Throw.js.map +1 -0
- package/transpiled/directives/dev/index.d.ts +2 -0
- package/transpiled/directives/dev/index.js +6 -0
- package/transpiled/directives/dev/index.js.map +1 -0
- package/transpiled/directives/dev/types.d.ts +4 -0
- package/transpiled/directives/dev/types.js +3 -0
- package/transpiled/directives/dev/types.js.map +1 -0
- 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 +3 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.d.ts +4 -0
- package/transpiled/directives/index.js +15 -0
- package/transpiled/directives/index.js.map +1 -0
- package/transpiled/directives/io/Directive.d.ts +8 -0
- package/transpiled/directives/io/Directive.js +3 -0
- package/transpiled/directives/io/Directive.js.map +1 -0
- package/transpiled/directives/io/IO.d.ts +9 -0
- package/transpiled/directives/io/IO.js +33 -0
- package/transpiled/directives/io/IO.js.map +1 -0
- package/transpiled/directives/io/Input.d.ts +11 -0
- package/transpiled/directives/io/Input.js +63 -0
- package/transpiled/directives/io/Input.js.map +1 -0
- package/transpiled/directives/io/Message.d.ts +1 -0
- package/transpiled/directives/io/Message.js +3 -0
- package/transpiled/directives/io/Message.js.map +1 -0
- package/transpiled/directives/io/Output.d.ts +13 -0
- package/transpiled/directives/io/Output.js +76 -0
- package/transpiled/directives/io/Output.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +2 -0
- package/transpiled/directives/io/index.js +6 -0
- package/transpiled/directives/io/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +7 -0
- package/transpiled/directives/io/schemas.js +14 -0
- package/transpiled/directives/io/schemas.js.map +1 -0
- package/transpiled/directives/map/Authority.d.ts +6 -0
- package/transpiled/directives/map/Authority.js +19 -0
- package/transpiled/directives/map/Authority.js.map +1 -0
- package/transpiled/directives/map/Claims.d.ts +6 -0
- package/transpiled/directives/map/Claims.js +29 -0
- package/transpiled/directives/map/Claims.js.map +1 -0
- package/transpiled/directives/map/Directive.d.ts +3 -0
- package/transpiled/directives/map/Directive.js +3 -0
- package/transpiled/directives/map/Directive.js.map +1 -0
- package/transpiled/directives/map/Headers.d.ts +7 -0
- package/transpiled/directives/map/Headers.js +34 -0
- package/transpiled/directives/map/Headers.js.map +1 -0
- package/transpiled/directives/map/Language.d.ts +10 -0
- package/transpiled/directives/map/Language.js +38 -0
- package/transpiled/directives/map/Language.js.map +1 -0
- package/transpiled/directives/map/Languages.d.ts +4 -0
- package/transpiled/directives/map/Languages.js +17 -0
- package/transpiled/directives/map/Languages.js.map +1 -0
- package/transpiled/directives/map/Map.d.ts +11 -0
- package/transpiled/directives/map/Map.js +44 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +8 -0
- package/transpiled/directives/map/Mapping.js +11 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/map/Properties.d.ts +9 -0
- package/transpiled/directives/map/Properties.js +14 -0
- package/transpiled/directives/map/Properties.js.map +1 -0
- package/transpiled/directives/map/Segments.d.ts +6 -0
- package/transpiled/directives/map/Segments.js +25 -0
- package/transpiled/directives/map/Segments.js.map +1 -0
- package/transpiled/directives/map/index.d.ts +2 -0
- package/transpiled/directives/map/index.js +6 -0
- package/transpiled/directives/map/index.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +8 -0
- package/transpiled/directives/octets/Context.js +22 -0
- package/transpiled/directives/octets/Context.js.map +1 -0
- package/transpiled/directives/octets/Delete.d.ts +20 -0
- package/transpiled/directives/octets/Delete.js +84 -0
- package/transpiled/directives/octets/Delete.js.map +1 -0
- package/transpiled/directives/octets/Directive.d.ts +8 -0
- package/transpiled/directives/octets/Directive.js +8 -0
- package/transpiled/directives/octets/Directive.js.map +1 -0
- package/transpiled/directives/octets/Get.d.ts +17 -0
- package/transpiled/directives/octets/Get.js +88 -0
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.d.ts +12 -0
- package/transpiled/directives/octets/Octets.js +52 -0
- package/transpiled/directives/octets/Octets.js.map +1 -0
- package/transpiled/directives/octets/Put.d.ts +29 -0
- package/transpiled/directives/octets/Put.js +102 -0
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.d.ts +15 -0
- package/transpiled/directives/octets/Workflow.js +59 -0
- package/transpiled/directives/octets/Workflow.js.map +1 -0
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +21 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/index.d.ts +2 -0
- package/transpiled/directives/octets/index.js +6 -0
- package/transpiled/directives/octets/index.js.map +1 -0
- package/transpiled/directives/octets/schemas.d.ts +9 -0
- package/transpiled/directives/octets/schemas.js +15 -0
- package/transpiled/directives/octets/schemas.js.map +1 -0
- package/transpiled/directives/octets/types.d.ts +5 -0
- package/transpiled/directives/octets/types.js +3 -0
- package/transpiled/directives/octets/types.js.map +1 -0
- package/transpiled/directives/octets/workflows/Execution.d.ts +29 -0
- package/transpiled/directives/octets/workflows/Execution.js +89 -0
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -0
- package/transpiled/directives/octets/workflows/Workflow.d.ts +12 -0
- package/transpiled/directives/octets/workflows/Workflow.js +26 -0
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -0
- package/transpiled/directives/octets/workflows/index.d.ts +1 -0
- package/transpiled/directives/octets/workflows/index.js +6 -0
- package/transpiled/directives/octets/workflows/index.js.map +1 -0
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/discovery.d.ts +1 -0
- package/transpiled/discovery.js +3 -0
- package/transpiled/discovery.js.map +1 -0
- package/transpiled/exceptions.d.ts +3 -0
- package/transpiled/exceptions.js +46 -0
- package/transpiled/exceptions.js.map +1 -0
- package/transpiled/index.d.ts +5 -0
- package/transpiled/index.js +12 -0
- package/transpiled/index.js.map +1 -0
- package/transpiled/io.d.ts +3 -0
- package/transpiled/io.js +3 -0
- package/transpiled/io.js.map +1 -0
- package/transpiled/manifest.d.ts +3 -0
- package/transpiled/manifest.js +65 -0
- package/transpiled/manifest.js.map +1 -0
- package/transpiled/root.d.ts +2 -0
- package/transpiled/root.js +44 -0
- package/transpiled/root.js.map +1 -0
- package/transpiled/schemas.d.ts +7 -0
- package/transpiled/schemas.js +14 -0
- package/transpiled/schemas.js.map +1 -0
- package/transpiled/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/source/create.ts +0 -18
- 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/list.cos.yaml +0 -1
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/HTTP/Server.fixtures.ts +0 -41
- package/source/HTTP/Server.test.ts +0 -199
- package/source/directives/auth/Family.ts +0 -148
- package/source/directives/cache/Family.ts +0 -36
- package/source/directives/octets/Fetch.ts +0 -85
- package/source/directives/octets/List.ts +0 -32
- package/source/directives/octets/Permute.ts +0 -37
- package/source/directives/octets/Store.ts +0 -158
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# I/O restrictions
|
|
2
|
+
|
|
3
|
+
The Exposition comes with `io` directives to control access to the operation's input and output
|
|
4
|
+
properties.
|
|
5
|
+
|
|
6
|
+
## `io:input`
|
|
7
|
+
|
|
8
|
+
The `io:input` optional directive contains a list of properties that are allowed to be specified in
|
|
9
|
+
the request body.
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
POST:
|
|
13
|
+
endpoint: create
|
|
14
|
+
io:input: [name, location]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The list must be a valid subset of the operation's input properties.
|
|
18
|
+
|
|
19
|
+
If `io:input` is specified and the request body is not an object, or contains properties that are
|
|
20
|
+
not in the list, the request will be rejected with a `400` status code.
|
|
21
|
+
|
|
22
|
+
> Therefore, `io:input` is only applicable to operations which input is an object or an
|
|
23
|
+
> array of objects.
|
|
24
|
+
|
|
25
|
+
## `io:output`
|
|
26
|
+
|
|
27
|
+
The `io:output` mandatory directive contains a list of properties that are allowed to be included in
|
|
28
|
+
the response body.
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
GET:
|
|
32
|
+
endpoint: observe
|
|
33
|
+
io:output: [name, location]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
When an operation does not return an object (e.g., a primitive or a stream), or an object is dynamic
|
|
37
|
+
and its properties are not known in advance, `io:output` may have a value of `true` to disable
|
|
38
|
+
output restrictions.
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
GET:
|
|
42
|
+
endpoint: proxy
|
|
43
|
+
io:output: true
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If a method declaration lacks `io:output` directive, it will trigger a warning, and its
|
|
47
|
+
response will consistently be empty.
|
|
48
|
+
If this behavior is intended, a `false` value can be employed to suppress warnings.
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
GET:
|
|
52
|
+
endpoint: conceal
|
|
53
|
+
io:output: false
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Output restrictions are not applied to stream responses and errors.
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
## Bearer token claims
|
|
66
|
+
|
|
67
|
+
The `map:claims` directive maps the values of
|
|
68
|
+
the [token claims](https://datatracker.ietf.org/doc/html/rfc7519#section-4).
|
|
69
|
+
The value of the directive is a map where keys are the names of the input properties and values are
|
|
70
|
+
the names of the claims.
|
|
71
|
+
|
|
72
|
+
If the claim is not present in the token or the request is not authenticated using
|
|
73
|
+
the [`Bearer` scheme](identity.md#bearer-scheme), the input properties are not set.
|
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
|
-
The value of the directive is an object with the following properties:
|
|
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,47 +45,80 @@ The value of the directive is an object with the following properties:
|
|
|
43
45
|
analyze: images.analyze
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
`content-id` header can be used to set the ID of the Entry.
|
|
49
|
+
The value must match the following regular expression `^[a-zA-Z0-9-_]{1,16}$`.
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
Non-standard `content-attributes` header can be used
|
|
52
|
+
to set initial [metadata](/extensions/storages/readme.md#entry) value for the Entry.
|
|
53
|
+
|
|
54
|
+
The value of the `content-attributes` header is a comma-separated list of key-value string pairs.
|
|
55
|
+
If no value is provided for a key, the string `true` is used.
|
|
56
|
+
|
|
57
|
+
```http
|
|
58
|
+
POST /images/ HTTP/1.1
|
|
59
|
+
content-type: image/jpeg
|
|
60
|
+
content-id: example-id
|
|
61
|
+
content-attributes: foo, bar=baz
|
|
62
|
+
content-attributes: baz=1
|
|
63
|
+
```
|
|
50
64
|
|
|
51
65
|
```yaml
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
66
|
+
attributes:
|
|
67
|
+
foo: 'true'
|
|
68
|
+
bar: 'baz'
|
|
69
|
+
baz: '1'
|
|
55
70
|
```
|
|
56
71
|
|
|
57
|
-
|
|
58
|
-
example [workflow step processor](../features/steps/components/octets.tester).
|
|
72
|
+
If the Entry already exists, the `content-attributes` header is ignored.
|
|
59
73
|
|
|
60
|
-
|
|
61
|
-
as value.
|
|
62
|
-
Steps within a workflow unit are executed in parallel.
|
|
74
|
+
### Stream size limit
|
|
63
75
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
The `limit` property can be used to set the maximum size of the incoming stream in bytes.
|
|
77
|
+
|
|
78
|
+
The property value can be specified as a number
|
|
79
|
+
(representing bytes) or a string that combines a number with a unit (e.g., `1MB`).
|
|
80
|
+
Both [binary and decimal prefixes](https://en.wikipedia.org/wiki/Binary_prefix) are supported.
|
|
81
|
+
If the prefix or unit is specified _incorrectly_ (e.g., `1mb`),
|
|
82
|
+
it will default to a binary prefix interpretation.
|
|
83
|
+
|
|
84
|
+
- `1b`, `1B`: 1 byte
|
|
85
|
+
- `1KB`: 1000 bytes
|
|
86
|
+
- `1KiB`: 1024 bytes
|
|
87
|
+
- `1kb`: 1024 bytes
|
|
88
|
+
|
|
89
|
+
The default value is `64MiB`.
|
|
90
|
+
|
|
91
|
+
### Downloading external content
|
|
92
|
+
|
|
93
|
+
The `octets:put` directive can be used to download external content:
|
|
94
|
+
|
|
95
|
+
```http
|
|
96
|
+
POST /images/ HTTP/1.1
|
|
97
|
+
content-location: https://example.com/image.jpg
|
|
98
|
+
content-length: 0
|
|
69
99
|
```
|
|
70
100
|
|
|
71
|
-
|
|
72
|
-
|
|
101
|
+
Requests with `content-location` header must have an empty body (`content-length: 0` header).
|
|
102
|
+
|
|
103
|
+
Target origin must be allowed by the `trust` property,
|
|
104
|
+
which can contain a list of trusted origins or regular expressions to match the full URL.
|
|
105
|
+
|
|
106
|
+
URL of the downloaded content is stored in the `origin` property of
|
|
107
|
+
the [Entry](/extensions/storages/readme.md#entry).
|
|
73
108
|
|
|
74
109
|
```yaml
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
110
|
+
/images:
|
|
111
|
+
octets:context: images
|
|
112
|
+
POST:
|
|
113
|
+
octets:put:
|
|
114
|
+
trust:
|
|
115
|
+
- https://example.com
|
|
116
|
+
- ^https://example\.com/[a-z]+\.jpe?g$
|
|
80
117
|
```
|
|
81
118
|
|
|
82
|
-
If one of the workflow units returns an error, the execution of the workflow is interrupted.
|
|
83
|
-
|
|
84
119
|
### Response
|
|
85
120
|
|
|
86
|
-
The response of the `octets:
|
|
121
|
+
The response of the `octets:put` directive is the created Entry.
|
|
87
122
|
|
|
88
123
|
```
|
|
89
124
|
201 Created
|
|
@@ -94,12 +129,13 @@ type: image/jpeg
|
|
|
94
129
|
created: 1698004822358
|
|
95
130
|
```
|
|
96
131
|
|
|
97
|
-
If the `octets:
|
|
132
|
+
If the `octets:put` directive contains a `workflow`, the response
|
|
98
133
|
is [multipart](protocol.md#multipart-types).
|
|
99
134
|
The first part represents the created Entry, which is sent immediately after the BLOB is stored,
|
|
100
135
|
while subsequent parts are results from the workflow endpoints, sent as soon as they are available.
|
|
101
136
|
|
|
102
|
-
In case a workflow endpoint returns an `Error`, the error part is sent,
|
|
137
|
+
In case a workflow endpoint returns an `Error`, the error part is sent,
|
|
138
|
+
and the response is closed.
|
|
103
139
|
Error's properties are added to the error part, among with the `step` identifier.
|
|
104
140
|
|
|
105
141
|
```
|
|
@@ -107,20 +143,33 @@ Error's properties are added to the error part, among with the `step` identifier
|
|
|
107
143
|
content-type: multipart/yaml; boundary=cut
|
|
108
144
|
|
|
109
145
|
--cut
|
|
146
|
+
|
|
110
147
|
id: eecd837c
|
|
111
148
|
type: image/jpeg
|
|
112
149
|
created: 1698004822358
|
|
150
|
+
|
|
113
151
|
--cut
|
|
114
|
-
|
|
152
|
+
|
|
153
|
+
step: optimize
|
|
154
|
+
status: completed
|
|
155
|
+
|
|
115
156
|
--cut
|
|
116
|
-
|
|
157
|
+
|
|
117
158
|
step: resize
|
|
118
|
-
|
|
119
|
-
|
|
159
|
+
error:
|
|
160
|
+
code: TOO_SMALL
|
|
161
|
+
message: Image is too small
|
|
162
|
+
status: completed
|
|
163
|
+
|
|
164
|
+
--cut
|
|
165
|
+
|
|
166
|
+
step: analyze
|
|
167
|
+
status: exception
|
|
168
|
+
|
|
120
169
|
--cut--
|
|
121
170
|
```
|
|
122
171
|
|
|
123
|
-
## `octets:
|
|
172
|
+
## `octets:get`
|
|
124
173
|
|
|
125
174
|
Fetches the content of a stored BLOB corresponding to the request path, and returns it as the
|
|
126
175
|
response body with the corresponding `content-type`, `content-length`
|
|
@@ -132,65 +181,113 @@ The value of the directive is an object with the following properties:
|
|
|
132
181
|
|
|
133
182
|
- `meta`: `boolean` indicating whether an Entry is accessible.
|
|
134
183
|
Defaults to `false`.
|
|
135
|
-
- `blob`: `boolean` indicating whether the original BLOB is accessible,
|
|
136
|
-
[BLOB variant](/extensions/storages/readme.md#async-fetchpath-string-maybereadable) must be
|
|
137
|
-
specified in the path otherwise.
|
|
138
|
-
Defaults to `true`.
|
|
139
184
|
|
|
140
185
|
```yaml
|
|
141
186
|
/images:
|
|
142
187
|
octets:context: images
|
|
143
188
|
/*:
|
|
144
189
|
GET:
|
|
145
|
-
octets:
|
|
190
|
+
octets:get:
|
|
146
191
|
blob: false # prevent access to the original BLOB
|
|
147
192
|
meta: true # allow access to an Entry
|
|
148
193
|
```
|
|
149
194
|
|
|
150
|
-
|
|
195
|
+
The `octets:get: ~` declaration is equivalent to defaults.
|
|
196
|
+
|
|
197
|
+
To access an Entry, the `accept` request header must contain the `octets.entry` subtype
|
|
198
|
+
in
|
|
199
|
+
the `toa` [vendor tree](https://datatracker.ietf.org/doc/html/rfc6838#section-3.2):
|
|
151
200
|
|
|
152
201
|
```http
|
|
153
|
-
GET /images/eecd837c
|
|
202
|
+
GET /images/eecd837c HTTP/1.1
|
|
203
|
+
accept: application/vnd.toa.octets.entry+yaml
|
|
154
204
|
```
|
|
155
205
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
## `octets:list`
|
|
206
|
+
## `octets:delete`
|
|
159
207
|
|
|
160
|
-
|
|
208
|
+
Delete the entry corresponding to the request path.
|
|
161
209
|
|
|
162
210
|
```yaml
|
|
163
211
|
/images:
|
|
164
212
|
octets:context: images
|
|
165
|
-
|
|
166
|
-
octets:
|
|
213
|
+
DELETE:
|
|
214
|
+
octets:delete: ~
|
|
167
215
|
```
|
|
168
216
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
## `octets:delete`
|
|
172
|
-
|
|
173
|
-
Delete the entry corresponding to the request path.
|
|
217
|
+
The value of the directive may contain a [workflow](#workflows) declaration, to be executed before
|
|
218
|
+
the entry is deleted.
|
|
174
219
|
|
|
175
220
|
```yaml
|
|
176
221
|
/images:
|
|
177
222
|
octets:context: images
|
|
178
223
|
DELETE:
|
|
179
|
-
octets:delete:
|
|
224
|
+
octets:delete:
|
|
225
|
+
workflow:
|
|
226
|
+
cleanup: images.cleanup
|
|
180
227
|
```
|
|
181
228
|
|
|
182
|
-
|
|
229
|
+
The error returned by the workflow prevents the deletion of the entry.
|
|
230
|
+
|
|
231
|
+
## `octets:workflow`
|
|
183
232
|
|
|
184
|
-
|
|
185
|
-
a [permutation](/extensions/storages/readme.md#async-permutepath-string-ids-string-maybevoid) on the
|
|
186
|
-
entries
|
|
187
|
-
under the request path.
|
|
233
|
+
Execute a [workflow](#workflows) on the entry under the request path.
|
|
188
234
|
|
|
189
235
|
```yaml
|
|
190
236
|
/images:
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
237
|
+
/*:
|
|
238
|
+
DELETE:
|
|
239
|
+
octets:workflow:
|
|
240
|
+
archive: images.archive
|
|
194
241
|
```
|
|
195
242
|
|
|
196
|
-
|
|
243
|
+
## Workflows
|
|
244
|
+
|
|
245
|
+
A workflow is a list of endpoints to be called.
|
|
246
|
+
The following input will be passed to each endpoint:
|
|
247
|
+
|
|
248
|
+
```yaml
|
|
249
|
+
authority: string
|
|
250
|
+
storage: string
|
|
251
|
+
path: string
|
|
252
|
+
entry: Entry
|
|
253
|
+
parameters: Record<string, string> # route parameters
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
- [Storages](/extensions/storages/readme.md)
|
|
257
|
+
- [Authorities](authorities.md)
|
|
258
|
+
- Example [workflow step processor](../features/steps/components/octets.tester)
|
|
259
|
+
|
|
260
|
+
A _workflow unit_ is an object with keys referencing the workflow step identifier, and an endpoint
|
|
261
|
+
as value.
|
|
262
|
+
Steps within a workflow unit are executed in parallel.
|
|
263
|
+
|
|
264
|
+
```yaml
|
|
265
|
+
octets:put:
|
|
266
|
+
workflow:
|
|
267
|
+
resize: images.resize
|
|
268
|
+
analyze: images.analyze
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
A workflow can be a single unit, or an array of units.
|
|
272
|
+
If it's an array, the workflow units are executed in sequence.
|
|
273
|
+
|
|
274
|
+
```yaml
|
|
275
|
+
octets:put:
|
|
276
|
+
workflow:
|
|
277
|
+
- optimize: images.optimize # executed first
|
|
278
|
+
- resize: images.resize # executed second
|
|
279
|
+
analyze: images.analyze # executed in parallel with `resize`
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
If one of the workflow units returns or throws an error,
|
|
283
|
+
the execution of the workflow is interrupted.
|
|
284
|
+
|
|
285
|
+
### Workflow tasks
|
|
286
|
+
|
|
287
|
+
A workflow unit which value starts with `task:` prefix will be executed as a Task.
|
|
288
|
+
|
|
289
|
+
```yaml
|
|
290
|
+
octets:put:
|
|
291
|
+
workflow:
|
|
292
|
+
optimize: task:images.optimize
|
|
293
|
+
```
|
|
@@ -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,8 +26,9 @@ foo: bar
|
|
|
26
26
|
|
|
27
27
|
### Multipart types
|
|
28
28
|
|
|
29
|
-
Multipart responses are
|
|
30
|
-
and the `content-type` of the response is set to one of the custom `multipart/` subtypes,
|
|
29
|
+
Multipart responses are encoded using content negotiation,
|
|
30
|
+
and the `content-type` of the response is set to one of the custom `multipart/` subtypes,
|
|
31
|
+
corresponding to the type of
|
|
31
32
|
the parts:
|
|
32
33
|
|
|
33
34
|
| Response type | Part type |
|
|
@@ -37,6 +38,9 @@ the parts:
|
|
|
37
38
|
| `multipart/json` | `application/json` |
|
|
38
39
|
| `multipart/text` | `text/plain` |
|
|
39
40
|
|
|
41
|
+
Multipart responses are started with a text chunk `ACK`, and finished with a text
|
|
42
|
+
chunk `FIN`.
|
|
43
|
+
|
|
40
44
|
Example:
|
|
41
45
|
|
|
42
46
|
```
|
|
@@ -48,10 +52,14 @@ accept: application/yaml
|
|
|
48
52
|
200 OK
|
|
49
53
|
content-type: multipart/yaml; boundary=cut
|
|
50
54
|
|
|
55
|
+
--cut
|
|
56
|
+
ACK
|
|
51
57
|
--cut
|
|
52
58
|
foo: bar
|
|
53
59
|
--cut
|
|
54
60
|
baz: qux
|
|
61
|
+
--cut
|
|
62
|
+
FIN
|
|
55
63
|
--cut--
|
|
56
64
|
```
|
|
57
65
|
|
|
@@ -60,3 +68,25 @@ See also:
|
|
|
60
68
|
- [Multipart Content-Type](https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html) at W3C
|
|
61
69
|
- [Content-Type: multipart](https://learn.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/aa493937(v=exchg.140))
|
|
62
70
|
at Microsoft
|
|
71
|
+
|
|
72
|
+
## CORS
|
|
73
|
+
|
|
74
|
+
[CORS](https://www.w3.org/TR/2020/SPSD-cors-20200602/) is supported,
|
|
75
|
+
credentials, any `origin`, and any request header fields are allowed.
|
|
76
|
+
|
|
77
|
+
The following request headers are allowed:
|
|
78
|
+
|
|
79
|
+
- `accept`
|
|
80
|
+
- `authorization`
|
|
81
|
+
- `content-type`
|
|
82
|
+
- `etag`
|
|
83
|
+
- `if-match`
|
|
84
|
+
- `if-none-match`
|
|
85
|
+
- headers used by the [`map` directive family](map.md)
|
|
86
|
+
|
|
87
|
+
The following response headers are exposed:
|
|
88
|
+
|
|
89
|
+
- `authorization`
|
|
90
|
+
- `content-type`
|
|
91
|
+
- `content-length`
|
|
92
|
+
- `etag`
|
package/documentation/query.md
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
id?: string
|
|
7
7
|
criteria?: string
|
|
8
8
|
sort?: string
|
|
9
|
-
omit?:
|
|
10
|
-
limit?:
|
|
9
|
+
omit?: integer
|
|
10
|
+
limit?: integer
|
|
11
11
|
selectors?: string[]
|
|
12
|
-
projection?: [
|
|
12
|
+
projection?: string[]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
```yaml
|
|
@@ -45,7 +45,7 @@ Undefined `query` denies any query arguments in requests.
|
|
|
45
45
|
|
|
46
46
|
## Criteria
|
|
47
47
|
|
|
48
|
-
Search
|
|
48
|
+
Search criteria in [RSQL](https://github.com/jirutka/rsql-parser) format.
|
|
49
49
|
|
|
50
50
|
The `criteria` property is considered as *open* when it ends with a `;`, allowing the combination of
|
|
51
51
|
request query criteria using `and` logic.
|
|
@@ -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,10 +108,10 @@ 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
|
|
111
115
|
|
|
112
116
|
`POST` method semantically used to create a new entity instance, that is, calling a Transition
|
|
113
117
|
without Query.
|
|
@@ -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.
|
|
@@ -224,3 +234,63 @@ A list of Entity properties to be included in the Observation result.
|
|
|
224
234
|
```yaml
|
|
225
235
|
projection: [id, title, timestamp]
|
|
226
236
|
```
|
|
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
|
+
|
|
253
|
+
## Optimistic concurrency control
|
|
254
|
+
|
|
255
|
+
If an operation returns an object with `_version` property,
|
|
256
|
+
then its value is passed as the value of
|
|
257
|
+
the [`etag` header](https://datatracker.ietf.org/doc/html/rfc7232#section-2.3) in the response
|
|
258
|
+
(and removed from the object).
|
|
259
|
+
|
|
260
|
+
Client can use the `if-match` request header to perform an operation only if the corresponding
|
|
261
|
+
object has not been modified since the last retrieval.
|
|
262
|
+
|
|
263
|
+
```http
|
|
264
|
+
GET /dummies/5e82ed5e/ HTTP/1.1
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
HTTP/1.1 200 OK
|
|
269
|
+
etag: "1"
|
|
270
|
+
|
|
271
|
+
foo: bar
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
```http request
|
|
275
|
+
PUT /dummies/5e82ed5e/ HTTP/1.1
|
|
276
|
+
if-match: "1"
|
|
277
|
+
|
|
278
|
+
foo: baz
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
```http
|
|
282
|
+
200 OK
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
```http request
|
|
286
|
+
PUT /dummies/5e82ed5e/ HTTP/1.1
|
|
287
|
+
if-match: "never"
|
|
288
|
+
|
|
289
|
+
foo: baz
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
```http
|
|
293
|
+
412 Precondition Failed
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
The value within the quotes is mapped to the `version` property of operation call query.
|
|
@@ -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
|
+
```
|