@toa.io/extensions.exposition 1.0.0-alpha.291 → 1.0.0-alpha.293
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/identity.basic/package.json +8 -0
- package/components/identity.federation/package.json +8 -0
- package/components/identity.passkeys/package.json +8 -0
- package/components/identity.tokens/package.json +10 -0
- package/package.json +25 -13
- package/transpiled/Discovery/Explorer.js +1 -1
- package/transpiled/Discovery/Explorer.js.map +1 -1
- package/transpiled/Discovery/Site.js +1 -1
- package/transpiled/Discovery/Site.js.map +1 -1
- package/transpiled/Discovery/trunk.js +1 -1
- package/transpiled/Discovery/trunk.js.map +1 -1
- package/transpiled/Endpoint.js +3 -0
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.js +1 -1
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.js +1 -1
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +1 -1
- package/transpiled/HTTP/Server.js +1 -1
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/Introspection.d.ts +6 -0
- package/transpiled/Introspection.js +1 -0
- package/transpiled/Introspection.js.map +1 -1
- package/transpiled/MCP/Server.d.ts +1 -1
- package/transpiled/MCP/Server.js +1 -1
- package/transpiled/MCP/Server.js.map +1 -1
- package/transpiled/MCP/discover.d.ts +1 -1
- package/transpiled/MCP/schema.js +2 -2
- package/transpiled/Query.d.ts +2 -12
- package/transpiled/Query.js +3 -13
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RPC/Dispatcher.d.ts +1 -1
- package/transpiled/RPC/Dispatcher.js +2 -2
- package/transpiled/RPC/Dispatcher.js.map +1 -1
- package/transpiled/RTD/Endpoint.d.ts +2 -3
- package/transpiled/RTD/Tree.js +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js +1 -1
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/syntax/index.d.ts +1 -2
- package/transpiled/RTD/syntax/index.js +1 -2
- package/transpiled/RTD/syntax/index.js.map +1 -1
- package/transpiled/Tenant.js +1 -1
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/directives/auth/Authorization.js +1 -1
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/io/IO.js +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/oauth/documents.d.ts +1 -1
- package/transpiled/index.d.ts +0 -2
- package/transpiled/index.js +0 -2
- package/transpiled/index.js.map +1 -1
- package/transpiled/service.js +1 -1
- package/transpiled/service.js.map +1 -1
- package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
- package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
- package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
- package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
- package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
- package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
- package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
- package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
- package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
- package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
- package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
- package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
- package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
- package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
- package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
- package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +12 -12
- package/CHANGELOG.md +0 -35
- package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
- package/components/identity.basic/source/lib/credentials.test.ts +0 -18
- package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
- package/components/identity.clients/source/lib/canonical.test.ts +0 -43
- package/components/identity.clients/source/lib/cimd.test.ts +0 -122
- package/components/identity.clients/source/lib/redirect.test.ts +0 -47
- package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
- package/components/identity.credentials/source/list.test.ts +0 -70
- package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
- package/components/identity.federation/source/lib/discovery.test.ts +0 -60
- package/components/identity.federation/source/list.test.ts +0 -41
- package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
- package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
- package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
- package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
- package/components/identity.passkeys/source/errors.test.ts +0 -34
- package/components/identity.passkeys/source/webauthn.test.ts +0 -26
- package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
- package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
- package/components/identity.tokens/source/authenticate.test.ts +0 -112
- package/components/identity.tokens/source/decrypt.test.ts +0 -216
- package/components/identity.tokens/source/encrypt.test.ts +0 -150
- package/components/identity.tokens/source/issue.test.ts +0 -73
- package/components/identity.tokens/source/lib/form.test.ts +0 -25
- package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
- package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
- package/context.toa.yaml +0 -31
- package/cucumber.mjs +0 -7
- package/documentation/.assets/ia3-dark.jpg +0 -0
- package/documentation/.assets/ia3-light.jpg +0 -0
- package/documentation/.assets/overview-dark.jpg +0 -0
- package/documentation/.assets/overview-light.jpg +0 -0
- package/documentation/.assets/role-scopes-dark.jpg +0 -0
- package/documentation/.assets/role-scopes-light.jpg +0 -0
- package/documentation/.assets/rtd-dark.jpg +0 -0
- package/documentation/.assets/rtd-light.jpg +0 -0
- package/documentation/access.md +0 -350
- package/documentation/authorities.md +0 -51
- package/documentation/cache.md +0 -72
- package/documentation/components.md +0 -472
- package/documentation/consent.md +0 -101
- package/documentation/credentials.md +0 -88
- package/documentation/dev.md +0 -30
- package/documentation/discovery.md +0 -81
- package/documentation/flow.md +0 -44
- package/documentation/help.md +0 -122
- package/documentation/identity.md +0 -304
- package/documentation/introspection.md +0 -123
- package/documentation/io.md +0 -167
- package/documentation/ip.md +0 -24
- package/documentation/map.md +0 -123
- package/documentation/mcp.md +0 -183
- package/documentation/notes/desync.jpg +0 -0
- package/documentation/notes/peers.md +0 -59
- package/documentation/notes/sse.md +0 -71
- package/documentation/notes/throttling.md +0 -122
- package/documentation/oauth.md +0 -180
- package/documentation/octets.md +0 -334
- package/documentation/passkeys.md +0 -11
- package/documentation/protocol.md +0 -120
- package/documentation/query.md +0 -324
- package/documentation/require.md +0 -15
- package/documentation/rpc.md +0 -154
- package/documentation/tracing.md +0 -70
- package/documentation/tree.md +0 -199
- package/features/access.feature +0 -596
- package/features/annotation.feature +0 -32
- package/features/auth.assert.feature +0 -55
- package/features/auth.bearer.feature +0 -120
- package/features/auth.claims.feature +0 -171
- package/features/auth.incept.feature +0 -166
- package/features/auth.input.feature +0 -59
- package/features/authorities.basic.feature +0 -141
- package/features/authorities.feature +0 -71
- package/features/authorities.federation.feature +0 -100
- package/features/authorities.tokens.feature +0 -117
- package/features/body.feature +0 -76
- package/features/cache.feature +0 -368
- package/features/configuration.feature +0 -206
- package/features/cors.feature +0 -127
- package/features/credentials.feature +0 -106
- package/features/debug.feature +0 -34
- package/features/dev.feature +0 -90
- package/features/directives.feature +0 -61
- package/features/discovery.feature +0 -213
- package/features/discovery.ui.feature +0 -213
- package/features/dynamic.feature +0 -192
- package/features/errors.feature +0 -258
- package/features/etag.feature +0 -239
- package/features/flow.feature +0 -148
- package/features/help.feature +0 -512
- package/features/identity.bans.feature +0 -200
- package/features/identity.basic.feature +0 -666
- package/features/identity.feature +0 -240
- package/features/identity.federation.feature +0 -396
- package/features/identity.otp.feature +0 -142
- package/features/identity.roles.feature +0 -568
- package/features/identity.tokens.custom.feature +0 -430
- package/features/identity.tokens.feature +0 -131
- package/features/interruptions.feature +0 -20
- package/features/introspection.feature +0 -565
- package/features/introspection.map.feature +0 -108
- package/features/io.feature +0 -204
- package/features/io.throttle.feature +0 -166
- package/features/map.feature +0 -360
- package/features/mcp.feature +0 -753
- package/features/methods.feature +0 -48
- package/features/oauth.clients.feature +0 -195
- package/features/oauth.discovery.feature +0 -164
- package/features/oauth.grants.feature +0 -301
- package/features/octets.cloudinary.feature +0 -233
- package/features/octets.download.feature +0 -194
- package/features/octets.entries.feature +0 -83
- package/features/octets.feature +0 -306
- package/features/octets.head.feature +0 -40
- package/features/octets.location.feature +0 -83
- package/features/octets.meta.feature +0 -117
- package/features/octets.workflows.feature +0 -565
- package/features/passkeys.feature +0 -66
- package/features/probes.feature +0 -18
- package/features/query.feature +0 -389
- package/features/realtime.feature +0 -34
- package/features/require.feature +0 -66
- package/features/response.feature +0 -103
- package/features/routes.feature +0 -224
- package/features/rpc.feature +0 -429
- package/features/server.feature +0 -21
- package/features/site/_app/immutable/asset.js +0 -1
- package/features/site/favicon.ico +0 -0
- package/features/site/index.html +0 -10
- package/features/steps/.env.example +0 -5
- package/features/steps/Captures.ts +0 -20
- package/features/steps/Cloudinary.ts +0 -12
- package/features/steps/Common.ts +0 -38
- package/features/steps/Components.ts +0 -115
- package/features/steps/Database.ts +0 -106
- package/features/steps/Gateway.ts +0 -240
- package/features/steps/HTTP.ts +0 -96
- package/features/steps/IDP.ts +0 -361
- package/features/steps/Identity.ts +0 -54
- package/features/steps/OTP.ts +0 -42
- package/features/steps/Parameters.ts +0 -162
- package/features/steps/Probe.ts +0 -38
- package/features/steps/Realtime.ts +0 -175
- package/features/steps/Workspace.ts +0 -48
- package/features/steps/components/audit/manifest.toa.yaml +0 -20
- package/features/steps/components/audit/operations/record.js +0 -5
- package/features/steps/components/echo/manifest.toa.yaml +0 -59
- package/features/steps/components/echo/operations/affect.js +0 -3
- package/features/steps/components/echo/operations/compute.js +0 -3
- package/features/steps/components/echo/operations/echo.js +0 -3
- package/features/steps/components/echo/operations/error.js +0 -7
- package/features/steps/components/echo/operations/identity.js +0 -3
- package/features/steps/components/echo/operations/parameters.js +0 -3
- package/features/steps/components/echo/operations/ping.js +0 -3
- package/features/steps/components/echo/operations/unwrap.js +0 -3
- package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
- package/features/steps/components/echo.beacon/operations/hello.js +0 -3
- package/features/steps/components/greeter/manifest.toa.yaml +0 -5
- package/features/steps/components/greeter/operations/greet.js +0 -3
- package/features/steps/components/notify/manifest.toa.yaml +0 -20
- package/features/steps/components/notify/operations/send.js +0 -5
- package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
- package/features/steps/components/octets.tester/operations/authority.js +0 -3
- package/features/steps/components/octets.tester/operations/bar.js +0 -9
- package/features/steps/components/octets.tester/operations/baz.js +0 -9
- package/features/steps/components/octets.tester/operations/concat.js +0 -5
- package/features/steps/components/octets.tester/operations/echo.js +0 -5
- package/features/steps/components/octets.tester/operations/err.js +0 -14
- package/features/steps/components/octets.tester/operations/foo.js +0 -5
- package/features/steps/components/octets.tester/operations/id.js +0 -5
- package/features/steps/components/octets.tester/operations/identity.js +0 -5
- package/features/steps/components/octets.tester/operations/lenna.png +0 -0
- package/features/steps/components/octets.tester/operations/redirect.js +0 -17
- package/features/steps/components/octets.tester/operations/yex.js +0 -14
- package/features/steps/components/octets.tester/operations/yield.js +0 -11
- package/features/steps/components/orders/manifest.toa.yaml +0 -30
- package/features/steps/components/orders/operations/create.js +0 -7
- package/features/steps/components/pots/manifest.toa.yaml +0 -91
- package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
- package/features/steps/components/pricing/manifest.toa.yaml +0 -13
- package/features/steps/components/pricing/operations/quote.js +0 -3
- package/features/steps/components/sequences/manifest.toa.yaml +0 -11
- package/features/steps/components/sequences/operations/numbers.js +0 -5
- package/features/steps/components/sequences/operations/tokens.js +0 -14
- package/features/steps/components/users/manifest.toa.yaml +0 -30
- package/features/steps/components/users/operations/create.js +0 -11
- package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
- package/features/steps/map.ts +0 -30
- package/features/steps/tsconfig.json +0 -9
- package/features/streams.feature +0 -35
- package/features/timestamps.feature +0 -41
- package/features/timing.feature +0 -49
- package/features/tracing.feature +0 -123
- package/schemas/annotation.cos.yaml +0 -125
- package/schemas/call.cos.yaml +0 -18
- package/schemas/directive.cos.yaml +0 -7
- package/schemas/method.cos.yaml +0 -23
- package/schemas/node.cos.yaml +0 -22
- package/schemas/query.cos.yaml +0 -31
- package/schemas/querystring.cos.yaml +0 -19
- package/schemas/range.cos.yaml +0 -10
- package/schemas/route.cos.yaml +0 -6
- package/source/Annotation.ts +0 -89
- package/source/Branch.test.ts +0 -40
- package/source/Branch.ts +0 -44
- package/source/Composition.ts +0 -51
- package/source/Context.ts +0 -11
- package/source/Directive.test.ts +0 -199
- package/source/Directive.ts +0 -248
- package/source/Discovery/Explorer.ts +0 -34
- package/source/Discovery/Site.test.ts +0 -147
- package/source/Discovery/Site.ts +0 -202
- package/source/Discovery/index.ts +0 -3
- package/source/Discovery/tree.test.ts +0 -175
- package/source/Discovery/tree.ts +0 -77
- package/source/Discovery/trunk.ts +0 -33
- package/source/Endpoint.test.ts +0 -67
- package/source/Endpoint.ts +0 -157
- package/source/Factory.ts +0 -42
- package/source/Gateway.ts +0 -390
- package/source/HTTP/Context.ts +0 -143
- package/source/HTTP/Probe.ts +0 -99
- package/source/HTTP/Server.ts +0 -430
- package/source/HTTP/Timing.ts +0 -14
- package/source/HTTP/address.test.ts +0 -28
- package/source/HTTP/address.ts +0 -16
- package/source/HTTP/exceptions.ts +0 -99
- package/source/HTTP/formats/form.ts +0 -21
- package/source/HTTP/formats/index.ts +0 -36
- package/source/HTTP/formats/json.ts +0 -14
- package/source/HTTP/formats/msgpack.ts +0 -14
- package/source/HTTP/formats/text.ts +0 -10
- package/source/HTTP/formats/yaml.test.ts +0 -22
- package/source/HTTP/formats/yaml.ts +0 -40
- package/source/HTTP/index.ts +0 -6
- package/source/HTTP/messages.test.ts +0 -196
- package/source/HTTP/messages.ts +0 -186
- package/source/HTTP/types.ts +0 -39
- package/source/Interception.ts +0 -37
- package/source/Introspection.ts +0 -179
- package/source/MCP/Server.ts +0 -335
- package/source/MCP/discover.ts +0 -51
- package/source/MCP/errors.ts +0 -80
- package/source/MCP/index.ts +0 -1
- package/source/MCP/schema.test.ts +0 -91
- package/source/MCP/schema.ts +0 -94
- package/source/MCP/tools.ts +0 -144
- package/source/MCP/types.ts +0 -84
- package/source/Mapping.ts +0 -101
- package/source/Query.test.ts +0 -54
- package/source/Query.ts +0 -277
- package/source/RPC/Context.ts +0 -75
- package/source/RPC/Dispatcher.ts +0 -150
- package/source/RPC/errors.test.ts +0 -77
- package/source/RPC/errors.ts +0 -82
- package/source/RPC/index.ts +0 -1
- package/source/RPC/names.test.ts +0 -141
- package/source/RPC/names.ts +0 -176
- package/source/RPC/types.ts +0 -34
- package/source/RTD/Context.ts +0 -16
- package/source/RTD/Directives.ts +0 -126
- package/source/RTD/Endpoint.ts +0 -27
- package/source/RTD/Match.ts +0 -11
- package/source/RTD/Method.ts +0 -39
- package/source/RTD/Node.ts +0 -169
- package/source/RTD/Route.ts +0 -93
- package/source/RTD/Tree.ts +0 -137
- package/source/RTD/expiration.test.ts +0 -81
- package/source/RTD/factory.ts +0 -105
- package/source/RTD/index.ts +0 -8
- package/source/RTD/segment.test.ts +0 -35
- package/source/RTD/segment.ts +0 -51
- package/source/RTD/syntax/index.ts +0 -2
- package/source/RTD/syntax/parse.test.ts +0 -196
- package/source/RTD/syntax/parse.ts +0 -171
- package/source/RTD/syntax/types.ts +0 -69
- package/source/RTD/walk.test.ts +0 -147
- package/source/Remotes.test.ts +0 -79
- package/source/Remotes.ts +0 -39
- package/source/Tenant.ts +0 -73
- package/source/const.ts +0 -45
- package/source/deployment.ts +0 -96
- package/source/directives/auth/Anonymous.test.ts +0 -70
- package/source/directives/auth/Anonymous.ts +0 -36
- package/source/directives/auth/Anyone.ts +0 -23
- package/source/directives/auth/Assert.ts +0 -43
- package/source/directives/auth/Authorization.test.ts +0 -24
- package/source/directives/auth/Authorization.ts +0 -388
- package/source/directives/auth/Delegate.test.ts +0 -36
- package/source/directives/auth/Delegate.ts +0 -54
- package/source/directives/auth/Echo.ts +0 -24
- package/source/directives/auth/Federation.ts +0 -104
- package/source/directives/auth/Id.ts +0 -37
- package/source/directives/auth/Incept.ts +0 -117
- package/source/directives/auth/Input.ts +0 -92
- package/source/directives/auth/Role.test.ts +0 -147
- package/source/directives/auth/Role.ts +0 -99
- package/source/directives/auth/Rule.ts +0 -59
- package/source/directives/auth/Scheme.ts +0 -31
- package/source/directives/auth/create.ts +0 -11
- package/source/directives/auth/index.ts +0 -3
- package/source/directives/auth/schemes.test.ts +0 -18
- package/source/directives/auth/schemes.ts +0 -39
- package/source/directives/auth/split.ts +0 -14
- package/source/directives/auth/types.ts +0 -75
- package/source/directives/cache/Cache.ts +0 -92
- package/source/directives/cache/Control.ts +0 -81
- package/source/directives/cache/Exact.ts +0 -7
- package/source/directives/cache/etag.ts +0 -38
- package/source/directives/cache/index.ts +0 -3
- package/source/directives/cache/types.ts +0 -9
- package/source/directives/cors/CORS.test.ts +0 -75
- package/source/directives/cors/CORS.ts +0 -88
- package/source/directives/cors/index.ts +0 -3
- package/source/directives/dev/Development.ts +0 -41
- package/source/directives/dev/Faulty.ts +0 -31
- package/source/directives/dev/Sleep.ts +0 -53
- package/source/directives/dev/Stub.ts +0 -14
- package/source/directives/dev/Throw.ts +0 -14
- package/source/directives/dev/index.ts +0 -3
- package/source/directives/dev/types.ts +0 -5
- package/source/directives/flow/Compose.ts +0 -98
- package/source/directives/flow/Fetch.ts +0 -86
- package/source/directives/flow/Flow.ts +0 -43
- package/source/directives/flow/index.ts +0 -3
- package/source/directives/flow/types.ts +0 -7
- package/source/directives/help/Family.ts +0 -122
- package/source/directives/help/Help.test.ts +0 -227
- package/source/directives/help/Help.ts +0 -47
- package/source/directives/help/Parameters.ts +0 -47
- package/source/directives/help/described.ts +0 -57
- package/source/directives/help/index.ts +0 -45
- package/source/directives/index.ts +0 -33
- package/source/directives/io/Directive.ts +0 -17
- package/source/directives/io/IO.ts +0 -118
- package/source/directives/io/Input.ts +0 -55
- package/source/directives/io/Message.ts +0 -1
- package/source/directives/io/Output.ts +0 -81
- package/source/directives/io/Status.test.ts +0 -88
- package/source/directives/io/Status.ts +0 -47
- package/source/directives/io/Throttle.ts +0 -30
- package/source/directives/io/index.ts +0 -3
- package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
- package/source/directives/io/lib/throttle/Configuration.ts +0 -68
- package/source/directives/io/lib/throttle/Keys.ts +0 -53
- package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
- package/source/directives/io/lib/throttle/Quotas.ts +0 -190
- package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
- package/source/directives/io/lib/throttle/Sync.ts +0 -93
- package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
- package/source/directives/io/lib/throttle/Warning.ts +0 -29
- package/source/directives/io/lib/throttle/components/Component.ts +0 -7
- package/source/directives/io/lib/throttle/components/IP.ts +0 -30
- package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
- package/source/directives/io/lib/throttle/components/Path.ts +0 -8
- package/source/directives/io/lib/throttle/components/Route.ts +0 -19
- package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
- package/source/directives/io/lib/throttle/components/index.ts +0 -19
- package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
- package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
- package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
- package/source/directives/io/lib/throttle/index.ts +0 -4
- package/source/directives/io/schemas.test.ts +0 -40
- package/source/directives/io/schemas.ts +0 -16
- package/source/directives/map/Authority.ts +0 -15
- package/source/directives/map/Buffer.ts +0 -15
- package/source/directives/map/Claims.ts +0 -63
- package/source/directives/map/Directive.ts +0 -4
- package/source/directives/map/Headers.ts +0 -60
- package/source/directives/map/Language.ts +0 -45
- package/source/directives/map/Languages.ts +0 -17
- package/source/directives/map/Map.ts +0 -85
- package/source/directives/map/Mapping.ts +0 -45
- package/source/directives/map/Properties.ts +0 -15
- package/source/directives/map/Segments.ts +0 -52
- package/source/directives/map/index.ts +0 -3
- package/source/directives/mcp/MCP.ts +0 -33
- package/source/directives/mcp/Tool.test.ts +0 -56
- package/source/directives/mcp/Tool.ts +0 -32
- package/source/directives/mcp/index.ts +0 -6
- package/source/directives/oauth/Discovery.ts +0 -66
- package/source/directives/oauth/documents.ts +0 -110
- package/source/directives/oauth/index.ts +0 -3
- package/source/directives/octets/Context.ts +0 -23
- package/source/directives/octets/Delete.ts +0 -96
- package/source/directives/octets/Directive.ts +0 -21
- package/source/directives/octets/Get.ts +0 -88
- package/source/directives/octets/Octets.ts +0 -82
- package/source/directives/octets/Put.ts +0 -186
- package/source/directives/octets/Workflow.ts +0 -60
- package/source/directives/octets/bytes.test.ts +0 -33
- package/source/directives/octets/bytes.ts +0 -18
- package/source/directives/octets/index.ts +0 -3
- package/source/directives/octets/schemas.test.ts +0 -20
- package/source/directives/octets/schemas.ts +0 -15
- package/source/directives/octets/types.ts +0 -9
- package/source/directives/octets/workflows/Execution.ts +0 -130
- package/source/directives/octets/workflows/Workflow.ts +0 -51
- package/source/directives/octets/workflows/index.ts +0 -1
- package/source/directives/require/Directive.ts +0 -5
- package/source/directives/require/Headers.ts +0 -19
- package/source/directives/require/Require.ts +0 -27
- package/source/directives/require/index.ts +0 -3
- package/source/discovery.ts +0 -1
- package/source/exceptions.ts +0 -47
- package/source/index.ts +0 -12
- package/source/io.ts +0 -4
- package/source/manifest.test.ts +0 -56
- package/source/manifest.ts +0 -56
- package/source/octets.d.ts +0 -17
- package/source/root.ts +0 -59
- package/source/schemas.test.ts +0 -31
- package/source/schemas.ts +0 -15
- package/source/service.ts +0 -94
- package/source/shortcuts.ts +0 -14
- package/source/userland.ts +0 -47
- package/transpiled/Annotation.d.ts +0 -70
- package/transpiled/Annotation.js +0 -2
- package/transpiled/Annotation.js.map +0 -1
- package/transpiled/RTD/syntax/parse.d.ts +0 -4
- package/transpiled/RTD/syntax/parse.js +0 -112
- package/transpiled/RTD/syntax/parse.js.map +0 -1
- package/transpiled/RTD/syntax/types.d.ts +0 -52
- package/transpiled/RTD/syntax/types.js +0 -11
- package/transpiled/RTD/syntax/types.js.map +0 -1
- package/transpiled/const.d.ts +0 -36
- package/transpiled/const.js +0 -37
- package/transpiled/const.js.map +0 -1
- package/transpiled/deployment.d.ts +0 -6
- package/transpiled/deployment.js +0 -76
- package/transpiled/deployment.js.map +0 -1
- package/transpiled/manifest.d.ts +0 -3
- package/transpiled/manifest.js +0 -39
- package/transpiled/manifest.js.map +0 -1
- package/transpiled/schemas.d.ts +0 -9
- package/transpiled/schemas.js +0 -9
- package/transpiled/schemas.js.map +0 -1
- package/transpiled/shortcuts.d.ts +0 -3
- package/transpiled/shortcuts.js +0 -13
- package/transpiled/shortcuts.js.map +0 -1
- package/tsconfig.json +0 -13
- package/tsconfig.tsbuildinfo +0 -1
- package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
- package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
- package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
- package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
- package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
- package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
- package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
- package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
- package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
- package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# Protocol Support
|
|
2
|
-
|
|
3
|
-
## Media types
|
|
4
|
-
|
|
5
|
-
The following media types are supported for both requests and responses:
|
|
6
|
-
|
|
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
|
-
- `text/plain`
|
|
11
|
-
|
|
12
|
-
A request may also be sent as `application/x-www-form-urlencoded`. A form is read and never
|
|
13
|
-
written, so it is not a format a response is negotiated to. A name repeated in a form is read as
|
|
14
|
-
the list it is.
|
|
15
|
-
|
|
16
|
-
The response format is determined by content negotiation
|
|
17
|
-
using [negotiator](https://github.com/jshttp/negotiator).
|
|
18
|
-
|
|
19
|
-
```http
|
|
20
|
-
GET / HTTP/1.1
|
|
21
|
-
accept: application/yaml
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
200 OK
|
|
26
|
-
content-type: application/yaml
|
|
27
|
-
|
|
28
|
-
foo: bar
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Multipart types
|
|
32
|
-
|
|
33
|
-
Multipart responses are encoded using content negotiation,
|
|
34
|
-
and the `content-type` of the response is set to one of the custom `multipart/` subtypes,
|
|
35
|
-
corresponding to the type of
|
|
36
|
-
the parts:
|
|
37
|
-
|
|
38
|
-
| Response type | Part type |
|
|
39
|
-
| ------------------- | --------------------- |
|
|
40
|
-
| `multipart/msgpack` | `application/msgpack` |
|
|
41
|
-
| `multipart/yaml` | `application/yaml` |
|
|
42
|
-
| `multipart/json` | `application/json` |
|
|
43
|
-
| `multipart/text` | `text/plain` |
|
|
44
|
-
|
|
45
|
-
Multipart responses are started with a text chunk `ACK`, and finished with a text
|
|
46
|
-
chunk `FIN`.
|
|
47
|
-
|
|
48
|
-
Example:
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
GET /stream/ HTTP/1.1
|
|
52
|
-
accept: application/yaml
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
200 OK
|
|
57
|
-
content-type: multipart/yaml; boundary=cut
|
|
58
|
-
|
|
59
|
-
--cut
|
|
60
|
-
ACK
|
|
61
|
-
--cut
|
|
62
|
-
foo: bar
|
|
63
|
-
--cut
|
|
64
|
-
baz: qux
|
|
65
|
-
--cut
|
|
66
|
-
FIN
|
|
67
|
-
--cut--
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
See also:
|
|
71
|
-
|
|
72
|
-
- [Multipart Content-Type](https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html) at W3C
|
|
73
|
-
- [Content-Type: multipart](<https://learn.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/aa493937(v=exchg.140)>)
|
|
74
|
-
at Microsoft
|
|
75
|
-
|
|
76
|
-
## HTTP version
|
|
77
|
-
|
|
78
|
-
The gateway serves HTTP/1.1 by default. `protocol: h2c` serves cleartext HTTP/2 instead.
|
|
79
|
-
|
|
80
|
-
```yaml
|
|
81
|
-
exposition:
|
|
82
|
-
protocol: h2c
|
|
83
|
-
service:
|
|
84
|
-
annotations:
|
|
85
|
-
projectcontour.io/upstream-protocol.h2c: '8000'
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
`h2c` requires an ingress controller that proxies cleartext HTTP/2 upstream, and the
|
|
89
|
-
annotation that controller reads to do so. Contour, Traefik and Envoy-based controllers
|
|
90
|
-
proxy it; ingress-nginx does not. A cleartext HTTP/2 server answers nothing else on the
|
|
91
|
-
same port: there is no ALPN to negotiate with, so a controller that speaks HTTP/1.1 upstream
|
|
92
|
-
reaches nothing.
|
|
93
|
-
|
|
94
|
-
Under `h2c` a request refused before its body is read is answered and then cancelled with
|
|
95
|
-
`RST_STREAM(NO_ERROR)`. The reply arrives; the upload stops where it is. A client streaming
|
|
96
|
-
a request body sees that body cancelled — in Node, `ERR_STREAM_PREMATURE_CLOSE` on the stream
|
|
97
|
-
it passed, which throws if nothing handles it. A real failure shows in the reply, or in the
|
|
98
|
-
request rejecting because no reply came. A buffered body is unaffected.
|
|
99
|
-
|
|
100
|
-
## CORS
|
|
101
|
-
|
|
102
|
-
[CORS](https://www.w3.org/TR/2020/SPSD-cors-20200602/) is supported,
|
|
103
|
-
credentials, any `origin`, and any request header fields are allowed.
|
|
104
|
-
|
|
105
|
-
The following request headers are allowed:
|
|
106
|
-
|
|
107
|
-
- `accept`
|
|
108
|
-
- `authorization`
|
|
109
|
-
- `content-type`
|
|
110
|
-
- `etag`
|
|
111
|
-
- `if-match`
|
|
112
|
-
- `if-none-match`
|
|
113
|
-
- headers used by the [`map` directive family](map.md)
|
|
114
|
-
|
|
115
|
-
The following response headers are exposed:
|
|
116
|
-
|
|
117
|
-
- `authorization`
|
|
118
|
-
- `content-type`
|
|
119
|
-
- `content-length`
|
|
120
|
-
- `etag`
|
package/documentation/query.md
DELETED
|
@@ -1,324 +0,0 @@
|
|
|
1
|
-
# Query mapping
|
|
2
|
-
|
|
3
|
-
## TL;DR
|
|
4
|
-
|
|
5
|
-
```yaml
|
|
6
|
-
id?: string
|
|
7
|
-
criteria?: string
|
|
8
|
-
sort?: string
|
|
9
|
-
omit?: integer
|
|
10
|
-
limit?: integer
|
|
11
|
-
selectors?: string[]
|
|
12
|
-
projection?: string[]
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
```yaml
|
|
16
|
-
# manifest.toa.yaml
|
|
17
|
-
|
|
18
|
-
name: pots
|
|
19
|
-
namespace: tea
|
|
20
|
-
|
|
21
|
-
exposition:
|
|
22
|
-
/hot:
|
|
23
|
-
GET:
|
|
24
|
-
endpoint: enumerate
|
|
25
|
-
query:
|
|
26
|
-
criteria: state==hot
|
|
27
|
-
/top10:
|
|
28
|
-
GET:
|
|
29
|
-
endpoint: enumerate
|
|
30
|
-
query:
|
|
31
|
-
criteria: state==hot
|
|
32
|
-
sort: rank:desc
|
|
33
|
-
text: true
|
|
34
|
-
limit: 10
|
|
35
|
-
/latest:
|
|
36
|
-
GET:
|
|
37
|
-
endpoint: observe
|
|
38
|
-
query:
|
|
39
|
-
sort: timestamp:desc
|
|
40
|
-
limit: 1
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Undefined `query` denies any query arguments in requests.
|
|
44
|
-
|
|
45
|
-
`POST` method mapping cannot have `query` declaration.
|
|
46
|
-
|
|
47
|
-
## Criteria
|
|
48
|
-
|
|
49
|
-
Search criteria in [RSQL](https://github.com/jirutka/rsql-parser) format.
|
|
50
|
-
|
|
51
|
-
A value is read as what the property it selects on holds, and one that cannot be read as that is
|
|
52
|
-
refused with `400 Bad Request` — `volume>abc` where `volume` is a number, or `booked==yes` where
|
|
53
|
-
`booked` is a boolean. A string property takes whatever is written.
|
|
54
|
-
|
|
55
|
-
The `criteria` property is considered as _open_ when it ends with a `;`, allowing the combination of
|
|
56
|
-
request query criteria using `and` logic.
|
|
57
|
-
Otherwise, criteria property is _closed_, that is, doesn't allow `criteria` in a request query.
|
|
58
|
-
|
|
59
|
-
```yaml
|
|
60
|
-
# manifest.toa.yaml
|
|
61
|
-
|
|
62
|
-
name: dummy
|
|
63
|
-
|
|
64
|
-
exposition:
|
|
65
|
-
/:
|
|
66
|
-
GET:
|
|
67
|
-
endpoint: observe
|
|
68
|
-
query:
|
|
69
|
-
criteria: state==hot; # open criteria
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
```http
|
|
73
|
-
GET /dummies/?criteria=rank==5
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
The request example above will result in an operation call with the following Request:
|
|
77
|
-
|
|
78
|
-
```yaml
|
|
79
|
-
query:
|
|
80
|
-
criteria: state==hot;rank=5
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Path variables
|
|
84
|
-
|
|
85
|
-
Path variables are prepended to the `criteria` request query parameter except for
|
|
86
|
-
the [`POST` method](#post-method).
|
|
87
|
-
|
|
88
|
-
If query criteria starts with logical operator (`,` or `;`), then path variables are prepended
|
|
89
|
-
accordingly.
|
|
90
|
-
`AND` logical operator is used by default.
|
|
91
|
-
|
|
92
|
-
Given the following declaration:
|
|
93
|
-
|
|
94
|
-
```yaml
|
|
95
|
-
# manifest.toa.yaml
|
|
96
|
-
|
|
97
|
-
name: dummies
|
|
98
|
-
|
|
99
|
-
exposition:
|
|
100
|
-
/:type:
|
|
101
|
-
GET:
|
|
102
|
-
endpoint: observe
|
|
103
|
-
query:
|
|
104
|
-
criteria: ,state==hot; # open criteria
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
and the following request:
|
|
108
|
-
|
|
109
|
-
```http request
|
|
110
|
-
GET /dummies/cool/?criteria=rank==5
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Operation call will have the following query criteria:
|
|
114
|
-
|
|
115
|
-
```yaml
|
|
116
|
-
criteria: (type==cool,state==hot);(rank=5)
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
#### POST method
|
|
120
|
-
|
|
121
|
-
`POST` method semantically used to create a new entity instance, that is, calling a Transition
|
|
122
|
-
without Query.
|
|
123
|
-
Thus, path variables are added to the request input.
|
|
124
|
-
|
|
125
|
-
Given the following declaration:
|
|
126
|
-
|
|
127
|
-
```yaml
|
|
128
|
-
# manifest.toa.yaml
|
|
129
|
-
|
|
130
|
-
name: dummies
|
|
131
|
-
|
|
132
|
-
exposition:
|
|
133
|
-
/:type:
|
|
134
|
-
POST: transit
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
and the following request:
|
|
138
|
-
|
|
139
|
-
```http request
|
|
140
|
-
POST /dummies/cool/
|
|
141
|
-
content-type: application/yaml
|
|
142
|
-
|
|
143
|
-
input:
|
|
144
|
-
rank: 5
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Operation call will have the following input:
|
|
148
|
-
|
|
149
|
-
```yaml
|
|
150
|
-
type: cool
|
|
151
|
-
rank: 5
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
> In case of conflict, path variables override input properties.
|
|
155
|
-
|
|
156
|
-
## Text search
|
|
157
|
-
|
|
158
|
-
For entities with `text` indexes — declared in a
|
|
159
|
-
[migration](/documentation/component/declaration.md#migrations) — search queries can be enabled
|
|
160
|
-
using the `search` property.
|
|
161
|
-
|
|
162
|
-
```yaml
|
|
163
|
-
# manifest.toa.yaml
|
|
164
|
-
|
|
165
|
-
name: dummies
|
|
166
|
-
|
|
167
|
-
exposition:
|
|
168
|
-
/:type:
|
|
169
|
-
GET:
|
|
170
|
-
endpoint: observe
|
|
171
|
-
query:
|
|
172
|
-
search: true
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
```yaml
|
|
176
|
-
GET /dummies/?search=some+text+query
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## Omit, limit
|
|
180
|
-
|
|
181
|
-
`omit` and `limit` properties can declare their default values and allowed boundaries:
|
|
182
|
-
|
|
183
|
-
```yaml
|
|
184
|
-
limit:
|
|
185
|
-
value: 10
|
|
186
|
-
range: [1, 100]
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
If no default value is provided, then the lower boundary of the range is used.
|
|
190
|
-
|
|
191
|
-
Default values for `omit` and `limit` are:
|
|
192
|
-
|
|
193
|
-
```yaml
|
|
194
|
-
omit:
|
|
195
|
-
value: 0
|
|
196
|
-
range: [0, 1000]
|
|
197
|
-
limit:
|
|
198
|
-
value: 10
|
|
199
|
-
range: [1, 1000]
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
Constant values can be declared using the shortcut:
|
|
203
|
-
|
|
204
|
-
```yaml
|
|
205
|
-
limit: 10
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
```http
|
|
209
|
-
GET /dummies/?omit=100&limit=10
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
## Sort
|
|
213
|
-
|
|
214
|
-
The `sort` query property defines the result order of Observations within an `objects` scope
|
|
215
|
-
(enumeration).
|
|
216
|
-
It comprises an ordered set of sorting statements delimited by semicolons.
|
|
217
|
-
Each statement consists of an entity property name with an optional sorting direction suffix:
|
|
218
|
-
`:asc`for ascending or `:desc` for descending.
|
|
219
|
-
|
|
220
|
-
```yaml
|
|
221
|
-
sort: rank # ascending by default
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
```yaml
|
|
225
|
-
sort: rank:asc
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
```yaml
|
|
229
|
-
sort: rank:desc;timestamp:asc
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
If `sort` value ends with a semicolon `;` then the sorting is considered _open_
|
|
233
|
-
and can be extended using request query `sort` argument.
|
|
234
|
-
|
|
235
|
-
```yaml
|
|
236
|
-
sort: rank:desc; # open sort
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Having the above `sort` declaration, the following request will result in an operation call
|
|
240
|
-
with `rank:desc;timestamp:asc` sort:
|
|
241
|
-
|
|
242
|
-
```http
|
|
243
|
-
GET /dummies/?sort=timestamp:asc
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
## Selectors
|
|
247
|
-
|
|
248
|
-

|
|
249
|
-
|
|
250
|
-
The `selectors` query property contains a list of Entity properties allowed for a client to use in
|
|
251
|
-
the `criteria` and `sort` query parameters.
|
|
252
|
-
If no value is provided, then no selectors are allowed.
|
|
253
|
-
|
|
254
|
-
```yaml
|
|
255
|
-
selectors: [rank, timestamp]
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
## Projection
|
|
259
|
-
|
|
260
|
-
A list of Entity properties to be included in the Observation result.
|
|
261
|
-
|
|
262
|
-
```yaml
|
|
263
|
-
projection: [id, title, timestamp]
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
## Parameters
|
|
267
|
-
|
|
268
|
-
By default, the only query parameters allowed are described above. Arbitrary query parameters
|
|
269
|
-
can be allowed by specifying them in the `parameters` property.
|
|
270
|
-
|
|
271
|
-
```yaml
|
|
272
|
-
parameters: [foo, bar]
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
These parameters are embedded in the operation call input, which must be an object.
|
|
276
|
-
|
|
277
|
-
```http
|
|
278
|
-
GET /dummies/?foo=0&bar=baz
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
## Optimistic concurrency control
|
|
282
|
-
|
|
283
|
-
If an operation answers a safe request (`GET`, `HEAD`) with an object that has a `VERSION`
|
|
284
|
-
property, its value is passed as the value of
|
|
285
|
-
the [`etag` header](https://datatracker.ietf.org/doc/html/rfc7232#section-2.3) in the response,
|
|
286
|
-
see [validators](cache.md#validators).
|
|
287
|
-
|
|
288
|
-
Client can use the `if-match` request header to perform an operation only if the corresponding
|
|
289
|
-
object has not been modified since the last retrieval.
|
|
290
|
-
|
|
291
|
-
```http
|
|
292
|
-
GET /dummies/5e82ed5e/ HTTP/1.1
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
HTTP/1.1 200 OK
|
|
297
|
-
etag: "1"
|
|
298
|
-
|
|
299
|
-
foo: bar
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
```http request
|
|
303
|
-
PUT /dummies/5e82ed5e/ HTTP/1.1
|
|
304
|
-
if-match: "1"
|
|
305
|
-
|
|
306
|
-
foo: baz
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
```http
|
|
310
|
-
200 OK
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
```http request
|
|
314
|
-
PUT /dummies/5e82ed5e/ HTTP/1.1
|
|
315
|
-
if-match: "never"
|
|
316
|
-
|
|
317
|
-
foo: baz
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
```http
|
|
321
|
-
412 Precondition Failed
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
The value within the quotes is mapped to the `version` property of operation call query.
|
package/documentation/require.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# Directive family Require
|
|
2
|
-
|
|
3
|
-
The `require` directive family provides the ability to specify HTTP request requirements to be met.
|
|
4
|
-
|
|
5
|
-
## Headers
|
|
6
|
-
|
|
7
|
-
`require:header` requires a specific header to be present in the request, and `require:headers`
|
|
8
|
-
requires a set of headers to be present.
|
|
9
|
-
|
|
10
|
-
```yaml
|
|
11
|
-
exposition:
|
|
12
|
-
/:id:
|
|
13
|
-
require:header: if-match # enforce concurrency control
|
|
14
|
-
PUT: transit
|
|
15
|
-
```
|
package/documentation/rpc.md
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
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 the route template with a
|
|
17
|
-
variable marked by a leading `_` and the verb as the last segment, joined by `.`.
|
|
18
|
-
|
|
19
|
-
The separator is `.` and not `/` because a name is a tool's name too, and
|
|
20
|
-
[MCP](mcp.md) names the characters one may hold: letters, digits, `_`, `-` and `.`. A client that
|
|
21
|
-
receives one outside that set may refuse the tool, and one that accepts it rewrites what it shows
|
|
22
|
-
a model — so what is published has to be spellable as it stands.
|
|
23
|
-
|
|
24
|
-
| route | verb | method |
|
|
25
|
-
| ---------------------------- | ------ | -------------------------------- |
|
|
26
|
-
| `/pots` | `GET` | `pots.GET` |
|
|
27
|
-
| `/pots` | `POST` | `pots.POST` |
|
|
28
|
-
| `/pots/:id` | `GET` | `pots._id.GET` |
|
|
29
|
-
| `/identity/tokens/:identity` | `POST` | `identity.tokens._identity.POST` |
|
|
30
|
-
| `/files/**` | `GET` | `files.__.GET` |
|
|
31
|
-
| `/` | `GET` | `GET` |
|
|
32
|
-
|
|
33
|
-
The verb is always the last segment, so `/pots/GET` answering `POST` is `pots.GET.POST` and
|
|
34
|
-
`/pots` answering `GET` is `pots.GET`. Nothing is declared to make a name: a re-mounted route is
|
|
35
|
-
a renamed procedure, because the name is the address.
|
|
36
|
-
|
|
37
|
-
## What has a name
|
|
38
|
-
|
|
39
|
-
A segment is addressed where it holds only `A-Z`, `a-z`, `0-9` and `-`. `_` is the name's own,
|
|
40
|
-
marking a variable, and `__` the rest of a path; `.` is what divides one segment from the next.
|
|
41
|
-
|
|
42
|
-
A route with a segment holding anything else — a `.`, a `_`, a `*`, a variable that is not one
|
|
43
|
-
word — has no name. It is served over HTTP as it always was; what it loses is the address, so
|
|
44
|
-
`/.rpc` cannot call it. Each is said once at startup, naming the route and the segment.
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
Route cannot be addressed as a procedure route=/pots/v1.0 segment=v1.0
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## The parameters
|
|
51
|
-
|
|
52
|
-
`params` is by name, and carries what a request carries.
|
|
53
|
-
|
|
54
|
-
A key the template names is a route variable, and is taken by the path. `query` is the
|
|
55
|
-
querystring. Whatever is left is the body.
|
|
56
|
-
|
|
57
|
-
```json
|
|
58
|
-
{ "jsonrpc": "2.0", "id": 1, "method": "pots._id.GET", "params": { "id": "a1b2" } }
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
```json
|
|
62
|
-
{
|
|
63
|
-
"jsonrpc": "2.0",
|
|
64
|
-
"id": 2,
|
|
65
|
-
"method": "pots.POST",
|
|
66
|
-
"params": { "title": "Kettle", "volume": 1.7 }
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"jsonrpc": "2.0",
|
|
73
|
-
"id": 3,
|
|
74
|
-
"method": "pots.GET",
|
|
75
|
-
"params": { "query": { "criteria": "volume=gt=1", "limit": 10 } }
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
The querystring has a name of its own because an operation's input is free to have an `id` or
|
|
80
|
-
a `limit`, and the two would otherwise be one object. An operation whose input has a property
|
|
81
|
-
named `query` cannot be called with one.
|
|
82
|
-
|
|
83
|
-
A variable stands for a single segment, so its value may not contain `/`, `?` or `#`. `__`
|
|
84
|
-
stands for the rest of the path and may contain `/`; its value is read under the name `**`,
|
|
85
|
-
which is what the RTD calls it wherever else it is read.
|
|
86
|
-
|
|
87
|
-
## What answers
|
|
88
|
-
|
|
89
|
-
The reply is the operation's, restricted by the same [`io:output`](io.md) as the resource's,
|
|
90
|
-
and encoded as the request's `accept` asks. A call that returned nothing answers `result: null`
|
|
91
|
-
— JSON-RPC has no 404, and nothing went wrong.
|
|
92
|
-
|
|
93
|
-
A call with no `id` is a notification: it runs and answers nothing, and a request carrying only
|
|
94
|
-
notifications answers `204`.
|
|
95
|
-
|
|
96
|
-
## Several at once
|
|
97
|
-
|
|
98
|
-
A request may carry an array of calls instead of one, and answers an array of what they
|
|
99
|
-
answered — shorter than what it was given, where some were notifications.
|
|
100
|
-
|
|
101
|
-
```json
|
|
102
|
-
[
|
|
103
|
-
{ "jsonrpc": "2.0", "id": 1, "method": "pots._id.GET", "params": { "id": "a1b2" } },
|
|
104
|
-
{ "jsonrpc": "2.0", "method": "pots._id.DELETE", "params": { "id": "c3d4" } }
|
|
105
|
-
]
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
They run one after another, in the order given. `batch` is how many one request may carry, 32
|
|
109
|
-
where the annotation does not say: a request is one authentication and one reply however many
|
|
110
|
-
calls it makes, so what a caller may ask for at once is bounded.
|
|
111
|
-
|
|
112
|
-
## What refuses
|
|
113
|
-
|
|
114
|
-
The whole request is refused, with a status, when it is not a request this endpoint serves: a
|
|
115
|
-
verb other than `POST` is `405`, an unreadable body is `400`, and an array that is empty or
|
|
116
|
-
longer than `batch` is `400`.
|
|
117
|
-
|
|
118
|
-
A call that is not one — a version it does not state, a method it does not name — is answered
|
|
119
|
-
to nobody: `id` is `null`, because nothing about it is trustworthy enough to answer to.
|
|
120
|
-
|
|
121
|
-
A credential is the request's, so a call cannot be refused for one: a request that presents
|
|
122
|
-
none where the procedure requires one is `401`, and carries the challenge that says where to
|
|
123
|
-
authenticate.
|
|
124
|
-
|
|
125
|
-
Everything else a call runs into is a value, at `200`, because the request itself succeeded.
|
|
126
|
-
|
|
127
|
-
| | |
|
|
128
|
-
| -------- | -------------------------------------------------- |
|
|
129
|
-
| `-32601` | no route of that name, or no such verb on it |
|
|
130
|
-
| `-32602` | a variable is missing, or a query is not one |
|
|
131
|
-
| `-32000` | the identity is not authorized to make this call |
|
|
132
|
-
| `-32001` | the operation refused, its own code in `data.code` |
|
|
133
|
-
| `-32603` | anything the gateway did not mean to answer |
|
|
134
|
-
| `-32002` | the request carries more calls than `batch` |
|
|
135
|
-
|
|
136
|
-
The first five codes JSON-RPC states mean the same to every client. `-32000` and `-32001` are
|
|
137
|
-
this gateway's, from the block the specification reserves and leaves empty, so
|
|
138
|
-
`-32001` says only that an operation refused — `data.code` is the code that operation declares
|
|
139
|
-
in its manifest, and is what a caller reads.
|
|
140
|
-
|
|
141
|
-
## Authorization
|
|
142
|
-
|
|
143
|
-
A procedure is authorized as the resource is, against the path and the verb its name states.
|
|
144
|
-
A token restricted to `/pots/:id/` for `GET` authorizes `pots._id.GET` and nothing else,
|
|
145
|
-
whichever way the call arrives.
|
|
146
|
-
|
|
147
|
-
[`anonymous`](access.md#anonymous) is the one directive that reads a call differently from a
|
|
148
|
-
request: it admits one whatever the request presented, because what refuses a credentialed request
|
|
149
|
-
is that the reply would not be cacheable, and what a call answers is not a reply.
|
|
150
|
-
|
|
151
|
-
## What has no procedure
|
|
152
|
-
|
|
153
|
-
`map:buffer` reads the request, and a call is not the request. A resource that declares it
|
|
154
|
-
answers over HTTP alone.
|
package/documentation/tracing.md
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Tracing
|
|
2
|
-
|
|
3
|
-
Each incoming request is processed within a [trace](../../telemetry/readme.md#tracing) —
|
|
4
|
-
a server span is created, and its trace context is propagated to component invocations and
|
|
5
|
-
emitted events, so all log entries and spans across the application caused by the request
|
|
6
|
-
share the same `trace_id`.
|
|
7
|
-
|
|
8
|
-
## The `ray` response header
|
|
9
|
-
|
|
10
|
-
Each response contains a `ray` header with the trace ID of the request.
|
|
11
|
-
It can be used to find related log entries, or be attached to a support ticket.
|
|
12
|
-
|
|
13
|
-
Log entries are stamped with the trace ID regardless of the sampling decision,
|
|
14
|
-
while the trace itself is only recorded if the trace is sampled (see [Sampling](#sampling)).
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
HTTP/1.1 201 Created
|
|
18
|
-
ray: 0af7651916cd43dd8448eb211c80319c
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Continuing a trace
|
|
22
|
-
|
|
23
|
-
By default, the trace starts at the gateway. If the request carries a trace context in one of the
|
|
24
|
-
following headers, the trace is continued, that is, the incoming trace ID is used.
|
|
25
|
-
|
|
26
|
-
### `traceparent`
|
|
27
|
-
|
|
28
|
-
The [W3C Trace Context](https://www.w3.org/TR/trace-context/#traceparent-header) header, sent by
|
|
29
|
-
clients instrumented with OpenTelemetry-compatible tooling, or by upstream proxies.
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
In addition to the trace ID, it carries the ID of the client span, which becomes the _parent_ of
|
|
36
|
-
the gateway's server span, linking client-side and server-side spans into a single trace tree.
|
|
37
|
-
|
|
38
|
-
### `ray`
|
|
39
|
-
|
|
40
|
-
A bare trace ID (32 lowercase hex digits), for clients without tracing instrumentation willing to
|
|
41
|
-
correlate their requests with server-side traces.
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
ray: 4bf92f3577b34da6a3ce929d0e0e4736
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Unlike `traceparent`, it carries no parent span, so the gateway's server span becomes the root of
|
|
48
|
-
the trace.
|
|
49
|
-
|
|
50
|
-
If both headers are present, `traceparent` takes precedence as it carries more information.
|
|
51
|
-
Headers with invalid values are ignored, and a new trace is started.
|
|
52
|
-
|
|
53
|
-
## Sampling
|
|
54
|
-
|
|
55
|
-
The trace _context_ (trace ID) is always created and propagated, so the `ray` header and
|
|
56
|
-
`trace_id` in log entries are always present. The sampling decision only determines whether
|
|
57
|
-
the _spans_ of the trace are recorded.
|
|
58
|
-
|
|
59
|
-
The decision is made once, by the process that starts the trace, and is propagated along with
|
|
60
|
-
the trace context (the flags byte of `traceparent`), so a trace is either recorded as a whole
|
|
61
|
-
or not at all. Sampling is configured with the
|
|
62
|
-
[`telemetry.traces` annotation](../../telemetry/readme.md#sampling).
|
|
63
|
-
|
|
64
|
-
Sending a trace context does not bypass sampling: an incoming `ray` header adopts the trace ID,
|
|
65
|
-
while the recording decision is still made by the gateway. The `sampled` flag of an incoming
|
|
66
|
-
`traceparent` is respected, as the decision belongs to the trace root.
|
|
67
|
-
|
|
68
|
-
## See also
|
|
69
|
-
|
|
70
|
-
- [Telemetry extension](../../telemetry/readme.md) — spans, structured logs, `context.span`
|