@toa.io/extensions.exposition 1.0.0-alpha.4 → 1.0.0-alpha.41

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 (398) hide show
  1. package/components/context.toa.yaml +2 -2
  2. package/components/identity.bans/manifest.toa.yaml +15 -7
  3. package/components/identity.bans/operations/transit.d.ts +14 -0
  4. package/components/identity.bans/operations/transit.js +11 -0
  5. package/components/identity.bans/operations/transit.js.map +1 -0
  6. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
  7. package/components/identity.bans/source/transit.ts +21 -0
  8. package/components/identity.bans/tsconfig.json +9 -0
  9. package/components/identity.basic/manifest.toa.yaml +22 -9
  10. package/components/identity.basic/operations/authenticate.d.ts +5 -1
  11. package/components/identity.basic/operations/authenticate.js +5 -2
  12. package/components/identity.basic/operations/authenticate.js.map +1 -1
  13. package/components/identity.basic/operations/incept.d.ts +12 -0
  14. package/components/identity.basic/operations/incept.js +26 -0
  15. package/components/identity.basic/operations/incept.js.map +1 -0
  16. package/components/identity.basic/operations/transit.d.ts +4 -4
  17. package/components/identity.basic/operations/transit.js +5 -3
  18. package/components/identity.basic/operations/transit.js.map +1 -1
  19. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  20. package/components/identity.basic/operations/types.d.ts +8 -4
  21. package/components/identity.basic/source/authenticate.ts +16 -5
  22. package/components/identity.basic/source/incept.ts +38 -0
  23. package/components/identity.basic/source/transit.ts +8 -6
  24. package/components/identity.basic/source/types.ts +8 -4
  25. package/components/identity.federation/manifest.toa.yaml +28 -22
  26. package/components/identity.federation/operations/authenticate.d.ts +2 -2
  27. package/components/identity.federation/operations/authenticate.js +3 -10
  28. package/components/identity.federation/operations/authenticate.js.map +1 -1
  29. package/components/identity.federation/operations/incept.d.ts +11 -0
  30. package/components/identity.federation/operations/{create.js → incept.js} +6 -7
  31. package/components/identity.federation/operations/incept.js.map +1 -0
  32. package/components/identity.federation/operations/lib/jwt.d.ts +4 -5
  33. package/components/identity.federation/operations/lib/jwt.js +3 -3
  34. package/components/identity.federation/operations/lib/jwt.js.map +1 -1
  35. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  36. package/components/identity.federation/operations/types/configuration.d.ts +14 -0
  37. package/components/identity.federation/operations/types/configuration.js +3 -0
  38. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  39. package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +13 -6
  40. package/components/identity.federation/operations/types/context.js +3 -0
  41. package/components/identity.federation/operations/types/context.js.map +1 -0
  42. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  43. package/components/identity.federation/operations/{types.js → types/entity.js} +1 -1
  44. package/components/identity.federation/operations/types/entity.js.map +1 -0
  45. package/components/identity.federation/operations/types/index.d.ts +3 -0
  46. package/components/identity.federation/operations/types/index.js +20 -0
  47. package/components/identity.federation/operations/types/index.js.map +1 -0
  48. package/components/identity.federation/source/authenticate.ts +5 -18
  49. package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
  50. package/components/identity.federation/source/lib/jwt.test.ts +2 -2
  51. package/components/identity.federation/source/lib/jwt.ts +7 -8
  52. package/components/identity.federation/source/types/configuration.ts +15 -0
  53. package/components/identity.federation/source/{types.ts → types/context.ts} +15 -5
  54. package/components/identity.federation/source/types/entity.ts +6 -0
  55. package/components/identity.federation/source/types/index.ts +3 -0
  56. package/components/identity.federation/tsconfig.json +2 -2
  57. package/components/identity.roles/manifest.toa.yaml +18 -6
  58. package/components/identity.roles/operations/grant.d.ts +10 -0
  59. package/components/identity.roles/operations/grant.js +21 -0
  60. package/components/identity.roles/operations/grant.js.map +1 -0
  61. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  62. package/components/identity.roles/operations/lib/Entity.js +3 -0
  63. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  64. package/components/identity.roles/operations/list.d.ts +1 -4
  65. package/components/identity.roles/operations/list.js.map +1 -1
  66. package/components/identity.roles/operations/principal.d.ts +4 -6
  67. package/components/identity.roles/operations/principal.js +6 -1
  68. package/components/identity.roles/operations/principal.js.map +1 -1
  69. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  70. package/components/identity.roles/source/grant.ts +32 -0
  71. package/components/identity.roles/source/lib/Entity.ts +5 -0
  72. package/components/identity.roles/source/list.ts +2 -4
  73. package/components/identity.roles/source/principal.ts +10 -8
  74. package/components/identity.tokens/manifest.toa.yaml +19 -5
  75. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  76. package/components/identity.tokens/operations/authenticate.js +10 -4
  77. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  78. package/components/identity.tokens/operations/decrypt.js +1 -0
  79. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  80. package/components/identity.tokens/operations/encrypt.js +5 -1
  81. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  82. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  83. package/components/identity.tokens/operations/types.d.ts +8 -2
  84. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  85. package/components/identity.tokens/source/authenticate.test.ts +11 -4
  86. package/components/identity.tokens/source/authenticate.ts +12 -5
  87. package/components/identity.tokens/source/decrypt.test.ts +5 -3
  88. package/components/identity.tokens/source/decrypt.ts +9 -8
  89. package/components/identity.tokens/source/encrypt.test.ts +26 -2
  90. package/components/identity.tokens/source/encrypt.ts +5 -1
  91. package/components/identity.tokens/source/types.ts +9 -2
  92. package/components/octets.storage/manifest.toa.yaml +0 -7
  93. package/documentation/access.md +27 -16
  94. package/documentation/authorities.md +53 -0
  95. package/documentation/cache.md +8 -1
  96. package/documentation/components.md +47 -22
  97. package/documentation/identity.md +17 -22
  98. package/documentation/io.md +56 -0
  99. package/documentation/protocol.md +3 -0
  100. package/documentation/query.md +17 -11
  101. package/documentation/require.md +15 -0
  102. package/documentation/tree.md +22 -4
  103. package/documentation/vary.md +14 -14
  104. package/features/access.feature +89 -47
  105. package/features/annotation.feature +2 -0
  106. package/features/authorities.basic.feature +141 -0
  107. package/features/authorities.feature +32 -0
  108. package/features/authorities.federation.feature +99 -0
  109. package/features/authorities.tokens.feature +118 -0
  110. package/features/body.feature +4 -0
  111. package/features/cache.feature +112 -5
  112. package/features/cors.feature +7 -2
  113. package/features/debug.feature +34 -0
  114. package/features/directives.feature +5 -0
  115. package/features/dynamic.feature +18 -7
  116. package/features/errors.feature +18 -4
  117. package/features/etag.feature +18 -1
  118. package/features/identity.bans.feature +137 -0
  119. package/features/identity.basic.feature +142 -19
  120. package/features/identity.feature +7 -2
  121. package/features/identity.federation.feature +67 -14
  122. package/features/identity.roles.feature +220 -4
  123. package/features/identity.tokens.feature +57 -4
  124. package/features/io.feature +205 -0
  125. package/features/octets.entries.feature +10 -0
  126. package/features/octets.feature +60 -64
  127. package/features/octets.meta.feature +7 -3
  128. package/features/octets.workflows.feature +14 -0
  129. package/features/probes.feature +14 -0
  130. package/features/{queries.feature → query.feature} +50 -3
  131. package/features/require.feature +67 -0
  132. package/features/response.feature +12 -3
  133. package/features/routes.feature +25 -12
  134. package/features/steps/Database.ts +17 -10
  135. package/features/steps/Gateway.ts +23 -6
  136. package/features/steps/IdP.ts +28 -23
  137. package/features/steps/components/echo/manifest.toa.yaml +5 -1
  138. package/features/steps/components/echo/operations/identity.js +7 -0
  139. package/features/steps/components/pots/manifest.toa.yaml +2 -0
  140. package/features/steps/components/users.properties/manifest.toa.yaml +2 -1
  141. package/features/streams.feature +1 -0
  142. package/features/timing.feature +27 -1
  143. package/features/vary.feature +105 -3
  144. package/package.json +12 -11
  145. package/readme.md +19 -14
  146. package/schemas/annotation.cos.yaml +1 -1
  147. package/schemas/io/input.cos.yaml +3 -0
  148. package/schemas/io/message.cos.yaml +5 -0
  149. package/schemas/io/output.cos.yaml +5 -0
  150. package/source/Annotation.ts +3 -3
  151. package/source/Context.ts +6 -4
  152. package/source/Directive.test.ts +4 -4
  153. package/source/Directive.ts +11 -38
  154. package/source/Endpoint.ts +43 -8
  155. package/source/Factory.ts +11 -7
  156. package/source/Gateway.ts +16 -44
  157. package/source/HTTP/Context.ts +24 -2
  158. package/source/HTTP/Server.ts +56 -43
  159. package/source/HTTP/exceptions.ts +7 -1
  160. package/source/HTTP/messages.test.ts +38 -2
  161. package/source/HTTP/messages.ts +7 -3
  162. package/source/Mapping.ts +6 -1
  163. package/source/Query.test.ts +1 -1
  164. package/source/Query.ts +35 -24
  165. package/source/RTD/Context.ts +7 -10
  166. package/source/RTD/Directives.ts +28 -4
  167. package/source/RTD/Endpoint.ts +6 -4
  168. package/source/RTD/Match.ts +2 -7
  169. package/source/RTD/Method.ts +7 -13
  170. package/source/RTD/Node.ts +13 -14
  171. package/source/RTD/Tree.ts +17 -16
  172. package/source/RTD/factory.ts +3 -6
  173. package/source/Tenant.ts +0 -8
  174. package/source/deployment.ts +32 -22
  175. package/source/directives/auth/Authorization.ts +38 -19
  176. package/source/directives/auth/Delegate.ts +42 -0
  177. package/source/directives/auth/Incept.ts +3 -2
  178. package/source/directives/auth/Role.test.ts +53 -6
  179. package/source/directives/auth/Role.ts +22 -14
  180. package/source/directives/auth/types.ts +1 -1
  181. package/source/directives/cache/Cache.ts +15 -8
  182. package/source/directives/cache/Control.ts +42 -16
  183. package/source/directives/cors/CORS.ts +13 -7
  184. package/source/directives/dev/Development.ts +4 -4
  185. package/source/directives/index.ts +6 -4
  186. package/source/directives/io/Directive.ts +11 -0
  187. package/source/directives/io/IO.ts +43 -0
  188. package/source/directives/io/Input.ts +50 -0
  189. package/source/directives/io/Message.ts +1 -0
  190. package/source/directives/io/Output.ts +69 -0
  191. package/source/directives/io/index.ts +3 -0
  192. package/source/directives/io/schemas.ts +12 -0
  193. package/source/directives/octets/Context.ts +4 -3
  194. package/source/directives/octets/Delete.ts +4 -2
  195. package/source/directives/octets/Directive.ts +10 -0
  196. package/source/directives/octets/Fetch.ts +4 -3
  197. package/source/directives/octets/List.ts +4 -2
  198. package/source/directives/octets/Octets.ts +6 -8
  199. package/source/directives/octets/Store.ts +12 -4
  200. package/source/directives/octets/Workflow.ts +10 -3
  201. package/source/directives/octets/types.ts +0 -7
  202. package/source/directives/require/Directive.ts +5 -0
  203. package/source/directives/require/Headers.ts +20 -0
  204. package/source/directives/require/Require.ts +28 -0
  205. package/source/directives/require/index.ts +3 -0
  206. package/source/directives/vary/Directive.ts +2 -1
  207. package/source/directives/vary/Embed.ts +14 -8
  208. package/source/directives/vary/Vary.ts +7 -5
  209. package/source/directives/vary/embeddings/Authority.ts +8 -0
  210. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  211. package/source/directives/vary/embeddings/Header.ts +8 -6
  212. package/source/directives/vary/embeddings/Language.ts +1 -1
  213. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  214. package/source/directives/vary/embeddings/index.ts +6 -4
  215. package/source/exceptions.ts +22 -11
  216. package/source/root.ts +5 -0
  217. package/source/schemas.ts +1 -1
  218. package/transpiled/Annotation.d.ts +3 -3
  219. package/transpiled/Context.d.ts +6 -4
  220. package/transpiled/Directive.d.ts +4 -17
  221. package/transpiled/Directive.js +4 -7
  222. package/transpiled/Directive.js.map +1 -1
  223. package/transpiled/Endpoint.d.ts +5 -3
  224. package/transpiled/Endpoint.js +30 -5
  225. package/transpiled/Endpoint.js.map +1 -1
  226. package/transpiled/Factory.js +9 -4
  227. package/transpiled/Factory.js.map +1 -1
  228. package/transpiled/Gateway.d.ts +1 -4
  229. package/transpiled/Gateway.js +10 -26
  230. package/transpiled/Gateway.js.map +1 -1
  231. package/transpiled/HTTP/Context.d.ts +8 -1
  232. package/transpiled/HTTP/Context.js +15 -2
  233. package/transpiled/HTTP/Context.js.map +1 -1
  234. package/transpiled/HTTP/Server.d.ts +13 -2
  235. package/transpiled/HTTP/Server.js +41 -35
  236. package/transpiled/HTTP/Server.js.map +1 -1
  237. package/transpiled/HTTP/exceptions.d.ts +4 -1
  238. package/transpiled/HTTP/exceptions.js +7 -1
  239. package/transpiled/HTTP/exceptions.js.map +1 -1
  240. package/transpiled/HTTP/messages.d.ts +1 -0
  241. package/transpiled/HTTP/messages.js +9 -3
  242. package/transpiled/HTTP/messages.js.map +1 -1
  243. package/transpiled/Mapping.js +4 -1
  244. package/transpiled/Mapping.js.map +1 -1
  245. package/transpiled/Query.d.ts +1 -0
  246. package/transpiled/Query.js +21 -20
  247. package/transpiled/Query.js.map +1 -1
  248. package/transpiled/RTD/Context.d.ts +7 -6
  249. package/transpiled/RTD/Directives.d.ts +19 -4
  250. package/transpiled/RTD/Endpoint.d.ts +6 -4
  251. package/transpiled/RTD/Match.d.ts +2 -4
  252. package/transpiled/RTD/Method.d.ts +7 -7
  253. package/transpiled/RTD/Method.js.map +1 -1
  254. package/transpiled/RTD/Node.d.ts +4 -6
  255. package/transpiled/RTD/Node.js +2 -1
  256. package/transpiled/RTD/Node.js.map +1 -1
  257. package/transpiled/RTD/Tree.d.ts +6 -6
  258. package/transpiled/RTD/Tree.js +4 -1
  259. package/transpiled/RTD/Tree.js.map +1 -1
  260. package/transpiled/RTD/factory.d.ts +2 -4
  261. package/transpiled/RTD/factory.js +1 -1
  262. package/transpiled/RTD/factory.js.map +1 -1
  263. package/transpiled/Tenant.d.ts +0 -1
  264. package/transpiled/Tenant.js +0 -6
  265. package/transpiled/Tenant.js.map +1 -1
  266. package/transpiled/deployment.d.ts +1 -1
  267. package/transpiled/deployment.js +28 -20
  268. package/transpiled/deployment.js.map +1 -1
  269. package/transpiled/directives/auth/Authorization.d.ts +2 -3
  270. package/transpiled/directives/auth/Authorization.js +26 -12
  271. package/transpiled/directives/auth/Authorization.js.map +1 -1
  272. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  273. package/transpiled/directives/auth/Delegate.js +34 -0
  274. package/transpiled/directives/auth/Delegate.js.map +1 -0
  275. package/transpiled/directives/auth/Incept.js +3 -2
  276. package/transpiled/directives/auth/Incept.js.map +1 -1
  277. package/transpiled/directives/auth/Role.d.ts +4 -1
  278. package/transpiled/directives/auth/Role.js +20 -14
  279. package/transpiled/directives/auth/Role.js.map +1 -1
  280. package/transpiled/directives/cache/Cache.d.ts +5 -5
  281. package/transpiled/directives/cache/Cache.js +10 -4
  282. package/transpiled/directives/cache/Cache.js.map +1 -1
  283. package/transpiled/directives/cache/Control.d.ts +2 -1
  284. package/transpiled/directives/cache/Control.js +29 -12
  285. package/transpiled/directives/cache/Control.js.map +1 -1
  286. package/transpiled/directives/cors/CORS.d.ts +2 -3
  287. package/transpiled/directives/cors/CORS.js +13 -7
  288. package/transpiled/directives/cors/CORS.js.map +1 -1
  289. package/transpiled/directives/dev/Development.d.ts +3 -3
  290. package/transpiled/directives/dev/Development.js +1 -1
  291. package/transpiled/directives/dev/Development.js.map +1 -1
  292. package/transpiled/directives/index.d.ts +2 -2
  293. package/transpiled/directives/index.js +5 -3
  294. package/transpiled/directives/index.js.map +1 -1
  295. package/transpiled/directives/io/Directive.d.ts +8 -0
  296. package/transpiled/directives/io/Directive.js +3 -0
  297. package/transpiled/directives/io/Directive.js.map +1 -0
  298. package/transpiled/directives/io/IO.d.ts +9 -0
  299. package/transpiled/directives/io/IO.js +33 -0
  300. package/transpiled/directives/io/IO.js.map +1 -0
  301. package/transpiled/directives/io/Input.d.ts +11 -0
  302. package/transpiled/directives/{octets/Permute.js → io/Input.js} +33 -26
  303. package/transpiled/directives/io/Input.js.map +1 -0
  304. package/transpiled/directives/io/Message.d.ts +1 -0
  305. package/transpiled/directives/io/Message.js +3 -0
  306. package/transpiled/directives/io/Message.js.map +1 -0
  307. package/transpiled/directives/io/Output.d.ts +13 -0
  308. package/transpiled/directives/io/Output.js +76 -0
  309. package/transpiled/directives/io/Output.js.map +1 -0
  310. package/transpiled/directives/io/index.d.ts +2 -0
  311. package/transpiled/directives/io/index.js +6 -0
  312. package/transpiled/directives/io/index.js.map +1 -0
  313. package/transpiled/directives/io/schemas.d.ts +7 -0
  314. package/transpiled/directives/io/schemas.js +14 -0
  315. package/transpiled/directives/io/schemas.js.map +1 -0
  316. package/transpiled/directives/octets/Context.d.ts +3 -3
  317. package/transpiled/directives/octets/Context.js +4 -2
  318. package/transpiled/directives/octets/Context.js.map +1 -1
  319. package/transpiled/directives/octets/Delete.d.ts +3 -2
  320. package/transpiled/directives/octets/Delete.js +3 -1
  321. package/transpiled/directives/octets/Delete.js.map +1 -1
  322. package/transpiled/directives/octets/Directive.d.ts +8 -0
  323. package/transpiled/directives/octets/Directive.js +8 -0
  324. package/transpiled/directives/octets/Directive.js.map +1 -0
  325. package/transpiled/directives/octets/Fetch.d.ts +3 -2
  326. package/transpiled/directives/octets/Fetch.js +3 -1
  327. package/transpiled/directives/octets/Fetch.js.map +1 -1
  328. package/transpiled/directives/octets/List.d.ts +3 -2
  329. package/transpiled/directives/octets/List.js +3 -1
  330. package/transpiled/directives/octets/List.js.map +1 -1
  331. package/transpiled/directives/octets/Octets.d.ts +4 -4
  332. package/transpiled/directives/octets/Octets.js +2 -4
  333. package/transpiled/directives/octets/Octets.js.map +1 -1
  334. package/transpiled/directives/octets/Store.d.ts +3 -2
  335. package/transpiled/directives/octets/Store.js +10 -3
  336. package/transpiled/directives/octets/Store.js.map +1 -1
  337. package/transpiled/directives/octets/Workflow.d.ts +3 -2
  338. package/transpiled/directives/octets/Workflow.js +9 -2
  339. package/transpiled/directives/octets/Workflow.js.map +1 -1
  340. package/transpiled/directives/octets/types.d.ts +0 -5
  341. package/transpiled/directives/require/Directive.d.ts +4 -0
  342. package/transpiled/directives/require/Directive.js +3 -0
  343. package/transpiled/directives/require/Directive.js.map +1 -0
  344. package/transpiled/directives/require/Headers.d.ts +7 -0
  345. package/transpiled/directives/require/Headers.js +19 -0
  346. package/transpiled/directives/require/Headers.js.map +1 -0
  347. package/transpiled/directives/require/Require.d.ts +9 -0
  348. package/transpiled/directives/require/Require.js +27 -0
  349. package/transpiled/directives/require/Require.js.map +1 -0
  350. package/transpiled/directives/require/index.d.ts +2 -0
  351. package/transpiled/directives/require/index.js +6 -0
  352. package/transpiled/directives/require/index.js.map +1 -0
  353. package/transpiled/directives/vary/Directive.d.ts +2 -1
  354. package/transpiled/directives/vary/Embed.d.ts +2 -1
  355. package/transpiled/directives/vary/Embed.js +8 -6
  356. package/transpiled/directives/vary/Embed.js.map +1 -1
  357. package/transpiled/directives/vary/Vary.d.ts +3 -3
  358. package/transpiled/directives/vary/Vary.js +3 -3
  359. package/transpiled/directives/vary/Vary.js.map +1 -1
  360. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  361. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  362. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  363. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  364. package/transpiled/directives/vary/embeddings/Header.js +8 -6
  365. package/transpiled/directives/vary/embeddings/Header.js.map +1 -1
  366. package/transpiled/directives/vary/embeddings/Language.js +1 -1
  367. package/transpiled/directives/vary/embeddings/Language.js.map +1 -1
  368. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  369. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  370. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  371. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  372. package/transpiled/directives/vary/embeddings/index.js +8 -4
  373. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  374. package/transpiled/exceptions.d.ts +3 -2
  375. package/transpiled/exceptions.js +13 -7
  376. package/transpiled/exceptions.js.map +1 -1
  377. package/transpiled/root.js +5 -0
  378. package/transpiled/root.js.map +1 -1
  379. package/transpiled/schemas.d.ts +1 -1
  380. package/transpiled/schemas.js +2 -2
  381. package/transpiled/schemas.js.map +1 -1
  382. package/transpiled/tsconfig.tsbuildinfo +1 -1
  383. package/components/identity.basic/operations/create.d.ts +0 -10
  384. package/components/identity.basic/operations/create.js +0 -10
  385. package/components/identity.basic/operations/create.js.map +0 -1
  386. package/components/identity.basic/source/create.ts +0 -18
  387. package/components/identity.federation/operations/create.d.ts +0 -10
  388. package/components/identity.federation/operations/create.js.map +0 -1
  389. package/components/identity.federation/operations/schemas.d.ts +0 -59
  390. package/components/identity.federation/operations/schemas.js +0 -9
  391. package/components/identity.federation/operations/schemas.js.map +0 -1
  392. package/components/identity.federation/operations/types.js.map +0 -1
  393. package/components/identity.federation/source/schemas.ts +0 -61
  394. package/components/octets.storage/operations/permute.js +0 -7
  395. package/source/HTTP/Server.test.ts +0 -126
  396. package/source/directives/octets/Permute.ts +0 -43
  397. package/transpiled/directives/octets/Permute.d.ts +0 -10
  398. package/transpiled/directives/octets/Permute.js.map +0 -1
