@toa.io/extensions.exposition 1.0.0-alpha.282 → 1.0.0-alpha.284
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/CHANGELOG.md +56 -0
- package/components/exposition.octets/manifest.toa.yaml +11 -0
- package/components/exposition.octets/types/index.d.ts +3 -0
- package/components/exposition.octets/types/toa.d.ts +41 -0
- package/components/identity.bans/operations/transit.js +1 -1
- package/components/identity.bans/tsconfig.json +1 -1
- package/components/identity.bans/tsconfig.tsbuildinfo +1 -1
- package/components/identity.bans/types/index.d.ts +3 -0
- package/components/identity.bans/types/toa.d.ts +34 -0
- package/components/identity.basic/manifest.toa.yaml +13 -2
- package/components/identity.basic/operations/add.js +1 -1
- package/components/identity.basic/operations/authenticate.js +1 -1
- package/components/identity.basic/operations/check.js +1 -1
- package/components/identity.basic/operations/delete.js +1 -1
- package/components/identity.basic/operations/incept.js +18 -2
- package/components/identity.basic/operations/info.js +1 -1
- package/components/identity.basic/operations/lib/credentials.js +1 -1
- package/components/identity.basic/operations/transit.js +3 -2
- package/components/identity.basic/source/add.ts +3 -3
- package/components/identity.basic/source/authenticate.ts +2 -2
- package/components/identity.basic/source/check.ts +1 -1
- package/components/identity.basic/source/delete.ts +2 -2
- package/components/identity.basic/source/incept.ts +31 -3
- package/components/identity.basic/source/info.ts +1 -1
- package/components/identity.basic/source/transit.ts +6 -4
- package/components/identity.basic/tsconfig.json +1 -1
- package/components/identity.basic/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/types/index.d.ts +22 -0
- package/components/identity.basic/types/toa.d.ts +121 -0
- package/components/identity.clients/manifest.toa.yaml +243 -0
- package/components/identity.clients/operations/describe.js +44 -0
- package/components/identity.clients/operations/lib/Context.js +2 -0
- package/components/identity.clients/operations/lib/Entity.js +2 -0
- package/components/identity.clients/operations/lib/canonical.js +24 -0
- package/components/identity.clients/operations/lib/cimd.js +86 -0
- package/components/identity.clients/operations/lib/errors.js +5 -0
- package/components/identity.clients/operations/lib/index.js +7 -0
- package/components/identity.clients/operations/lib/redirect.js +32 -0
- package/components/identity.clients/operations/register.js +84 -0
- package/components/identity.clients/source/describe.ts +65 -0
- package/components/identity.clients/source/lib/Context.ts +38 -0
- package/components/identity.clients/source/lib/Entity.ts +31 -0
- package/components/identity.clients/source/lib/canonical.test.ts +43 -0
- package/components/identity.clients/source/lib/canonical.ts +27 -0
- package/components/identity.clients/source/lib/cimd.test.ts +120 -0
- package/components/identity.clients/source/lib/cimd.ts +107 -0
- package/components/identity.clients/source/lib/errors.ts +4 -0
- package/components/identity.clients/source/lib/index.ts +6 -0
- package/components/identity.clients/source/lib/redirect.test.ts +41 -0
- package/components/identity.clients/source/lib/redirect.ts +35 -0
- package/components/identity.clients/source/register.ts +125 -0
- package/components/identity.clients/tsconfig.json +10 -0
- package/components/identity.clients/tsconfig.tsbuildinfo +1 -0
- package/components/identity.clients/types/index.d.ts +3 -0
- package/components/identity.clients/types/toa.d.ts +109 -0
- package/components/identity.credentials/operations/list.js +1 -1
- package/components/identity.credentials/source/list.ts +2 -1
- package/components/identity.credentials/tsconfig.json +4 -2
- package/components/identity.credentials/tsconfig.tsbuildinfo +1 -1
- package/components/identity.credentials/types/index.d.ts +3 -0
- package/components/identity.credentials/types/toa.d.ts +30 -0
- package/components/identity.federation/manifest.toa.yaml +37 -1
- package/components/identity.federation/operations/authenticate.js +7 -3
- package/components/identity.federation/operations/create.js +1 -1
- package/components/identity.federation/operations/decode.js +1 -1
- package/components/identity.federation/operations/delete.js +1 -1
- package/components/identity.federation/operations/incept.js +6 -2
- package/components/identity.federation/operations/lib/Configuration.js +1 -1
- package/components/identity.federation/operations/lib/Ctx.js +1 -1
- package/components/identity.federation/operations/lib/Payload.js +1 -1
- package/components/identity.federation/operations/lib/decode.js +23 -9
- package/components/identity.federation/operations/lib/discovery.js +1 -1
- package/components/identity.federation/operations/lib/errors.js +5 -1
- package/components/identity.federation/operations/lib/exchange.js +12 -7
- package/components/identity.federation/operations/lib/index.js +2 -1
- package/components/identity.federation/operations/lib/jose.js +1 -1
- package/components/identity.federation/operations/lib/principal.js +14 -0
- package/components/identity.federation/operations/lib/resolve.js +1 -1
- package/components/identity.federation/operations/list.js +1 -1
- package/components/identity.federation/operations/types/Scheme.js +1 -1
- package/components/identity.federation/operations/types/configuration.js +1 -1
- package/components/identity.federation/operations/types/context.js +1 -1
- package/components/identity.federation/operations/types/entity.js +1 -1
- package/components/identity.federation/operations/types/index.js +1 -1
- package/components/identity.federation/source/authenticate.ts +9 -3
- package/components/identity.federation/source/incept.ts +7 -1
- package/components/identity.federation/source/lib/Ctx.ts +2 -2
- package/components/identity.federation/source/lib/decode.ts +25 -9
- package/components/identity.federation/source/lib/errors.ts +5 -0
- package/components/identity.federation/source/lib/exchange.ts +11 -7
- package/components/identity.federation/source/lib/index.ts +1 -0
- package/components/identity.federation/source/lib/principal.ts +17 -0
- package/components/identity.federation/source/types/configuration.ts +1 -1
- package/components/identity.federation/source/types/context.ts +6 -2
- package/components/identity.federation/tsconfig.json +4 -2
- package/components/identity.federation/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/types/index.d.ts +3 -0
- package/components/identity.federation/types/toa.d.ts +127 -0
- package/components/identity.grants/manifest.toa.yaml +245 -0
- package/components/identity.grants/operations/authorize.js +54 -0
- package/components/identity.grants/operations/exchange.js +89 -0
- package/components/identity.grants/operations/lib/code.js +30 -0
- package/components/identity.grants/operations/lib/identify.js +15 -0
- package/components/identity.grants/operations/lib/index.js +3 -0
- package/components/identity.grants/operations/list.js +18 -0
- package/components/identity.grants/operations/revoke.js +25 -0
- package/components/identity.grants/source/authorize.ts +90 -0
- package/components/identity.grants/source/exchange.ts +130 -0
- package/components/identity.grants/source/lib/code.ts +39 -0
- package/components/identity.grants/source/lib/identify.ts +16 -0
- package/components/identity.grants/source/lib/index.ts +3 -0
- package/components/identity.grants/source/list.ts +28 -0
- package/components/identity.grants/source/revoke.ts +38 -0
- package/components/identity.grants/tsconfig.json +10 -0
- package/components/identity.grants/tsconfig.tsbuildinfo +1 -0
- package/components/identity.grants/types/index.d.ts +60 -0
- package/components/identity.grants/types/toa.d.ts +108 -0
- package/components/identity.keys/manifest.toa.yaml +1 -0
- package/components/identity.keys/operations/create.js +1 -1
- package/components/identity.keys/operations/disable.js +1 -1
- package/components/identity.keys/operations/revoke.js +1 -1
- package/components/identity.keys/source/create.ts +1 -1
- package/components/identity.keys/source/revoke.ts +1 -1
- package/components/identity.keys/tsconfig.json +1 -1
- package/components/identity.keys/tsconfig.tsbuildinfo +1 -1
- package/components/identity.keys/types/index.d.ts +3 -0
- package/components/identity.keys/types/toa.d.ts +47 -0
- package/components/identity.otp/operations/authenticate.js +1 -1
- package/components/identity.otp/operations/issue.js +1 -1
- package/components/identity.otp/operations/lib/Context.js +1 -1
- package/components/identity.otp/operations/lib/Entity.js +1 -1
- package/components/identity.otp/operations/lib/index.js +1 -1
- package/components/identity.otp/source/lib/Context.ts +4 -2
- package/components/identity.otp/tsconfig.json +1 -1
- package/components/identity.otp/tsconfig.tsbuildinfo +1 -1
- package/components/identity.otp/types/index.d.ts +3 -0
- package/components/identity.otp/types/toa.d.ts +56 -0
- package/components/identity.passkeys/manifest.toa.yaml +3 -0
- package/components/identity.passkeys/operations/authenticate.js +1 -1
- package/components/identity.passkeys/operations/challenge.js +1 -1
- package/components/identity.passkeys/operations/create.js +1 -1
- package/components/identity.passkeys/operations/delete.js +1 -1
- package/components/identity.passkeys/operations/lib/const.js +1 -1
- package/components/identity.passkeys/operations/list.js +1 -1
- package/components/identity.passkeys/operations/types/Configuration.js +1 -1
- package/components/identity.passkeys/operations/types/Context.js +1 -1
- package/components/identity.passkeys/operations/types/Passkey.js +1 -1
- package/components/identity.passkeys/operations/types/index.js +1 -1
- package/components/identity.passkeys/operations/use.js +1 -1
- package/components/identity.passkeys/source/authenticate.ts +1 -1
- package/components/identity.passkeys/source/challenge.ts +1 -1
- package/components/identity.passkeys/source/create.ts +1 -1
- package/components/identity.passkeys/source/types/Context.ts +2 -1
- package/components/identity.passkeys/source/use.ts +1 -1
- package/components/identity.passkeys/tsconfig.json +1 -1
- package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -1
- package/components/identity.passkeys/types/index.d.ts +3 -0
- package/components/identity.passkeys/types/toa.d.ts +120 -0
- package/components/identity.roles/operations/grant.js +1 -1
- package/components/identity.roles/operations/lib/Entity.js +1 -1
- package/components/identity.roles/operations/list.js +1 -1
- package/components/identity.roles/operations/principal.js +29 -5
- package/components/identity.roles/source/principal.ts +33 -5
- package/components/identity.roles/tsconfig.json +1 -1
- package/components/identity.roles/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/types/index.d.ts +3 -0
- package/components/identity.roles/types/toa.d.ts +43 -0
- package/components/identity.tokens/manifest.toa.yaml +34 -3
- package/components/identity.tokens/operations/authenticate.js +9 -1
- package/components/identity.tokens/operations/decrypt.js +3 -3
- package/components/identity.tokens/operations/encrypt.js +1 -1
- package/components/identity.tokens/operations/issue.js +3 -2
- package/components/identity.tokens/operations/lib/form.js +24 -0
- package/components/identity.tokens/operations/lib/index.js +2 -2
- package/components/identity.tokens/operations/lib/jose.js +1 -1
- package/components/identity.tokens/operations/lib/key.js +1 -1
- package/components/identity.tokens/operations/lib/pad.js +1 -1
- package/components/identity.tokens/operations/revoke.js +1 -1
- package/components/identity.tokens/source/authenticate.test.ts +8 -5
- package/components/identity.tokens/source/authenticate.ts +12 -1
- package/components/identity.tokens/source/decrypt.test.ts +1 -1
- package/components/identity.tokens/source/decrypt.ts +4 -3
- package/components/identity.tokens/source/encrypt.test.ts +1 -1
- package/components/identity.tokens/source/encrypt.ts +2 -1
- package/components/identity.tokens/source/issue.test.ts +71 -0
- package/components/identity.tokens/source/issue.ts +4 -2
- package/components/identity.tokens/source/lib/form.test.ts +25 -0
- package/components/identity.tokens/source/lib/form.ts +31 -0
- package/components/identity.tokens/source/lib/index.ts +2 -1
- package/components/identity.tokens/tsconfig.json +1 -1
- package/components/identity.tokens/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/types/index.d.ts +61 -0
- package/components/identity.tokens/types/toa.d.ts +113 -0
- package/documentation/access.md +13 -0
- package/documentation/cache.md +10 -1
- package/documentation/components.md +3 -0
- package/documentation/consent.md +101 -0
- package/documentation/identity.md +3 -1
- package/documentation/introspection.md +13 -5
- package/documentation/io.md +42 -2
- package/documentation/map.md +8 -0
- package/documentation/mcp.md +180 -0
- package/documentation/oauth.md +180 -0
- package/documentation/protocol.md +4 -0
- package/documentation/rpc.md +140 -0
- package/documentation/tree.md +3 -0
- package/features/auth.bearer.feature +120 -0
- package/features/cache.feature +46 -0
- package/features/identity.basic.feature +44 -0
- package/features/identity.federation.feature +2 -5
- package/features/introspection.feature +333 -0
- package/features/mcp.feature +687 -0
- package/features/oauth.clients.feature +195 -0
- package/features/oauth.discovery.feature +164 -0
- package/features/oauth.grants.feature +299 -0
- package/features/octets.cloudinary.feature +1 -0
- package/features/rpc.feature +429 -0
- package/features/steps/Cloudinary.ts +13 -0
- package/features/steps/Components.ts +0 -4
- package/features/steps/Gateway.ts +23 -2
- package/features/steps/Parameters.ts +22 -7
- package/features/steps/Realtime.ts +3 -0
- package/features/steps/components/echo/manifest.toa.yaml +3 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +2 -0
- package/features/steps/components/octets.tester/operations/redirect.js +6 -1
- package/features/steps/components/pots/manifest.toa.yaml +2 -0
- package/features/steps/components/users/manifest.toa.yaml +1 -0
- package/package.json +8 -6
- package/readme.md +6 -0
- package/schemas/annotation.cos.yaml +63 -0
- package/schemas/call.cos.yaml +18 -0
- package/source/Annotation.ts +54 -0
- package/source/Directive.test.ts +15 -15
- package/source/Directive.ts +77 -9
- package/source/Endpoint.test.ts +67 -0
- package/source/Endpoint.ts +31 -11
- package/source/Factory.ts +6 -2
- package/source/Gateway.ts +73 -11
- package/source/HTTP/Context.ts +7 -0
- package/source/HTTP/Server.ts +15 -5
- package/source/HTTP/exceptions.ts +2 -2
- package/source/HTTP/formats/form.ts +21 -0
- package/source/HTTP/formats/index.ts +17 -2
- package/source/HTTP/messages.test.ts +25 -1
- package/source/HTTP/messages.ts +20 -4
- package/source/Interception.ts +8 -2
- package/source/Introspection.ts +102 -0
- package/source/MCP/Server.ts +275 -0
- package/source/MCP/discover.ts +52 -0
- package/source/MCP/errors.ts +81 -0
- package/source/MCP/index.ts +1 -0
- package/source/MCP/schema.test.ts +85 -0
- package/source/MCP/schema.ts +87 -0
- package/source/MCP/tools.ts +156 -0
- package/source/MCP/types.ts +81 -0
- package/source/Query.ts +48 -8
- package/source/RPC/Context.ts +78 -0
- package/source/RPC/Dispatcher.ts +130 -0
- package/source/RPC/errors.test.ts +52 -0
- package/source/RPC/errors.ts +83 -0
- package/source/RPC/index.ts +1 -0
- package/source/RPC/names.test.ts +122 -0
- package/source/RPC/names.ts +182 -0
- package/source/RPC/types.ts +34 -0
- package/source/RTD/Directives.ts +52 -2
- package/source/RTD/Endpoint.ts +2 -1
- package/source/RTD/Method.ts +14 -11
- package/source/RTD/Node.ts +38 -7
- package/source/RTD/Route.ts +30 -3
- package/source/RTD/Tree.ts +37 -1
- package/source/RTD/expiration.test.ts +1 -1
- package/source/RTD/walk.test.ts +110 -0
- package/source/const.ts +15 -0
- package/source/deployment.ts +11 -1
- package/source/directives/auth/Anonymous.test.ts +38 -0
- package/source/directives/auth/Anonymous.ts +12 -0
- package/source/directives/auth/Anyone.ts +4 -0
- package/source/directives/auth/Authorization.ts +108 -22
- package/source/directives/auth/Delegate.test.ts +36 -0
- package/source/directives/auth/Delegate.ts +14 -0
- package/source/directives/auth/Echo.ts +5 -0
- package/source/directives/auth/Incept.ts +16 -10
- package/source/directives/auth/Role.ts +13 -0
- package/source/directives/auth/Rule.ts +29 -0
- package/source/directives/auth/Scheme.ts +5 -0
- package/source/directives/auth/schemes.test.ts +8 -4
- package/source/directives/auth/schemes.ts +22 -9
- package/source/directives/auth/types.ts +26 -2
- package/source/directives/cache/Cache.ts +14 -5
- package/source/directives/cache/Control.ts +0 -3
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/flow/Fetch.ts +1 -1
- package/source/directives/flow/Flow.ts +1 -1
- package/source/directives/index.ts +5 -2
- package/source/directives/io/Directive.ts +1 -1
- package/source/directives/io/IO.ts +34 -3
- package/source/directives/io/Input.ts +3 -2
- package/source/directives/io/Output.ts +10 -4
- package/source/directives/io/Status.test.ts +84 -0
- package/source/directives/io/Status.ts +46 -0
- package/source/directives/io/Throttle.ts +1 -1
- package/source/directives/io/lib/throttle/Quotas.ts +2 -2
- package/source/directives/map/Headers.ts +11 -0
- package/source/directives/map/Map.ts +10 -1
- package/source/directives/map/Mapping.ts +23 -0
- package/source/directives/map/Segments.ts +12 -0
- package/source/directives/mcp/MCP.ts +33 -0
- package/source/directives/mcp/Tool.test.ts +66 -0
- package/source/directives/mcp/Tool.ts +28 -0
- package/source/directives/mcp/index.ts +6 -0
- package/source/directives/oauth/Discovery.ts +70 -0
- package/source/directives/oauth/documents.ts +113 -0
- package/source/directives/oauth/index.ts +3 -0
- package/source/directives/octets/Delete.ts +1 -1
- package/source/directives/octets/Get.ts +1 -1
- package/source/directives/octets/Octets.ts +1 -1
- package/source/directives/octets/Workflow.ts +1 -1
- package/source/directives/octets/workflows/Execution.ts +1 -1
- package/source/directives/require/Directive.ts +1 -1
- package/source/directives/require/Headers.ts +1 -1
- package/source/directives/require/Require.ts +2 -2
- package/source/index.ts +6 -0
- package/source/octets.d.ts +17 -0
- package/source/schemas.ts +2 -0
- package/source/userland.ts +47 -0
- package/transpiled/Annotation.d.ts +41 -0
- package/transpiled/Directive.d.ts +18 -1
- package/transpiled/Directive.js +50 -6
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +9 -0
- package/transpiled/Endpoint.js +27 -11
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.js +6 -2
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +19 -2
- package/transpiled/Gateway.js +51 -9
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +6 -0
- package/transpiled/HTTP/Context.js +6 -0
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +8 -1
- package/transpiled/HTTP/Server.js +4 -3
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +1 -1
- package/transpiled/HTTP/exceptions.js +2 -2
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/form.d.ts +9 -0
- package/transpiled/HTTP/formats/form.js +18 -0
- package/transpiled/HTTP/formats/form.js.map +1 -0
- package/transpiled/HTTP/formats/index.d.ts +10 -2
- package/transpiled/HTTP/formats/index.js +10 -0
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +12 -0
- package/transpiled/HTTP/messages.js +12 -4
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Interception.d.ts +4 -1
- package/transpiled/Interception.js +4 -2
- package/transpiled/Interception.js.map +1 -1
- package/transpiled/Introspection.d.ts +40 -0
- package/transpiled/Introspection.js +50 -1
- package/transpiled/Introspection.js.map +1 -1
- package/transpiled/MCP/Server.d.ts +41 -0
- package/transpiled/MCP/Server.js +180 -0
- package/transpiled/MCP/Server.js.map +1 -0
- package/transpiled/MCP/discover.d.ts +13 -0
- package/transpiled/MCP/discover.js +29 -0
- package/transpiled/MCP/discover.js.map +1 -0
- package/transpiled/MCP/errors.d.ts +24 -0
- package/transpiled/MCP/errors.js +67 -0
- package/transpiled/MCP/errors.js.map +1 -0
- package/transpiled/MCP/index.d.ts +1 -0
- package/transpiled/MCP/index.js +2 -0
- package/transpiled/MCP/index.js.map +1 -0
- package/transpiled/MCP/schema.d.ts +18 -0
- package/transpiled/MCP/schema.js +64 -0
- package/transpiled/MCP/schema.js.map +1 -0
- package/transpiled/MCP/tools.d.ts +31 -0
- package/transpiled/MCP/tools.js +121 -0
- package/transpiled/MCP/tools.js.map +1 -0
- package/transpiled/MCP/types.d.ts +64 -0
- package/transpiled/MCP/types.js +13 -0
- package/transpiled/MCP/types.js.map +1 -0
- package/transpiled/Query.d.ts +7 -0
- package/transpiled/Query.js +38 -7
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RPC/Context.d.ts +11 -0
- package/transpiled/RPC/Context.js +63 -0
- package/transpiled/RPC/Context.js.map +1 -0
- package/transpiled/RPC/Dispatcher.d.ts +19 -0
- package/transpiled/RPC/Dispatcher.js +100 -0
- package/transpiled/RPC/Dispatcher.js.map +1 -0
- package/transpiled/RPC/errors.d.ts +18 -0
- package/transpiled/RPC/errors.js +67 -0
- package/transpiled/RPC/errors.js.map +1 -0
- package/transpiled/RPC/index.d.ts +1 -0
- package/transpiled/RPC/index.js +2 -0
- package/transpiled/RPC/index.js.map +1 -0
- package/transpiled/RPC/names.d.ts +30 -0
- package/transpiled/RPC/names.js +121 -0
- package/transpiled/RPC/names.js.map +1 -0
- package/transpiled/RPC/types.d.ts +27 -0
- package/transpiled/RPC/types.js +8 -0
- package/transpiled/RPC/types.js.map +1 -0
- package/transpiled/RTD/Directives.d.ts +41 -2
- package/transpiled/RTD/Endpoint.d.ts +2 -1
- package/transpiled/RTD/Method.d.ts +8 -3
- package/transpiled/RTD/Method.js +12 -10
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +20 -2
- package/transpiled/RTD/Node.js +22 -4
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +2 -1
- package/transpiled/RTD/Route.js +27 -2
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +3 -1
- package/transpiled/RTD/Tree.js +26 -0
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/const.d.ts +12 -0
- package/transpiled/const.js +12 -0
- package/transpiled/const.js.map +1 -1
- package/transpiled/deployment.js +6 -0
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.d.ts +6 -0
- package/transpiled/directives/auth/Anonymous.js +10 -0
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Anyone.d.ts +1 -0
- package/transpiled/directives/auth/Anyone.js +3 -0
- package/transpiled/directives/auth/Anyone.js.map +1 -1
- package/transpiled/directives/auth/Authorization.d.ts +28 -2
- package/transpiled/directives/auth/Authorization.js +87 -19
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +5 -0
- package/transpiled/directives/auth/Delegate.js +10 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Echo.d.ts +2 -0
- package/transpiled/directives/auth/Echo.js +4 -0
- package/transpiled/directives/auth/Echo.js.map +1 -1
- package/transpiled/directives/auth/Incept.d.ts +1 -1
- package/transpiled/directives/auth/Incept.js +13 -8
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +2 -0
- package/transpiled/directives/auth/Role.js +9 -0
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Rule.d.ts +5 -0
- package/transpiled/directives/auth/Rule.js +20 -0
- package/transpiled/directives/auth/Rule.js.map +1 -1
- package/transpiled/directives/auth/Scheme.d.ts +2 -0
- package/transpiled/directives/auth/Scheme.js +4 -0
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/schemes.d.ts +16 -4
- package/transpiled/directives/auth/schemes.js +20 -8
- package/transpiled/directives/auth/schemes.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +20 -2
- package/transpiled/directives/cache/Cache.d.ts +1 -1
- package/transpiled/directives/cache/Cache.js +10 -3
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.js +0 -2
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +1 -1
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/flow/Flow.d.ts +1 -1
- package/transpiled/directives/flow/Flow.js +1 -1
- package/transpiled/directives/flow/Flow.js.map +1 -1
- package/transpiled/directives/index.js +4 -2
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Directive.d.ts +1 -1
- package/transpiled/directives/io/IO.d.ts +7 -1
- package/transpiled/directives/io/IO.js +25 -3
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.d.ts +3 -2
- package/transpiled/directives/io/Input.js +2 -1
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Output.d.ts +5 -3
- package/transpiled/directives/io/Output.js +8 -3
- package/transpiled/directives/io/Output.js.map +1 -1
- package/transpiled/directives/io/Status.d.ts +19 -0
- package/transpiled/directives/io/Status.js +34 -0
- package/transpiled/directives/io/Status.js.map +1 -0
- package/transpiled/directives/io/Throttle.d.ts +1 -1
- package/transpiled/directives/io/Throttle.js +1 -1
- package/transpiled/directives/io/Throttle.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/Quotas.d.ts +1 -1
- package/transpiled/directives/io/lib/throttle/Quotas.js +2 -2
- package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -1
- package/transpiled/directives/map/Headers.d.ts +2 -0
- package/transpiled/directives/map/Headers.js +8 -0
- package/transpiled/directives/map/Headers.js.map +1 -1
- package/transpiled/directives/map/Map.d.ts +3 -1
- package/transpiled/directives/map/Map.js +7 -1
- package/transpiled/directives/map/Map.js.map +1 -1
- package/transpiled/directives/map/Mapping.d.ts +13 -0
- package/transpiled/directives/map/Mapping.js +20 -0
- package/transpiled/directives/map/Mapping.js.map +1 -1
- package/transpiled/directives/map/Segments.d.ts +3 -0
- package/transpiled/directives/map/Segments.js +9 -0
- package/transpiled/directives/map/Segments.js.map +1 -1
- package/transpiled/directives/mcp/MCP.d.ts +15 -0
- package/transpiled/directives/mcp/MCP.js +23 -0
- package/transpiled/directives/mcp/MCP.js.map +1 -0
- package/transpiled/directives/mcp/Tool.d.ts +13 -0
- package/transpiled/directives/mcp/Tool.js +23 -0
- package/transpiled/directives/mcp/Tool.js.map +1 -0
- package/transpiled/directives/mcp/index.d.ts +4 -0
- package/transpiled/directives/mcp/index.js +4 -0
- package/transpiled/directives/mcp/index.js.map +1 -0
- package/transpiled/directives/oauth/Discovery.d.ts +23 -0
- package/transpiled/directives/oauth/Discovery.js +55 -0
- package/transpiled/directives/oauth/Discovery.js.map +1 -0
- package/transpiled/directives/oauth/documents.d.ts +9 -0
- package/transpiled/directives/oauth/documents.js +82 -0
- package/transpiled/directives/oauth/documents.js.map +1 -0
- package/transpiled/directives/oauth/index.d.ts +2 -0
- package/transpiled/directives/oauth/index.js +3 -0
- package/transpiled/directives/oauth/index.js.map +1 -0
- package/transpiled/directives/octets/Octets.d.ts +1 -1
- package/transpiled/directives/octets/Octets.js +1 -1
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +1 -1
- package/transpiled/directives/require/Headers.d.ts +1 -1
- package/transpiled/directives/require/Headers.js +1 -1
- package/transpiled/directives/require/Headers.js.map +1 -1
- package/transpiled/directives/require/Require.d.ts +1 -1
- package/transpiled/directives/require/Require.js +2 -2
- package/transpiled/directives/require/Require.js.map +1 -1
- package/transpiled/index.d.ts +2 -0
- package/transpiled/schemas.d.ts +2 -0
- package/transpiled/schemas.js +1 -0
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/userland.d.ts +39 -0
- package/transpiled/userland.js +7 -0
- package/transpiled/userland.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/components/identity.bans/operations/transit.d.ts +0 -14
- package/components/identity.bans/operations/transit.js.map +0 -1
- package/components/identity.basic/operations/add.d.ts +0 -3
- package/components/identity.basic/operations/add.js.map +0 -1
- package/components/identity.basic/operations/authenticate.d.ts +0 -13
- package/components/identity.basic/operations/authenticate.js.map +0 -1
- package/components/identity.basic/operations/check.d.ts +0 -7
- package/components/identity.basic/operations/check.js.map +0 -1
- package/components/identity.basic/operations/delete.d.ts +0 -7
- package/components/identity.basic/operations/delete.js.map +0 -1
- package/components/identity.basic/operations/incept.d.ts +0 -12
- package/components/identity.basic/operations/incept.js.map +0 -1
- package/components/identity.basic/operations/info.d.ts +0 -10
- package/components/identity.basic/operations/info.js.map +0 -1
- package/components/identity.basic/operations/lib/credentials.d.ts +0 -5
- package/components/identity.basic/operations/lib/credentials.js.map +0 -1
- package/components/identity.basic/operations/transit.d.ts +0 -14
- package/components/identity.basic/operations/transit.js.map +0 -1
- package/components/identity.basic/operations/types.d.ts +0 -61
- package/components/identity.basic/operations/types.js +0 -2
- package/components/identity.basic/operations/types.js.map +0 -1
- package/components/identity.basic/source/types.ts +0 -69
- package/components/identity.credentials/operations/list.d.ts +0 -51
- package/components/identity.credentials/operations/list.js.map +0 -1
- package/components/identity.federation/operations/authenticate.d.ts +0 -16
- package/components/identity.federation/operations/authenticate.js.map +0 -1
- package/components/identity.federation/operations/create.d.ts +0 -8
- package/components/identity.federation/operations/create.js.map +0 -1
- package/components/identity.federation/operations/decode.d.ts +0 -3
- package/components/identity.federation/operations/decode.js.map +0 -1
- package/components/identity.federation/operations/delete.d.ts +0 -8
- package/components/identity.federation/operations/delete.js.map +0 -1
- package/components/identity.federation/operations/incept.d.ts +0 -11
- package/components/identity.federation/operations/incept.js.map +0 -1
- package/components/identity.federation/operations/lib/Configuration.d.ts +0 -39
- package/components/identity.federation/operations/lib/Configuration.js.map +0 -1
- package/components/identity.federation/operations/lib/Ctx.d.ts +0 -8
- package/components/identity.federation/operations/lib/Ctx.js.map +0 -1
- package/components/identity.federation/operations/lib/Payload.d.ts +0 -5
- package/components/identity.federation/operations/lib/Payload.js.map +0 -1
- package/components/identity.federation/operations/lib/decode.d.ts +0 -3
- package/components/identity.federation/operations/lib/decode.js.map +0 -1
- package/components/identity.federation/operations/lib/discovery.d.ts +0 -5
- package/components/identity.federation/operations/lib/discovery.js.map +0 -1
- package/components/identity.federation/operations/lib/errors.d.ts +0 -70
- package/components/identity.federation/operations/lib/errors.js.map +0 -1
- package/components/identity.federation/operations/lib/exchange.d.ts +0 -3
- package/components/identity.federation/operations/lib/exchange.js.map +0 -1
- package/components/identity.federation/operations/lib/index.d.ts +0 -4
- package/components/identity.federation/operations/lib/index.js.map +0 -1
- package/components/identity.federation/operations/lib/jose.d.ts +0 -1
- package/components/identity.federation/operations/lib/jose.js.map +0 -1
- package/components/identity.federation/operations/lib/resolve.d.ts +0 -3
- package/components/identity.federation/operations/lib/resolve.js.map +0 -1
- package/components/identity.federation/operations/list.d.ts +0 -7
- package/components/identity.federation/operations/list.js.map +0 -1
- package/components/identity.federation/operations/types/Scheme.d.ts +0 -1
- package/components/identity.federation/operations/types/Scheme.js.map +0 -1
- package/components/identity.federation/operations/types/configuration.d.ts +0 -22
- package/components/identity.federation/operations/types/configuration.js.map +0 -1
- package/components/identity.federation/operations/types/context.d.ts +0 -35
- package/components/identity.federation/operations/types/context.js.map +0 -1
- package/components/identity.federation/operations/types/entity.d.ts +0 -9
- package/components/identity.federation/operations/types/entity.js.map +0 -1
- package/components/identity.federation/operations/types/index.d.ts +0 -4
- package/components/identity.federation/operations/types/index.js.map +0 -1
- package/components/identity.keys/operations/create.d.ts +0 -22
- package/components/identity.keys/operations/create.js.map +0 -1
- package/components/identity.keys/operations/disable.d.ts +0 -5
- package/components/identity.keys/operations/disable.js.map +0 -1
- package/components/identity.keys/operations/revoke.d.ts +0 -15
- package/components/identity.keys/operations/revoke.js.map +0 -1
- package/components/identity.otp/operations/authenticate.d.ts +0 -12
- package/components/identity.otp/operations/authenticate.js.map +0 -1
- package/components/identity.otp/operations/issue.d.ts +0 -12
- package/components/identity.otp/operations/issue.js.map +0 -1
- package/components/identity.otp/operations/lib/Context.d.ts +0 -14
- package/components/identity.otp/operations/lib/Context.js.map +0 -1
- package/components/identity.otp/operations/lib/Entity.d.ts +0 -6
- package/components/identity.otp/operations/lib/Entity.js.map +0 -1
- package/components/identity.otp/operations/lib/index.d.ts +0 -1
- package/components/identity.otp/operations/lib/index.js.map +0 -1
- package/components/identity.passkeys/operations/authenticate.d.ts +0 -16
- package/components/identity.passkeys/operations/authenticate.js.map +0 -1
- package/components/identity.passkeys/operations/challenge.d.ts +0 -35
- package/components/identity.passkeys/operations/challenge.js.map +0 -1
- package/components/identity.passkeys/operations/create.d.ts +0 -19
- package/components/identity.passkeys/operations/create.js.map +0 -1
- package/components/identity.passkeys/operations/delete.d.ts +0 -8
- package/components/identity.passkeys/operations/delete.js.map +0 -1
- package/components/identity.passkeys/operations/lib/const.d.ts +0 -1
- package/components/identity.passkeys/operations/lib/const.js.map +0 -1
- package/components/identity.passkeys/operations/list.d.ts +0 -7
- package/components/identity.passkeys/operations/list.js.map +0 -1
- package/components/identity.passkeys/operations/types/Configuration.d.ts +0 -6
- package/components/identity.passkeys/operations/types/Configuration.js.map +0 -1
- package/components/identity.passkeys/operations/types/Context.d.ts +0 -15
- package/components/identity.passkeys/operations/types/Context.js.map +0 -1
- package/components/identity.passkeys/operations/types/Passkey.d.ts +0 -12
- package/components/identity.passkeys/operations/types/Passkey.js.map +0 -1
- package/components/identity.passkeys/operations/types/index.d.ts +0 -2
- package/components/identity.passkeys/operations/types/index.js.map +0 -1
- package/components/identity.passkeys/operations/use.d.ts +0 -16
- package/components/identity.passkeys/operations/use.js.map +0 -1
- package/components/identity.roles/operations/grant.d.ts +0 -10
- package/components/identity.roles/operations/grant.js.map +0 -1
- package/components/identity.roles/operations/lib/Entity.d.ts +0 -5
- package/components/identity.roles/operations/lib/Entity.js.map +0 -1
- package/components/identity.roles/operations/list.d.ts +0 -2
- package/components/identity.roles/operations/list.js.map +0 -1
- package/components/identity.roles/operations/principal.d.ts +0 -13
- package/components/identity.roles/operations/principal.js.map +0 -1
- package/components/identity.tokens/operations/authenticate.d.ts +0 -9
- package/components/identity.tokens/operations/authenticate.js.map +0 -1
- package/components/identity.tokens/operations/decrypt.d.ts +0 -15
- package/components/identity.tokens/operations/decrypt.js.map +0 -1
- package/components/identity.tokens/operations/encrypt.d.ts +0 -8
- package/components/identity.tokens/operations/encrypt.js.map +0 -1
- package/components/identity.tokens/operations/issue.d.ts +0 -24
- package/components/identity.tokens/operations/issue.js.map +0 -1
- package/components/identity.tokens/operations/lib/index.d.ts +0 -3
- package/components/identity.tokens/operations/lib/index.js.map +0 -1
- package/components/identity.tokens/operations/lib/jose.d.ts +0 -1
- package/components/identity.tokens/operations/lib/jose.js.map +0 -1
- package/components/identity.tokens/operations/lib/key.d.ts +0 -1
- package/components/identity.tokens/operations/lib/key.js.map +0 -1
- package/components/identity.tokens/operations/lib/pad.d.ts +0 -1
- package/components/identity.tokens/operations/lib/pad.js.map +0 -1
- package/components/identity.tokens/operations/lib/types.d.ts +0 -88
- package/components/identity.tokens/operations/lib/types.js +0 -2
- package/components/identity.tokens/operations/lib/types.js.map +0 -1
- package/components/identity.tokens/operations/revoke.d.ts +0 -2
- package/components/identity.tokens/operations/revoke.js.map +0 -1
- package/components/identity.tokens/source/lib/types.ts +0 -102
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# JSON-RPC
|
|
2
|
+
|
|
3
|
+
An application annotates it, and every resource it exposes answers as a procedure as well.
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
exposition:
|
|
7
|
+
rpc:
|
|
8
|
+
batch: 32
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Without it `/.rpc` is a path like any other, and nothing answers there. The path is fixed:
|
|
12
|
+
one an application could choose is one it could collide with a route of its own.
|
|
13
|
+
|
|
14
|
+
## The name
|
|
15
|
+
|
|
16
|
+
A procedure is an RTD method — a node and a verb — and its name is written the way the node is
|
|
17
|
+
declared: the route template, with a variable marked by a leading `_`, and the verb as the last
|
|
18
|
+
segment.
|
|
19
|
+
|
|
20
|
+
| route | verb | method |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| `/pots` | `GET` | `pots/GET` |
|
|
23
|
+
| `/pots` | `POST` | `pots/POST` |
|
|
24
|
+
| `/pots/:id` | `GET` | `pots/_id/GET` |
|
|
25
|
+
| `/identity/tokens/:identity` | `POST` | `identity/tokens/_identity/POST` |
|
|
26
|
+
| `/files/**` | `GET` | `files/__/GET` |
|
|
27
|
+
| `/` | `GET` | `GET` |
|
|
28
|
+
|
|
29
|
+
The verb is always the last segment, so `/pots/GET` answering `POST` is `pots/GET/POST` and
|
|
30
|
+
`/pots` answering `GET` is `pots/GET`. Nothing is declared to make a name: a re-mounted route is
|
|
31
|
+
a renamed procedure, because the name is the address.
|
|
32
|
+
|
|
33
|
+
## What has a name
|
|
34
|
+
|
|
35
|
+
A segment is addressed where it holds only `A-Z`, `a-z`, `0-9` and `-`. `_` is the name's own,
|
|
36
|
+
marking a variable, and `__` the rest of a path.
|
|
37
|
+
|
|
38
|
+
A route with a segment holding anything else — a `.`, a `_`, a `*`, a variable that is not one
|
|
39
|
+
word — has no name. It is served over HTTP as it always was; what it loses is the address, so
|
|
40
|
+
`/.rpc` cannot call it. Each is said once at startup, naming the route and the segment.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Route cannot be addressed as a procedure route=/pots/v1.0 segment=v1.0
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## The parameters
|
|
47
|
+
|
|
48
|
+
`params` is by name, and carries what a request carries.
|
|
49
|
+
|
|
50
|
+
A key the template names is a route variable, and is taken by the path. `query` is the
|
|
51
|
+
querystring. Whatever is left is the body.
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{"jsonrpc": "2.0", "id": 1, "method": "pots/_id/GET", "params": {"id": "a1b2"}}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{"jsonrpc": "2.0", "id": 2, "method": "pots/POST",
|
|
59
|
+
"params": {"title": "Kettle", "volume": 1.7}}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{"jsonrpc": "2.0", "id": 3, "method": "pots/GET",
|
|
64
|
+
"params": {"query": {"criteria": "volume=gt=1", "limit": 10}}}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The querystring has a name of its own because an operation's input is free to have an `id` or
|
|
68
|
+
a `limit`, and the two would otherwise be one object. An operation whose input has a property
|
|
69
|
+
named `query` cannot be called with one.
|
|
70
|
+
|
|
71
|
+
A variable stands for a single segment, so its value may not contain `/`, `?` or `#`. `__`
|
|
72
|
+
stands for the rest of the path and may contain `/`; its value is read under the name `**`,
|
|
73
|
+
which is what the RTD calls it wherever else it is read.
|
|
74
|
+
|
|
75
|
+
## What answers
|
|
76
|
+
|
|
77
|
+
The reply is the operation's, restricted by the same [`io:output`](io.md) as the resource's,
|
|
78
|
+
and encoded as the request's `accept` asks. A call that returned nothing answers `result: null`
|
|
79
|
+
— JSON-RPC has no 404, and nothing went wrong.
|
|
80
|
+
|
|
81
|
+
A call with no `id` is a notification: it runs and answers nothing, and a request carrying only
|
|
82
|
+
notifications answers `204`.
|
|
83
|
+
|
|
84
|
+
## Several at once
|
|
85
|
+
|
|
86
|
+
A request may carry an array of calls instead of one, and answers an array of what they
|
|
87
|
+
answered — shorter than what it was given, where some were notifications.
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
[{"jsonrpc": "2.0", "id": 1, "method": "pots/_id/GET", "params": {"id": "a1b2"}},
|
|
91
|
+
{"jsonrpc": "2.0", "method": "pots/_id/DELETE", "params": {"id": "c3d4"}}]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
They run one after another, in the order given. `batch` is how many one request may carry, 32
|
|
95
|
+
where the annotation does not say: a request is one authentication and one reply however many
|
|
96
|
+
calls it makes, so what a caller may ask for at once is bounded.
|
|
97
|
+
|
|
98
|
+
## What refuses
|
|
99
|
+
|
|
100
|
+
The whole request is refused, with a status, when it is not a request this endpoint serves: a
|
|
101
|
+
verb other than `POST` is `405`, an unreadable body is `400`, and an array that is empty or
|
|
102
|
+
longer than `batch` is `400`.
|
|
103
|
+
|
|
104
|
+
A call that is not one — a version it does not state, a method it does not name — is answered
|
|
105
|
+
to nobody: `id` is `null`, because nothing about it is trustworthy enough to answer to.
|
|
106
|
+
|
|
107
|
+
A credential is the request's, so a call cannot be refused for one: a request that presents
|
|
108
|
+
none where the procedure requires one is `401`, and carries the challenge that says where to
|
|
109
|
+
authenticate.
|
|
110
|
+
|
|
111
|
+
Everything else a call runs into is a value, at `200`, because the request itself succeeded.
|
|
112
|
+
|
|
113
|
+
| | |
|
|
114
|
+
| --- | --- |
|
|
115
|
+
| `-32601` | no route of that name, or no such verb on it |
|
|
116
|
+
| `-32602` | a variable is missing, or a query is not one |
|
|
117
|
+
| `-32000` | the identity is not authorized to make this call |
|
|
118
|
+
| `-32001` | the operation refused, its own code in `data.code` |
|
|
119
|
+
| `-32603` | anything the gateway did not mean to answer |
|
|
120
|
+
| `-32002` | the request carries more calls than `batch` |
|
|
121
|
+
|
|
122
|
+
The first five codes JSON-RPC states mean the same to every client. `-32000` and `-32001` are
|
|
123
|
+
this gateway's, from the block the specification reserves and leaves empty, so
|
|
124
|
+
`-32001` says only that an operation refused — `data.code` is the code that operation declares
|
|
125
|
+
in its manifest, and is what a caller reads.
|
|
126
|
+
|
|
127
|
+
## Authorization
|
|
128
|
+
|
|
129
|
+
A procedure is authorized as the resource is, against the path and the verb its name states.
|
|
130
|
+
A token restricted to `/pots/:id/` for `GET` authorizes `pots/_id/GET` and nothing else,
|
|
131
|
+
whichever way the call arrives.
|
|
132
|
+
|
|
133
|
+
[`anonymous`](access.md#anonymous) is the one directive that reads a call differently from a
|
|
134
|
+
request: it admits one whatever the request presented, because what refuses a credentialed request
|
|
135
|
+
is that the reply would not be cacheable, and what a call answers is not a reply.
|
|
136
|
+
|
|
137
|
+
## What has no procedure
|
|
138
|
+
|
|
139
|
+
`map:buffer` reads the request, and a call is not the request. A resource that declares it
|
|
140
|
+
answers over HTTP alone.
|
package/documentation/tree.md
CHANGED
|
@@ -71,6 +71,9 @@ Forwarding Route variables are mapped to the forwarded Route variables if they h
|
|
|
71
71
|
|
|
72
72
|
## Methods
|
|
73
73
|
|
|
74
|
+
Every Method is also addressable as a procedure, where the context annotates
|
|
75
|
+
[JSON-RPC](rpc.md).
|
|
76
|
+
|
|
74
77
|
Methods are mappings of the HTTP methods to the corresponding operations.
|
|
75
78
|
|
|
76
79
|
A Method is a key named after the corresponding HTTP method, with a value following the schema
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
@security
|
|
2
|
+
Feature: More than one provider claims Bearer
|
|
3
|
+
|
|
4
|
+
An OpenID `id_token` and a token this gateway issued are both presented as `Bearer`,
|
|
5
|
+
and only their own provider can verify either. The gateway asks each in turn.
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given local IDP is running
|
|
9
|
+
And the `identity.basic` database contains:
|
|
10
|
+
| _id | authority | username | password |
|
|
11
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
12
|
+
And the annotation:
|
|
13
|
+
"""yaml
|
|
14
|
+
/:
|
|
15
|
+
io:output: true
|
|
16
|
+
/hello/:id:
|
|
17
|
+
auth:id: id
|
|
18
|
+
GET:
|
|
19
|
+
dev:stub: Hello
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
Scenario: A token this gateway issued is presented as Bearer
|
|
23
|
+
When the following request is received:
|
|
24
|
+
"""
|
|
25
|
+
GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
26
|
+
host: nex.toa.io
|
|
27
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
28
|
+
accept: text/plain
|
|
29
|
+
"""
|
|
30
|
+
Then the following reply is sent:
|
|
31
|
+
"""
|
|
32
|
+
200 OK
|
|
33
|
+
authorization: Token ${{ token }}
|
|
34
|
+
content-type: text/plain
|
|
35
|
+
|
|
36
|
+
Hello
|
|
37
|
+
"""
|
|
38
|
+
When the following request is received:
|
|
39
|
+
"""
|
|
40
|
+
GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
41
|
+
host: nex.toa.io
|
|
42
|
+
authorization: Bearer ${{ token }}
|
|
43
|
+
accept: text/plain
|
|
44
|
+
"""
|
|
45
|
+
Then the following reply is sent:
|
|
46
|
+
"""
|
|
47
|
+
200 OK
|
|
48
|
+
content-type: text/plain
|
|
49
|
+
|
|
50
|
+
Hello
|
|
51
|
+
"""
|
|
52
|
+
# the token was answered by its own provider, so nothing rotates it
|
|
53
|
+
And the reply does not contain:
|
|
54
|
+
"""
|
|
55
|
+
authorization: Token
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
Scenario: A Bearer this gateway did not issue is answered by federation
|
|
59
|
+
Given the IDP token for Stranger is issued
|
|
60
|
+
When the following request is received:
|
|
61
|
+
"""
|
|
62
|
+
GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
63
|
+
host: nex.toa.io
|
|
64
|
+
authorization: Bearer ${{ Stranger.id_token }}
|
|
65
|
+
accept: text/plain
|
|
66
|
+
"""
|
|
67
|
+
# `identity.tokens` declines it, and federation rejects an issuer it does not trust
|
|
68
|
+
Then the following reply is sent:
|
|
69
|
+
"""
|
|
70
|
+
401 Unauthorized
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
Scenario: A malformed Bearer is rejected, not an error
|
|
74
|
+
When the following request is received:
|
|
75
|
+
"""
|
|
76
|
+
GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
77
|
+
host: nex.toa.io
|
|
78
|
+
authorization: Bearer not.a.token
|
|
79
|
+
accept: text/plain
|
|
80
|
+
"""
|
|
81
|
+
Then the following reply is sent:
|
|
82
|
+
"""
|
|
83
|
+
401 Unauthorized
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
Scenario: Both kinds of Bearer against one authority
|
|
87
|
+
Given the `identity.federation` configuration:
|
|
88
|
+
"""yaml
|
|
89
|
+
trust:
|
|
90
|
+
- iss: http://localhost:44444
|
|
91
|
+
aud: test
|
|
92
|
+
"""
|
|
93
|
+
And the IDP token for User is issued
|
|
94
|
+
When the following request is received:
|
|
95
|
+
"""
|
|
96
|
+
GET /identity/ HTTP/1.1
|
|
97
|
+
host: nex.toa.io
|
|
98
|
+
authorization: Bearer ${{ User.id_token }}
|
|
99
|
+
accept: application/yaml
|
|
100
|
+
"""
|
|
101
|
+
Then the following reply is sent:
|
|
102
|
+
"""
|
|
103
|
+
200 OK
|
|
104
|
+
authorization: Token ${{ federated }}
|
|
105
|
+
|
|
106
|
+
id: ${{ User.id }}
|
|
107
|
+
"""
|
|
108
|
+
When the following request is received:
|
|
109
|
+
"""
|
|
110
|
+
GET /identity/ HTTP/1.1
|
|
111
|
+
host: nex.toa.io
|
|
112
|
+
authorization: Bearer ${{ federated }}
|
|
113
|
+
accept: application/yaml
|
|
114
|
+
"""
|
|
115
|
+
Then the following reply is sent:
|
|
116
|
+
"""
|
|
117
|
+
200 OK
|
|
118
|
+
|
|
119
|
+
id: ${{ User.id }}
|
|
120
|
+
"""
|
package/features/cache.feature
CHANGED
|
@@ -320,3 +320,49 @@ Feature: Caching
|
|
|
320
320
|
200 OK
|
|
321
321
|
cache-control: private, no-cache
|
|
322
322
|
"""
|
|
323
|
+
|
|
324
|
+
Scenario: An exact value is set whatever the method
|
|
325
|
+
Given the annotation:
|
|
326
|
+
"""yaml
|
|
327
|
+
/:
|
|
328
|
+
io:output: true
|
|
329
|
+
/tokens/:
|
|
330
|
+
anonymous: true
|
|
331
|
+
cache:exact: no-store
|
|
332
|
+
POST:
|
|
333
|
+
dev:stub: issued
|
|
334
|
+
"""
|
|
335
|
+
When the following request is received:
|
|
336
|
+
"""
|
|
337
|
+
POST /tokens/ HTTP/1.1
|
|
338
|
+
host: nex.toa.io
|
|
339
|
+
accept: text/plain
|
|
340
|
+
"""
|
|
341
|
+
# whether a reply may be stored is not a question about the method's cacheability
|
|
342
|
+
Then the following reply is sent:
|
|
343
|
+
"""
|
|
344
|
+
201 Created
|
|
345
|
+
cache-control: no-store
|
|
346
|
+
"""
|
|
347
|
+
|
|
348
|
+
Scenario: Cacheability is still asked of safe methods only
|
|
349
|
+
Given the annotation:
|
|
350
|
+
"""yaml
|
|
351
|
+
/:
|
|
352
|
+
io:output: true
|
|
353
|
+
/notes/:
|
|
354
|
+
anonymous: true
|
|
355
|
+
cache:control: max-age=60000, public
|
|
356
|
+
POST:
|
|
357
|
+
dev:stub: created
|
|
358
|
+
"""
|
|
359
|
+
When the following request is received:
|
|
360
|
+
"""
|
|
361
|
+
POST /notes/ HTTP/1.1
|
|
362
|
+
host: nex.toa.io
|
|
363
|
+
accept: text/plain
|
|
364
|
+
"""
|
|
365
|
+
Then the reply does not contain:
|
|
366
|
+
"""
|
|
367
|
+
cache-control:
|
|
368
|
+
"""
|
|
@@ -323,6 +323,50 @@ Feature: Basic authentication
|
|
|
323
323
|
message: Principal username cannot be changed
|
|
324
324
|
"""
|
|
325
325
|
|
|
326
|
+
Scenario: A Principal incepted by its own credentials holds the role at once
|
|
327
|
+
Given the `identity.basic` database is empty
|
|
328
|
+
And the `identity.basic` configuration:
|
|
329
|
+
"""yaml
|
|
330
|
+
principal:
|
|
331
|
+
authority: nex
|
|
332
|
+
username: root
|
|
333
|
+
"""
|
|
334
|
+
And the annotation:
|
|
335
|
+
"""yaml
|
|
336
|
+
/:
|
|
337
|
+
io:output: true
|
|
338
|
+
GET:
|
|
339
|
+
auth:role: system:stub
|
|
340
|
+
dev:stub:
|
|
341
|
+
access: granted!
|
|
342
|
+
"""
|
|
343
|
+
# the token the inception replies with carries the roles the Identity has by then
|
|
344
|
+
When the following request is received:
|
|
345
|
+
"""
|
|
346
|
+
POST /identity/ HTTP/1.1
|
|
347
|
+
host: nex.toa.io
|
|
348
|
+
authorization: Basic cm9vdDpzZWNyZXQjMTIzNA==
|
|
349
|
+
accept: application/yaml
|
|
350
|
+
"""
|
|
351
|
+
Then the following reply is sent:
|
|
352
|
+
"""
|
|
353
|
+
201 Created
|
|
354
|
+
authorization: Token ${{ token }}
|
|
355
|
+
"""
|
|
356
|
+
When the following request is received:
|
|
357
|
+
"""
|
|
358
|
+
GET / HTTP/1.1
|
|
359
|
+
host: nex.toa.io
|
|
360
|
+
authorization: Token ${{ token }}
|
|
361
|
+
accept: application/yaml
|
|
362
|
+
"""
|
|
363
|
+
Then the following reply is sent:
|
|
364
|
+
"""
|
|
365
|
+
200 OK
|
|
366
|
+
|
|
367
|
+
access: granted!
|
|
368
|
+
"""
|
|
369
|
+
|
|
326
370
|
Scenario: Principal username in another authority is ordinary credentials
|
|
327
371
|
Given the `identity.basic` configuration:
|
|
328
372
|
"""yaml
|
|
@@ -197,16 +197,13 @@ Feature: Identity Federation
|
|
|
197
197
|
id: ${{ root.id }}
|
|
198
198
|
"""
|
|
199
199
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
# the role is checked over the id token: a Token carries the roles held when it
|
|
203
|
-
# was issued, and this one was issued before the grant
|
|
200
|
+
# the Role is granted before the reply, so the Token that reply carries holds it
|
|
204
201
|
When the following request is received:
|
|
205
202
|
"""
|
|
206
203
|
GET /identity/ HTTP/1.1
|
|
207
204
|
host: nex.toa.io
|
|
208
205
|
accept: application/yaml
|
|
209
|
-
authorization:
|
|
206
|
+
authorization: Token ${{ root.token }}
|
|
210
207
|
"""
|
|
211
208
|
Then the following reply is sent:
|
|
212
209
|
"""
|