@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.
Files changed (526) hide show
  1. package/components/identity.basic/package.json +8 -0
  2. package/components/identity.federation/package.json +8 -0
  3. package/components/identity.passkeys/package.json +8 -0
  4. package/components/identity.tokens/package.json +10 -0
  5. package/package.json +25 -13
  6. package/transpiled/Discovery/Explorer.js +1 -1
  7. package/transpiled/Discovery/Explorer.js.map +1 -1
  8. package/transpiled/Discovery/Site.js +1 -1
  9. package/transpiled/Discovery/Site.js.map +1 -1
  10. package/transpiled/Discovery/trunk.js +1 -1
  11. package/transpiled/Discovery/trunk.js.map +1 -1
  12. package/transpiled/Endpoint.js +3 -0
  13. package/transpiled/Endpoint.js.map +1 -1
  14. package/transpiled/Factory.js +1 -1
  15. package/transpiled/Factory.js.map +1 -1
  16. package/transpiled/Gateway.js +1 -1
  17. package/transpiled/Gateway.js.map +1 -1
  18. package/transpiled/HTTP/Server.d.ts +1 -1
  19. package/transpiled/HTTP/Server.js +1 -1
  20. package/transpiled/HTTP/Server.js.map +1 -1
  21. package/transpiled/Introspection.d.ts +6 -0
  22. package/transpiled/Introspection.js +1 -0
  23. package/transpiled/Introspection.js.map +1 -1
  24. package/transpiled/MCP/Server.d.ts +1 -1
  25. package/transpiled/MCP/Server.js +1 -1
  26. package/transpiled/MCP/Server.js.map +1 -1
  27. package/transpiled/MCP/discover.d.ts +1 -1
  28. package/transpiled/MCP/schema.js +2 -2
  29. package/transpiled/Query.d.ts +2 -12
  30. package/transpiled/Query.js +3 -13
  31. package/transpiled/Query.js.map +1 -1
  32. package/transpiled/RPC/Dispatcher.d.ts +1 -1
  33. package/transpiled/RPC/Dispatcher.js +2 -2
  34. package/transpiled/RPC/Dispatcher.js.map +1 -1
  35. package/transpiled/RTD/Endpoint.d.ts +2 -3
  36. package/transpiled/RTD/Tree.js +1 -1
  37. package/transpiled/RTD/Tree.js.map +1 -1
  38. package/transpiled/RTD/factory.js +1 -1
  39. package/transpiled/RTD/factory.js.map +1 -1
  40. package/transpiled/RTD/syntax/index.d.ts +1 -2
  41. package/transpiled/RTD/syntax/index.js +1 -2
  42. package/transpiled/RTD/syntax/index.js.map +1 -1
  43. package/transpiled/Tenant.js +1 -1
  44. package/transpiled/Tenant.js.map +1 -1
  45. package/transpiled/directives/auth/Authorization.js +1 -1
  46. package/transpiled/directives/auth/Authorization.js.map +1 -1
  47. package/transpiled/directives/io/IO.js +1 -1
  48. package/transpiled/directives/io/IO.js.map +1 -1
  49. package/transpiled/directives/oauth/documents.d.ts +1 -1
  50. package/transpiled/index.d.ts +0 -2
  51. package/transpiled/index.js +0 -2
  52. package/transpiled/index.js.map +1 -1
  53. package/transpiled/service.js +1 -1
  54. package/transpiled/service.js.map +1 -1
  55. package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
  56. package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
  57. package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
  58. package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
  59. package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
  60. package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
  61. package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
  62. package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
  63. package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
  64. package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
  65. package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
  66. package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
  67. package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
  68. package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
  69. package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
  70. package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
  71. package/ui/dist/_app/version.json +1 -1
  72. package/ui/dist/index.html +12 -12
  73. package/CHANGELOG.md +0 -35
  74. package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
  75. package/components/identity.basic/source/lib/credentials.test.ts +0 -18
  76. package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
  77. package/components/identity.clients/source/lib/canonical.test.ts +0 -43
  78. package/components/identity.clients/source/lib/cimd.test.ts +0 -122
  79. package/components/identity.clients/source/lib/redirect.test.ts +0 -47
  80. package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
  81. package/components/identity.credentials/source/list.test.ts +0 -70
  82. package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
  83. package/components/identity.federation/source/lib/discovery.test.ts +0 -60
  84. package/components/identity.federation/source/list.test.ts +0 -41
  85. package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
  86. package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
  87. package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
  88. package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
  89. package/components/identity.passkeys/source/errors.test.ts +0 -34
  90. package/components/identity.passkeys/source/webauthn.test.ts +0 -26
  91. package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
  92. package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
  93. package/components/identity.tokens/source/authenticate.test.ts +0 -112
  94. package/components/identity.tokens/source/decrypt.test.ts +0 -216
  95. package/components/identity.tokens/source/encrypt.test.ts +0 -150
  96. package/components/identity.tokens/source/issue.test.ts +0 -73
  97. package/components/identity.tokens/source/lib/form.test.ts +0 -25
  98. package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
  99. package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
  100. package/context.toa.yaml +0 -31
  101. package/cucumber.mjs +0 -7
  102. package/documentation/.assets/ia3-dark.jpg +0 -0
  103. package/documentation/.assets/ia3-light.jpg +0 -0
  104. package/documentation/.assets/overview-dark.jpg +0 -0
  105. package/documentation/.assets/overview-light.jpg +0 -0
  106. package/documentation/.assets/role-scopes-dark.jpg +0 -0
  107. package/documentation/.assets/role-scopes-light.jpg +0 -0
  108. package/documentation/.assets/rtd-dark.jpg +0 -0
  109. package/documentation/.assets/rtd-light.jpg +0 -0
  110. package/documentation/access.md +0 -350
  111. package/documentation/authorities.md +0 -51
  112. package/documentation/cache.md +0 -72
  113. package/documentation/components.md +0 -472
  114. package/documentation/consent.md +0 -101
  115. package/documentation/credentials.md +0 -88
  116. package/documentation/dev.md +0 -30
  117. package/documentation/discovery.md +0 -81
  118. package/documentation/flow.md +0 -44
  119. package/documentation/help.md +0 -122
  120. package/documentation/identity.md +0 -304
  121. package/documentation/introspection.md +0 -123
  122. package/documentation/io.md +0 -167
  123. package/documentation/ip.md +0 -24
  124. package/documentation/map.md +0 -123
  125. package/documentation/mcp.md +0 -183
  126. package/documentation/notes/desync.jpg +0 -0
  127. package/documentation/notes/peers.md +0 -59
  128. package/documentation/notes/sse.md +0 -71
  129. package/documentation/notes/throttling.md +0 -122
  130. package/documentation/oauth.md +0 -180
  131. package/documentation/octets.md +0 -334
  132. package/documentation/passkeys.md +0 -11
  133. package/documentation/protocol.md +0 -120
  134. package/documentation/query.md +0 -324
  135. package/documentation/require.md +0 -15
  136. package/documentation/rpc.md +0 -154
  137. package/documentation/tracing.md +0 -70
  138. package/documentation/tree.md +0 -199
  139. package/features/access.feature +0 -596
  140. package/features/annotation.feature +0 -32
  141. package/features/auth.assert.feature +0 -55
  142. package/features/auth.bearer.feature +0 -120
  143. package/features/auth.claims.feature +0 -171
  144. package/features/auth.incept.feature +0 -166
  145. package/features/auth.input.feature +0 -59
  146. package/features/authorities.basic.feature +0 -141
  147. package/features/authorities.feature +0 -71
  148. package/features/authorities.federation.feature +0 -100
  149. package/features/authorities.tokens.feature +0 -117
  150. package/features/body.feature +0 -76
  151. package/features/cache.feature +0 -368
  152. package/features/configuration.feature +0 -206
  153. package/features/cors.feature +0 -127
  154. package/features/credentials.feature +0 -106
  155. package/features/debug.feature +0 -34
  156. package/features/dev.feature +0 -90
  157. package/features/directives.feature +0 -61
  158. package/features/discovery.feature +0 -213
  159. package/features/discovery.ui.feature +0 -213
  160. package/features/dynamic.feature +0 -192
  161. package/features/errors.feature +0 -258
  162. package/features/etag.feature +0 -239
  163. package/features/flow.feature +0 -148
  164. package/features/help.feature +0 -512
  165. package/features/identity.bans.feature +0 -200
  166. package/features/identity.basic.feature +0 -666
  167. package/features/identity.feature +0 -240
  168. package/features/identity.federation.feature +0 -396
  169. package/features/identity.otp.feature +0 -142
  170. package/features/identity.roles.feature +0 -568
  171. package/features/identity.tokens.custom.feature +0 -430
  172. package/features/identity.tokens.feature +0 -131
  173. package/features/interruptions.feature +0 -20
  174. package/features/introspection.feature +0 -565
  175. package/features/introspection.map.feature +0 -108
  176. package/features/io.feature +0 -204
  177. package/features/io.throttle.feature +0 -166
  178. package/features/map.feature +0 -360
  179. package/features/mcp.feature +0 -753
  180. package/features/methods.feature +0 -48
  181. package/features/oauth.clients.feature +0 -195
  182. package/features/oauth.discovery.feature +0 -164
  183. package/features/oauth.grants.feature +0 -301
  184. package/features/octets.cloudinary.feature +0 -233
  185. package/features/octets.download.feature +0 -194
  186. package/features/octets.entries.feature +0 -83
  187. package/features/octets.feature +0 -306
  188. package/features/octets.head.feature +0 -40
  189. package/features/octets.location.feature +0 -83
  190. package/features/octets.meta.feature +0 -117
  191. package/features/octets.workflows.feature +0 -565
  192. package/features/passkeys.feature +0 -66
  193. package/features/probes.feature +0 -18
  194. package/features/query.feature +0 -389
  195. package/features/realtime.feature +0 -34
  196. package/features/require.feature +0 -66
  197. package/features/response.feature +0 -103
  198. package/features/routes.feature +0 -224
  199. package/features/rpc.feature +0 -429
  200. package/features/server.feature +0 -21
  201. package/features/site/_app/immutable/asset.js +0 -1
  202. package/features/site/favicon.ico +0 -0
  203. package/features/site/index.html +0 -10
  204. package/features/steps/.env.example +0 -5
  205. package/features/steps/Captures.ts +0 -20
  206. package/features/steps/Cloudinary.ts +0 -12
  207. package/features/steps/Common.ts +0 -38
  208. package/features/steps/Components.ts +0 -115
  209. package/features/steps/Database.ts +0 -106
  210. package/features/steps/Gateway.ts +0 -240
  211. package/features/steps/HTTP.ts +0 -96
  212. package/features/steps/IDP.ts +0 -361
  213. package/features/steps/Identity.ts +0 -54
  214. package/features/steps/OTP.ts +0 -42
  215. package/features/steps/Parameters.ts +0 -162
  216. package/features/steps/Probe.ts +0 -38
  217. package/features/steps/Realtime.ts +0 -175
  218. package/features/steps/Workspace.ts +0 -48
  219. package/features/steps/components/audit/manifest.toa.yaml +0 -20
  220. package/features/steps/components/audit/operations/record.js +0 -5
  221. package/features/steps/components/echo/manifest.toa.yaml +0 -59
  222. package/features/steps/components/echo/operations/affect.js +0 -3
  223. package/features/steps/components/echo/operations/compute.js +0 -3
  224. package/features/steps/components/echo/operations/echo.js +0 -3
  225. package/features/steps/components/echo/operations/error.js +0 -7
  226. package/features/steps/components/echo/operations/identity.js +0 -3
  227. package/features/steps/components/echo/operations/parameters.js +0 -3
  228. package/features/steps/components/echo/operations/ping.js +0 -3
  229. package/features/steps/components/echo/operations/unwrap.js +0 -3
  230. package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
  231. package/features/steps/components/echo.beacon/operations/hello.js +0 -3
  232. package/features/steps/components/greeter/manifest.toa.yaml +0 -5
  233. package/features/steps/components/greeter/operations/greet.js +0 -3
  234. package/features/steps/components/notify/manifest.toa.yaml +0 -20
  235. package/features/steps/components/notify/operations/send.js +0 -5
  236. package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
  237. package/features/steps/components/octets.tester/operations/authority.js +0 -3
  238. package/features/steps/components/octets.tester/operations/bar.js +0 -9
  239. package/features/steps/components/octets.tester/operations/baz.js +0 -9
  240. package/features/steps/components/octets.tester/operations/concat.js +0 -5
  241. package/features/steps/components/octets.tester/operations/echo.js +0 -5
  242. package/features/steps/components/octets.tester/operations/err.js +0 -14
  243. package/features/steps/components/octets.tester/operations/foo.js +0 -5
  244. package/features/steps/components/octets.tester/operations/id.js +0 -5
  245. package/features/steps/components/octets.tester/operations/identity.js +0 -5
  246. package/features/steps/components/octets.tester/operations/lenna.png +0 -0
  247. package/features/steps/components/octets.tester/operations/redirect.js +0 -17
  248. package/features/steps/components/octets.tester/operations/yex.js +0 -14
  249. package/features/steps/components/octets.tester/operations/yield.js +0 -11
  250. package/features/steps/components/orders/manifest.toa.yaml +0 -30
  251. package/features/steps/components/orders/operations/create.js +0 -7
  252. package/features/steps/components/pots/manifest.toa.yaml +0 -91
  253. package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
  254. package/features/steps/components/pricing/manifest.toa.yaml +0 -13
  255. package/features/steps/components/pricing/operations/quote.js +0 -3
  256. package/features/steps/components/sequences/manifest.toa.yaml +0 -11
  257. package/features/steps/components/sequences/operations/numbers.js +0 -5
  258. package/features/steps/components/sequences/operations/tokens.js +0 -14
  259. package/features/steps/components/users/manifest.toa.yaml +0 -30
  260. package/features/steps/components/users/operations/create.js +0 -11
  261. package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
  262. package/features/steps/map.ts +0 -30
  263. package/features/steps/tsconfig.json +0 -9
  264. package/features/streams.feature +0 -35
  265. package/features/timestamps.feature +0 -41
  266. package/features/timing.feature +0 -49
  267. package/features/tracing.feature +0 -123
  268. package/schemas/annotation.cos.yaml +0 -125
  269. package/schemas/call.cos.yaml +0 -18
  270. package/schemas/directive.cos.yaml +0 -7
  271. package/schemas/method.cos.yaml +0 -23
  272. package/schemas/node.cos.yaml +0 -22
  273. package/schemas/query.cos.yaml +0 -31
  274. package/schemas/querystring.cos.yaml +0 -19
  275. package/schemas/range.cos.yaml +0 -10
  276. package/schemas/route.cos.yaml +0 -6
  277. package/source/Annotation.ts +0 -89
  278. package/source/Branch.test.ts +0 -40
  279. package/source/Branch.ts +0 -44
  280. package/source/Composition.ts +0 -51
  281. package/source/Context.ts +0 -11
  282. package/source/Directive.test.ts +0 -199
  283. package/source/Directive.ts +0 -248
  284. package/source/Discovery/Explorer.ts +0 -34
  285. package/source/Discovery/Site.test.ts +0 -147
  286. package/source/Discovery/Site.ts +0 -202
  287. package/source/Discovery/index.ts +0 -3
  288. package/source/Discovery/tree.test.ts +0 -175
  289. package/source/Discovery/tree.ts +0 -77
  290. package/source/Discovery/trunk.ts +0 -33
  291. package/source/Endpoint.test.ts +0 -67
  292. package/source/Endpoint.ts +0 -157
  293. package/source/Factory.ts +0 -42
  294. package/source/Gateway.ts +0 -390
  295. package/source/HTTP/Context.ts +0 -143
  296. package/source/HTTP/Probe.ts +0 -99
  297. package/source/HTTP/Server.ts +0 -430
  298. package/source/HTTP/Timing.ts +0 -14
  299. package/source/HTTP/address.test.ts +0 -28
  300. package/source/HTTP/address.ts +0 -16
  301. package/source/HTTP/exceptions.ts +0 -99
  302. package/source/HTTP/formats/form.ts +0 -21
  303. package/source/HTTP/formats/index.ts +0 -36
  304. package/source/HTTP/formats/json.ts +0 -14
  305. package/source/HTTP/formats/msgpack.ts +0 -14
  306. package/source/HTTP/formats/text.ts +0 -10
  307. package/source/HTTP/formats/yaml.test.ts +0 -22
  308. package/source/HTTP/formats/yaml.ts +0 -40
  309. package/source/HTTP/index.ts +0 -6
  310. package/source/HTTP/messages.test.ts +0 -196
  311. package/source/HTTP/messages.ts +0 -186
  312. package/source/HTTP/types.ts +0 -39
  313. package/source/Interception.ts +0 -37
  314. package/source/Introspection.ts +0 -179
  315. package/source/MCP/Server.ts +0 -335
  316. package/source/MCP/discover.ts +0 -51
  317. package/source/MCP/errors.ts +0 -80
  318. package/source/MCP/index.ts +0 -1
  319. package/source/MCP/schema.test.ts +0 -91
  320. package/source/MCP/schema.ts +0 -94
  321. package/source/MCP/tools.ts +0 -144
  322. package/source/MCP/types.ts +0 -84
  323. package/source/Mapping.ts +0 -101
  324. package/source/Query.test.ts +0 -54
  325. package/source/Query.ts +0 -277
  326. package/source/RPC/Context.ts +0 -75
  327. package/source/RPC/Dispatcher.ts +0 -150
  328. package/source/RPC/errors.test.ts +0 -77
  329. package/source/RPC/errors.ts +0 -82
  330. package/source/RPC/index.ts +0 -1
  331. package/source/RPC/names.test.ts +0 -141
  332. package/source/RPC/names.ts +0 -176
  333. package/source/RPC/types.ts +0 -34
  334. package/source/RTD/Context.ts +0 -16
  335. package/source/RTD/Directives.ts +0 -126
  336. package/source/RTD/Endpoint.ts +0 -27
  337. package/source/RTD/Match.ts +0 -11
  338. package/source/RTD/Method.ts +0 -39
  339. package/source/RTD/Node.ts +0 -169
  340. package/source/RTD/Route.ts +0 -93
  341. package/source/RTD/Tree.ts +0 -137
  342. package/source/RTD/expiration.test.ts +0 -81
  343. package/source/RTD/factory.ts +0 -105
  344. package/source/RTD/index.ts +0 -8
  345. package/source/RTD/segment.test.ts +0 -35
  346. package/source/RTD/segment.ts +0 -51
  347. package/source/RTD/syntax/index.ts +0 -2
  348. package/source/RTD/syntax/parse.test.ts +0 -196
  349. package/source/RTD/syntax/parse.ts +0 -171
  350. package/source/RTD/syntax/types.ts +0 -69
  351. package/source/RTD/walk.test.ts +0 -147
  352. package/source/Remotes.test.ts +0 -79
  353. package/source/Remotes.ts +0 -39
  354. package/source/Tenant.ts +0 -73
  355. package/source/const.ts +0 -45
  356. package/source/deployment.ts +0 -96
  357. package/source/directives/auth/Anonymous.test.ts +0 -70
  358. package/source/directives/auth/Anonymous.ts +0 -36
  359. package/source/directives/auth/Anyone.ts +0 -23
  360. package/source/directives/auth/Assert.ts +0 -43
  361. package/source/directives/auth/Authorization.test.ts +0 -24
  362. package/source/directives/auth/Authorization.ts +0 -388
  363. package/source/directives/auth/Delegate.test.ts +0 -36
  364. package/source/directives/auth/Delegate.ts +0 -54
  365. package/source/directives/auth/Echo.ts +0 -24
  366. package/source/directives/auth/Federation.ts +0 -104
  367. package/source/directives/auth/Id.ts +0 -37
  368. package/source/directives/auth/Incept.ts +0 -117
  369. package/source/directives/auth/Input.ts +0 -92
  370. package/source/directives/auth/Role.test.ts +0 -147
  371. package/source/directives/auth/Role.ts +0 -99
  372. package/source/directives/auth/Rule.ts +0 -59
  373. package/source/directives/auth/Scheme.ts +0 -31
  374. package/source/directives/auth/create.ts +0 -11
  375. package/source/directives/auth/index.ts +0 -3
  376. package/source/directives/auth/schemes.test.ts +0 -18
  377. package/source/directives/auth/schemes.ts +0 -39
  378. package/source/directives/auth/split.ts +0 -14
  379. package/source/directives/auth/types.ts +0 -75
  380. package/source/directives/cache/Cache.ts +0 -92
  381. package/source/directives/cache/Control.ts +0 -81
  382. package/source/directives/cache/Exact.ts +0 -7
  383. package/source/directives/cache/etag.ts +0 -38
  384. package/source/directives/cache/index.ts +0 -3
  385. package/source/directives/cache/types.ts +0 -9
  386. package/source/directives/cors/CORS.test.ts +0 -75
  387. package/source/directives/cors/CORS.ts +0 -88
  388. package/source/directives/cors/index.ts +0 -3
  389. package/source/directives/dev/Development.ts +0 -41
  390. package/source/directives/dev/Faulty.ts +0 -31
  391. package/source/directives/dev/Sleep.ts +0 -53
  392. package/source/directives/dev/Stub.ts +0 -14
  393. package/source/directives/dev/Throw.ts +0 -14
  394. package/source/directives/dev/index.ts +0 -3
  395. package/source/directives/dev/types.ts +0 -5
  396. package/source/directives/flow/Compose.ts +0 -98
  397. package/source/directives/flow/Fetch.ts +0 -86
  398. package/source/directives/flow/Flow.ts +0 -43
  399. package/source/directives/flow/index.ts +0 -3
  400. package/source/directives/flow/types.ts +0 -7
  401. package/source/directives/help/Family.ts +0 -122
  402. package/source/directives/help/Help.test.ts +0 -227
  403. package/source/directives/help/Help.ts +0 -47
  404. package/source/directives/help/Parameters.ts +0 -47
  405. package/source/directives/help/described.ts +0 -57
  406. package/source/directives/help/index.ts +0 -45
  407. package/source/directives/index.ts +0 -33
  408. package/source/directives/io/Directive.ts +0 -17
  409. package/source/directives/io/IO.ts +0 -118
  410. package/source/directives/io/Input.ts +0 -55
  411. package/source/directives/io/Message.ts +0 -1
  412. package/source/directives/io/Output.ts +0 -81
  413. package/source/directives/io/Status.test.ts +0 -88
  414. package/source/directives/io/Status.ts +0 -47
  415. package/source/directives/io/Throttle.ts +0 -30
  416. package/source/directives/io/index.ts +0 -3
  417. package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
  418. package/source/directives/io/lib/throttle/Configuration.ts +0 -68
  419. package/source/directives/io/lib/throttle/Keys.ts +0 -53
  420. package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
  421. package/source/directives/io/lib/throttle/Quotas.ts +0 -190
  422. package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
  423. package/source/directives/io/lib/throttle/Sync.ts +0 -93
  424. package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
  425. package/source/directives/io/lib/throttle/Warning.ts +0 -29
  426. package/source/directives/io/lib/throttle/components/Component.ts +0 -7
  427. package/source/directives/io/lib/throttle/components/IP.ts +0 -30
  428. package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
  429. package/source/directives/io/lib/throttle/components/Path.ts +0 -8
  430. package/source/directives/io/lib/throttle/components/Route.ts +0 -19
  431. package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
  432. package/source/directives/io/lib/throttle/components/index.ts +0 -19
  433. package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
  434. package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
  435. package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
  436. package/source/directives/io/lib/throttle/index.ts +0 -4
  437. package/source/directives/io/schemas.test.ts +0 -40
  438. package/source/directives/io/schemas.ts +0 -16
  439. package/source/directives/map/Authority.ts +0 -15
  440. package/source/directives/map/Buffer.ts +0 -15
  441. package/source/directives/map/Claims.ts +0 -63
  442. package/source/directives/map/Directive.ts +0 -4
  443. package/source/directives/map/Headers.ts +0 -60
  444. package/source/directives/map/Language.ts +0 -45
  445. package/source/directives/map/Languages.ts +0 -17
  446. package/source/directives/map/Map.ts +0 -85
  447. package/source/directives/map/Mapping.ts +0 -45
  448. package/source/directives/map/Properties.ts +0 -15
  449. package/source/directives/map/Segments.ts +0 -52
  450. package/source/directives/map/index.ts +0 -3
  451. package/source/directives/mcp/MCP.ts +0 -33
  452. package/source/directives/mcp/Tool.test.ts +0 -56
  453. package/source/directives/mcp/Tool.ts +0 -32
  454. package/source/directives/mcp/index.ts +0 -6
  455. package/source/directives/oauth/Discovery.ts +0 -66
  456. package/source/directives/oauth/documents.ts +0 -110
  457. package/source/directives/oauth/index.ts +0 -3
  458. package/source/directives/octets/Context.ts +0 -23
  459. package/source/directives/octets/Delete.ts +0 -96
  460. package/source/directives/octets/Directive.ts +0 -21
  461. package/source/directives/octets/Get.ts +0 -88
  462. package/source/directives/octets/Octets.ts +0 -82
  463. package/source/directives/octets/Put.ts +0 -186
  464. package/source/directives/octets/Workflow.ts +0 -60
  465. package/source/directives/octets/bytes.test.ts +0 -33
  466. package/source/directives/octets/bytes.ts +0 -18
  467. package/source/directives/octets/index.ts +0 -3
  468. package/source/directives/octets/schemas.test.ts +0 -20
  469. package/source/directives/octets/schemas.ts +0 -15
  470. package/source/directives/octets/types.ts +0 -9
  471. package/source/directives/octets/workflows/Execution.ts +0 -130
  472. package/source/directives/octets/workflows/Workflow.ts +0 -51
  473. package/source/directives/octets/workflows/index.ts +0 -1
  474. package/source/directives/require/Directive.ts +0 -5
  475. package/source/directives/require/Headers.ts +0 -19
  476. package/source/directives/require/Require.ts +0 -27
  477. package/source/directives/require/index.ts +0 -3
  478. package/source/discovery.ts +0 -1
  479. package/source/exceptions.ts +0 -47
  480. package/source/index.ts +0 -12
  481. package/source/io.ts +0 -4
  482. package/source/manifest.test.ts +0 -56
  483. package/source/manifest.ts +0 -56
  484. package/source/octets.d.ts +0 -17
  485. package/source/root.ts +0 -59
  486. package/source/schemas.test.ts +0 -31
  487. package/source/schemas.ts +0 -15
  488. package/source/service.ts +0 -94
  489. package/source/shortcuts.ts +0 -14
  490. package/source/userland.ts +0 -47
  491. package/transpiled/Annotation.d.ts +0 -70
  492. package/transpiled/Annotation.js +0 -2
  493. package/transpiled/Annotation.js.map +0 -1
  494. package/transpiled/RTD/syntax/parse.d.ts +0 -4
  495. package/transpiled/RTD/syntax/parse.js +0 -112
  496. package/transpiled/RTD/syntax/parse.js.map +0 -1
  497. package/transpiled/RTD/syntax/types.d.ts +0 -52
  498. package/transpiled/RTD/syntax/types.js +0 -11
  499. package/transpiled/RTD/syntax/types.js.map +0 -1
  500. package/transpiled/const.d.ts +0 -36
  501. package/transpiled/const.js +0 -37
  502. package/transpiled/const.js.map +0 -1
  503. package/transpiled/deployment.d.ts +0 -6
  504. package/transpiled/deployment.js +0 -76
  505. package/transpiled/deployment.js.map +0 -1
  506. package/transpiled/manifest.d.ts +0 -3
  507. package/transpiled/manifest.js +0 -39
  508. package/transpiled/manifest.js.map +0 -1
  509. package/transpiled/schemas.d.ts +0 -9
  510. package/transpiled/schemas.js +0 -9
  511. package/transpiled/schemas.js.map +0 -1
  512. package/transpiled/shortcuts.d.ts +0 -3
  513. package/transpiled/shortcuts.js +0 -13
  514. package/transpiled/shortcuts.js.map +0 -1
  515. package/tsconfig.json +0 -13
  516. package/tsconfig.tsbuildinfo +0 -1
  517. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
  518. package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
  519. package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
  520. package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
  521. package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
  522. package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
  523. package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
  524. package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
  525. package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
  526. package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