@@ -14,8 +14,8 @@
14
14
  The Authorization is implemented as a set of [RTD Directives](tree.md#directives).
15
15
 
16
16
  Directives are executed in a predetermined order until one of them grants access to a resource.
17
- If none of the directives grants access, then the Authorization interrupts request processing and responds with an
18
- authorization error.
17
+ If none of the directives grants access, then the Authorization interrupts request processing and
18
+ responds with an authorization error.
19
19
 
20
20
  > The Authorization directive provider is named `authorization`,
21
21
  > so the full names of the directives are `authorization:{directive}`.
@@ -25,7 +25,7 @@ authorization error.
25
25
  Grants access if its value is `true` and no credentials were provided[^1].
26
26
 
27
27
  [^1]: Credentials in the request make the
28
- response [non-chachable](https://datatracker.ietf.org/doc/html/rfc7234#section-3).
28
+ response [non-cachable](https://datatracker.ietf.org/doc/html/rfc7234#section-3).
29
29
 
30
30
  ### `id`
31
31
 
@@ -56,8 +56,6 @@ is `87480f2bd88048518c529d7957475ecd`.
56
56
 
57
57
  Grants access if resolved Identity has a role matching the directive's value or one of its values.
58
58
 
59
- #### Example
60
-
61
59
  ```yaml
62
60
  # context.toa.yaml
63
61
 
@@ -70,11 +68,22 @@ Access will be granted if the resolved Identity has a role that matches `develop
70
68
 
71
69
  Read [Roles](#roles) section for more details.
72
70
 
71
+ #### Dynamic roles
72
+
73
+ The `role` directive can be used with a placeholder in the route.
74
+
75
+ ```yaml
76
+ # context.toa.yaml
77
+
78
+ exposition:
79
+ /:org-id:
80
+ role: app:{org-id}:moderator
81
+ ```
82
+
73
83
  ### `rule`
74
84
 
75
85
  The Rule is a collection of authorization directives. It allows access only if all the specified
76
- directives grant
77
- access. The value of the `rule` directive can be a single Rule or a list of Rules.
86
+ directives grant access. The value of the `rule` directive can be a single Rule or a list of Rules.
78
87
 
79
88
  #### Example
80
89
 
@@ -90,12 +99,22 @@ exposition:
90
99
 
91
100
  Access will be granted if an Identity matches a `user-id` placeholder and has a Role of `developer`.
92
101
 
102
+ ### `delegate`
103
+
104
+ Embeds the value of the current Identity into the request body as a property named after the value
105
+ of the directive value, and grants access.
106
+ The request body must be an object.
107
+
108
+ > :warning:<br/>
109
+ > The intended use case for this directive is audit.
110
+ > **Using it to pass Identity to the application logic is strongly discouraged.**
111
+
93
112
  ## Roles
94
113
 
95
114
  Role values are strings that can be assigned to an Identity and used for matching with values of
96
115
  the [`role` directive](#role).
97
116
 
98
- ### Hierarchy
117
+ ### Hierarchies
99
118
 
100
119
  Role values are alphanumeric tokens separated by a colon (`:`).
101
120
  Each token defines a Role Scope, forming a hierarchy.
@@ -124,18 +143,10 @@ In other words, the Identity must have a specified or more general Role.
124
143
  </picture>
125
144
  </a>
126
145
 
127
-
128
146
  > The root-level Role Scope `system` is preserved and cannot be used with the `role` directives.
129
147
 
130
148
  See also [role management resources](components.md#roles).
131
149
 
132
- #### Authorization Directives
133
-
134
- ```yaml
135
- /identity/roles/:id:
136
- role: system:roles
137
- ````
138
-
139
150
  ## Policies
140
151
 
141
152
  Component Resource branches cannot have authorization directives.
@@ -0,0 +1,53 @@
1
+ # Authorities
2
+
3
+ Authorities are a mechanism that allows serving multiple domains from a single instance of the
4
+ application.
5
+
6
+ ## Definition
7
+
8
+ The `authorities` definition is a map of authority identifiers to the `:authority` pseudo-header
9
+ values.
10
+
11
+ ```yaml
12
+ # context.toa.yaml
13
+
14
+ exposition:
15
+ authorities:
16
+ one: the.one.com
17
+ two: the.two.com
18
+ ```
19
+
20
+ ## Ingress
21
+
22
+ Each host in the authority definition is used to create a Kubernetes Ingress resource.
23
+
24
+ > If the application is accessed with the `:authority` that does not match the authority definition,
25
+ > the response with `404` status code is returned.
26
+
27
+ ## Embedding
28
+
29
+ To pass the requested authority to the operation call, [`vary:embed` directive](vary.md#embeddings)
30
+ can be used.
31
+
32
+ ```yaml
33
+ # manifest.toa.yaml
34
+
35
+ exposition:
36
+ /:
37
+ GET:
38
+ vary:embed:
39
+ app: authority
40
+ endpoint: observe
41
+ ```
42
+
43
+ ## Identity
44
+
45
+ Credentials stored or issued by the [authentication system](identity.md) are associated with an
46
+ authority.
47
+ Credentials in one authority are not valid in another,
48
+ or may be associated with a different Identity; in other words, Identity exists in the context of an
49
+ authority.
50
+
51
+ > :warning:<br/>
52
+ > Changing the authority identifier will break compatibility with existing stored or issued
53
+ > credentials.
@@ -17,7 +17,7 @@ to [safe HTTP methods](https://developer.mozilla.org/en-US/docs/Glossary/Safe/HT
17
17
 
18
18
  ### Implicit modifications
19
19
 
20
- In terms of security, the following implicit modifications are made to the `Cache-Control` header:
20
+ In terms of security, the following implicit modifications are made to the `cache-control` header:
21
21
 
22
22
  - If it contains the `public` directive without `no-cache` and the request is authenticated,
23
23
  the `no-cache` directive is added.
@@ -25,6 +25,13 @@ In terms of security, the following implicit modifications are made to the `Cach
25
25
  - If it does not contain the `private` directive and the request is authenticated, the `private`
26
26
  directive is added.
27
27
  This is to prevent the storage of private data in shared caches.
28
+ - If it contains `private` directive and the request is authenticated, then `vary: authorization` is
29
+ added.
30
+ This is to prevent the reuse of private data when authenticated as another identity.[^1]
31
+
32
+ [^1]: This also will invalidate the cache each time a new token is used for the same identity, thus
33
+ limiting the `max-age` value to the token's `refresh` time.
34
+ See [Issuing tokens](components.md#issuing-tokens).
28
35
 
29
36
  ## `cache:exact`
30
37
 
@@ -20,7 +20,7 @@ and pepper.
20
20
  configuration:
21
21
  identity.basic:
22
22
  rounds: 10 # salt rounds
23
- peper: '' # hashing pepper
23
+ pepper: '' # hashing pepper
24
24
  ```
25
25
 
26
26
  ### Credentials constraints
@@ -96,11 +96,14 @@ The `identity.federation` component manages OpenID Connect federated identities.
96
96
  Both implicit identities creation and forced [identity inception](./identity.md) are supported
97
97
  as in case with basic credentials. `principal` is also working in the same way.
98
98
 
99
- The configuration schema alongside default values is described in the [component manifest](../components/identity.federation/manifest.toa.yaml).
99
+ The configuration schema alongside default values is described in
100
+ the [component manifest](../components/identity.federation/manifest.toa.yaml).
100
101
 
101
- No federated tokens are accepted by default until at least one entry is added to the `trust` configuration.
102
+ No federated tokens are accepted by default until at least one entry is added to the `trust`
103
+ configuration.
102
104
 
103
- Toa supports either asymmetric RS256 or symmetric HS256 / HS384 / HS512 tokens with pre-shared secrets.
105
+ Toa supports either asymmetric RS256 or symmetric HS256 / HS384 / HS512 tokens with pre-shared
106
+ secrets.
104
107
 
105
108
  ```yaml
106
109
  # context.toa.yaml
@@ -108,8 +111,8 @@ Toa supports either asymmetric RS256 or symmetric HS256 / HS384 / HS512 tokens w
108
111
  configuration:
109
112
  identity.federation:
110
113
  trust:
111
- - issuer: https://token.actions.githubusercontent.com
112
- audience:
114
+ - iss: https://token.actions.githubusercontent.com
115
+ aud:
113
116
  - https://github.com/tinovyatkin
114
117
  - https://github.com/temich
115
118
 
@@ -132,6 +135,14 @@ The new token is issued each time the request is made:
132
135
  1. Using authentication scheme other than `Token`.
133
136
  2. Using `Token` authentication scheme with an [obsolete token](#token-rotation).
134
137
 
138
+ When the token is issued it is sent in the `authorization` response header and the `cache-control`
139
+ is set to `no-store`.
140
+
141
+ ```http
142
+ authorization: Token ...
143
+ cache-control: no-store
144
+ ```
145
+
135
146
  ### Token encryption
136
147
 
137
148
  Issued tokens are encrypted
@@ -153,19 +164,16 @@ The `key0` configuration value is required.
153
164
  ### Token rotation
154
165
 
155
166
  Issued tokens are valid for a `lifetime` period defined in the configuration. After the `refresh`
156
- period, the token is
157
- considered obsolete (yet still valid), and a new token is [issued](#issuing-tokens) unless the
158
- provided one has
159
- been [revoked](#token-revocation).
167
+ period, the token is considered obsolete (yet still valid), and a new token
168
+ is [issued](#issuing-tokens) unless the provided one has been [revoked](#token-revocation).
160
169
 
161
170
  This essentially means that if the client uses the token at least once every `lifetime` period, it
162
- will always have a
163
- valid token to authenticate with. Also, token revocation or changing roles of an Identity will take
164
- effect once
165
- the `refresh` period of the currently issued tokens has expired.
171
+ will always have a valid token to authenticate with.
172
+ Also, token revocation or changing roles of an Identity will take effect once the `refresh` period
173
+ of the currently issued tokens has expired.
166
174
 
167
175
  Adjusting these two values is a delicate trade-off between security, performance and client
168
- convinience.
176
+ convenience.
169
177
 
170
178
  ```yaml
171
179
  # context.toa.yaml
@@ -249,13 +257,26 @@ configuration:
249
257
  key1: $TOKEN_ENCRYPTION_KEY_2023Q3
250
258
  ```
251
259
 
252
- ## Roles
260
+ ### Token resources
253
261
 
254
- The `identity.roles` component manages roles of an Identity used by [access authorization](access.md#role).
262
+ `/identity/tokens/`
255
263
 
256
- ### Role resources
264
+ `POST` Issue a new token for the Identity. Request body is as follows:
257
265
 
258
- #### `/identity/roles/:id/`
266
+ ```yaml
267
+ lifetime?: number # seconds
268
+ ```
269
+
270
+ Providing a value of `0` will result in the token being issued with no expiration.
271
+ However, it will still become invalid once the encryption key used is out
272
+ of [rotation](#secret-rotation).
273
+
274
+ ## Roles
275
+
276
+ The `identity.roles` component manages roles of an Identity used
277
+ by [access authorization](access.md#role).
278
+
279
+ ### `/identity/roles/:id/`
259
280
 
260
281
  `GET` Get roles of an Identity.
261
282
 
@@ -267,13 +288,16 @@ Access requires credentials of the Identity or `system:identity:roles` role.
267
288
  role: string
268
289
  ```
269
290
 
270
- Access requires `system:identity:roles` role.
291
+ To assign arbitrary roles, the `system:identity:roles` role is required.
292
+
293
+ An Identity having `system:identity:roles:delegation` role can delegate roles within its own
294
+ Role Scopes (see [Role Hierarchies](access.md#hierarchies)).
271
295
 
272
296
  ## Banned Identities
273
297
 
274
298
  The `identity.bans` component manages banned identities.
275
- A banned identity will fail to authenticate with any associated credentials (except [tokens](#stateless-tokens) within
276
- the `refresh` period).
299
+ A banned identity will fail to authenticate with any associated credentials
300
+ (except [tokens](#stateless-tokens) within the `refresh` period).
277
301
 
278
302
  ```http
279
303
  PUT /identity/bans/:id/
@@ -281,6 +305,7 @@ authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
281
305
  content-type: application/yaml
282
306
 
283
307
  banned: true
308
+ comment: Bye bye
284
309
  ```
285
310
 
286
311
  Access requires `system:identity:bans` role.
@@ -1,36 +1,30 @@
1
1
  # Identity
2
2
 
3
3
  Identity is the fundamental entity within an authentication system that represents the **unique
4
- identifier** of an
5
- individual, organization, application or device.
4
+ identifier** of an individual, organization, application or device.
6
5
 
7
- In order to prove its Identity, the request originator must provide a valid _credentials_ that are
8
- associated with that
9
- Identity.
6
+ To prove its Identity, the request originator must provide a valid _credentials_ that are associated
7
+ with that Identity.
10
8
 
11
9
  Identity is intrinsically linked to credentials, as an Identity is established only when the first
12
- set of credentials
13
- for that Identity is created.
10
+ set of credentials for that Identity is created.
14
11
  In other words, the creation of credentials marks the inception of an Identity.
15
12
  Once the last credentials are removed from the Identity, it ceases to exist.
16
13
  Without credentials, there is no basis for defining or asserting an Identity.
17
14
 
18
15
  ## Authentication
19
16
 
20
- The Authenticaiton system resolves provided credentials to an Identity using one of the supported
21
- authentication
22
- schemes.
17
+ The Authentication system resolves provided credentials to an Identity using one of the supported
18
+ authentication schemes.
23
19
 
24
20
  The Authentication is request-agnostic, meaning it does not depend on the specific URL being
25
- requested or the content of
26
- the request body.
21
+ requested or the content of the request body.
27
22
  The only information it handles is the value of the `Authorization` header.
28
23
 
29
- > Except for its own [management resources](#persistent-credentials).
24
+ > Except for its own [management resources](components.md).
30
25
 
31
26
  If the provided credentials are not valid or not associated with an Identity, then Authentication
32
- interrupts request
33
- processing and responds with an authentication error.
27
+ interrupts request processing and responds with an authentication error.
34
28
 
35
29
  ### Basic scheme
36
30
 
@@ -52,8 +46,8 @@ Authrization: Token v4.local.eyJzdWIiOiJqb2hu...
52
46
 
53
47
  The `Token` is the **primary** authentication scheme.
54
48
  If request originators use an alternative authentication scheme, they will receive a response
55
- containing `Token`
56
- credentials and will be required to switch to the `Token` scheme for any subsequent requests.
49
+ containing `Token`credentials and will be required to switch to the `Token` scheme for any
50
+ subsequent requests.
57
51
  Continued use of other authentication schemes will result in temporary blocking of requests.
58
52
 
59
53
  See [`identity.tokens` component](components.md#stateless-tokens).
@@ -69,7 +63,8 @@ to [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.ht
69
63
  Authorization: Bearer eyJhbGciOiJIUzI1...
70
64
  ```
71
65
 
72
- Trusted providers are specified using the `identity.federation` property within the configuration annotation.
66
+ Trusted providers are specified using the `identity.federation` property within the configuration
67
+ annotation.
73
68
 
74
69
  ```yaml
75
70
  # context.toa.yaml
@@ -77,13 +72,13 @@ Trusted providers are specified using the `identity.federation` property within
77
72
  configuration:
78
73
  identity.federation:
79
74
  trust:
80
- - issuer: https://accounts.google.com
81
- audience:
75
+ - iss: https://accounts.google.com
76
+ aud:
82
77
  - <GOOGLE_CLIENT_ID>
83
78
 
84
- - issuer: https://appleid.apple.com
79
+ - iss: https://appleid.apple.com
85
80
 
86
- - issuer: private.entity
81
+ - iss: private.entity
87
82
  secrets:
88
83
  HS384:
89
84
  key0: <THE-SECRET-STRING-FOR-HS384>
@@ -0,0 +1,56 @@
1
+ # I/O restrictions
2
+
3
+ The Exposition comes with `io` directives to control access to the operation's input and output
4
+ properties.
5
+
6
+ ## `io:input`
7
+
8
+ The `io:input` optional directive contains a list of properties that are allowed to be specified in
9
+ the request body.
10
+
11
+ ```yaml
12
+ POST:
13
+ endpoint: create
14
+ io:input: [name, location]
15
+ ```
16
+
17
+ The list must be a valid subset of the operation's input properties.
18
+
19
+ If `io:input` is specified and the request body is not an object, or contains properties that are
20
+ not in the list, the request will be rejected with a `400` status code.
21
+
22
+ > Therefore, `io:input` is only applicable to operations which input is an object or an
23
+ > array of objects.
24
+
25
+ ## `io:output`
26
+
27
+ The `io:output` mandatory directive contains a list of properties that are allowed to be included in
28
+ the response body.
29
+
30
+ ```yaml
31
+ GET:
32
+ endpoint: observe
33
+ io:output: [name, location]
34
+ ```
35
+
36
+ When an operation does not return an object (e.g., a primitive or a stream), or an object is dynamic
37
+ and its properties are not known in advance, `io:output` may have a value of `true` to disable
38
+ output restrictions.
39
+
40
+ ```yaml
41
+ GET:
42
+ endpoint: proxy
43
+ io:output: true
44
+ ```
45
+
46
+ If a method declaration lacks `io:output` directive, it will trigger a warning, and its
47
+ response will consistently be empty.
48
+ If this behavior is intended, a `false` value can be employed to suppress warnings.
49
+
50
+ ```yaml
51
+ GET:
52
+ endpoint: conceal
53
+ io:output: false
54
+ ```
55
+
56
+ Output restrictions are not applied to stream responses and errors.
@@ -72,6 +72,9 @@ The following request headers are allowed:
72
72
  - `accept`
73
73
  - `authorization`
74
74
  - `content-type`
75
+ - `etag`
76
+ - `if-match`
77
+ - `if-none-match`
75
78
  - headers used by the [`vary:embed` directive](vary.md#embeddings)
76
79
 
77
80
  The following response headers are exposed:
@@ -6,10 +6,10 @@
6
6
  id?: string
7
7
  criteria?: string
8
8
  sort?: string
9
- omit?: [integer]
10
- limit?: [integer]
9
+ omit?: integer
10
+ limit?: integer
11
11
  selectors?: string[]
12
- projection?: [string]
12
+ projection?: string[]
13
13
  ```
14
14
 
15
15
  ```yaml
@@ -77,8 +77,12 @@ query:
77
77
 
78
78
  ### Path variables
79
79
 
80
- Path variables are prepended to the `criteria` request query parameter using logical AND,
81
- except for the [`POST` method](#post-method).
80
+ Path variables are prepended to the `criteria` request query parameter except for
81
+ the [`POST` method](#post-method).
82
+
83
+ If query criteria starts with logical operator (`,` or `;`), then path variables are prepended
84
+ accordingly.
85
+ `AND` logical operator is used by default.
82
86
 
83
87
  Given the following declaration:
84
88
 
@@ -92,7 +96,7 @@ exposition:
92
96
  GET:
93
97
  endpoint: observe
94
98
  query:
95
- criteria: state==hot; # open criteria
99
+ criteria: ,state==hot; # open criteria
96
100
  ```
97
101
 
98
102
  and the following request:
@@ -104,7 +108,7 @@ GET /dummies/cool/?criteria=rank==5
104
108
  Operation call will have the following query criteria:
105
109
 
106
110
  ```yaml
107
- criteria: state==hot;type==cool;rank=5
111
+ criteria: (type==cool,state==hot);(rank=5)
108
112
  ```
109
113
 
110
114
  #### POST method
@@ -251,9 +255,9 @@ PUT /dummies/5e82ed5e/ HTTP/1.1
251
255
  if-match: "1"
252
256
 
253
257
  foo: baz
258
+ ```
254
259
 
255
- ---
256
-
260
+ ```http
257
261
  200 OK
258
262
  ```
259
263
 
@@ -262,8 +266,10 @@ PUT /dummies/5e82ed5e/ HTTP/1.1
262
266
  if-match: "never"
263
267
 
264
268
  foo: baz
269
+ ```
265
270
 
266
- ---
267
-
271
+ ```http
268
272
  412 Precondition Failed
269
273
  ```
274
+
275
+ The value within the quotes is mapped to the `version` property of operation call query.
@@ -0,0 +1,15 @@
1
+ # Directive family Require
2
+
3
+ The `require` directive family provides the ability to specify HTTP request requirements to be met.
4
+
5
+ ## Headers
6
+
7
+ `require:header` requires a specific header to be present in the request, and `require:headers`
8
+ requires a set of headers to be present.
9
+
10
+ ```yaml
11
+ exposition:
12
+ /:id:
13
+ require:header: if-match # enforce concurrency control
14
+ PUT: transit
15
+ ```
@@ -102,7 +102,7 @@ HTTP methods can only be mapped to operations of the corresponding types.
102
102
  | `GET` | **Observation**<br/>**Computation** |
103
103
  | `PATCH` | **Assignment**<br/>**Effect** |
104
104
 
105
- As method mapping is unambiguous for Observation, Assignent, and Computation, a consice syntax is
105
+ As method mapping is unambiguous for Observation, Assignment, and Computation, a concise syntax is
106
106
  available:
107
107
 
108
108
  ```yaml
@@ -110,7 +110,23 @@ available:
110
110
  /items/:id: [observe, assign]
111
111
  ```
112
112
 
113
- ### Intermediate Nodes
113
+ ### Projections
114
+
115
+ A Method can have a `projection` key that specifies the fields of the operation result to be
116
+ included in the response.
117
+
118
+ ```yaml
119
+ /teapots:
120
+ GET:
121
+ endpoint: select
122
+ projection:
123
+ - name
124
+ - state
125
+ ```
126
+
127
+ > `id` is always included in the projection.
128
+
129
+ ## Intermediate Nodes
114
130
 
115
131
  An RTD Node that has a Route with a key `/` is an _intermediate_ Node.
116
132
  Intermediate Nodes must not have Methods as they are unreachable.
@@ -124,8 +140,10 @@ Intermediate Nodes must not have Methods as they are unreachable.
124
140
 
125
141
  ## Directives
126
142
 
127
- RTD Directives are declared using RTD node or Method keys following the `{family}:{directive}` pattern and can be used
128
- to add or modify the behavior of request processing. Directive declarations are applied to the RTD node where they are
143
+ RTD Directives are declared using RTD node or Method keys following the `{family}:{directive}`
144
+ pattern and can be used
145
+ to add or modify the behavior of request processing. Directive declarations are applied to the RTD
146
+ node where they are
129
147
  declared and to all nested nodes.
130
148
 
131
149
  ```yaml
@@ -7,16 +7,15 @@ operation call.
7
7
 
8
8
  ```yaml
9
9
  exposition:
10
- realms:
11
- toa: the.toa.io
12
- /:
10
+ /:group:
13
11
  vary:languages: [en, fr]
14
12
  GET:
15
13
  vary:embed:
16
- lang: language # predefined embeddings
17
- realm: realm
14
+ app: authority # predefined embeddings
15
+ lang: language
18
16
  token: :x-access-token # raw header value
19
- endpoint: dummies.get
17
+ group: /:group # route parameter
18
+ endpoint: observe
20
19
  ```
21
20
 
22
21
  ## Embeddings
@@ -30,13 +29,9 @@ If the value is an array, the first non-empty embedding function's result is use
30
29
  > If a property is already present in the input, the embedded value will overwrite its current
31
30
  > value.
32
31
 
33
- ### Realm
32
+ ### Authority
34
33
 
35
- Realm is an identifier of a domain used to access the Exposition.
36
- The list of domains is defined by the `vary:realms` directive,
37
- which is a map of realm names to their domain names.
38
-
39
- The `realm` embedding substitutes the realm identified based on the `host` request header.
34
+ The `authority` embedding substitutes request [authority identifier](authorities.md).
40
35
 
41
36
  ### Language
42
37
 
@@ -47,8 +42,8 @@ If neither of the supported languages matches, the first supported language is u
47
42
 
48
43
  ### Raw header values
49
44
 
50
- Keys in the embedding map starting with a semicolon (:) are the names of HTTP request headers whose
51
- values to be embedded into an operation call.
45
+ Values in the embedding map starting with a semicolon (:) are the names of HTTP request headers
46
+ whose values to be embedded into an operation call.
52
47
  The names of these headers are then included in the `vary` HTTP response header
53
48
  and [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)
54
49
  of the [CORS](protocol.md#cors).
@@ -56,6 +51,11 @@ of the [CORS](protocol.md#cors).
56
51
  [Multiple header fields](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) are embedded
57
52
  as a comma-separated list.
58
53
 
54
+ ### Route parameters
55
+
56
+ Values in the embedding map starting with `/:` are the names of route parameters whose values
57
+ to be embedded into an operation call.
58
+
59
59
  ### Fallbacks
60
60
 
61
61
  If the embedding function is an array, the first non-empty resolved value is used.