@toa.io/extensions.exposition 1.0.0-alpha.27 → 1.0.0-alpha.271

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 (913) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/components/exposition.octets/manifest.toa.yaml +29 -0
  3. package/components/exposition.octets/operations/get.js +7 -0
  4. package/components/exposition.octets/operations/head.js +7 -0
  5. package/components/exposition.octets/operations/put.js +135 -0
  6. package/components/exposition.stash/manifest.toa.yaml +21 -0
  7. package/components/exposition.stash/operations/meter.js +7 -0
  8. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -1
  9. package/components/identity.basic/manifest.toa.yaml +93 -11
  10. package/components/identity.basic/operations/add.d.ts +3 -0
  11. package/components/identity.basic/operations/add.js +17 -0
  12. package/components/identity.basic/operations/add.js.map +1 -0
  13. package/components/identity.basic/operations/authenticate.js +2 -2
  14. package/components/identity.basic/operations/authenticate.js.map +1 -1
  15. package/components/identity.basic/operations/check.d.ts +7 -0
  16. package/components/identity.basic/operations/check.js +15 -0
  17. package/components/identity.basic/operations/check.js.map +1 -0
  18. package/components/identity.basic/operations/delete.d.ts +7 -0
  19. package/components/identity.basic/operations/delete.js +11 -0
  20. package/components/identity.basic/operations/delete.js.map +1 -0
  21. package/components/identity.basic/operations/incept.d.ts +1 -1
  22. package/components/identity.basic/operations/incept.js +9 -3
  23. package/components/identity.basic/operations/incept.js.map +1 -1
  24. package/components/identity.basic/operations/info.d.ts +10 -0
  25. package/components/identity.basic/operations/info.js +11 -0
  26. package/components/identity.basic/operations/info.js.map +1 -0
  27. package/components/identity.basic/operations/transit.d.ts +2 -2
  28. package/components/identity.basic/operations/transit.js +11 -7
  29. package/components/identity.basic/operations/transit.js.map +1 -1
  30. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  31. package/components/identity.basic/operations/types.d.ts +18 -7
  32. package/components/identity.basic/source/add.ts +15 -0
  33. package/components/identity.basic/source/authenticate.ts +2 -2
  34. package/components/identity.basic/source/check.ts +20 -0
  35. package/components/identity.basic/source/delete.ts +15 -0
  36. package/components/identity.basic/source/incept.ts +10 -4
  37. package/components/identity.basic/source/info.ts +19 -0
  38. package/components/identity.basic/source/transit.ts +14 -11
  39. package/components/identity.basic/source/types.ts +20 -7
  40. package/components/identity.credentials/manifest.toa.yaml +57 -0
  41. package/components/identity.credentials/operations/list.d.ts +51 -0
  42. package/components/identity.credentials/operations/list.js +32 -0
  43. package/components/identity.credentials/operations/list.js.map +1 -0
  44. package/components/identity.credentials/operations/tsconfig.tsbuildinfo +1 -0
  45. package/components/identity.credentials/source/list.test.ts +47 -0
  46. package/components/identity.credentials/source/list.ts +87 -0
  47. package/components/identity.credentials/tsconfig.json +7 -0
  48. package/components/identity.federation/events/principal.js +2 -2
  49. package/components/identity.federation/manifest.toa.yaml +110 -40
  50. package/components/identity.federation/operations/authenticate.d.ts +16 -3
  51. package/components/identity.federation/operations/authenticate.js +24 -16
  52. package/components/identity.federation/operations/authenticate.js.map +1 -1
  53. package/components/identity.federation/operations/create.d.ts +8 -0
  54. package/components/identity.federation/operations/create.js +27 -0
  55. package/components/identity.federation/operations/create.js.map +1 -0
  56. package/components/identity.federation/operations/decode.d.ts +3 -0
  57. package/components/identity.federation/operations/decode.js +13 -0
  58. package/components/identity.federation/operations/decode.js.map +1 -0
  59. package/components/identity.federation/operations/delete.d.ts +8 -0
  60. package/components/identity.federation/operations/delete.js +11 -0
  61. package/components/identity.federation/operations/delete.js.map +1 -0
  62. package/components/identity.federation/operations/incept.d.ts +6 -6
  63. package/components/identity.federation/operations/incept.js +5 -9
  64. package/components/identity.federation/operations/incept.js.map +1 -1
  65. package/components/identity.federation/operations/lib/Configuration.d.ts +39 -0
  66. package/components/identity.federation/operations/lib/Configuration.js +3 -0
  67. package/components/identity.federation/operations/lib/Configuration.js.map +1 -0
  68. package/components/identity.federation/operations/lib/Ctx.d.ts +8 -0
  69. package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/lib/Ctx.js} +1 -1
  70. package/components/identity.federation/operations/lib/Ctx.js.map +1 -0
  71. package/components/identity.federation/operations/lib/Payload.d.ts +5 -0
  72. package/components/identity.federation/operations/lib/Payload.js +3 -0
  73. package/components/identity.federation/operations/lib/Payload.js.map +1 -0
  74. package/components/identity.federation/operations/lib/decode.d.ts +3 -0
  75. package/components/identity.federation/operations/lib/decode.js +22 -0
  76. package/components/identity.federation/operations/lib/decode.js.map +1 -0
  77. package/components/identity.federation/operations/lib/discovery.d.ts +5 -0
  78. package/components/identity.federation/operations/lib/discovery.js +39 -0
  79. package/components/identity.federation/operations/lib/discovery.js.map +1 -0
  80. package/components/identity.federation/operations/lib/errors.d.ts +11 -0
  81. package/components/identity.federation/operations/lib/errors.js +15 -0
  82. package/components/identity.federation/operations/lib/errors.js.map +1 -0
  83. package/components/identity.federation/operations/lib/exchange.d.ts +3 -0
  84. package/components/identity.federation/operations/lib/exchange.js +108 -0
  85. package/components/identity.federation/operations/lib/exchange.js.map +1 -0
  86. package/components/identity.federation/operations/lib/index.d.ts +4 -0
  87. package/components/identity.federation/operations/lib/index.js +10 -0
  88. package/components/identity.federation/operations/lib/index.js.map +1 -0
  89. package/components/identity.federation/operations/lib/jose.d.ts +41 -0
  90. package/components/identity.federation/operations/lib/{assertions-as-values.js → jose.js} +4 -22
  91. package/components/identity.federation/operations/lib/jose.js.map +1 -0
  92. package/components/identity.federation/operations/lib/resolve.d.ts +3 -0
  93. package/components/identity.federation/operations/lib/resolve.js +17 -0
  94. package/components/identity.federation/operations/lib/resolve.js.map +1 -0
  95. package/components/identity.federation/operations/list.d.ts +7 -0
  96. package/components/identity.federation/operations/list.js +15 -0
  97. package/components/identity.federation/operations/list.js.map +1 -0
  98. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  99. package/components/identity.federation/operations/types/Scheme.d.ts +1 -0
  100. package/components/identity.federation/operations/types/Scheme.js +3 -0
  101. package/components/identity.federation/operations/types/Scheme.js.map +1 -0
  102. package/components/identity.federation/operations/types/configuration.d.ts +20 -0
  103. package/components/identity.federation/operations/types/configuration.js +3 -0
  104. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  105. package/components/identity.federation/operations/types/context.d.ts +35 -0
  106. package/components/identity.federation/operations/types/context.js +3 -0
  107. package/components/identity.federation/operations/types/context.js.map +1 -0
  108. package/components/identity.federation/operations/types/entity.d.ts +9 -0
  109. package/components/identity.federation/operations/types/entity.js +3 -0
  110. package/components/identity.federation/operations/types/entity.js.map +1 -0
  111. package/components/identity.federation/operations/types/index.d.ts +4 -0
  112. package/components/identity.federation/operations/types/index.js +21 -0
  113. package/components/identity.federation/operations/types/index.js.map +1 -0
  114. package/components/identity.federation/source/authenticate.ts +41 -21
  115. package/components/identity.federation/source/create.ts +39 -0
  116. package/components/identity.federation/source/decode.ts +11 -0
  117. package/components/identity.federation/source/delete.ts +16 -0
  118. package/components/identity.federation/source/incept.ts +9 -17
  119. package/components/identity.federation/source/lib/Configuration.ts +39 -0
  120. package/components/identity.federation/source/lib/Ctx.ts +9 -0
  121. package/components/identity.federation/source/lib/Payload.ts +6 -0
  122. package/components/identity.federation/source/lib/decode.ts +27 -0
  123. package/components/identity.federation/source/lib/discovery.test.ts +45 -0
  124. package/components/identity.federation/source/lib/discovery.ts +49 -0
  125. package/components/identity.federation/source/lib/errors.ts +12 -0
  126. package/components/identity.federation/source/lib/exchange.ts +116 -0
  127. package/components/identity.federation/source/lib/index.ts +4 -0
  128. package/components/identity.federation/source/lib/jose.d.ts +1 -0
  129. package/components/identity.federation/source/lib/jose.js +5 -0
  130. package/components/identity.federation/source/lib/resolve.ts +17 -0
  131. package/components/identity.federation/source/list.test.ts +22 -0
  132. package/components/identity.federation/source/list.ts +17 -0
  133. package/components/identity.federation/source/types/Scheme.ts +1 -0
  134. package/components/identity.federation/source/types/configuration.ts +21 -0
  135. package/components/identity.federation/source/types/context.ts +38 -0
  136. package/components/identity.federation/source/types/entity.ts +9 -0
  137. package/components/identity.federation/source/types/index.ts +4 -0
  138. package/components/identity.federation/tsconfig.json +1 -3
  139. package/components/identity.keys/manifest.toa.yaml +58 -0
  140. package/components/identity.keys/operations/create.d.ts +22 -0
  141. package/components/identity.keys/operations/create.js +16 -0
  142. package/components/identity.keys/operations/create.js.map +1 -0
  143. package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -0
  144. package/components/identity.keys/source/create.ts +35 -0
  145. package/components/identity.keys/tsconfig.json +9 -0
  146. package/components/identity.otp/manifest.toa.yaml +69 -0
  147. package/components/identity.otp/operations/authenticate.d.ts +12 -0
  148. package/components/identity.otp/operations/authenticate.js +31 -0
  149. package/components/identity.otp/operations/authenticate.js.map +1 -0
  150. package/components/identity.otp/operations/issue.d.ts +12 -0
  151. package/components/identity.otp/operations/issue.js +22 -0
  152. package/components/identity.otp/operations/issue.js.map +1 -0
  153. package/components/identity.otp/operations/lib/Context.d.ts +13 -0
  154. package/components/identity.otp/operations/lib/Context.js +3 -0
  155. package/components/identity.otp/operations/lib/Context.js.map +1 -0
  156. package/components/identity.otp/operations/lib/Entity.d.ts +6 -0
  157. package/components/identity.otp/operations/lib/Entity.js +3 -0
  158. package/components/identity.otp/operations/lib/Entity.js.map +1 -0
  159. package/components/identity.otp/operations/lib/index.d.ts +1 -0
  160. package/components/identity.otp/operations/lib/index.js +3 -0
  161. package/components/identity.otp/operations/lib/index.js.map +1 -0
  162. package/components/identity.otp/operations/tsconfig.tsbuildinfo +1 -0
  163. package/components/identity.otp/source/authenticate.ts +48 -0
  164. package/components/identity.otp/source/issue.ts +34 -0
  165. package/components/identity.otp/source/lib/Context.ts +14 -0
  166. package/components/identity.otp/source/lib/Entity.ts +6 -0
  167. package/components/identity.otp/source/lib/index.ts +1 -0
  168. package/components/identity.otp/tsconfig.json +9 -0
  169. package/components/identity.passkeys/manifest.toa.yaml +276 -0
  170. package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
  171. package/components/identity.passkeys/operations/authenticate.js +34 -0
  172. package/components/identity.passkeys/operations/authenticate.js.map +1 -0
  173. package/components/identity.passkeys/operations/challenge.d.ts +35 -0
  174. package/components/identity.passkeys/operations/challenge.js +73 -0
  175. package/components/identity.passkeys/operations/challenge.js.map +1 -0
  176. package/components/identity.passkeys/operations/create.d.ts +19 -0
  177. package/components/identity.passkeys/operations/create.js +58 -0
  178. package/components/identity.passkeys/operations/create.js.map +1 -0
  179. package/components/identity.passkeys/operations/delete.d.ts +8 -0
  180. package/components/identity.passkeys/operations/delete.js +12 -0
  181. package/components/identity.passkeys/operations/delete.js.map +1 -0
  182. package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
  183. package/components/identity.passkeys/operations/lib/const.js +5 -0
  184. package/components/identity.passkeys/operations/lib/const.js.map +1 -0
  185. package/components/identity.passkeys/operations/list.d.ts +7 -0
  186. package/components/identity.passkeys/operations/list.js +15 -0
  187. package/components/identity.passkeys/operations/list.js.map +1 -0
  188. package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +1 -0
  189. package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
  190. package/components/identity.passkeys/operations/types/Configuration.js +3 -0
  191. package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
  192. package/components/identity.passkeys/operations/types/Context.d.ts +15 -0
  193. package/components/identity.passkeys/operations/types/Context.js +3 -0
  194. package/components/identity.passkeys/operations/types/Context.js.map +1 -0
  195. package/components/identity.passkeys/operations/types/Passkey.d.ts +13 -0
  196. package/components/identity.passkeys/operations/types/Passkey.js +3 -0
  197. package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
  198. package/components/identity.passkeys/operations/types/index.d.ts +2 -0
  199. package/components/identity.passkeys/operations/types/index.js +3 -0
  200. package/components/identity.passkeys/operations/types/index.js.map +1 -0
  201. package/components/identity.passkeys/operations/use.d.ts +16 -0
  202. package/components/identity.passkeys/operations/use.js +57 -0
  203. package/components/identity.passkeys/operations/use.js.map +1 -0
  204. package/components/identity.passkeys/source/authenticate.ts +48 -0
  205. package/components/identity.passkeys/source/challenge.ts +115 -0
  206. package/components/identity.passkeys/source/create.ts +77 -0
  207. package/components/identity.passkeys/source/delete.ts +15 -0
  208. package/components/identity.passkeys/source/lib/const.ts +1 -0
  209. package/components/identity.passkeys/source/list.ts +17 -0
  210. package/components/identity.passkeys/source/types/Configuration.ts +6 -0
  211. package/components/identity.passkeys/source/types/Context.ts +16 -0
  212. package/components/identity.passkeys/source/types/Passkey.ts +14 -0
  213. package/components/identity.passkeys/source/types/index.ts +2 -0
  214. package/components/identity.passkeys/source/use.ts +75 -0
  215. package/components/identity.passkeys/tsconfig.json +9 -0
  216. package/components/identity.roles/manifest.toa.yaml +4 -2
  217. package/components/identity.roles/operations/grant.js +2 -2
  218. package/components/identity.roles/operations/grant.js.map +1 -1
  219. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  220. package/components/identity.roles/receivers/identity.federation.principal.js +6 -0
  221. package/components/identity.roles/source/grant.ts +2 -2
  222. package/components/identity.tokens/manifest.toa.yaml +110 -13
  223. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  224. package/components/identity.tokens/operations/authenticate.js +13 -12
  225. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  226. package/components/identity.tokens/operations/decrypt.d.ts +15 -3
  227. package/components/identity.tokens/operations/decrypt.js +115 -20
  228. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  229. package/components/identity.tokens/operations/encrypt.d.ts +3 -3
  230. package/components/identity.tokens/operations/encrypt.js +30 -13
  231. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  232. package/components/identity.tokens/operations/issue.d.ts +24 -0
  233. package/components/identity.tokens/operations/issue.js +59 -0
  234. package/components/identity.tokens/operations/issue.js.map +1 -0
  235. package/components/identity.tokens/operations/lib/index.d.ts +3 -0
  236. package/components/identity.tokens/operations/lib/index.js +22 -0
  237. package/components/identity.tokens/operations/lib/index.js.map +1 -0
  238. package/components/identity.tokens/operations/lib/jose.d.ts +41 -0
  239. package/components/identity.tokens/operations/lib/jose.js +27 -0
  240. package/components/identity.tokens/operations/lib/jose.js.map +1 -0
  241. package/components/identity.tokens/operations/lib/key.d.ts +1 -0
  242. package/components/identity.tokens/operations/lib/key.js +11 -0
  243. package/components/identity.tokens/operations/lib/key.js.map +1 -0
  244. package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
  245. package/components/identity.tokens/operations/lib/pad.js +5 -0
  246. package/components/identity.tokens/operations/lib/pad.js.map +1 -0
  247. package/components/identity.tokens/operations/lib/types.d.ts +84 -0
  248. package/components/identity.tokens/operations/lib/types.js.map +1 -0
  249. package/components/identity.tokens/operations/revoke.d.ts +2 -2
  250. package/components/identity.tokens/operations/revoke.js.map +1 -1
  251. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  252. package/components/identity.tokens/source/authenticate.test.ts +14 -7
  253. package/components/identity.tokens/source/authenticate.ts +15 -14
  254. package/components/identity.tokens/source/decrypt.test.ts +90 -16
  255. package/components/identity.tokens/source/decrypt.ts +152 -20
  256. package/components/identity.tokens/source/encrypt.test.ts +75 -13
  257. package/components/identity.tokens/source/encrypt.ts +42 -16
  258. package/components/identity.tokens/source/issue.ts +82 -0
  259. package/components/identity.tokens/source/lib/index.ts +3 -0
  260. package/components/identity.tokens/source/lib/jose.d.ts +1 -0
  261. package/components/identity.tokens/source/lib/jose.js +5 -0
  262. package/components/identity.tokens/source/lib/key.ts +8 -0
  263. package/components/identity.tokens/source/lib/pad.ts +1 -0
  264. package/components/identity.tokens/source/lib/paseto.test.ts +16 -0
  265. package/components/identity.tokens/source/lib/types.ts +97 -0
  266. package/components/identity.tokens/source/revoke.ts +2 -2
  267. package/{components/context.toa.yaml → context.toa.yaml} +6 -2
  268. package/cucumber.js +1 -1
  269. package/documentation/access.md +78 -27
  270. package/documentation/authorities.md +6 -11
  271. package/documentation/components.md +174 -56
  272. package/documentation/credentials.md +88 -0
  273. package/documentation/dev.md +30 -0
  274. package/documentation/flow.md +44 -0
  275. package/documentation/identity.md +125 -14
  276. package/documentation/introspection.md +82 -0
  277. package/documentation/io.md +73 -2
  278. package/documentation/map.md +115 -0
  279. package/documentation/notes/desync.jpg +0 -0
  280. package/documentation/notes/peers.md +59 -0
  281. package/documentation/notes/throttling.md +122 -0
  282. package/documentation/octets.md +122 -69
  283. package/documentation/passkeys.md +5 -0
  284. package/documentation/protocol.md +11 -4
  285. package/documentation/query.md +43 -0
  286. package/documentation/tracing.md +70 -0
  287. package/documentation/tree.md +13 -0
  288. package/features/access.feature +123 -3
  289. package/features/auth.assert.feature +57 -0
  290. package/features/auth.claims.feature +170 -0
  291. package/features/auth.incept.feature +120 -0
  292. package/features/auth.input.feature +59 -0
  293. package/features/authorities.feature +3 -3
  294. package/features/authorities.federation.feature +20 -20
  295. package/features/authorities.tokens.feature +1 -2
  296. package/features/body.feature +27 -0
  297. package/features/cache.feature +97 -8
  298. package/features/cors.feature +29 -8
  299. package/features/credentials.feature +106 -0
  300. package/features/dev.feature +87 -0
  301. package/features/dynamic.feature +82 -1
  302. package/features/errors.feature +17 -5
  303. package/features/etag.feature +223 -1
  304. package/features/flow.feature +148 -0
  305. package/features/identity.basic.feature +136 -7
  306. package/features/identity.feature +11 -4
  307. package/features/identity.federation.feature +210 -33
  308. package/features/identity.otp.feature +101 -0
  309. package/features/identity.roles.feature +53 -4
  310. package/features/identity.tokens.feature +4 -102
  311. package/features/identtiy.tokens.custom.feature +246 -0
  312. package/features/interruptions.feature +19 -0
  313. package/features/introspection.feature +153 -0
  314. package/features/introspection.map.feature +92 -0
  315. package/features/io.feature +0 -1
  316. package/features/io.throttle.feature +165 -0
  317. package/features/map.feature +357 -0
  318. package/features/methods.feature +47 -0
  319. package/features/octets.cloudinary.feature +226 -0
  320. package/features/octets.download.feature +190 -0
  321. package/features/octets.entries.feature +13 -61
  322. package/features/octets.feature +52 -70
  323. package/features/octets.head.feature +40 -0
  324. package/features/octets.location.feature +83 -0
  325. package/features/octets.meta.feature +63 -16
  326. package/features/octets.workflows.feature +333 -68
  327. package/features/passkeys.feature +66 -0
  328. package/features/probes.feature +1 -1
  329. package/features/query.feature +101 -0
  330. package/features/realtime.feature +34 -0
  331. package/features/response.feature +29 -0
  332. package/features/routes.feature +85 -0
  333. package/features/server.feature +21 -0
  334. package/features/steps/.env.example +5 -0
  335. package/features/steps/Captures.ts +12 -0
  336. package/features/steps/Common.ts +4 -0
  337. package/features/steps/Components.ts +14 -0
  338. package/features/steps/Database.ts +6 -2
  339. package/features/steps/Gateway.ts +51 -5
  340. package/features/steps/HTTP.ts +27 -3
  341. package/features/steps/IDP.ts +334 -0
  342. package/features/steps/Identity.ts +51 -0
  343. package/features/steps/OTP.ts +39 -0
  344. package/features/steps/Parameters.ts +94 -2
  345. package/features/steps/Realtime.ts +151 -0
  346. package/features/steps/Workspace.ts +1 -2
  347. package/features/steps/components/audit/manifest.toa.yaml +13 -0
  348. package/features/steps/components/audit/operations/record.js +9 -0
  349. package/features/steps/components/echo/manifest.toa.yaml +17 -0
  350. package/features/steps/components/echo/operations/echo.js +7 -0
  351. package/features/steps/components/echo/operations/parameters.js +7 -0
  352. package/features/steps/components/echo/operations/ping.js +7 -0
  353. package/features/steps/components/echo/operations/unwrap.js +7 -0
  354. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  355. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  356. package/features/steps/components/greeter/manifest.toa.yaml +0 -1
  357. package/features/steps/components/notify/manifest.toa.yaml +13 -0
  358. package/features/steps/components/notify/operations/send.js +9 -0
  359. package/features/steps/components/octets.tester/manifest.toa.yaml +26 -3
  360. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  361. package/features/steps/components/octets.tester/operations/bar.js +0 -1
  362. package/features/steps/components/octets.tester/operations/baz.js +1 -1
  363. package/features/steps/components/octets.tester/operations/echo.js +1 -1
  364. package/features/steps/components/octets.tester/operations/foo.js +2 -2
  365. package/features/steps/components/octets.tester/operations/id.js +7 -0
  366. package/features/steps/components/octets.tester/operations/identity.js +7 -0
  367. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  368. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  369. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  370. package/features/steps/components/orders/manifest.toa.yaml +15 -0
  371. package/features/steps/components/orders/operations/create.js +9 -0
  372. package/features/steps/components/pots/manifest.toa.yaml +15 -4
  373. package/features/steps/components/pricing/manifest.toa.yaml +7 -0
  374. package/features/steps/components/pricing/operations/quote.js +7 -0
  375. package/features/steps/components/sequences/manifest.toa.yaml +0 -1
  376. package/features/steps/components/users/manifest.toa.yaml +4 -2
  377. package/features/steps/components/users/operations/create.js +15 -0
  378. package/features/steps/components/users.properties/manifest.toa.yaml +0 -1
  379. package/features/steps/map.ts +26 -0
  380. package/features/streams.feature +4 -0
  381. package/features/timestamps.feature +41 -0
  382. package/features/timing.feature +2 -22
  383. package/features/tracing.feature +123 -0
  384. package/package.json +35 -24
  385. package/readme.md +25 -1
  386. package/schemas/annotation.cos.yaml +12 -1
  387. package/schemas/io/throttle.cos.yaml +42 -0
  388. package/schemas/method.cos.yaml +2 -1
  389. package/schemas/node.cos.yaml +2 -0
  390. package/schemas/octets/put.cos.yaml +28 -0
  391. package/schemas/query.cos.yaml +7 -10
  392. package/schemas/querystring.cos.yaml +1 -0
  393. package/source/Annotation.ts +3 -1
  394. package/source/Branch.ts +1 -0
  395. package/source/Composition.ts +0 -6
  396. package/source/Context.ts +4 -1
  397. package/source/Directive.test.ts +80 -10
  398. package/source/Directive.ts +88 -15
  399. package/source/Endpoint.ts +113 -25
  400. package/source/Factory.ts +47 -3
  401. package/source/Gateway.ts +188 -13
  402. package/source/HTTP/Context.ts +65 -23
  403. package/source/HTTP/Server.ts +217 -48
  404. package/source/HTTP/Timing.ts +1 -12
  405. package/source/HTTP/exceptions.ts +38 -14
  406. package/source/HTTP/formats/index.ts +4 -5
  407. package/source/HTTP/formats/json.ts +2 -4
  408. package/source/HTTP/formats/msgpack.ts +0 -1
  409. package/source/HTTP/formats/text.ts +2 -4
  410. package/source/HTTP/formats/yaml.test.ts +9 -0
  411. package/source/HTTP/formats/yaml.ts +4 -4
  412. package/source/HTTP/messages.test.ts +70 -7
  413. package/source/HTTP/messages.ts +134 -19
  414. package/source/Interception.ts +8 -0
  415. package/source/Introspection.ts +11 -0
  416. package/source/Mapping.ts +63 -20
  417. package/source/Query.test.ts +3 -3
  418. package/source/Query.ts +107 -17
  419. package/source/RTD/Context.ts +4 -1
  420. package/source/RTD/Directives.ts +14 -1
  421. package/source/RTD/Endpoint.ts +3 -0
  422. package/source/RTD/Method.ts +16 -0
  423. package/source/RTD/Node.ts +65 -23
  424. package/source/RTD/Route.ts +19 -9
  425. package/source/RTD/Tree.ts +39 -9
  426. package/source/RTD/expiration.test.ts +78 -0
  427. package/source/RTD/factory.ts +30 -2
  428. package/source/RTD/segment.ts +2 -0
  429. package/source/RTD/syntax/parse.test.ts +1 -1
  430. package/source/RTD/syntax/parse.ts +37 -24
  431. package/source/RTD/syntax/types.ts +9 -4
  432. package/source/Remotes.test.ts +11 -3
  433. package/source/Remotes.ts +11 -7
  434. package/source/Tenant.ts +39 -12
  435. package/source/const.ts +1 -0
  436. package/source/deployment.ts +21 -13
  437. package/source/directives/auth/Anonymous.ts +3 -3
  438. package/source/directives/auth/Anyone.ts +13 -0
  439. package/source/directives/auth/Assert.ts +35 -0
  440. package/source/directives/auth/Authorization.ts +84 -22
  441. package/source/directives/auth/Delegate.ts +9 -5
  442. package/source/directives/auth/Echo.ts +16 -6
  443. package/source/directives/auth/Federation.ts +84 -0
  444. package/source/directives/auth/Id.ts +1 -1
  445. package/source/directives/auth/Incept.ts +75 -23
  446. package/source/directives/auth/Input.ts +71 -0
  447. package/source/directives/auth/Role.test.ts +2 -3
  448. package/source/directives/auth/Role.ts +6 -11
  449. package/source/directives/auth/Rule.ts +3 -6
  450. package/source/directives/auth/Scheme.ts +5 -5
  451. package/source/directives/auth/create.ts +11 -0
  452. package/source/directives/auth/schemes.ts +5 -2
  453. package/source/directives/auth/split.ts +1 -1
  454. package/source/directives/auth/types.ts +12 -7
  455. package/source/directives/cache/Cache.ts +20 -7
  456. package/source/directives/cache/Control.ts +16 -16
  457. package/source/directives/cors/CORS.ts +35 -18
  458. package/source/directives/dev/Development.ts +14 -7
  459. package/source/directives/dev/Faulty.ts +26 -0
  460. package/source/directives/dev/Sleep.ts +55 -0
  461. package/source/directives/dev/types.ts +1 -1
  462. package/source/directives/flow/Compose.ts +92 -0
  463. package/source/directives/flow/Fetch.ts +86 -0
  464. package/source/directives/flow/Flow.ts +42 -0
  465. package/source/directives/flow/index.ts +3 -0
  466. package/source/directives/flow/types.ts +7 -0
  467. package/source/directives/index.ts +3 -2
  468. package/source/directives/io/Directive.ts +9 -3
  469. package/source/directives/io/IO.ts +38 -10
  470. package/source/directives/io/Input.ts +17 -10
  471. package/source/directives/io/Output.ts +18 -9
  472. package/source/directives/io/Throttle.ts +31 -0
  473. package/source/directives/io/lib/throttle/Configuration.test.ts +60 -0
  474. package/source/directives/io/lib/throttle/Configuration.ts +63 -0
  475. package/source/directives/io/lib/throttle/Keys.ts +41 -0
  476. package/source/directives/io/lib/throttle/Quotas.test.ts +382 -0
  477. package/source/directives/io/lib/throttle/Quotas.ts +183 -0
  478. package/source/directives/io/lib/throttle/Sync.test.ts +153 -0
  479. package/source/directives/io/lib/throttle/Sync.ts +99 -0
  480. package/source/directives/io/lib/throttle/components/Component.ts +6 -0
  481. package/source/directives/io/lib/throttle/components/IP.ts +40 -0
  482. package/source/directives/io/lib/throttle/components/Identity.ts +19 -0
  483. package/source/directives/io/lib/throttle/components/Path.ts +8 -0
  484. package/source/directives/io/lib/throttle/components/Route.ts +19 -0
  485. package/source/directives/io/lib/throttle/components/Segment.ts +19 -0
  486. package/source/directives/io/lib/throttle/components/index.ts +19 -0
  487. package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
  488. package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
  489. package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
  490. package/source/directives/io/lib/throttle/index.ts +3 -0
  491. package/source/directives/io/schemas.test.ts +31 -0
  492. package/source/directives/io/schemas.ts +3 -0
  493. package/source/directives/map/Authority.ts +15 -0
  494. package/source/directives/map/Buffer.ts +15 -0
  495. package/source/directives/map/Claims.ts +58 -0
  496. package/source/directives/map/Directive.ts +4 -0
  497. package/source/directives/map/Headers.ts +38 -0
  498. package/source/directives/map/Language.ts +42 -0
  499. package/source/directives/map/Languages.ts +11 -0
  500. package/source/directives/map/Map.ts +63 -0
  501. package/source/directives/map/Mapping.ts +19 -0
  502. package/source/directives/{vary → map}/Properties.ts +2 -4
  503. package/source/directives/map/Segments.ts +33 -0
  504. package/source/directives/map/index.ts +3 -0
  505. package/source/directives/octets/Context.ts +3 -2
  506. package/source/directives/octets/Delete.ts +22 -19
  507. package/source/directives/octets/Get.ts +96 -0
  508. package/source/directives/octets/Octets.ts +11 -13
  509. package/source/directives/octets/Put.ts +138 -0
  510. package/source/directives/octets/Workflow.ts +9 -3
  511. package/source/directives/octets/bytes.test.ts +30 -0
  512. package/source/directives/octets/bytes.ts +18 -0
  513. package/source/directives/octets/schemas.ts +4 -8
  514. package/source/directives/octets/types.ts +2 -0
  515. package/source/directives/octets/workflows/Execution.ts +64 -8
  516. package/source/directives/octets/workflows/Workflow.ts +18 -7
  517. package/source/directives/octets/workflows/index.ts +1 -1
  518. package/source/exceptions.ts +16 -4
  519. package/source/manifest.ts +10 -11
  520. package/source/root.ts +16 -1
  521. package/transpiled/Annotation.d.ts +2 -1
  522. package/transpiled/Branch.d.ts +1 -0
  523. package/transpiled/Composition.d.ts +0 -1
  524. package/transpiled/Composition.js +0 -4
  525. package/transpiled/Composition.js.map +1 -1
  526. package/transpiled/Context.d.ts +2 -1
  527. package/transpiled/Directive.d.ts +8 -1
  528. package/transpiled/Directive.js +65 -14
  529. package/transpiled/Directive.js.map +1 -1
  530. package/transpiled/Endpoint.d.ts +8 -4
  531. package/transpiled/Endpoint.js +78 -19
  532. package/transpiled/Endpoint.js.map +1 -1
  533. package/transpiled/Factory.d.ts +1 -1
  534. package/transpiled/Factory.js +36 -2
  535. package/transpiled/Factory.js.map +1 -1
  536. package/transpiled/Gateway.d.ts +24 -0
  537. package/transpiled/Gateway.js +138 -13
  538. package/transpiled/Gateway.js.map +1 -1
  539. package/transpiled/HTTP/Context.d.ts +7 -3
  540. package/transpiled/HTTP/Context.js +51 -20
  541. package/transpiled/HTTP/Context.js.map +1 -1
  542. package/transpiled/HTTP/Server.d.ts +9 -4
  543. package/transpiled/HTTP/Server.js +170 -38
  544. package/transpiled/HTTP/Server.js.map +1 -1
  545. package/transpiled/HTTP/Timing.d.ts +0 -2
  546. package/transpiled/HTTP/Timing.js +0 -8
  547. package/transpiled/HTTP/Timing.js.map +1 -1
  548. package/transpiled/HTTP/exceptions.d.ts +21 -9
  549. package/transpiled/HTTP/exceptions.js +40 -18
  550. package/transpiled/HTTP/exceptions.js.map +1 -1
  551. package/transpiled/HTTP/formats/index.d.ts +2 -2
  552. package/transpiled/HTTP/formats/index.js +3 -3
  553. package/transpiled/HTTP/formats/index.js.map +1 -1
  554. package/transpiled/HTTP/formats/json.d.ts +2 -2
  555. package/transpiled/HTTP/formats/json.js +3 -4
  556. package/transpiled/HTTP/formats/json.js.map +1 -1
  557. package/transpiled/HTTP/formats/msgpack.d.ts +1 -1
  558. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  559. package/transpiled/HTTP/formats/text.d.ts +2 -2
  560. package/transpiled/HTTP/formats/text.js +3 -4
  561. package/transpiled/HTTP/formats/text.js.map +1 -1
  562. package/transpiled/HTTP/formats/yaml.d.ts +2 -2
  563. package/transpiled/HTTP/formats/yaml.js +5 -5
  564. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  565. package/transpiled/HTTP/messages.d.ts +6 -1
  566. package/transpiled/HTTP/messages.js +118 -13
  567. package/transpiled/HTTP/messages.js.map +1 -1
  568. package/transpiled/Interception.d.ts +2 -0
  569. package/transpiled/Interception.js +4 -0
  570. package/transpiled/Interception.js.map +1 -1
  571. package/transpiled/Introspection.d.ts +9 -0
  572. package/transpiled/Introspection.js +3 -0
  573. package/transpiled/Introspection.js.map +1 -0
  574. package/transpiled/Mapping.d.ts +11 -2
  575. package/transpiled/Mapping.js +47 -18
  576. package/transpiled/Mapping.js.map +1 -1
  577. package/transpiled/Query.d.ts +11 -1
  578. package/transpiled/Query.js +78 -14
  579. package/transpiled/Query.js.map +1 -1
  580. package/transpiled/RTD/Context.d.ts +3 -1
  581. package/transpiled/RTD/Directives.d.ts +11 -1
  582. package/transpiled/RTD/Endpoint.d.ts +1 -0
  583. package/transpiled/RTD/Method.d.ts +4 -0
  584. package/transpiled/RTD/Method.js +11 -0
  585. package/transpiled/RTD/Method.js.map +1 -1
  586. package/transpiled/RTD/Node.d.ts +13 -2
  587. package/transpiled/RTD/Node.js +46 -17
  588. package/transpiled/RTD/Node.js.map +1 -1
  589. package/transpiled/RTD/Route.d.ts +5 -4
  590. package/transpiled/RTD/Route.js +10 -4
  591. package/transpiled/RTD/Route.js.map +1 -1
  592. package/transpiled/RTD/Tree.d.ts +8 -1
  593. package/transpiled/RTD/Tree.js +29 -3
  594. package/transpiled/RTD/Tree.js.map +1 -1
  595. package/transpiled/RTD/factory.d.ts +1 -0
  596. package/transpiled/RTD/factory.js +24 -3
  597. package/transpiled/RTD/factory.js.map +1 -1
  598. package/transpiled/RTD/segment.d.ts +1 -0
  599. package/transpiled/RTD/segment.js +2 -0
  600. package/transpiled/RTD/segment.js.map +1 -1
  601. package/transpiled/RTD/syntax/parse.js +34 -22
  602. package/transpiled/RTD/syntax/parse.js.map +1 -1
  603. package/transpiled/RTD/syntax/types.d.ts +8 -3
  604. package/transpiled/RTD/syntax/types.js +1 -1
  605. package/transpiled/RTD/syntax/types.js.map +1 -1
  606. package/transpiled/Remotes.d.ts +4 -4
  607. package/transpiled/Remotes.js +9 -6
  608. package/transpiled/Remotes.js.map +1 -1
  609. package/transpiled/Tenant.d.ts +9 -4
  610. package/transpiled/Tenant.js +26 -7
  611. package/transpiled/Tenant.js.map +1 -1
  612. package/transpiled/const.d.ts +1 -0
  613. package/transpiled/const.js +5 -0
  614. package/transpiled/const.js.map +1 -0
  615. package/transpiled/deployment.js +17 -11
  616. package/transpiled/deployment.js.map +1 -1
  617. package/transpiled/directives/auth/Anonymous.d.ts +2 -2
  618. package/transpiled/directives/auth/Anonymous.js +2 -2
  619. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  620. package/transpiled/directives/auth/Anyone.d.ts +6 -0
  621. package/transpiled/directives/auth/Anyone.js +14 -0
  622. package/transpiled/directives/auth/Anyone.js.map +1 -0
  623. package/transpiled/directives/auth/Assert.d.ts +7 -0
  624. package/transpiled/directives/auth/Assert.js +57 -0
  625. package/transpiled/directives/auth/Assert.js.map +1 -0
  626. package/transpiled/directives/auth/Authorization.d.ts +5 -3
  627. package/transpiled/directives/auth/Authorization.js +67 -21
  628. package/transpiled/directives/auth/Authorization.js.map +1 -1
  629. package/transpiled/directives/auth/Delegate.d.ts +5 -4
  630. package/transpiled/directives/auth/Delegate.js +7 -3
  631. package/transpiled/directives/auth/Delegate.js.map +1 -1
  632. package/transpiled/directives/auth/Echo.d.ts +4 -4
  633. package/transpiled/directives/auth/Echo.js +11 -4
  634. package/transpiled/directives/auth/Echo.js.map +1 -1
  635. package/transpiled/directives/auth/Federation.d.ts +16 -0
  636. package/transpiled/directives/auth/Federation.js +57 -0
  637. package/transpiled/directives/auth/Federation.js.map +1 -0
  638. package/transpiled/directives/auth/Id.d.ts +1 -1
  639. package/transpiled/directives/auth/Id.js.map +1 -1
  640. package/transpiled/directives/auth/Incept.d.ts +8 -5
  641. package/transpiled/directives/auth/Incept.js +56 -18
  642. package/transpiled/directives/auth/Incept.js.map +1 -1
  643. package/transpiled/directives/auth/Input.d.ts +13 -0
  644. package/transpiled/directives/auth/Input.js +49 -0
  645. package/transpiled/directives/auth/Input.js.map +1 -0
  646. package/transpiled/directives/auth/Role.d.ts +1 -1
  647. package/transpiled/directives/auth/Role.js +4 -6
  648. package/transpiled/directives/auth/Role.js.map +1 -1
  649. package/transpiled/directives/auth/Rule.d.ts +2 -4
  650. package/transpiled/directives/auth/Rule.js +2 -2
  651. package/transpiled/directives/auth/Rule.js.map +1 -1
  652. package/transpiled/directives/auth/Scheme.d.ts +2 -2
  653. package/transpiled/directives/auth/Scheme.js +4 -4
  654. package/transpiled/directives/auth/Scheme.js.map +1 -1
  655. package/transpiled/directives/auth/create.d.ts +2 -0
  656. package/transpiled/directives/auth/create.js +14 -0
  657. package/transpiled/directives/auth/create.js.map +1 -0
  658. package/transpiled/directives/auth/schemes.d.ts +2 -1
  659. package/transpiled/directives/auth/schemes.js +5 -2
  660. package/transpiled/directives/auth/schemes.js.map +1 -1
  661. package/transpiled/directives/auth/split.js +1 -1
  662. package/transpiled/directives/auth/split.js.map +1 -1
  663. package/transpiled/directives/auth/types.d.ts +10 -7
  664. package/transpiled/directives/cache/Cache.d.ts +3 -3
  665. package/transpiled/directives/cache/Cache.js +15 -4
  666. package/transpiled/directives/cache/Cache.js.map +1 -1
  667. package/transpiled/directives/cache/Control.d.ts +2 -2
  668. package/transpiled/directives/cache/Control.js +12 -12
  669. package/transpiled/directives/cache/Control.js.map +1 -1
  670. package/transpiled/directives/cors/CORS.d.ts +8 -1
  671. package/transpiled/directives/cors/CORS.js +30 -16
  672. package/transpiled/directives/cors/CORS.js.map +1 -1
  673. package/transpiled/directives/dev/Development.d.ts +1 -1
  674. package/transpiled/directives/dev/Development.js +15 -7
  675. package/transpiled/directives/dev/Development.js.map +1 -1
  676. package/transpiled/directives/dev/Faulty.d.ts +8 -0
  677. package/transpiled/directives/dev/Faulty.js +26 -0
  678. package/transpiled/directives/dev/Faulty.js.map +1 -0
  679. package/transpiled/directives/dev/Sleep.d.ts +9 -0
  680. package/transpiled/directives/dev/Sleep.js +48 -0
  681. package/transpiled/directives/dev/Sleep.js.map +1 -0
  682. package/transpiled/directives/dev/types.d.ts +1 -1
  683. package/transpiled/directives/flow/Compose.d.ts +9 -0
  684. package/transpiled/directives/flow/Compose.js +94 -0
  685. package/transpiled/directives/flow/Compose.js.map +1 -0
  686. package/transpiled/directives/flow/Fetch.d.ts +12 -0
  687. package/transpiled/directives/flow/Fetch.js +58 -0
  688. package/transpiled/directives/flow/Fetch.js.map +1 -0
  689. package/transpiled/directives/flow/Flow.d.ts +10 -0
  690. package/transpiled/directives/flow/Flow.js +33 -0
  691. package/transpiled/directives/flow/Flow.js.map +1 -0
  692. package/transpiled/directives/flow/index.d.ts +2 -0
  693. package/transpiled/directives/flow/index.js +6 -0
  694. package/transpiled/directives/flow/index.js.map +1 -0
  695. package/transpiled/directives/flow/types.d.ts +6 -0
  696. package/transpiled/directives/flow/types.js.map +1 -0
  697. package/transpiled/directives/index.js +3 -2
  698. package/transpiled/directives/index.js.map +1 -1
  699. package/transpiled/directives/io/Directive.d.ts +8 -3
  700. package/transpiled/directives/io/IO.d.ts +14 -4
  701. package/transpiled/directives/io/IO.js +28 -7
  702. package/transpiled/directives/io/IO.js.map +1 -1
  703. package/transpiled/directives/io/Input.d.ts +2 -2
  704. package/transpiled/directives/io/Input.js +13 -7
  705. package/transpiled/directives/io/Input.js.map +1 -1
  706. package/transpiled/directives/io/Output.d.ts +3 -1
  707. package/transpiled/directives/io/Output.js +12 -6
  708. package/transpiled/directives/io/Output.js.map +1 -1
  709. package/transpiled/directives/io/Throttle.d.ts +11 -0
  710. package/transpiled/directives/io/Throttle.js +49 -0
  711. package/transpiled/directives/io/Throttle.js.map +1 -0
  712. package/transpiled/directives/io/lib/throttle/Configuration.d.ts +26 -0
  713. package/transpiled/directives/io/lib/throttle/Configuration.js +29 -0
  714. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
  715. package/transpiled/directives/io/lib/throttle/Keys.d.ts +13 -0
  716. package/transpiled/directives/io/lib/throttle/Keys.js +31 -0
  717. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
  718. package/transpiled/directives/io/lib/throttle/Quotas.d.ts +69 -0
  719. package/transpiled/directives/io/lib/throttle/Quotas.js +138 -0
  720. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
  721. package/transpiled/directives/io/lib/throttle/Sync.d.ts +30 -0
  722. package/transpiled/directives/io/lib/throttle/Sync.js +76 -0
  723. package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -0
  724. package/transpiled/directives/io/lib/throttle/components/Component.d.ts +5 -0
  725. package/transpiled/directives/io/lib/throttle/components/Component.js +3 -0
  726. package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
  727. package/transpiled/directives/io/lib/throttle/components/IP.d.ts +6 -0
  728. package/transpiled/directives/io/lib/throttle/components/IP.js +33 -0
  729. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
  730. package/transpiled/directives/io/lib/throttle/components/Identity.d.ts +11 -0
  731. package/transpiled/directives/io/lib/throttle/components/Identity.js +16 -0
  732. package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -0
  733. package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
  734. package/transpiled/directives/io/lib/throttle/components/Path.js +10 -0
  735. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
  736. package/transpiled/directives/io/lib/throttle/components/Route.d.ts +12 -0
  737. package/transpiled/directives/io/lib/throttle/components/Route.js +20 -0
  738. package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -0
  739. package/transpiled/directives/io/lib/throttle/components/Segment.d.ts +9 -0
  740. package/transpiled/directives/io/lib/throttle/components/Segment.js +20 -0
  741. package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -0
  742. package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
  743. package/transpiled/directives/io/lib/throttle/components/index.js +16 -0
  744. package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
  745. package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
  746. package/transpiled/directives/io/lib/throttle/conditions/Condition.js +3 -0
  747. package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
  748. package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
  749. package/transpiled/directives/io/lib/throttle/conditions/Status.js +19 -0
  750. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
  751. package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
  752. package/transpiled/directives/io/lib/throttle/conditions/index.js +8 -0
  753. package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
  754. package/transpiled/directives/io/lib/throttle/index.d.ts +3 -0
  755. package/transpiled/directives/io/lib/throttle/index.js +10 -0
  756. package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
  757. package/transpiled/directives/io/schemas.d.ts +2 -0
  758. package/transpiled/directives/io/schemas.js +2 -1
  759. package/transpiled/directives/io/schemas.js.map +1 -1
  760. package/transpiled/directives/map/Authority.d.ts +6 -0
  761. package/transpiled/directives/map/Authority.js +19 -0
  762. package/transpiled/directives/map/Authority.js.map +1 -0
  763. package/transpiled/directives/map/Buffer.d.ts +6 -0
  764. package/transpiled/directives/map/Buffer.js +19 -0
  765. package/transpiled/directives/map/Buffer.js.map +1 -0
  766. package/transpiled/directives/map/Claims.d.ts +10 -0
  767. package/transpiled/directives/map/Claims.js +44 -0
  768. package/transpiled/directives/map/Claims.js.map +1 -0
  769. package/transpiled/directives/map/Directive.d.ts +3 -0
  770. package/transpiled/directives/map/Directive.js.map +1 -0
  771. package/transpiled/directives/map/Headers.d.ts +7 -0
  772. package/transpiled/directives/map/Headers.js +34 -0
  773. package/transpiled/directives/map/Headers.js.map +1 -0
  774. package/transpiled/directives/map/Language.d.ts +10 -0
  775. package/transpiled/directives/map/Language.js +38 -0
  776. package/transpiled/directives/map/Language.js.map +1 -0
  777. package/transpiled/directives/map/Languages.d.ts +4 -0
  778. package/transpiled/directives/map/Languages.js +17 -0
  779. package/transpiled/directives/map/Languages.js.map +1 -0
  780. package/transpiled/directives/map/Map.d.ts +13 -0
  781. package/transpiled/directives/map/Map.js +48 -0
  782. package/transpiled/directives/map/Map.js.map +1 -0
  783. package/transpiled/directives/map/Mapping.d.ts +13 -0
  784. package/transpiled/directives/map/Mapping.js +13 -0
  785. package/transpiled/directives/map/Mapping.js.map +1 -0
  786. package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
  787. package/transpiled/directives/{vary → map}/Properties.js +1 -3
  788. package/transpiled/directives/map/Properties.js.map +1 -0
  789. package/transpiled/directives/map/Segments.d.ts +6 -0
  790. package/transpiled/directives/map/Segments.js +30 -0
  791. package/transpiled/directives/map/Segments.js.map +1 -0
  792. package/transpiled/directives/map/index.d.ts +2 -0
  793. package/transpiled/directives/map/index.js +6 -0
  794. package/transpiled/directives/map/index.js.map +1 -0
  795. package/transpiled/directives/octets/Context.js +4 -24
  796. package/transpiled/directives/octets/Context.js.map +1 -1
  797. package/transpiled/directives/octets/Delete.js +15 -12
  798. package/transpiled/directives/octets/Delete.js.map +1 -1
  799. package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
  800. package/transpiled/directives/octets/{Fetch.js → Get.js} +34 -30
  801. package/transpiled/directives/octets/Get.js.map +1 -0
  802. package/transpiled/directives/octets/Octets.js +10 -11
  803. package/transpiled/directives/octets/Octets.js.map +1 -1
  804. package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +8 -2
  805. package/transpiled/directives/octets/{Store.js → Put.js} +33 -27
  806. package/transpiled/directives/octets/Put.js.map +1 -0
  807. package/transpiled/directives/octets/Workflow.js +7 -2
  808. package/transpiled/directives/octets/Workflow.js.map +1 -1
  809. package/transpiled/directives/octets/bytes.d.ts +1 -0
  810. package/transpiled/directives/octets/bytes.js +21 -0
  811. package/transpiled/directives/octets/bytes.js.map +1 -0
  812. package/transpiled/directives/octets/schemas.d.ts +4 -8
  813. package/transpiled/directives/octets/schemas.js +3 -6
  814. package/transpiled/directives/octets/schemas.js.map +1 -1
  815. package/transpiled/directives/octets/types.d.ts +2 -0
  816. package/transpiled/directives/octets/workflows/Execution.d.ts +7 -1
  817. package/transpiled/directives/octets/workflows/Execution.js +46 -9
  818. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  819. package/transpiled/directives/octets/workflows/Workflow.d.ts +8 -3
  820. package/transpiled/directives/octets/workflows/Workflow.js +10 -4
  821. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  822. package/transpiled/directives/octets/workflows/index.d.ts +1 -1
  823. package/transpiled/directives/octets/workflows/index.js.map +1 -1
  824. package/transpiled/exceptions.js +11 -2
  825. package/transpiled/exceptions.js.map +1 -1
  826. package/transpiled/manifest.js +10 -11
  827. package/transpiled/manifest.js.map +1 -1
  828. package/transpiled/root.js +16 -1
  829. package/transpiled/root.js.map +1 -1
  830. package/transpiled/tsconfig.tsbuildinfo +1 -1
  831. package/components/identity.federation/operations/lib/assertions-as-values.d.ts +0 -4
  832. package/components/identity.federation/operations/lib/assertions-as-values.js.map +0 -1
  833. package/components/identity.federation/operations/lib/jwt.d.ts +0 -20
  834. package/components/identity.federation/operations/lib/jwt.js +0 -136
  835. package/components/identity.federation/operations/lib/jwt.js.map +0 -1
  836. package/components/identity.federation/operations/schemas.d.ts +0 -63
  837. package/components/identity.federation/operations/schemas.js +0 -9
  838. package/components/identity.federation/operations/schemas.js.map +0 -1
  839. package/components/identity.federation/operations/types.d.ts +0 -56
  840. package/components/identity.federation/operations/types.js.map +0 -1
  841. package/components/identity.federation/source/lib/assertions-as-values.ts +0 -19
  842. package/components/identity.federation/source/lib/jwt.test.ts +0 -56
  843. package/components/identity.federation/source/lib/jwt.ts +0 -171
  844. package/components/identity.federation/source/schemas.ts +0 -65
  845. package/components/identity.federation/source/types.ts +0 -62
  846. package/components/identity.tokens/operations/types.d.ts +0 -46
  847. package/components/identity.tokens/operations/types.js.map +0 -1
  848. package/components/identity.tokens/source/types.ts +0 -55
  849. package/components/octets.storage/manifest.toa.yaml +0 -21
  850. package/components/octets.storage/operations/fetch.js +0 -46
  851. package/components/octets.storage/operations/get.js +0 -7
  852. package/components/octets.storage/operations/list.js +0 -7
  853. package/components/octets.storage/operations/store.js +0 -11
  854. package/documentation/vary.md +0 -69
  855. package/features/steps/IdP.ts +0 -154
  856. package/features/steps/components/octets.tester/operations/diversify.js +0 -14
  857. package/features/vary.feature +0 -252
  858. package/schemas/octets/context.cos.yaml +0 -1
  859. package/schemas/octets/fetch.cos.yaml +0 -3
  860. package/schemas/octets/permute.cos.yaml +0 -1
  861. package/schemas/octets/store.cos.yaml +0 -3
  862. package/source/directives/octets/Fetch.ts +0 -100
  863. package/source/directives/octets/List.ts +0 -72
  864. package/source/directives/octets/Store.ts +0 -126
  865. package/source/directives/vary/Directive.ts +0 -7
  866. package/source/directives/vary/Embed.ts +0 -68
  867. package/source/directives/vary/Vary.ts +0 -50
  868. package/source/directives/vary/embeddings/Authority.ts +0 -8
  869. package/source/directives/vary/embeddings/Embedding.ts +0 -7
  870. package/source/directives/vary/embeddings/Header.ts +0 -32
  871. package/source/directives/vary/embeddings/Language.ts +0 -31
  872. package/source/directives/vary/embeddings/Parameter.ts +0 -14
  873. package/source/directives/vary/embeddings/index.ts +0 -13
  874. package/source/directives/vary/index.ts +0 -3
  875. package/transpiled/directives/octets/Fetch.js.map +0 -1
  876. package/transpiled/directives/octets/List.d.ts +0 -16
  877. package/transpiled/directives/octets/List.js +0 -74
  878. package/transpiled/directives/octets/List.js.map +0 -1
  879. package/transpiled/directives/octets/Store.js.map +0 -1
  880. package/transpiled/directives/vary/Directive.d.ts +0 -6
  881. package/transpiled/directives/vary/Directive.js.map +0 -1
  882. package/transpiled/directives/vary/Embed.d.ts +0 -11
  883. package/transpiled/directives/vary/Embed.js +0 -51
  884. package/transpiled/directives/vary/Embed.js.map +0 -1
  885. package/transpiled/directives/vary/Properties.js.map +0 -1
  886. package/transpiled/directives/vary/Vary.d.ts +0 -10
  887. package/transpiled/directives/vary/Vary.js +0 -36
  888. package/transpiled/directives/vary/Vary.js.map +0 -1
  889. package/transpiled/directives/vary/embeddings/Authority.d.ts +0 -5
  890. package/transpiled/directives/vary/embeddings/Authority.js +0 -10
  891. package/transpiled/directives/vary/embeddings/Authority.js.map +0 -1
  892. package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -6
  893. package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
  894. package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
  895. package/transpiled/directives/vary/embeddings/Header.js +0 -28
  896. package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
  897. package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
  898. package/transpiled/directives/vary/embeddings/Language.js +0 -28
  899. package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
  900. package/transpiled/directives/vary/embeddings/Parameter.d.ts +0 -7
  901. package/transpiled/directives/vary/embeddings/Parameter.js +0 -14
  902. package/transpiled/directives/vary/embeddings/Parameter.js.map +0 -1
  903. package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
  904. package/transpiled/directives/vary/embeddings/index.js +0 -14
  905. package/transpiled/directives/vary/embeddings/index.js.map +0 -1
  906. package/transpiled/directives/vary/index.d.ts +0 -2
  907. package/transpiled/directives/vary/index.js +0 -6
  908. package/transpiled/directives/vary/index.js.map +0 -1
  909. /package/components/{octets.storage → exposition.octets}/operations/delete.js +0 -0
  910. /package/components/{identity.federation/operations → identity.tokens/operations/lib}/types.js +0 -0
  911. /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
  912. /package/{components/identity.tokens/operations → transpiled/directives/flow}/types.js +0 -0
  913. /package/transpiled/directives/{vary → map}/Directive.js +0 -0
