@toa.io/extensions.exposition 1.0.0-alpha.284 → 1.0.0-alpha.286
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/exposition.octets/operations/delete.js +1 -1
- package/components/exposition.octets/operations/get.js +5 -2
- package/components/exposition.octets/operations/head.js +1 -1
- package/components/exposition.octets/operations/put.js +29 -37
- package/components/exposition.octets/types/toa.d.ts +1 -1
- package/components/identity.bans/manifest.toa.yaml +12 -13
- package/components/identity.bans/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.bans/operations/transit.js +1 -1
- package/components/identity.bans/source/transit.ts +1 -1
- package/components/identity.bans/tsconfig.tsbuildinfo +1 -1
- package/components/identity.bans/types/toa.d.ts +5 -5
- package/components/identity.basic/events/principal.js +3 -1
- package/components/identity.basic/manifest.toa.yaml +17 -23
- package/components/identity.basic/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.basic/migrations/0002-indexes.yaml +13 -0
- package/components/identity.basic/operations/add.js +1 -1
- package/components/identity.basic/operations/authenticate.js +2 -2
- package/components/identity.basic/operations/check.js +4 -2
- package/components/identity.basic/operations/delete.js +1 -1
- package/components/identity.basic/operations/incept.js +1 -1
- 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 +7 -8
- package/components/identity.basic/source/add.ts +5 -2
- package/components/identity.basic/source/authenticate.ts +11 -13
- package/components/identity.basic/source/check.ts +9 -6
- package/components/identity.basic/source/delete.ts +4 -1
- package/components/identity.basic/source/incept.ts +13 -10
- package/components/identity.basic/source/info.ts +4 -1
- package/components/identity.basic/source/lib/credentials.ts +2 -3
- package/components/identity.basic/source/transit.ts +27 -21
- package/components/identity.basic/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/types/index.d.ts +7 -3
- package/components/identity.basic/types/toa.d.ts +5 -5
- package/components/identity.clients/manifest.toa.yaml +36 -40
- package/components/identity.clients/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.clients/migrations/0002-indexes.yaml +4 -0
- package/components/identity.clients/operations/describe.js +1 -1
- package/components/identity.clients/operations/lib/canonical.js +1 -1
- package/components/identity.clients/operations/lib/cimd.js +3 -2
- package/components/identity.clients/operations/lib/redirect.js +7 -4
- package/components/identity.clients/operations/register.js +2 -2
- package/components/identity.clients/source/describe.ts +6 -8
- package/components/identity.clients/source/lib/Context.ts +6 -3
- package/components/identity.clients/source/lib/Entity.ts +1 -1
- package/components/identity.clients/source/lib/canonical.ts +1 -1
- package/components/identity.clients/source/lib/cimd.test.ts +8 -6
- package/components/identity.clients/source/lib/cimd.ts +24 -19
- package/components/identity.clients/source/lib/redirect.test.ts +8 -2
- package/components/identity.clients/source/lib/redirect.ts +12 -8
- package/components/identity.clients/source/register.ts +18 -18
- package/components/identity.clients/tsconfig.tsbuildinfo +1 -1
- package/components/identity.clients/types/toa.d.ts +5 -5
- package/components/identity.credentials/manifest.toa.yaml +4 -4
- package/components/identity.credentials/operations/list.js +8 -4
- package/components/identity.credentials/source/list.test.ts +39 -20
- package/components/identity.credentials/source/list.ts +12 -8
- package/components/identity.credentials/tsconfig.tsbuildinfo +1 -1
- package/components/identity.credentials/types/toa.d.ts +2 -2
- package/components/identity.federation/manifest.toa.yaml +23 -32
- package/components/identity.federation/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.federation/migrations/0002-indexes.yaml +25 -0
- package/components/identity.federation/operations/authenticate.js +4 -2
- package/components/identity.federation/operations/create.js +2 -2
- 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 +1 -1
- package/components/identity.federation/operations/lib/decode.js +1 -1
- package/components/identity.federation/operations/lib/discovery.js +2 -2
- package/components/identity.federation/operations/lib/exchange.js +8 -4
- package/components/identity.federation/operations/lib/principal.js +1 -1
- package/components/identity.federation/operations/lib/resolve.js +1 -1
- package/components/identity.federation/operations/list.js +2 -2
- package/components/identity.federation/source/authenticate.ts +19 -17
- package/components/identity.federation/source/create.ts +6 -7
- package/components/identity.federation/source/decode.ts +4 -1
- package/components/identity.federation/source/delete.ts +4 -1
- package/components/identity.federation/source/incept.ts +2 -3
- package/components/identity.federation/source/lib/decode.ts +4 -7
- package/components/identity.federation/source/lib/discovery.test.ts +15 -5
- package/components/identity.federation/source/lib/discovery.ts +10 -9
- package/components/identity.federation/source/lib/exchange.ts +18 -15
- package/components/identity.federation/source/lib/jose.d.ts +1 -1
- package/components/identity.federation/source/lib/principal.ts +5 -3
- package/components/identity.federation/source/lib/resolve.ts +5 -1
- package/components/identity.federation/source/list.test.ts +26 -10
- package/components/identity.federation/source/list.ts +5 -2
- package/components/identity.federation/source/types/context.ts +5 -2
- package/components/identity.federation/source/types/entity.ts +2 -2
- package/components/identity.federation/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/types/toa.d.ts +5 -5
- package/components/identity.grants/manifest.toa.yaml +27 -31
- package/components/identity.grants/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.grants/migrations/0002-indexes.yaml +5 -0
- package/components/identity.grants/operations/authorize.js +1 -1
- package/components/identity.grants/operations/exchange.js +5 -2
- package/components/identity.grants/operations/lib/code.js +1 -1
- package/components/identity.grants/operations/lib/identify.js +1 -1
- package/components/identity.grants/operations/list.js +1 -1
- package/components/identity.grants/operations/revoke.js +3 -2
- package/components/identity.grants/source/authorize.ts +27 -19
- package/components/identity.grants/source/exchange.ts +15 -11
- package/components/identity.grants/source/lib/code.ts +20 -8
- package/components/identity.grants/source/lib/identify.ts +1 -1
- package/components/identity.grants/source/list.ts +2 -2
- package/components/identity.grants/source/revoke.ts +9 -7
- package/components/identity.grants/tsconfig.tsbuildinfo +1 -1
- package/components/identity.grants/types/index.d.ts +3 -3
- package/components/identity.grants/types/toa.d.ts +5 -5
- package/components/identity.keys/manifest.toa.yaml +18 -23
- package/components/identity.keys/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.keys/migrations/0002-indexes.yaml +4 -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 +2 -3
- package/components/identity.keys/source/disable.ts +1 -1
- package/components/identity.keys/source/revoke.ts +2 -2
- package/components/identity.keys/tsconfig.tsbuildinfo +1 -1
- package/components/identity.keys/types/toa.d.ts +5 -5
- package/components/identity.otp/manifest.toa.yaml +16 -24
- package/components/identity.otp/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.otp/migrations/0002-indexes.yaml +5 -0
- package/components/identity.otp/operations/authenticate.js +1 -1
- package/components/identity.otp/operations/issue.js +1 -1
- package/components/identity.otp/source/authenticate.ts +4 -7
- package/components/identity.otp/source/issue.ts +1 -1
- package/components/identity.otp/source/lib/Context.ts +1 -1
- package/components/identity.otp/tsconfig.tsbuildinfo +1 -1
- package/components/identity.otp/types/toa.d.ts +5 -5
- package/components/identity.passkeys/manifest.toa.yaml +45 -53
- package/components/identity.passkeys/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.passkeys/migrations/0002-indexes.yaml +11 -0
- package/components/identity.passkeys/operations/authenticate.js +1 -1
- package/components/identity.passkeys/operations/challenge.js +6 -3
- package/components/identity.passkeys/operations/create.js +1 -1
- package/components/identity.passkeys/operations/delete.js +1 -1
- package/components/identity.passkeys/operations/list.js +1 -1
- package/components/identity.passkeys/operations/use.js +1 -1
- package/components/identity.passkeys/source/authenticate.ts +3 -4
- package/components/identity.passkeys/source/challenge.ts +29 -25
- package/components/identity.passkeys/source/create.ts +8 -6
- package/components/identity.passkeys/source/delete.ts +4 -1
- package/components/identity.passkeys/source/list.ts +4 -1
- package/components/identity.passkeys/source/types/Context.ts +1 -1
- package/components/identity.passkeys/source/use.ts +12 -10
- package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -1
- package/components/identity.passkeys/types/toa.d.ts +5 -5
- package/components/identity.roles/manifest.toa.yaml +12 -16
- package/components/identity.roles/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.roles/migrations/0002-indexes.yaml +8 -0
- package/components/identity.roles/operations/grant.js +1 -1
- package/components/identity.roles/operations/list.js +1 -1
- package/components/identity.roles/operations/principal.js +2 -2
- package/components/identity.roles/source/grant.ts +7 -6
- package/components/identity.roles/source/list.ts +1 -1
- package/components/identity.roles/source/principal.ts +5 -7
- package/components/identity.roles/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/types/toa.d.ts +5 -5
- package/components/identity.tokens/manifest.toa.yaml +17 -15
- package/components/identity.tokens/migrations/0001-system-properties.yaml +14 -0
- package/components/identity.tokens/operations/authenticate.js +2 -2
- package/components/identity.tokens/operations/decrypt.js +11 -5
- package/components/identity.tokens/operations/encrypt.js +2 -2
- package/components/identity.tokens/operations/issue.js +2 -4
- package/components/identity.tokens/operations/lib/form.js +1 -1
- package/components/identity.tokens/operations/lib/key.js +1 -1
- package/components/identity.tokens/operations/revoke.js +1 -1
- package/components/identity.tokens/source/authenticate.test.ts +22 -16
- package/components/identity.tokens/source/authenticate.ts +7 -10
- package/components/identity.tokens/source/decrypt.test.ts +62 -29
- package/components/identity.tokens/source/decrypt.ts +30 -27
- package/components/identity.tokens/source/encrypt.test.ts +21 -16
- package/components/identity.tokens/source/encrypt.ts +8 -11
- package/components/identity.tokens/source/issue.test.ts +4 -2
- package/components/identity.tokens/source/issue.ts +6 -8
- package/components/identity.tokens/source/lib/form.ts +5 -9
- package/components/identity.tokens/source/lib/jose.d.ts +1 -1
- package/components/identity.tokens/source/lib/key.ts +1 -1
- package/components/identity.tokens/source/lib/paseto.test.ts +17 -6
- package/components/identity.tokens/source/revoke.ts +1 -1
- package/components/identity.tokens/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/types/index.d.ts +13 -4
- package/components/identity.tokens/types/toa.d.ts +5 -5
- package/context.toa.yaml +2 -2
- package/cucumber.mjs +3 -0
- package/documentation/access.md +4 -3
- package/documentation/cache.md +17 -3
- package/documentation/components.md +2 -2
- package/documentation/credentials.md +2 -2
- package/documentation/identity.md +7 -9
- package/documentation/map.md +2 -2
- package/documentation/mcp.md +23 -17
- package/documentation/notes/peers.md +1 -1
- package/documentation/notes/throttling.md +1 -1
- package/documentation/octets.md +4 -4
- package/documentation/protocol.md +3 -3
- package/documentation/query.md +14 -8
- package/documentation/rpc.md +45 -31
- package/documentation/tracing.md +3 -3
- package/documentation/tree.md +1 -1
- package/features/auth.assert.feature +2 -2
- package/features/auth.bearer.feature +1 -1
- package/features/auth.claims.feature +5 -5
- package/features/auth.incept.feature +2 -2
- package/features/authorities.federation.feature +1 -1
- package/features/configuration.feature +3 -4
- package/features/credentials.feature +9 -9
- package/features/dev.feature +1 -0
- package/features/dynamic.feature +1 -0
- package/features/errors.feature +21 -0
- package/features/etag.feature +0 -86
- package/features/identity.bans.feature +3 -3
- package/features/identity.basic.feature +9 -9
- package/features/identity.federation.feature +11 -11
- package/features/identity.tokens.custom.feature +5 -5
- package/features/identity.tokens.feature +2 -2
- package/features/interruptions.feature +1 -0
- package/features/introspection.map.feature +4 -4
- package/features/io.throttle.feature +1 -0
- package/features/map.feature +2 -2
- package/features/mcp.feature +32 -28
- package/features/oauth.grants.feature +1 -1
- package/features/octets.cloudinary.feature +1 -1
- package/features/octets.download.feature +1 -0
- package/features/require.feature +1 -2
- package/features/rpc.feature +21 -21
- package/features/steps/Captures.ts +1 -1
- package/features/steps/Cloudinary.ts +1 -2
- package/features/steps/Common.ts +4 -5
- package/features/steps/Components.ts +17 -12
- package/features/steps/Database.ts +42 -23
- package/features/steps/Gateway.ts +55 -71
- package/features/steps/HTTP.ts +12 -15
- package/features/steps/IDP.ts +118 -94
- package/features/steps/Identity.ts +3 -3
- package/features/steps/OTP.ts +3 -3
- package/features/steps/Parameters.ts +20 -10
- package/features/steps/Probe.ts +9 -7
- package/features/steps/Realtime.ts +40 -22
- package/features/steps/Workspace.ts +10 -7
- package/features/steps/components/audit/operations/record.js +1 -1
- package/features/steps/components/echo/operations/affect.js +1 -1
- package/features/steps/components/echo/operations/compute.js +1 -1
- package/features/steps/components/echo/operations/echo.js +1 -1
- package/features/steps/components/echo/operations/error.js +1 -1
- package/features/steps/components/echo/operations/identity.js +1 -1
- package/features/steps/components/echo/operations/parameters.js +1 -1
- package/features/steps/components/echo/operations/ping.js +1 -1
- package/features/steps/components/echo/operations/unwrap.js +1 -1
- package/features/steps/components/greeter/operations/greet.js +1 -1
- package/features/steps/components/notify/operations/send.js +1 -1
- package/features/steps/components/octets.tester/operations/authority.js +1 -1
- package/features/steps/components/octets.tester/operations/bar.js +1 -1
- package/features/steps/components/octets.tester/operations/baz.js +1 -1
- package/features/steps/components/octets.tester/operations/concat.js +1 -1
- package/features/steps/components/octets.tester/operations/echo.js +1 -1
- package/features/steps/components/octets.tester/operations/err.js +1 -1
- package/features/steps/components/octets.tester/operations/foo.js +1 -1
- package/features/steps/components/octets.tester/operations/id.js +1 -1
- package/features/steps/components/octets.tester/operations/identity.js +1 -1
- package/features/steps/components/octets.tester/operations/redirect.js +6 -4
- package/features/steps/components/octets.tester/operations/yex.js +1 -1
- package/features/steps/components/octets.tester/operations/yield.js +1 -1
- package/features/steps/components/orders/manifest.toa.yaml +10 -12
- package/features/steps/components/orders/operations/create.js +4 -2
- package/features/steps/components/pots/manifest.toa.yaml +15 -20
- package/features/steps/components/pots/migrations/0002-indexes.yaml +4 -0
- package/features/steps/components/pricing/operations/quote.js +1 -1
- package/features/steps/components/sequences/manifest.toa.yaml +0 -1
- package/features/steps/components/sequences/operations/numbers.js +1 -1
- package/features/steps/components/sequences/operations/tokens.js +3 -3
- package/features/steps/components/users/manifest.toa.yaml +3 -5
- package/features/steps/components/users/operations/create.js +1 -1
- package/features/steps/components/users.properties/manifest.toa.yaml +5 -6
- package/features/steps/map.ts +2 -2
- package/features/timestamps.feature +1 -1
- package/package.json +7 -7
- package/readme.md +11 -11
- package/schemas/annotation.cos.yaml +1 -3
- package/schemas/method.cos.yaml +2 -0
- package/source/Branch.test.ts +2 -2
- package/source/Branch.ts +3 -5
- package/source/Composition.ts +5 -5
- package/source/Directive.test.ts +38 -20
- package/source/Directive.ts +61 -47
- package/source/Endpoint.test.ts +1 -1
- package/source/Endpoint.ts +27 -92
- package/source/Factory.ts +26 -12
- package/source/Gateway.ts +87 -76
- package/source/HTTP/Context.ts +23 -30
- package/source/HTTP/Probe.ts +7 -9
- package/source/HTTP/Server.ts +88 -69
- package/source/HTTP/Timing.ts +6 -21
- package/source/HTTP/address.test.ts +8 -2
- package/source/HTTP/address.ts +2 -3
- package/source/HTTP/exceptions.ts +20 -18
- package/source/HTTP/formats/form.ts +1 -1
- package/source/HTTP/formats/json.ts +2 -2
- package/source/HTTP/formats/msgpack.ts +3 -4
- package/source/HTTP/formats/text.ts +2 -2
- package/source/HTTP/formats/yaml.test.ts +4 -1
- package/source/HTTP/formats/yaml.ts +14 -11
- package/source/HTTP/messages.test.ts +38 -28
- package/source/HTTP/messages.ts +44 -98
- package/source/Interception.ts +3 -4
- package/source/Introspection.ts +29 -14
- package/source/MCP/Server.ts +114 -54
- package/source/MCP/discover.ts +6 -7
- package/source/MCP/errors.ts +7 -8
- package/source/MCP/schema.test.ts +9 -3
- package/source/MCP/schema.ts +12 -16
- package/source/MCP/tools.ts +33 -27
- package/source/MCP/types.ts +4 -1
- package/source/Mapping.ts +25 -27
- package/source/Query.ts +58 -44
- package/source/RPC/Context.ts +8 -11
- package/source/RPC/Dispatcher.ts +46 -26
- package/source/RPC/errors.test.ts +41 -16
- package/source/RPC/errors.ts +9 -10
- package/source/RPC/names.test.ts +51 -32
- package/source/RPC/names.ts +26 -32
- package/source/RTD/Directives.ts +21 -10
- package/source/RTD/Endpoint.ts +4 -1
- package/source/RTD/Method.ts +8 -6
- package/source/RTD/Node.ts +32 -34
- package/source/RTD/Route.ts +18 -21
- package/source/RTD/Tree.ts +18 -18
- package/source/RTD/factory.ts +13 -16
- package/source/RTD/segment.ts +12 -10
- package/source/RTD/syntax/parse.test.ts +12 -6
- package/source/RTD/syntax/parse.ts +30 -26
- package/source/RTD/syntax/types.ts +17 -1
- package/source/RTD/walk.test.ts +64 -27
- package/source/Remotes.test.ts +25 -4
- package/source/Remotes.ts +9 -4
- package/source/Tenant.ts +12 -12
- package/source/deployment.ts +20 -20
- package/source/directives/auth/Anonymous.test.ts +8 -2
- package/source/directives/auth/Anonymous.ts +5 -8
- package/source/directives/auth/Anyone.ts +3 -3
- package/source/directives/auth/Assert.ts +10 -10
- package/source/directives/auth/Authorization.ts +83 -69
- package/source/directives/auth/Delegate.test.ts +2 -2
- package/source/directives/auth/Delegate.ts +8 -10
- package/source/directives/auth/Echo.ts +5 -8
- package/source/directives/auth/Federation.ts +30 -21
- package/source/directives/auth/Id.ts +7 -4
- package/source/directives/auth/Incept.ts +32 -26
- package/source/directives/auth/Input.ts +36 -20
- package/source/directives/auth/Role.test.ts +49 -23
- package/source/directives/auth/Role.ts +29 -22
- package/source/directives/auth/Rule.ts +13 -8
- package/source/directives/auth/Scheme.ts +7 -7
- package/source/directives/auth/create.ts +1 -1
- package/source/directives/auth/schemes.ts +1 -1
- package/source/directives/auth/split.ts +2 -3
- package/source/directives/auth/types.ts +5 -2
- package/source/directives/cache/Cache.ts +44 -9
- package/source/directives/cache/Control.ts +25 -26
- package/source/directives/cache/Exact.ts +1 -1
- package/source/directives/cache/etag.ts +38 -0
- package/source/directives/cors/CORS.ts +9 -7
- package/source/directives/dev/Development.ts +3 -4
- package/source/directives/dev/Faulty.ts +11 -6
- package/source/directives/dev/Sleep.ts +5 -7
- package/source/directives/dev/Stub.ts +2 -2
- package/source/directives/dev/Throw.ts +2 -2
- package/source/directives/flow/Compose.ts +26 -20
- package/source/directives/flow/Fetch.ts +15 -15
- package/source/directives/flow/Flow.ts +9 -8
- package/source/directives/index.ts +11 -2
- package/source/directives/io/IO.ts +29 -20
- package/source/directives/io/Input.ts +9 -12
- package/source/directives/io/Output.ts +20 -23
- package/source/directives/io/Status.test.ts +12 -8
- package/source/directives/io/Status.ts +9 -8
- package/source/directives/io/Throttle.ts +6 -7
- package/source/directives/io/lib/throttle/Configuration.test.ts +32 -23
- package/source/directives/io/lib/throttle/Configuration.ts +14 -9
- package/source/directives/io/lib/throttle/Keys.ts +15 -10
- package/source/directives/io/lib/throttle/Quotas.test.ts +33 -17
- package/source/directives/io/lib/throttle/Quotas.ts +20 -26
- package/source/directives/io/lib/throttle/Sync.test.ts +14 -10
- package/source/directives/io/lib/throttle/Sync.ts +9 -12
- package/source/directives/io/lib/throttle/Warning.ts +3 -4
- package/source/directives/io/lib/throttle/components/IP.ts +4 -5
- package/source/directives/io/lib/throttle/components/Identity.ts +1 -1
- package/source/directives/io/lib/throttle/components/Path.ts +1 -1
- package/source/directives/io/lib/throttle/components/Route.ts +2 -2
- package/source/directives/io/lib/throttle/components/Segment.ts +2 -2
- package/source/directives/io/lib/throttle/conditions/Status.ts +2 -2
- package/source/directives/io/schemas.test.ts +12 -6
- package/source/directives/map/Authority.ts +2 -2
- package/source/directives/map/Buffer.ts +2 -2
- package/source/directives/map/Claims.ts +25 -20
- package/source/directives/map/Headers.ts +17 -13
- package/source/directives/map/Language.ts +8 -5
- package/source/directives/map/Languages.ts +9 -3
- package/source/directives/map/Map.ts +25 -12
- package/source/directives/map/Mapping.ts +9 -6
- package/source/directives/map/Properties.ts +1 -1
- package/source/directives/map/Segments.ts +22 -15
- package/source/directives/mcp/MCP.ts +14 -5
- package/source/directives/mcp/Tool.test.ts +42 -6
- package/source/directives/mcp/Tool.ts +38 -7
- package/source/directives/oauth/Discovery.ts +7 -11
- package/source/directives/oauth/documents.ts +11 -14
- package/source/directives/octets/Context.ts +6 -3
- package/source/directives/octets/Delete.ts +33 -25
- package/source/directives/octets/Directive.ts +5 -1
- package/source/directives/octets/Get.ts +13 -21
- package/source/directives/octets/Octets.ts +20 -15
- package/source/directives/octets/Put.ts +62 -27
- package/source/directives/octets/Workflow.ts +18 -12
- package/source/directives/octets/bytes.ts +1 -1
- package/source/directives/octets/schemas.test.ts +8 -14
- package/source/directives/octets/workflows/Execution.ts +19 -21
- package/source/directives/octets/workflows/Workflow.ts +10 -7
- package/source/directives/require/Headers.ts +3 -4
- package/source/directives/require/Require.ts +3 -4
- package/source/exceptions.ts +19 -12
- package/source/index.ts +1 -1
- package/source/manifest.test.ts +4 -1
- package/source/manifest.ts +19 -13
- package/source/octets.d.ts +1 -1
- package/source/root.ts +3 -2
- package/source/schemas.test.ts +17 -3
- package/transpiled/Branch.js.map +1 -1
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Directive.js +6 -2
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +0 -2
- package/transpiled/Endpoint.js +11 -52
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +2 -1
- package/transpiled/Factory.js +1 -0
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +2 -1
- package/transpiled/Gateway.js +24 -15
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +0 -3
- package/transpiled/HTTP/Context.js +7 -9
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Probe.js.map +1 -1
- package/transpiled/HTTP/Server.js +19 -4
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/Timing.d.ts +1 -2
- package/transpiled/HTTP/Timing.js +2 -10
- package/transpiled/HTTP/Timing.js.map +1 -1
- package/transpiled/HTTP/address.js.map +1 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/form.js.map +1 -1
- package/transpiled/HTTP/formats/json.js.map +1 -1
- package/transpiled/HTTP/formats/msgpack.js.map +1 -1
- package/transpiled/HTTP/formats/text.js.map +1 -1
- package/transpiled/HTTP/formats/yaml.js +4 -1
- package/transpiled/HTTP/formats/yaml.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +3 -2
- package/transpiled/HTTP/messages.js +1 -43
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Interception.js.map +1 -1
- package/transpiled/Introspection.d.ts +2 -0
- package/transpiled/Introspection.js +13 -2
- package/transpiled/Introspection.js.map +1 -1
- package/transpiled/MCP/Server.js +15 -4
- package/transpiled/MCP/Server.js.map +1 -1
- package/transpiled/MCP/discover.js.map +1 -1
- package/transpiled/MCP/errors.js.map +1 -1
- package/transpiled/MCP/schema.js +1 -1
- package/transpiled/MCP/schema.js.map +1 -1
- package/transpiled/MCP/tools.js +10 -6
- package/transpiled/MCP/tools.js.map +1 -1
- package/transpiled/MCP/types.d.ts +3 -1
- package/transpiled/Mapping.d.ts +2 -2
- package/transpiled/Mapping.js +3 -5
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +6 -2
- package/transpiled/Query.js +23 -8
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RPC/Context.js +0 -7
- package/transpiled/RPC/Context.js.map +1 -1
- package/transpiled/RPC/Dispatcher.js +4 -1
- package/transpiled/RPC/Dispatcher.js.map +1 -1
- package/transpiled/RPC/errors.js.map +1 -1
- package/transpiled/RPC/names.d.ts +3 -2
- package/transpiled/RPC/names.js +1 -1
- package/transpiled/RPC/names.js.map +1 -1
- package/transpiled/RTD/Directives.d.ts +1 -1
- package/transpiled/RTD/Method.js +1 -3
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.js +5 -4
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.js +4 -1
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.js +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/segment.js.map +1 -1
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +6 -0
- package/transpiled/RTD/syntax/types.js +10 -1
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +1 -1
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +3 -0
- package/transpiled/deployment.js +6 -1
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.js +1 -3
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Anyone.js.map +1 -1
- package/transpiled/directives/auth/Assert.js.map +1 -1
- package/transpiled/directives/auth/Authorization.js +7 -3
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Echo.js +1 -3
- package/transpiled/directives/auth/Echo.js.map +1 -1
- package/transpiled/directives/auth/Federation.js +3 -7
- package/transpiled/directives/auth/Federation.js.map +1 -1
- package/transpiled/directives/auth/Id.js.map +1 -1
- package/transpiled/directives/auth/Incept.js +1 -1
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Input.js.map +1 -1
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Rule.js.map +1 -1
- package/transpiled/directives/auth/Scheme.js +1 -2
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/create.js.map +1 -1
- package/transpiled/directives/auth/schemes.js.map +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +3 -1
- package/transpiled/directives/cache/Cache.js +28 -2
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.js +1 -1
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cache/etag.d.ts +10 -0
- package/transpiled/directives/cache/etag.js +30 -0
- package/transpiled/directives/cache/etag.js.map +1 -0
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/dev/Faulty.js.map +1 -1
- package/transpiled/directives/dev/Sleep.js.map +1 -1
- package/transpiled/directives/dev/Stub.js.map +1 -1
- package/transpiled/directives/dev/Throw.js.map +1 -1
- package/transpiled/directives/flow/Compose.js +7 -3
- package/transpiled/directives/flow/Compose.js.map +1 -1
- package/transpiled/directives/flow/Fetch.js.map +1 -1
- package/transpiled/directives/flow/Flow.js.map +1 -1
- package/transpiled/directives/index.js +11 -1
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/IO.d.ts +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.js +1 -1
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Output.js +3 -3
- package/transpiled/directives/io/Output.js.map +1 -1
- package/transpiled/directives/io/Status.js.map +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/Configuration.js +8 -2
- package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/Quotas.js +4 -3
- package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/Sync.d.ts +1 -1
- package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/Warning.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -1
- package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -1
- package/transpiled/directives/map/Authority.js.map +1 -1
- package/transpiled/directives/map/Buffer.js.map +1 -1
- package/transpiled/directives/map/Claims.js.map +1 -1
- package/transpiled/directives/map/Headers.js.map +1 -1
- package/transpiled/directives/map/Language.js.map +1 -1
- package/transpiled/directives/map/Languages.js.map +1 -1
- package/transpiled/directives/map/Map.js.map +1 -1
- package/transpiled/directives/map/Mapping.js.map +1 -1
- package/transpiled/directives/map/Properties.js.map +1 -1
- package/transpiled/directives/map/Segments.js.map +1 -1
- package/transpiled/directives/mcp/MCP.js +7 -1
- package/transpiled/directives/mcp/MCP.js.map +1 -1
- package/transpiled/directives/mcp/Tool.d.ts +6 -1
- package/transpiled/directives/mcp/Tool.js +16 -3
- package/transpiled/directives/mcp/Tool.js.map +1 -1
- package/transpiled/directives/oauth/Discovery.js.map +1 -1
- package/transpiled/directives/oauth/documents.js.map +1 -1
- package/transpiled/directives/octets/Context.js +1 -1
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.js.map +1 -1
- package/transpiled/directives/octets/Get.js.map +1 -1
- package/transpiled/directives/octets/Octets.js +1 -1
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/Put.js.map +1 -1
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/bytes.js.map +1 -1
- package/transpiled/directives/octets/workflows/Execution.js +1 -2
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/require/Headers.js.map +1 -1
- package/transpiled/directives/require/Require.js.map +1 -1
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/index.d.ts +1 -1
- package/transpiled/index.js +1 -1
- package/transpiled/index.js.map +1 -1
- package/transpiled/manifest.js +5 -1
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/CHANGELOG.md +0 -541
- package/source/redact.test.ts +0 -27
- package/source/redact.ts +0 -21
- package/transpiled/redact.d.ts +0 -5
- package/transpiled/redact.js +0 -17
- package/transpiled/redact.js.map +0 -1
|
@@ -23,13 +23,13 @@ basic:
|
|
|
23
23
|
federation:
|
|
24
24
|
- id: 09200d0bcc2448c5863e3f50ae18af84
|
|
25
25
|
iss: https://accounts.google.com
|
|
26
|
-
|
|
26
|
+
CREATED: 1754899200000
|
|
27
27
|
passkeys:
|
|
28
28
|
- id: 54ed430804324e81b39756ea4708b546
|
|
29
29
|
aid: adce0002-35bc-c60a-648b-0b25f1f05503
|
|
30
30
|
synced: true
|
|
31
31
|
label: Personal iPhone
|
|
32
|
-
|
|
32
|
+
CREATED: 1754899200000
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
`basic` is `null` when Basic credentials do not exist. `federation` and `passkeys` are always
|
|
@@ -209,11 +209,9 @@ This can be achieved by using the `auth:incept` directive as follows:
|
|
|
209
209
|
name: users
|
|
210
210
|
|
|
211
211
|
entity:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
name:
|
|
216
|
-
type: string
|
|
212
|
+
properties:
|
|
213
|
+
name:
|
|
214
|
+
type: string
|
|
217
215
|
|
|
218
216
|
exposition:
|
|
219
217
|
/:
|
|
@@ -266,10 +264,10 @@ The directive itself does not allow or deny access to the requested resource.
|
|
|
266
264
|
> Used authentication scheme must support inception.
|
|
267
265
|
|
|
268
266
|
```yaml
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
267
|
+
/accounts/echo:
|
|
268
|
+
auth:assert: true
|
|
269
|
+
auth:anyone: true
|
|
270
|
+
endpoint: echo
|
|
273
271
|
```
|
|
274
272
|
|
|
275
273
|
```http
|
package/documentation/map.md
CHANGED
|
@@ -9,10 +9,10 @@ The `map` directive family is used to map HTTP request parts to operation call i
|
|
|
9
9
|
```yaml
|
|
10
10
|
exposition:
|
|
11
11
|
/:group:
|
|
12
|
-
languages: [en, fr]
|
|
12
|
+
languages: [en, fr] # supported languages
|
|
13
13
|
GET:
|
|
14
14
|
map:authority: hostname # request authority (e.g., hostname)
|
|
15
|
-
map:language: lang
|
|
15
|
+
map:language: lang # requested language
|
|
16
16
|
map:headers: # raw header values
|
|
17
17
|
token: x-access-token
|
|
18
18
|
map:buffer: body # unparsed request body
|
package/documentation/mcp.md
CHANGED
|
@@ -37,7 +37,9 @@ A tool is an RTD method that says it is one, named as the [procedure](rpc.md#the
|
|
|
37
37
|
/hot:
|
|
38
38
|
GET:
|
|
39
39
|
query: { criteria: temperature=gt=80 }
|
|
40
|
-
mcp:tool:
|
|
40
|
+
mcp:tool:
|
|
41
|
+
title: Hot pots
|
|
42
|
+
description: The pots that are too hot to pour.
|
|
41
43
|
endpoint: enumerate
|
|
42
44
|
```
|
|
43
45
|
|
|
@@ -48,6 +50,10 @@ it would spend a model's context on what it has no business calling.
|
|
|
48
50
|
The value is what the tool is, and stating it is what publishes it — there is no way to publish one
|
|
49
51
|
that says nothing, because a tool a model cannot read the purpose of is one it cannot choose.
|
|
50
52
|
|
|
53
|
+
A `title` is what a person is shown where a client lists what it may call. Without one a client has
|
|
54
|
+
only the name, which is an address — `apps._identity._id.repos.POST` — and reads as one. A
|
|
55
|
+
description alone is written as the value; a title beside it is written as a mapping.
|
|
56
|
+
|
|
51
57
|
An operation [states what it is](/documentation/component/declaration.md) as well, and that is not
|
|
52
58
|
this: it is written without knowledge of any route, and a tool is an operation and a route together.
|
|
53
59
|
The two routes above are one operation and two tools, and one sentence is not true of both. The
|
|
@@ -111,14 +117,14 @@ request is, is read from `MCP-Protocol-Version`, or from
|
|
|
111
117
|
`_meta['io.modelcontextprotocol/protocolVersion']` where the header is absent; `initialize` is one
|
|
112
118
|
by itself, and a request naming no version is of a revision that sent none.
|
|
113
119
|
|
|
114
|
-
| method
|
|
115
|
-
|
|
|
116
|
-
| `server/discover`
|
|
117
|
-
| `tools/list`
|
|
118
|
-
| `tools/call`
|
|
119
|
-
| `initialize`
|
|
120
|
-
| `notifications/initialized` | `202`, and nothing done
|
|
121
|
-
| `ping`
|
|
120
|
+
| method | |
|
|
121
|
+
| --------------------------- | -------------------------------------------------------------------------- |
|
|
122
|
+
| `server/discover` | what is served, and who serves it |
|
|
123
|
+
| `tools/list` | every tool this caller may reach, in a stable order |
|
|
124
|
+
| `tools/call` | the call the tool is |
|
|
125
|
+
| `initialize` | the same as `server/discover`, in the shape a client of `2025-11-25` reads |
|
|
126
|
+
| `notifications/initialized` | `202`, and nothing done |
|
|
127
|
+
| `ping` | `{}` |
|
|
122
128
|
|
|
123
129
|
`POST` only, one message per request; `GET` and `DELETE` are `405`. An `Mcp-Session-Id` is ignored
|
|
124
130
|
and none is minted, a `Last-Event-ID` is ignored, and `accept` is negotiated as everywhere else.
|
|
@@ -158,15 +164,15 @@ say it twice.
|
|
|
158
164
|
|
|
159
165
|
## What refuses
|
|
160
166
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
| `-32700` | the body is not readable
|
|
164
|
-
| `-32600` | the body is not one JSON-RPC message
|
|
165
|
-
| `-32601` | no method of that name, at `404`
|
|
167
|
+
| | |
|
|
168
|
+
| -------- | ------------------------------------------------------ |
|
|
169
|
+
| `-32700` | the body is not readable |
|
|
170
|
+
| `-32600` | the body is not one JSON-RPC message |
|
|
171
|
+
| `-32601` | no method of that name, at `404` |
|
|
166
172
|
| `-32602` | the arguments do not fit, or `_meta` states too little |
|
|
167
|
-
| `-32603` | anything the gateway did not mean to answer
|
|
168
|
-
| `-32020` | a header says one thing and the body another
|
|
169
|
-
| `-32022` | a revision neither served, naming both
|
|
173
|
+
| `-32603` | anything the gateway did not mean to answer |
|
|
174
|
+
| `-32020` | a header says one thing and the body another |
|
|
175
|
+
| `-32022` | a revision neither served, naming both |
|
|
170
176
|
|
|
171
177
|
The codes MCP reserves for itself are `-32020` to `-32099`, and it has an implementation use none of
|
|
172
178
|
`-32000` to `-32019` — which is where [JSON-RPC](rpc.md#what-refuses) has this gateway's own, so none
|
|
@@ -9,7 +9,7 @@ and the own index of the current instance.
|
|
|
9
9
|
## Forces
|
|
10
10
|
|
|
11
11
|
1. Static configuration is not an option (due to dynamic scaling / failover).
|
|
12
|
-
2. In a distributed system, there is no concept of a
|
|
12
|
+
2. In a distributed system, there is no concept of a _global current time_.
|
|
13
13
|
|
|
14
14
|
## Solution
|
|
15
15
|
|
|
@@ -24,7 +24,7 @@ error.
|
|
|
24
24
|
## Forces
|
|
25
25
|
|
|
26
26
|
1. No per request IO is allowed (centralized solutions do not fit).
|
|
27
|
-
2. In a distributed system, there is no concept of a
|
|
27
|
+
2. In a distributed system, there is no concept of a _global current time_.
|
|
28
28
|
3. Failure to retrieve the quota state should not result in Gateway failure.
|
|
29
29
|
|
|
30
30
|
## Solution
|
package/documentation/octets.md
CHANGED
|
@@ -210,7 +210,7 @@ The value of the directive is an object with the following properties:
|
|
|
210
210
|
GET:
|
|
211
211
|
octets:get:
|
|
212
212
|
blob: false # prevent access to the original BLOB
|
|
213
|
-
meta: true
|
|
213
|
+
meta: true # allow access to an Entry
|
|
214
214
|
```
|
|
215
215
|
|
|
216
216
|
The `octets:get: ~` declaration is equivalent to defaults.
|
|
@@ -295,9 +295,9 @@ If it's an array, the workflow units are executed in sequence.
|
|
|
295
295
|
```yaml
|
|
296
296
|
octets:put:
|
|
297
297
|
workflow:
|
|
298
|
-
- optimize: images.optimize
|
|
299
|
-
- resize: images.resize
|
|
300
|
-
analyze: images.analyze
|
|
298
|
+
- optimize: images.optimize # executed first
|
|
299
|
+
- resize: images.resize # executed second
|
|
300
|
+
analyze: images.analyze # executed in parallel with `resize`
|
|
301
301
|
```
|
|
302
302
|
|
|
303
303
|
If one of the workflow units returns or throws an error,
|
|
@@ -36,7 +36,7 @@ corresponding to the type of
|
|
|
36
36
|
the parts:
|
|
37
37
|
|
|
38
38
|
| Response type | Part type |
|
|
39
|
-
|
|
39
|
+
| ------------------- | --------------------- |
|
|
40
40
|
| `multipart/msgpack` | `application/msgpack` |
|
|
41
41
|
| `multipart/yaml` | `application/yaml` |
|
|
42
42
|
| `multipart/json` | `application/json` |
|
|
@@ -70,7 +70,7 @@ FIN
|
|
|
70
70
|
See also:
|
|
71
71
|
|
|
72
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))
|
|
73
|
+
- [Content-Type: multipart](<https://learn.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/aa493937(v=exchg.140)>)
|
|
74
74
|
at Microsoft
|
|
75
75
|
|
|
76
76
|
## HTTP version
|
|
@@ -82,7 +82,7 @@ exposition:
|
|
|
82
82
|
protocol: h2c
|
|
83
83
|
service:
|
|
84
84
|
annotations:
|
|
85
|
-
projectcontour.io/upstream-protocol.h2c:
|
|
85
|
+
projectcontour.io/upstream-protocol.h2c: '8000'
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
`h2c` requires an ingress controller that proxies cleartext HTTP/2 upstream, and the
|
package/documentation/query.md
CHANGED
|
@@ -48,9 +48,13 @@ Undefined `query` denies any query arguments in requests.
|
|
|
48
48
|
|
|
49
49
|
Search criteria in [RSQL](https://github.com/jirutka/rsql-parser) format.
|
|
50
50
|
|
|
51
|
-
|
|
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
|
|
52
56
|
request query criteria using `and` logic.
|
|
53
|
-
Otherwise, criteria property is
|
|
57
|
+
Otherwise, criteria property is _closed_, that is, doesn't allow `criteria` in a request query.
|
|
54
58
|
|
|
55
59
|
```yaml
|
|
56
60
|
# manifest.toa.yaml
|
|
@@ -151,7 +155,9 @@ rank: 5
|
|
|
151
155
|
|
|
152
156
|
## Text search
|
|
153
157
|
|
|
154
|
-
For entities with `text` indexes
|
|
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.
|
|
155
161
|
|
|
156
162
|
```yaml
|
|
157
163
|
# manifest.toa.yaml
|
|
@@ -223,7 +229,7 @@ sort: rank:asc
|
|
|
223
229
|
sort: rank:desc;timestamp:asc
|
|
224
230
|
```
|
|
225
231
|
|
|
226
|
-
If `sort` value ends with a semicolon `;` then the sorting is considered
|
|
232
|
+
If `sort` value ends with a semicolon `;` then the sorting is considered _open_
|
|
227
233
|
and can be extended using request query `sort` argument.
|
|
228
234
|
|
|
229
235
|
```yaml
|
|
@@ -274,10 +280,10 @@ GET /dummies/?foo=0&bar=baz
|
|
|
274
280
|
|
|
275
281
|
## Optimistic concurrency control
|
|
276
282
|
|
|
277
|
-
If an operation
|
|
278
|
-
|
|
279
|
-
the [`etag` header](https://datatracker.ietf.org/doc/html/rfc7232#section-2.3) in the response
|
|
280
|
-
(
|
|
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).
|
|
281
287
|
|
|
282
288
|
Client can use the `if-match` request header to perform an operation only if the corresponding
|
|
283
289
|
object has not been modified since the last retrieval.
|
package/documentation/rpc.md
CHANGED
|
@@ -13,27 +13,31 @@ one an application could choose is one it could collide with a route of its own.
|
|
|
13
13
|
|
|
14
14
|
## The name
|
|
15
15
|
|
|
16
|
-
A procedure is an RTD method — a node and a verb — and its name is
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
| `/
|
|
27
|
-
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
`/
|
|
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
|
|
31
35
|
a renamed procedure, because the name is the address.
|
|
32
36
|
|
|
33
37
|
## What has a name
|
|
34
38
|
|
|
35
39
|
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.
|
|
40
|
+
marking a variable, and `__` the rest of a path; `.` is what divides one segment from the next.
|
|
37
41
|
|
|
38
42
|
A route with a segment holding anything else — a `.`, a `_`, a `*`, a variable that is not one
|
|
39
43
|
word — has no name. It is served over HTTP as it always was; what it loses is the address, so
|
|
@@ -51,17 +55,25 @@ A key the template names is a route variable, and is taken by the path. `query`
|
|
|
51
55
|
querystring. Whatever is left is the body.
|
|
52
56
|
|
|
53
57
|
```json
|
|
54
|
-
{"jsonrpc": "2.0", "id": 1, "method": "pots
|
|
58
|
+
{ "jsonrpc": "2.0", "id": 1, "method": "pots._id.GET", "params": { "id": "a1b2" } }
|
|
55
59
|
```
|
|
56
60
|
|
|
57
61
|
```json
|
|
58
|
-
{
|
|
59
|
-
|
|
62
|
+
{
|
|
63
|
+
"jsonrpc": "2.0",
|
|
64
|
+
"id": 2,
|
|
65
|
+
"method": "pots.POST",
|
|
66
|
+
"params": { "title": "Kettle", "volume": 1.7 }
|
|
67
|
+
}
|
|
60
68
|
```
|
|
61
69
|
|
|
62
70
|
```json
|
|
63
|
-
{
|
|
64
|
-
|
|
71
|
+
{
|
|
72
|
+
"jsonrpc": "2.0",
|
|
73
|
+
"id": 3,
|
|
74
|
+
"method": "pots.GET",
|
|
75
|
+
"params": { "query": { "criteria": "volume=gt=1", "limit": 10 } }
|
|
76
|
+
}
|
|
65
77
|
```
|
|
66
78
|
|
|
67
79
|
The querystring has a name of its own because an operation's input is free to have an `id` or
|
|
@@ -87,8 +99,10 @@ A request may carry an array of calls instead of one, and answers an array of wh
|
|
|
87
99
|
answered — shorter than what it was given, where some were notifications.
|
|
88
100
|
|
|
89
101
|
```json
|
|
90
|
-
[
|
|
91
|
-
|
|
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
|
+
]
|
|
92
106
|
```
|
|
93
107
|
|
|
94
108
|
They run one after another, in the order given. `batch` is how many one request may carry, 32
|
|
@@ -110,14 +124,14 @@ authenticate.
|
|
|
110
124
|
|
|
111
125
|
Everything else a call runs into is a value, at `200`, because the request itself succeeded.
|
|
112
126
|
|
|
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
|
|
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 |
|
|
118
132
|
| `-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`
|
|
133
|
+
| `-32603` | anything the gateway did not mean to answer |
|
|
134
|
+
| `-32002` | the request carries more calls than `batch` |
|
|
121
135
|
|
|
122
136
|
The first five codes JSON-RPC states mean the same to every client. `-32000` and `-32001` are
|
|
123
137
|
this gateway's, from the block the specification reserves and leaves empty, so
|
|
@@ -127,7 +141,7 @@ in its manifest, and is what a caller reads.
|
|
|
127
141
|
## Authorization
|
|
128
142
|
|
|
129
143
|
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
|
|
144
|
+
A token restricted to `/pots/:id/` for `GET` authorizes `pots._id.GET` and nothing else,
|
|
131
145
|
whichever way the call arrives.
|
|
132
146
|
|
|
133
147
|
[`anonymous`](access.md#anonymous) is the one directive that reads a call differently from a
|
package/documentation/tracing.md
CHANGED
|
@@ -32,7 +32,7 @@ clients instrumented with OpenTelemetry-compatible tooling, or by upstream proxi
|
|
|
32
32
|
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
In addition to the trace ID, it carries the ID of the client span, which becomes the
|
|
35
|
+
In addition to the trace ID, it carries the ID of the client span, which becomes the _parent_ of
|
|
36
36
|
the gateway's server span, linking client-side and server-side spans into a single trace tree.
|
|
37
37
|
|
|
38
38
|
### `ray`
|
|
@@ -52,9 +52,9 @@ Headers with invalid values are ignored, and a new trace is started.
|
|
|
52
52
|
|
|
53
53
|
## Sampling
|
|
54
54
|
|
|
55
|
-
The trace
|
|
55
|
+
The trace _context_ (trace ID) is always created and propagated, so the `ray` header and
|
|
56
56
|
`trace_id` in log entries are always present. The sampling decision only determines whether
|
|
57
|
-
the
|
|
57
|
+
the _spans_ of the trace are recorded.
|
|
58
58
|
|
|
59
59
|
The decision is made once, by the process that starts the trace, and is propagated along with
|
|
60
60
|
the trace context (the flags byte of `traceparent`), so a trace is either recorded as a whole
|
package/documentation/tree.md
CHANGED
|
@@ -112,7 +112,7 @@ key.
|
|
|
112
112
|
HTTP methods can only be mapped to operations of the corresponding types.
|
|
113
113
|
|
|
114
114
|
| HTTP method | Operation type |
|
|
115
|
-
|
|
115
|
+
| ----------- | --------------------------------------------- |
|
|
116
116
|
| `POST` | **Transition** (without Query)<br/>**Effect** |
|
|
117
117
|
| `PUT` | **Transition** (with Query)<br/>**Effect** |
|
|
118
118
|
| `GET` | **Observation**<br/>**Computation** |
|
|
@@ -2,8 +2,8 @@ Feature: Identity assertion
|
|
|
2
2
|
|
|
3
3
|
Scenario: Assert Identity
|
|
4
4
|
Given the `identity.basic` database contains:
|
|
5
|
-
| _id | authority | username | password |
|
|
6
|
-
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1
|
|
5
|
+
| _id | authority | username | password | VERSION |
|
|
6
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
7
7
|
And the `echo` is running with the following manifest:
|
|
8
8
|
"""yaml
|
|
9
9
|
exposition:
|
|
@@ -8,7 +8,7 @@ Feature: Federated identity authentication
|
|
|
8
8
|
And the `identity.federation` configuration:
|
|
9
9
|
"""yaml
|
|
10
10
|
trust:
|
|
11
|
-
- iss: http://localhost:
|
|
11
|
+
- iss: http://localhost:31005
|
|
12
12
|
aud: test
|
|
13
13
|
"""
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ Feature: Federated identity authentication
|
|
|
18
18
|
/:
|
|
19
19
|
GET:
|
|
20
20
|
auth:claims:
|
|
21
|
-
iss: http://localhost:
|
|
21
|
+
iss: http://localhost:31005
|
|
22
22
|
aud: test
|
|
23
23
|
sub: Bob
|
|
24
24
|
dev:stub: ok
|
|
@@ -62,7 +62,7 @@ Feature: Federated identity authentication
|
|
|
62
62
|
/:
|
|
63
63
|
GET:
|
|
64
64
|
auth:claims:
|
|
65
|
-
iss: http://localhost:
|
|
65
|
+
iss: http://localhost:31005
|
|
66
66
|
aud: test
|
|
67
67
|
dev:stub: ok
|
|
68
68
|
"""
|
|
@@ -84,7 +84,7 @@ Feature: Federated identity authentication
|
|
|
84
84
|
/:
|
|
85
85
|
GET:
|
|
86
86
|
auth:claims:
|
|
87
|
-
iss: http://localhost:
|
|
87
|
+
iss: http://localhost:31005
|
|
88
88
|
sub: Alice
|
|
89
89
|
dev:stub: ok
|
|
90
90
|
"""
|
|
@@ -106,7 +106,7 @@ Feature: Federated identity authentication
|
|
|
106
106
|
/:
|
|
107
107
|
GET:
|
|
108
108
|
auth:claims:
|
|
109
|
-
iss: http://localhost:
|
|
109
|
+
iss: http://localhost:31005
|
|
110
110
|
aud: goalkeepers
|
|
111
111
|
dev:stub: ok
|
|
112
112
|
"""
|
|
@@ -121,8 +121,8 @@ Feature: Identity inception
|
|
|
121
121
|
|
|
122
122
|
Scenario: Inception with a wrong password for existing credentials
|
|
123
123
|
Given the `identity.basic` database contains:
|
|
124
|
-
| _id | authority | username | password |
|
|
125
|
-
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1
|
|
124
|
+
| _id | authority | username | password | VERSION |
|
|
125
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
126
126
|
And the `users` is running with the following manifest:
|
|
127
127
|
"""yaml
|
|
128
128
|
exposition:
|
|
@@ -28,9 +28,9 @@ Feature: Configuration values
|
|
|
28
28
|
type: string
|
|
29
29
|
bar:
|
|
30
30
|
type: string
|
|
31
|
-
default: world
|
|
32
31
|
defaults:
|
|
33
32
|
foo: deployed
|
|
33
|
+
bar: world
|
|
34
34
|
"""
|
|
35
35
|
And the configuration values are running
|
|
36
36
|
|
|
@@ -49,6 +49,7 @@ Feature: Configuration values
|
|
|
49
49
|
|
|
50
50
|
configuration:
|
|
51
51
|
foo: deployed
|
|
52
|
+
bar: world
|
|
52
53
|
schema:
|
|
53
54
|
type: object
|
|
54
55
|
properties:
|
|
@@ -56,7 +57,6 @@ Feature: Configuration values
|
|
|
56
57
|
type: string
|
|
57
58
|
bar:
|
|
58
59
|
type: string
|
|
59
|
-
default: world
|
|
60
60
|
epoch: e1
|
|
61
61
|
"""
|
|
62
62
|
|
|
@@ -82,9 +82,9 @@ Feature: Configuration values
|
|
|
82
82
|
type: string
|
|
83
83
|
bar:
|
|
84
84
|
type: string
|
|
85
|
-
default: world
|
|
86
85
|
configuration:
|
|
87
86
|
foo: deployed
|
|
87
|
+
bar: world
|
|
88
88
|
"""
|
|
89
89
|
|
|
90
90
|
Scenario: Listing without the role
|
|
@@ -154,7 +154,6 @@ Feature: Configuration values
|
|
|
154
154
|
|
|
155
155
|
configuration:
|
|
156
156
|
foo: created
|
|
157
|
-
bar: world
|
|
158
157
|
epoch: e1
|
|
159
158
|
"""
|
|
160
159
|
|
|
@@ -7,12 +7,12 @@ Feature: Persistent credentials management
|
|
|
7
7
|
| _id | authority | username | password |
|
|
8
8
|
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
9
9
|
And the `identity.federation` database contains:
|
|
10
|
-
| _id | authority | identity | iss | sub |
|
|
11
|
-
| fed3a65ebbee47ed95a73edd911ea328 | nex | efe3a65ebbee47ed95a73edd911ea328 | https://accounts.google.com | google | 1000
|
|
12
|
-
| fed3a65ebbee47ed95a73edd911ea329 | nex | efe3a65ebbee47ed95a73edd911ea328 | https://appleid.apple.com | apple | 900
|
|
10
|
+
| _id | authority | identity | iss | sub | CREATED |
|
|
11
|
+
| fed3a65ebbee47ed95a73edd911ea328 | nex | efe3a65ebbee47ed95a73edd911ea328 | https://accounts.google.com | google | 1000 |
|
|
12
|
+
| fed3a65ebbee47ed95a73edd911ea329 | nex | efe3a65ebbee47ed95a73edd911ea328 | https://appleid.apple.com | apple | 900 |
|
|
13
13
|
And the `identity.passkeys` database contains:
|
|
14
|
-
| _id | authority | identity | kid | aid | synced | key
|
|
15
|
-
| ace3a65ebbee47ed95a73edd911ea328 | nex | efe3a65ebbee47ed95a73edd911ea328 | key-one | adce0002-35bc-c60a-648b-0b25f1f05503 | true | cHVibGlj | 0 | Personal iPhone | 2000
|
|
14
|
+
| _id | authority | identity | kid | aid | synced | key | counter | label | CREATED |
|
|
15
|
+
| ace3a65ebbee47ed95a73edd911ea328 | nex | efe3a65ebbee47ed95a73edd911ea328 | key-one | adce0002-35bc-c60a-648b-0b25f1f05503 | true | cHVibGlj | 0 | Personal iPhone | 2000 |
|
|
16
16
|
|
|
17
17
|
Scenario: Listing all persistent credentials
|
|
18
18
|
When the following request is received:
|
|
@@ -32,16 +32,16 @@ Feature: Persistent credentials management
|
|
|
32
32
|
federation:
|
|
33
33
|
- id: fed3a65ebbee47ed95a73edd911ea328
|
|
34
34
|
iss: https://accounts.google.com
|
|
35
|
-
|
|
35
|
+
CREATED: 1000
|
|
36
36
|
- id: fed3a65ebbee47ed95a73edd911ea329
|
|
37
37
|
iss: https://appleid.apple.com
|
|
38
|
-
|
|
38
|
+
CREATED: 900
|
|
39
39
|
passkeys:
|
|
40
40
|
- id: ace3a65ebbee47ed95a73edd911ea328
|
|
41
41
|
aid: adce0002-35bc-c60a-648b-0b25f1f05503
|
|
42
42
|
synced: true
|
|
43
43
|
label: Personal iPhone
|
|
44
|
-
|
|
44
|
+
CREATED: 2000
|
|
45
45
|
"""
|
|
46
46
|
|
|
47
47
|
Scenario: Deleting credentials through their components
|
|
@@ -101,6 +101,6 @@ Feature: Persistent credentials management
|
|
|
101
101
|
federation:
|
|
102
102
|
- id: fed3a65ebbee47ed95a73edd911ea329
|
|
103
103
|
iss: https://appleid.apple.com
|
|
104
|
-
|
|
104
|
+
CREATED: 900
|
|
105
105
|
passkeys: []
|
|
106
106
|
"""
|
package/features/dev.feature
CHANGED
package/features/dynamic.feature
CHANGED
package/features/errors.feature
CHANGED
|
@@ -92,6 +92,27 @@ Feature: Errors
|
|
|
92
92
|
must have required property 'title'
|
|
93
93
|
"""
|
|
94
94
|
|
|
95
|
+
Scenario: Criteria value the property cannot hold
|
|
96
|
+
Given the `pots` is running with the following manifest:
|
|
97
|
+
"""yaml
|
|
98
|
+
exposition:
|
|
99
|
+
/:
|
|
100
|
+
GET: enumerate
|
|
101
|
+
"""
|
|
102
|
+
When the following request is received:
|
|
103
|
+
"""
|
|
104
|
+
GET /pots/?criteria=volume>abc HTTP/1.1
|
|
105
|
+
host: nex.toa.io
|
|
106
|
+
accept: text/plain
|
|
107
|
+
"""
|
|
108
|
+
Then the following reply is sent:
|
|
109
|
+
"""
|
|
110
|
+
400 Bad Request
|
|
111
|
+
content-type: text/plain
|
|
112
|
+
|
|
113
|
+
Criteria selector 'volume' takes a number, and 'abc' is not one
|
|
114
|
+
"""
|
|
115
|
+
|
|
95
116
|
Scenario: Query limit out of range
|
|
96
117
|
Given the `pots` is running with the following manifest:
|
|
97
118
|
"""yaml
|