@@ -1,48 +0,0 @@
1
- Feature: Supported methods
2
-
3
- Scenario Outline: <method> is supported
4
- Given the annotation:
5
- """yaml
6
- /:
7
- <method>:
8
- dev:stub:
9
- hello: world
10
- """
11
- And the `greeter` is running with the following manifest:
12
- """yaml
13
- exposition:
14
- /:
15
- <method>:
16
- dev:stub:
17
- hello: world
18
- """
19
- Examples:
20
- | method |
21
- | GET |
22
- | POST |
23
- | PUT |
24
- | DELETE |
25
- | PATCH |
26
- | LOCK |
27
- | UNLOCK |
28
-
29
- Scenario: CORS allowed methods
30
- Given the annotation:
31
- """yaml
32
- /:
33
- GET:
34
- dev:stub:
35
- hello: world
36
- """
37
- When the following request is received:
38
- """
39
- OPTIONS / HTTP/1.1
40
- access-control-request-method: GET
41
- host: nex.toa.io
42
- origin: https://hello.world
43
- """
44
- Then the following reply is sent:
45
- """
46
- 204 No Content
47
- access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, LOCK, UNLOCK, OPTIONS
48
- """
@@ -1,195 +0,0 @@
1
- @security
2
- Feature: Client registration
3
-
4
- A client that speaks nothing else registers what it is and is given an identifier for it.
5
- The identifier is a hash of the metadata, so a client that cannot remember it registered
6
- here does not leave another row every time it connects.
7
-
8
- Background:
9
- Given the `identity.clients` database is empty
10
- And the `identity.basic` database contains:
11
- | _id | authority | username | password |
12
- | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
13
- And the annotation:
14
- """yaml
15
- authorities:
16
- nex: nex.toa.io
17
- oauth:
18
- authorize: https://app.nex.toa.io/oauth/authorize
19
- registration: open
20
- """
21
-
22
- Scenario: A client registers what it is
23
- When the following request is received:
24
- """
25
- POST /identity/clients/ HTTP/1.1
26
- host: nex.toa.io
27
- content-type: application/yaml
28
- accept: application/yaml
29
-
30
- client_name: Claude
31
- redirect_uris:
32
- - https://claude.ai/api/mcp/auth_callback
33
- token_endpoint_auth_method: none
34
- """
35
- Then the following reply is sent:
36
- """
37
- 201 Created
38
- cache-control: no-store
39
-
40
- client_id: ${{ client }}
41
- client_name: Claude
42
- redirect_uris:
43
- - https://claude.ai/api/mcp/auth_callback
44
- grant_types:
45
- - authorization_code
46
- response_types:
47
- - code
48
- token_endpoint_auth_method: none
49
- """
50
-
51
- Scenario: The same client is the same client
52
- When the following request is received:
53
- """
54
- POST /identity/clients/ HTTP/1.1
55
- host: nex.toa.io
56
- content-type: application/yaml
57
- accept: application/yaml
58
-
59
- client_name: Claude
60
- redirect_uris:
61
- - https://claude.ai/api/mcp/auth_callback
62
- - http://localhost/callback
63
- """
64
- Then the following reply is sent:
65
- """
66
- 201 Created
67
-
68
- client_id: ${{ first }}
69
- """
70
- # the same metadata, written in another order
71
- When the following request is received:
72
- """
73
- POST /identity/clients/ HTTP/1.1
74
- host: nex.toa.io
75
- content-type: application/yaml
76
- accept: application/yaml
77
-
78
- client_name: Claude
79
- redirect_uris:
80
- - http://localhost/callback
81
- - https://claude.ai/api/mcp/auth_callback
82
- """
83
- Then the following reply is sent:
84
- """
85
- 201 Created
86
-
87
- client_id: ${{ first }}
88
- """
89
-
90
- Scenario: A redirect a code must not be sent to
91
- When the following request is received:
92
- """
93
- POST /identity/clients/ HTTP/1.1
94
- host: nex.toa.io
95
- content-type: application/yaml
96
- accept: application/yaml
97
-
98
- client_name: Insecure
99
- redirect_uris:
100
- - http://example.com/callback
101
- """
102
- Then the following reply is sent:
103
- """
104
- 400 Bad Request
105
- cache-control: no-store
106
-
107
- error: invalid_redirect_uri
108
- """
109
-
110
- Scenario: A client that would authenticate at the token endpoint
111
- When the following request is received:
112
- """
113
- POST /identity/clients/ HTTP/1.1
114
- host: nex.toa.io
115
- content-type: application/yaml
116
- accept: application/yaml
117
-
118
- client_name: Confidential
119
- redirect_uris:
120
- - https://claude.ai/api/mcp/auth_callback
121
- token_endpoint_auth_method: client_secret_post
122
- """
123
- Then the following reply is sent:
124
- """
125
- 400 Bad Request
126
-
127
- error: invalid_client_metadata
128
- """
129
-
130
- Scenario: Registration is advertised once it is opened
131
- When the following request is received:
132
- """
133
- GET /.well-known/oauth-authorization-server HTTP/1.1
134
- host: nex.toa.io
135
- accept: application/yaml
136
- """
137
- Then the following reply is sent:
138
- """
139
- 200 OK
140
-
141
- registration_endpoint: https://nex.toa.io/identity/clients/
142
- """
143
-
144
- Scenario: The consent page reads who is asking
145
- When the following request is received:
146
- """
147
- POST /identity/clients/ HTTP/1.1
148
- host: nex.toa.io
149
- content-type: application/yaml
150
- accept: application/yaml
151
-
152
- client_name: Claude
153
- client_uri: https://claude.ai
154
- redirect_uris:
155
- - https://claude.ai/api/mcp/auth_callback
156
- """
157
- Then the following reply is sent:
158
- """
159
- 201 Created
160
-
161
- client_id: ${{ client }}
162
- """
163
- # the page is authenticated by the time it asks, so this is not anonymous
164
- When the following request is received:
165
- """
166
- GET /identity/clients/${{ client }}/ HTTP/1.1
167
- host: nex.toa.io
168
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
169
- accept: application/yaml
170
- """
171
- Then the following reply is sent:
172
- """
173
- 200 OK
174
-
175
- client_id: ${{ client }}
176
- client_name: Claude
177
- client_uri: https://claude.ai
178
- redirect_uris:
179
- - https://claude.ai/api/mcp/auth_callback
180
- """
181
-
182
- Scenario: A client nobody registered
183
- When the following request is received:
184
- """
185
- GET /identity/clients/00000000000000000000000000000000/ HTTP/1.1
186
- host: nex.toa.io
187
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
188
- accept: application/yaml
189
- """
190
- Then the following reply is sent:
191
- """
192
- 422 Unprocessable Entity
193
-
194
- code: UNKNOWN_CLIENT
195
- """
@@ -1,164 +0,0 @@
1
- @security
2
- Feature: Authorization server discovery
3
-
4
- What a client reads before it can authenticate. Both documents are public, are a
5
- function of the annotation alone, and are answered before anything is routed.
6
-
7
- Background:
8
- Given the annotation:
9
- """yaml
10
- authorities:
11
- nex: nex.toa.io
12
- oauth:
13
- authorize: https://app.nex.toa.io/oauth/authorize
14
- resources: ['/.mcp']
15
- scopes: [app:notes]
16
- mcp:
17
- name: Teapots
18
- """
19
-
20
- Scenario: The authorization server names its endpoints
21
- When the following request is received:
22
- """
23
- GET /.well-known/oauth-authorization-server HTTP/1.1
24
- host: nex.toa.io
25
- accept: application/yaml
26
- """
27
- Then the following reply is sent:
28
- """
29
- 200 OK
30
-
31
- issuer: https://nex.toa.io
32
- authorization_endpoint: https://app.nex.toa.io/oauth/authorize
33
- token_endpoint: https://nex.toa.io/identity/grants/
34
- response_types_supported:
35
- - code
36
- grant_types_supported:
37
- - authorization_code
38
- code_challenge_methods_supported:
39
- - S256
40
- token_endpoint_auth_methods_supported:
41
- - none
42
- client_id_metadata_document_supported: true
43
- authorization_response_iss_parameter_supported: true
44
- scopes_supported:
45
- - app:notes
46
- """
47
-
48
- Scenario: Registration is not advertised unless it is opened
49
- When the following request is received:
50
- """
51
- GET /.well-known/oauth-authorization-server HTTP/1.1
52
- host: nex.toa.io
53
- accept: application/yaml
54
- """
55
- Then the reply does not contain:
56
- """
57
- registration_endpoint
58
- """
59
-
60
- Scenario: The protected resource is named by the path it is reached at
61
- When the following request is received:
62
- """
63
- GET /.well-known/oauth-protected-resource/.mcp HTTP/1.1
64
- host: nex.toa.io
65
- accept: application/yaml
66
- """
67
- Then the following reply is sent:
68
- """
69
- 200 OK
70
-
71
- resource: https://nex.toa.io/.mcp
72
- authorization_servers:
73
- - https://nex.toa.io
74
- bearer_methods_supported:
75
- - header
76
- scopes_supported:
77
- - app:notes
78
- """
79
-
80
- Scenario: The origin has a document of its own
81
- When the following request is received:
82
- """
83
- GET /.well-known/oauth-protected-resource HTTP/1.1
84
- host: nex.toa.io
85
- accept: application/yaml
86
- """
87
- Then the following reply is sent:
88
- """
89
- 200 OK
90
-
91
- resource: https://nex.toa.io
92
- authorization_servers:
93
- - https://nex.toa.io
94
- bearer_methods_supported:
95
- - header
96
- scopes_supported:
97
- - app:notes
98
- """
99
-
100
- Scenario: A client holding a stale token still reads discovery
101
- When the following request is received:
102
- """
103
- GET /.well-known/oauth-authorization-server HTTP/1.1
104
- host: nex.toa.io
105
- authorization: Bearer expired.and.useless
106
- accept: application/yaml
107
- """
108
- Then the following reply is sent:
109
- """
110
- 200 OK
111
-
112
- issuer: https://nex.toa.io
113
- """
114
-
115
- Scenario: The challenge names the resource the request was refused at
116
- When the following request is received:
117
- """
118
- POST /.mcp HTTP/1.1
119
- host: nex.toa.io
120
- accept: text/plain
121
- content-type: application/json
122
-
123
- {"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}
124
- """
125
- Then the following reply is sent:
126
- """
127
- 401 Unauthorized
128
- www-authenticate: Bearer resource_metadata="https://nex.toa.io/.well-known/oauth-protected-resource/.mcp", scope="app:notes"
129
- """
130
-
131
- Scenario: A host named after a property a plain object answers on its own
132
- When the following request is received:
133
- """
134
- GET /.well-known/oauth-authorization-server HTTP/1.1
135
- host: constructor
136
- accept: application/yaml
137
- """
138
- Then the following reply is sent:
139
- """
140
- 404 Not Found
141
- """
142
-
143
- Scenario: An authorization server nobody annotated is not discovered
144
- Given the annotation:
145
- """yaml
146
- authorities:
147
- nex: nex.toa.io
148
- /:
149
- io:output: true
150
- /hello/:
151
- anonymous: true
152
- GET:
153
- dev:stub: Hello
154
- """
155
- When the following request is received:
156
- """
157
- GET /.well-known/oauth-authorization-server HTTP/1.1
158
- host: nex.toa.io
159
- accept: application/yaml
160
- """
161
- Then the following reply is sent:
162
- """
163
- 404 Not Found
164
- """
@@ -1,301 +0,0 @@
1
- @security
2
- Feature: Authorization code flow
3
-
4
- A client is refused, finds the authorization server, registers, is consented to by a user,
5
- and exchanges the code it was given for a token it can come back with. The consent page is
6
- the application's own — the two calls in the background are what it would make.
7
-
8
- Background:
9
- Given the `identity.clients` database is empty
10
- And the `identity.grants` database is empty
11
- And the `identity.basic` database contains:
12
- | _id | authority | username | password |
13
- | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
14
- And the annotation:
15
- """yaml
16
- authorities:
17
- nex: nex.toa.io
18
- oauth:
19
- authorize: https://app.nex.toa.io/oauth/authorize
20
- resources: ['/.mcp']
21
- registration: open
22
- mcp:
23
- name: Teapots
24
- /:
25
- io:output: true
26
- /pots:
27
- anyone: true
28
- GET:
29
- mcp:tool: true
30
- help:method:
31
- description: Every pot there is.
32
- dev:stub: Kettles and teapots.
33
- """
34
- When the following request is received:
35
- """
36
- POST /identity/clients/ HTTP/1.1
37
- host: nex.toa.io
38
- content-type: application/yaml
39
- accept: application/yaml
40
-
41
- client_name: Claude
42
- redirect_uris:
43
- - https://claude.ai/api/mcp/auth_callback
44
- """
45
- Then the following reply is sent:
46
- """
47
- 201 Created
48
-
49
- client_id: ${{ client }}
50
- """
51
- When the following request is received:
52
- """
53
- POST /identity/grants/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
54
- host: nex.toa.io
55
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
56
- content-type: application/yaml
57
- accept: application/yaml
58
-
59
- client: ${{ client }}
60
- redirect: https://claude.ai/api/mcp/auth_callback
61
- challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
62
- method: S256
63
- """
64
- Then the following reply is sent:
65
- """
66
- 201 Created
67
- cache-control: no-store
68
-
69
- code: ${{ code }}
70
- expires_in: 60
71
- """
72
-
73
- Scenario: A client comes back with the token it was given
74
- # nothing yet, and the client is told where to get one
75
- When the following request is received:
76
- """
77
- POST /.mcp HTTP/1.1
78
- host: nex.toa.io
79
- accept: application/yaml
80
- content-type: application/json
81
-
82
- {"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}
83
- """
84
- Then the following reply is sent:
85
- """
86
- 401 Unauthorized
87
- www-authenticate: Bearer resource_metadata="https://nex.toa.io/.well-known/oauth-protected-resource/.mcp"
88
- """
89
- When the following request is received:
90
- """
91
- POST /identity/grants/ HTTP/1.1
92
- host: nex.toa.io
93
- content-type: application/x-www-form-urlencoded
94
- accept: application/yaml
95
-
96
- grant_type=authorization_code&code=${{ code }}&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk&redirect_uri=https%3A%2F%2Fclaude.ai%2Fapi%2Fmcp%2Fauth_callback&client_id=${{ client }}
97
- """
98
- Then the following reply is sent:
99
- """
100
- 200 OK
101
- cache-control: no-store
102
-
103
- access_token: ${{ access_token }}
104
- token_type: Bearer
105
- """
106
- When the following request is received:
107
- """
108
- POST /.mcp HTTP/1.1
109
- host: nex.toa.io
110
- authorization: Bearer ${{ access_token }}
111
- accept: application/yaml
112
- content-type: application/json
113
-
114
- {"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}
115
- """
116
- Then the following reply is sent:
117
- """
118
- 200 OK
119
-
120
- jsonrpc: '2.0'
121
- id: 1
122
- result:
123
- tools:
124
- - name: pots.GET
125
- """
126
-
127
- Scenario: A code is spent once
128
- When the following request is received:
129
- """
130
- POST /identity/grants/ HTTP/1.1
131
- host: nex.toa.io
132
- content-type: application/x-www-form-urlencoded
133
- accept: application/yaml
134
-
135
- grant_type=authorization_code&code=${{ code }}&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
136
- """
137
- Then the following reply is sent:
138
- """
139
- 200 OK
140
- """
141
- When the following request is received:
142
- """
143
- POST /identity/grants/ HTTP/1.1
144
- host: nex.toa.io
145
- content-type: application/x-www-form-urlencoded
146
- accept: application/yaml
147
-
148
- grant_type=authorization_code&code=${{ code }}&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
149
- """
150
- Then the following reply is sent:
151
- """
152
- 400 Bad Request
153
-
154
- error: invalid_grant
155
- """
156
-
157
- Scenario: A verifier that did not make that challenge
158
- When the following request is received:
159
- """
160
- POST /identity/grants/ HTTP/1.1
161
- host: nex.toa.io
162
- content-type: application/x-www-form-urlencoded
163
- accept: application/yaml
164
-
165
- grant_type=authorization_code&code=${{ code }}&code_verifier=this-is-not-the-verifier-that-made-that-challenge
166
- """
167
- Then the following reply is sent:
168
- """
169
- 400 Bad Request
170
-
171
- error: invalid_grant
172
- """
173
- # the code was spent trying, so guessing at it buys nothing
174
- When the following request is received:
175
- """
176
- POST /identity/grants/ HTTP/1.1
177
- host: nex.toa.io
178
- content-type: application/x-www-form-urlencoded
179
- accept: application/yaml
180
-
181
- grant_type=authorization_code&code=${{ code }}&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
182
- """
183
- Then the following reply is sent:
184
- """
185
- 400 Bad Request
186
-
187
- error: invalid_grant
188
- """
189
-
190
- Scenario: A redirect swapped between authorizing and exchanging
191
- When the following request is received:
192
- """
193
- POST /identity/grants/ HTTP/1.1
194
- host: nex.toa.io
195
- content-type: application/x-www-form-urlencoded
196
- accept: application/yaml
197
-
198
- grant_type=authorization_code&code=${{ code }}&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk&redirect_uri=https%3A%2F%2Fevil.example%2Fcallback
199
- """
200
- Then the following reply is sent:
201
- """
202
- 400 Bad Request
203
-
204
- error: invalid_grant
205
- """
206
-
207
- Scenario: A grant nobody may be sent a code for
208
- When the following request is received:
209
- """
210
- POST /identity/grants/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
211
- host: nex.toa.io
212
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
213
- content-type: application/yaml
214
- accept: application/yaml
215
-
216
- client: ${{ client }}
217
- redirect: https://evil.example/callback
218
- challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
219
- method: S256
220
- """
221
- Then the following reply is sent:
222
- """
223
- 400 Bad Request
224
-
225
- error: invalid_request
226
- """
227
-
228
- Scenario: A challenge method that proves nothing
229
- When the following request is received:
230
- """
231
- POST /identity/grants/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
232
- host: nex.toa.io
233
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
234
- content-type: application/yaml
235
- accept: application/yaml
236
-
237
- client: ${{ client }}
238
- redirect: https://claude.ai/api/mcp/auth_callback
239
- challenge: E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
240
- method: plain
241
- """
242
- Then the following reply is sent:
243
- """
244
- 400 Bad Request
245
-
246
- error: invalid_request
247
- """
248
-
249
- Scenario: A grant only its own identity may see
250
- When the following request is received:
251
- """
252
- GET /identity/grants/00000000000000000000000000000000/ HTTP/1.1
253
- host: nex.toa.io
254
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
255
- accept: application/yaml
256
- """
257
- Then the following reply is sent:
258
- """
259
- 403 Forbidden
260
- """
261
-
262
- Scenario: Taking back what was allowed
263
- When the following request is received:
264
- """
265
- POST /identity/grants/ HTTP/1.1
266
- host: nex.toa.io
267
- content-type: application/x-www-form-urlencoded
268
- accept: application/yaml
269
-
270
- grant_type=authorization_code&code=${{ code }}&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
271
- """
272
- Then the following reply is sent:
273
- """
274
- 200 OK
275
-
276
- access_token: ${{ access_token }}
277
- """
278
- When the following request is received:
279
- """
280
- GET /identity/grants/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
281
- host: nex.toa.io
282
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
283
- accept: application/yaml
284
- """
285
- Then the following reply is sent:
286
- """
287
- 200 OK
288
-
289
- - id: ${{ grant }}
290
- client: ${{ client }}
291
- """
292
- When the following request is received:
293
- """
294
- DELETE /identity/grants/efe3a65ebbee47ed95a73edd911ea328/${{ grant }}/ HTTP/1.1
295
- host: nex.toa.io
296
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
297
- """
298
- Then the following reply is sent:
299
- """
300
- 204 No Content
301
- """