@@ -0,0 +1,70 @@
1
+ # Tracing
2
+
3
+ Each incoming request is processed within a [trace](../../telemetry/readme.md#tracing) —
4
+ a server span is created, and its trace context is propagated to component invocations and
5
+ emitted events, so all log entries and spans across the application caused by the request
6
+ share the same `trace_id`.
7
+
8
+ ## The `ray` response header
9
+
10
+ Each response contains a `ray` header with the trace ID of the request.
11
+ It can be used to find related log entries, or be attached to a support ticket.
12
+
13
+ Log entries are stamped with the trace ID regardless of the sampling decision,
14
+ while the trace itself is only recorded if the trace is sampled (see [Sampling](#sampling)).
15
+
16
+ ```
17
+ HTTP/1.1 201 Created
18
+ ray: 0af7651916cd43dd8448eb211c80319c
19
+ ```
20
+
21
+ ## Continuing a trace
22
+
23
+ By default, the trace starts at the gateway. If the request carries a trace context in one of the
24
+ following headers, the trace is continued, that is, the incoming trace ID is used.
25
+
26
+ ### `traceparent`
27
+
28
+ The [W3C Trace Context](https://www.w3.org/TR/trace-context/#traceparent-header) header, sent by
29
+ clients instrumented with OpenTelemetry-compatible tooling, or by upstream proxies.
30
+
31
+ ```
32
+ traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
33
+ ```
34
+
35
+ In addition to the trace ID, it carries the ID of the client span, which becomes the *parent* of
36
+ the gateway's server span, linking client-side and server-side spans into a single trace tree.
37
+
38
+ ### `ray`
39
+
40
+ A bare trace ID (32 lowercase hex digits), for clients without tracing instrumentation willing to
41
+ correlate their requests with server-side traces.
42
+
43
+ ```
44
+ ray: 4bf92f3577b34da6a3ce929d0e0e4736
45
+ ```
46
+
47
+ Unlike `traceparent`, it carries no parent span, so the gateway's server span becomes the root of
48
+ the trace.
49
+
50
+ If both headers are present, `traceparent` takes precedence as it carries more information.
51
+ Headers with invalid values are ignored, and a new trace is started.
52
+
53
+ ## Sampling
54
+
55
+ The trace *context* (trace ID) is always created and propagated, so the `ray` header and
56
+ `trace_id` in log entries are always present. The sampling decision only determines whether
57
+ the *spans* of the trace are recorded.
58
+
59
+ The decision is made once, by the process that starts the trace, and is propagated along with
60
+ the trace context (the flags byte of `traceparent`), so a trace is either recorded as a whole
61
+ or not at all. Sampling is configured with the
62
+ [`telemetry.traces` annotation](../../telemetry/readme.md#sampling).
63
+
64
+ Sending a trace context does not bypass sampling: an incoming `ray` header adopts the trace ID,
65
+ while the recording decision is still made by the gateway. The `sampled` flag of an incoming
66
+ `traceparent` is respected, as the decision belongs to the trace root.
67
+
68
+ ## See also
69
+
70
+ - [Telemetry extension](../../telemetry/readme.md) — spans, structured logs, `context.span`
@@ -56,6 +56,19 @@ as it provides a more specific match compared to the generic `/users/:id` route.
56
56
 
57
57
  The priority of Routes with the same specificity is determined by the order of declaration.
58
58
 
59
+ ## Route forwarding
60
+
61
+ A Route can be forwarded to another Route by specifying the destination Route as the value of the
62
+ Route.
63
+
64
+ ```yaml
65
+ /destination/:var: ...
66
+ /static: /destination/hello
67
+ /variables/:bar: /destination/:bar
68
+ ```
69
+
70
+ Forwarding Route variables are mapped to the forwarded Route variables if they have the same name.
71
+
59
72
  ## Methods
60
73
 
61
74
  Methods are mappings of the HTTP methods to the corresponding operations.
@@ -52,6 +52,56 @@ Feature: Access authorization
52
52
  access: granted!
53
53
  """
54
54
 
55
+ Scenario: Allow access to anyone
56
+ Given the annotation:
57
+ """yaml
58
+ /:
59
+ io:output: true
60
+ auth:anyone: true
61
+ GET:
62
+ dev:stub:
63
+ access: granted!
64
+ """
65
+ When the following request is received:
66
+ """
67
+ GET / HTTP/1.1
68
+ host: nex.toa.io
69
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
70
+ accept: application/yaml
71
+ """
72
+ Then the following reply is sent:
73
+ """
74
+ 200 OK
75
+ content-type: application/yaml
76
+
77
+ access: granted!
78
+ """
79
+
80
+ # request without credentials
81
+ When the following request is received:
82
+ """
83
+ GET / HTTP/1.1
84
+ host: nex.toa.io
85
+ accept: application/yaml
86
+ """
87
+ Then the following reply is sent:
88
+ """
89
+ 401 Unauthorized
90
+ """
91
+
92
+ # request with invalid credentials
93
+ When the following request is received:
94
+ """
95
+ GET / HTTP/1.1
96
+ host: nex.toa.io
97
+ authorization: Basic bm9uOmV4aXN0ZW50
98
+ accept: application/yaml
99
+ """
100
+ Then the following reply is sent:
101
+ """
102
+ 401 Unauthorized
103
+ """
104
+
55
105
  Scenario: Deny access with credentials to a resource with anonymous access
56
106
  Given the annotation:
57
107
  """yaml
@@ -364,8 +414,8 @@ Feature: Access authorization
364
414
  Then the following reply is sent:
365
415
  """
366
416
  200 OK
367
- content-type: application/yaml
368
417
  authorization: Token ${{ token }}
418
+ content-type: application/yaml
369
419
 
370
420
  access: granted!
371
421
  """
@@ -421,12 +471,12 @@ Feature: Access authorization
421
471
  """
422
472
  403 Forbidden
423
473
 
424
- Basic authentication scheme is required to access this resource.
474
+ Basic authentication scheme is required to access this resource
425
475
  """
426
476
 
427
477
  Scenario: Adding a role without required permissions
428
478
 
429
- Trunk directives should not be applied to the Identity management resources.
479
+ Trunk directives should not be applied to the Identity management resources
430
480
 
431
481
  Given the annotation:
432
482
  """yaml
@@ -468,9 +518,79 @@ Feature: Access authorization
468
518
  Then the following reply is sent:
469
519
  """
470
520
  200 OK
521
+ authorization: Token ${{ token }}
471
522
 
472
523
  identity:
473
524
  id: efe3a65ebbee47ed95a73edd911ea328
474
525
  roles:
475
526
  - developer
476
527
  """
528
+ When the following request is received:
529
+ """
530
+ GET /echo/ HTTP/1.1
531
+ host: nex.toa.io
532
+ authorization: Token ${{ token }}
533
+ """
534
+ Then the following reply is sent:
535
+ """
536
+ 200 OK
537
+ """
538
+ And the reply does not contain:
539
+ """
540
+ authorization: Token
541
+ """
542
+
543
+ Scenario: Delegation does not violate input restrictions
544
+ Given the `identity.roles` database contains:
545
+ | _id | identity | role |
546
+ | 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | developer |
547
+ # `auth:` is declared before `io:`, and the identity it embeds is the server's
548
+ # own addition — what `io:input` restricts is the body the client sent
549
+ And the `echo` is running with the following manifest:
550
+ """yaml
551
+ exposition:
552
+ /:
553
+ POST:
554
+ auth:rule:
555
+ role: developer
556
+ delegate: identity
557
+ io:input: [foo]
558
+ io:output: true
559
+ endpoint: echo
560
+ """
561
+ When the following request is received:
562
+ """
563
+ POST /echo/ HTTP/1.1
564
+ host: nex.toa.io
565
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
566
+ accept: application/yaml
567
+ content-type: application/yaml
568
+
569
+ foo: bar
570
+ """
571
+ Then the following reply is sent:
572
+ """
573
+ 201 Created
574
+
575
+ foo: bar
576
+ identity:
577
+ id: efe3a65ebbee47ed95a73edd911ea328
578
+ """
579
+ # and a property the client is not allowed to send is still refused
580
+ When the following request is received:
581
+ """
582
+ POST /echo/ HTTP/1.1
583
+ host: nex.toa.io
584
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
585
+ accept: application/yaml
586
+ content-type: application/yaml
587
+
588
+ foo: bar
589
+ baz: qux
590
+ """
591
+ Then the following reply is sent:
592
+ """
593
+ 400 Bad Request
594
+
595
+ 'Unexpected input: baz'
596
+ """
@@ -0,0 +1,57 @@
1
+ Feature: Identity assertion
2
+
3
+ Scenario: Assert Identity
4
+ Given the `identity.basic` database contains:
5
+ | _id | authority | username | password | _version |
6
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
7
+ And the `echo` is running with the following manifest:
8
+ """yaml
9
+ exposition:
10
+ /:
11
+ GET:
12
+ auth:assert: true
13
+ anyone: true
14
+ io:output: true
15
+ endpoint: ping
16
+ """
17
+
18
+ # existent identity
19
+ When the following request is received:
20
+ """
21
+ GET /echo/ HTTP/1.1
22
+ host: nex.toa.io
23
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
24
+ """
25
+ Then the following reply is sent:
26
+ """
27
+ 200 OK
28
+ authorization: Token ${{ developer.token }}
29
+ """
30
+
31
+ # new identity
32
+ When the following request is received:
33
+ """
34
+ GET /echo/ HTTP/1.1
35
+ host: nex.toa.io
36
+ authorization: Basic dXNlcjpwYSQkdzByZCE=
37
+ """
38
+ Then the following reply is sent:
39
+ """
40
+ 201 Created
41
+ authorization: Token ${{ user.token }}
42
+ """
43
+
44
+ # invalid credentials
45
+ When the following request is received:
46
+ """
47
+ GET /echo/ HTTP/1.1
48
+ host: nex.toa.io
49
+ authorization: Basic dXNlcjpwYXNz
50
+ accept: application/yaml
51
+ """
52
+ Then the following reply is sent:
53
+ """
54
+ 422 Unprocessable Entity
55
+
56
+ code: INVALID_PASSWORD
57
+ """
@@ -0,0 +1,170 @@
1
+ @security
2
+ Feature: Federated identity authentication
3
+
4
+ Background:
5
+ Given the `identity.federation` database is empty
6
+ And local IDP is running
7
+ And the IDP token for Bob is issued
8
+ And the `identity.federation` configuration:
9
+ """yaml
10
+ trust:
11
+ - iss: http://localhost:44444
12
+ """
13
+
14
+ Scenario: Full claim
15
+ Given the annotation:
16
+ """yaml
17
+ /:
18
+ GET:
19
+ auth:claims:
20
+ iss: http://localhost:44444
21
+ aud: test
22
+ sub: Bob
23
+ dev:stub: ok
24
+ """
25
+
26
+ When the following request is received:
27
+ """
28
+ GET / HTTP/1.1
29
+ host: nex.toa.io
30
+ authorization: Bearer ${{ Bob.id_token }}
31
+ """
32
+ Then the following reply is sent:
33
+ """
34
+ 200 OK
35
+ """
36
+
37
+ Scenario: Only `sub`
38
+ Given the annotation:
39
+ """yaml
40
+ /:
41
+ GET:
42
+ auth:claims:
43
+ sub: Bob
44
+ dev:stub: ok
45
+ """
46
+
47
+ When the following request is received:
48
+ """
49
+ GET / HTTP/1.1
50
+ host: nex.toa.io
51
+ authorization: Bearer ${{ Bob.id_token }}
52
+ """
53
+ Then the following reply is sent:
54
+ """
55
+ 200 OK
56
+ """
57
+
58
+ Scenario: No `sub`
59
+ Given the annotation:
60
+ """yaml
61
+ /:
62
+ GET:
63
+ auth:claims:
64
+ iss: http://localhost:44444
65
+ aud: test
66
+ dev:stub: ok
67
+ """
68
+
69
+ When the following request is received:
70
+ """
71
+ GET / HTTP/1.1
72
+ host: nex.toa.io
73
+ authorization: Bearer ${{ Bob.id_token }}
74
+ """
75
+ Then the following reply is sent:
76
+ """
77
+ 200 OK
78
+ """
79
+
80
+ Scenario: `sub` mismatch
81
+ Given the annotation:
82
+ """yaml
83
+ /:
84
+ GET:
85
+ auth:claims:
86
+ iss: http://localhost:44444
87
+ sub: Alice
88
+ dev:stub: ok
89
+ """
90
+
91
+ When the following request is received:
92
+ """
93
+ GET / HTTP/1.1
94
+ host: nex.toa.io
95
+ authorization: Bearer ${{ Bob.id_token }}
96
+ """
97
+ Then the following reply is sent:
98
+ """
99
+ 403 Forbidden
100
+ """
101
+
102
+ Scenario: `aud` mismatch
103
+ Given the annotation:
104
+ """yaml
105
+ /:
106
+ GET:
107
+ auth:claims:
108
+ iss: http://localhost:44444
109
+ aud: goalkeepers
110
+ dev:stub: ok
111
+ """
112
+
113
+ When the following request is received:
114
+ """
115
+ GET / HTTP/1.1
116
+ host: nex.toa.io
117
+ authorization: Bearer ${{ Bob.id_token }}
118
+ """
119
+ Then the following reply is sent:
120
+ """
121
+ 403 Forbidden
122
+ """
123
+
124
+ Scenario: Matching authority and Route parameter
125
+ Given the annotation:
126
+ """yaml
127
+ authorities:
128
+ test: the.test.local
129
+ /:
130
+ /:id:
131
+ GET:
132
+ auth:claims:
133
+ aud: :authority
134
+ sub: /:id
135
+ dev:stub: ok
136
+ """
137
+
138
+ When the following request is received:
139
+ """
140
+ GET /Bob/ HTTP/1.1
141
+ host: the.test.local
142
+ authorization: Bearer ${{ Bob.id_token }}
143
+ """
144
+ Then the following reply is sent:
145
+ """
146
+ 200 OK
147
+ """
148
+
149
+ Scenario: `iss` matching authority common domain
150
+ Given the annotation:
151
+ """yaml
152
+ /:
153
+ /:id:
154
+ GET:
155
+ auth:claims:
156
+ iss: :domain
157
+ sub: /:id
158
+ dev:stub: ok
159
+ """
160
+
161
+ When the following request is received:
162
+ """
163
+ GET /Bob/ HTTP/1.1
164
+ host: localhost
165
+ authorization: Bearer ${{ Bob.id_token }}
166
+ """
167
+ Then the following reply is sent:
168
+ """
169
+ 200 OK
170
+ """
@@ -0,0 +1,120 @@
1
+ Feature: Identity inception
2
+
3
+ Scenario: Non-associated Identity inception
4
+ Given the `identity.basic` database is empty
5
+ When the following request is received:
6
+ """
7
+ POST /identity/ HTTP/1.1
8
+ host: nex.toa.io
9
+ authorization: Basic dXNlcjpwYXNzMTIzNA==
10
+ accept: application/yaml
11
+ """
12
+ Then the following reply is sent:
13
+ """
14
+ 201 Created
15
+ authorization: Token ${{ token }}
16
+
17
+ id: ${{ id }}
18
+ roles: []
19
+ """
20
+ When the following request is received:
21
+ """
22
+ GET /identity/ HTTP/1.1
23
+ host: nex.toa.io
24
+ authorization: Basic dXNlcjpwYXNzMTIzNA==
25
+ accept: application/yaml
26
+ """
27
+ Then the following reply is sent:
28
+ """
29
+ 200 OK
30
+
31
+ id: ${{ id }}
32
+ roles: []
33
+ """
34
+
35
+ Scenario: Creating new Identity using inception with Basic scheme
36
+ Given the `users` is running with the following manifest:
37
+ """yaml
38
+ exposition:
39
+ /:
40
+ POST:
41
+ io:input: [name]
42
+ io:output: true
43
+ incept: id
44
+ query: ~
45
+ endpoint: transit
46
+ """
47
+ When the following request is received:
48
+ """
49
+ POST /users/ HTTP/1.1
50
+ host: nex.toa.io
51
+ authorization: Basic #{{ basic }}
52
+ accept: application/yaml
53
+ content-type: application/yaml
54
+
55
+ name: Bill Smith
56
+ """
57
+ Then the following reply is sent:
58
+ """
59
+ 201 Created
60
+ authorization: Token ${{ token }}
61
+
62
+ id: ${{ id }}
63
+ """
64
+
65
+ Scenario: Inception with operation error
66
+ Given the `users` is running with the following manifest:
67
+ """yaml
68
+ exposition:
69
+ /:
70
+ POST:
71
+ io:input: [name]
72
+ io:output: true
73
+ incept: id
74
+ endpoint: create
75
+ """
76
+ When the following request is received:
77
+ """
78
+ POST /users/ HTTP/1.1
79
+ host: nex.toa.io
80
+ authorization: Basic #{{ basic }}
81
+ accept: application/yaml
82
+ content-type: application/yaml
83
+
84
+ name: return_error
85
+ """
86
+ Then the following reply is sent:
87
+ """
88
+ 422 Unprocessable Entity
89
+ """
90
+
91
+ Scenario: Incept without credentials
92
+ Given the `echo` is running with the following manifest:
93
+ """yaml
94
+ exposition:
95
+ /:
96
+ POST:
97
+ auth:incept: id
98
+ io:output: true
99
+ query: ~
100
+ endpoint: echo
101
+ """
102
+ And transient identity
103
+ When the following request is received:
104
+ """
105
+ POST /echo/ HTTP/1.1
106
+ host: nex.toa.io
107
+ accept: application/yaml
108
+ content-type: application/yaml
109
+
110
+ id: ${{ identity.id }}
111
+ foo: bar
112
+ """
113
+ Then the following reply is sent:
114
+ """
115
+ 201 Created
116
+ authorization: Token ${{ token }}
117
+
118
+ id: ${{ identity.id }}
119
+ foo: bar
120
+ """
@@ -0,0 +1,59 @@
1
+ Feature: Input properties authorization
2
+
3
+ Background:
4
+ Given the `identity.basic` database contains:
5
+ | _id | authority | username | password |
6
+ | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
7
+ And the `identity.roles` database contains:
8
+ | _id | identity | role |
9
+ | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:b |
10
+
11
+ Scenario: Input properties authorization
12
+ Given the `echo` is running with the following manifest:
13
+ """yaml
14
+ exposition:
15
+ /:
16
+ io:input: [a, b]
17
+ io:output: [a, b]
18
+ anonymous: true
19
+ auth:role: app:b
20
+ auth:input:
21
+ - prop: b
22
+ role: app:b
23
+ PUT: parameters
24
+ """
25
+
26
+ When the following request is received:
27
+ """
28
+ PUT /echo/ HTTP/1.1
29
+ host: nex.toa.io
30
+ accept: application/yaml
31
+ content-type: application/yaml
32
+
33
+ a: foo
34
+ b: bar
35
+ """
36
+ Then the following reply is sent:
37
+ """
38
+ 403 Forbidden
39
+
40
+ Input property is not authorized
41
+ """
42
+ When the following request is received:
43
+ """
44
+ PUT /echo/ HTTP/1.1
45
+ host: nex.toa.io
46
+ authorization: Basic cm9vdDpzZWNyZXQ=
47
+ accept: application/yaml
48
+ content-type: application/yaml
49
+
50
+ a: foo
51
+ b: bar
52
+ """
53
+ Then the following reply is sent:
54
+ """
55
+ 200 OK
56
+
57
+ a: foo
58
+ b: bar
59
+ """
@@ -19,6 +19,8 @@ Feature: Authorities
19
19
  """
20
20
  200 OK
21
21
  """
22
+
23
+ # arbitrary authorities are also allowed
22
24
  When the following request is received:
23
25
  """
24
26
  GET / HTTP/1.1
@@ -26,7 +28,5 @@ Feature: Authorities
26
28
  """
27
29
  Then the following reply is sent:
28
30
  """
29
- 404 Not Found
30
-
31
- Unknown authority
31
+ 200 OK
32
32
  """