@toa.io/extensions.exposition 1.0.0-alpha.292 → 1.0.0-alpha.293

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/components/identity.basic/package.json +8 -0
  2. package/components/identity.federation/package.json +8 -0
  3. package/components/identity.passkeys/package.json +8 -0
  4. package/components/identity.tokens/package.json +10 -0
  5. package/package.json +24 -13
  6. package/transpiled/Endpoint.js +3 -0
  7. package/transpiled/Endpoint.js.map +1 -1
  8. package/transpiled/Introspection.d.ts +6 -0
  9. package/transpiled/Introspection.js +1 -0
  10. package/transpiled/Introspection.js.map +1 -1
  11. package/transpiled/MCP/schema.js +2 -2
  12. package/transpiled/Query.d.ts +2 -12
  13. package/transpiled/Query.js +2 -12
  14. package/transpiled/Query.js.map +1 -1
  15. package/transpiled/RTD/Endpoint.d.ts +2 -3
  16. package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
  17. package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
  18. package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
  19. package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
  20. package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
  21. package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
  22. package/ui/dist/_app/immutable/chunks/{aLpTDmOc.js → DVlaUfVU.js} +1 -1
  23. package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
  24. package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
  25. package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
  26. package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
  27. package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
  28. package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
  29. package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
  30. package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
  31. package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
  32. package/ui/dist/_app/version.json +1 -1
  33. package/ui/dist/index.html +12 -12
  34. package/CHANGELOG.md +0 -42
  35. package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
  36. package/components/identity.basic/source/lib/credentials.test.ts +0 -18
  37. package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
  38. package/components/identity.clients/source/lib/canonical.test.ts +0 -43
  39. package/components/identity.clients/source/lib/cimd.test.ts +0 -122
  40. package/components/identity.clients/source/lib/redirect.test.ts +0 -47
  41. package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
  42. package/components/identity.credentials/source/list.test.ts +0 -70
  43. package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
  44. package/components/identity.federation/source/lib/discovery.test.ts +0 -60
  45. package/components/identity.federation/source/list.test.ts +0 -41
  46. package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
  47. package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
  48. package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
  49. package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
  50. package/components/identity.passkeys/source/errors.test.ts +0 -34
  51. package/components/identity.passkeys/source/webauthn.test.ts +0 -26
  52. package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
  53. package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
  54. package/components/identity.tokens/source/authenticate.test.ts +0 -112
  55. package/components/identity.tokens/source/decrypt.test.ts +0 -216
  56. package/components/identity.tokens/source/encrypt.test.ts +0 -150
  57. package/components/identity.tokens/source/issue.test.ts +0 -73
  58. package/components/identity.tokens/source/lib/form.test.ts +0 -25
  59. package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
  60. package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
  61. package/context.toa.yaml +0 -31
  62. package/cucumber.mjs +0 -7
  63. package/documentation/.assets/ia3-dark.jpg +0 -0
  64. package/documentation/.assets/ia3-light.jpg +0 -0
  65. package/documentation/.assets/overview-dark.jpg +0 -0
  66. package/documentation/.assets/overview-light.jpg +0 -0
  67. package/documentation/.assets/role-scopes-dark.jpg +0 -0
  68. package/documentation/.assets/role-scopes-light.jpg +0 -0
  69. package/documentation/.assets/rtd-dark.jpg +0 -0
  70. package/documentation/.assets/rtd-light.jpg +0 -0
  71. package/documentation/access.md +0 -350
  72. package/documentation/authorities.md +0 -51
  73. package/documentation/cache.md +0 -72
  74. package/documentation/components.md +0 -472
  75. package/documentation/consent.md +0 -101
  76. package/documentation/credentials.md +0 -88
  77. package/documentation/dev.md +0 -30
  78. package/documentation/discovery.md +0 -81
  79. package/documentation/flow.md +0 -44
  80. package/documentation/help.md +0 -122
  81. package/documentation/identity.md +0 -304
  82. package/documentation/introspection.md +0 -123
  83. package/documentation/io.md +0 -167
  84. package/documentation/ip.md +0 -24
  85. package/documentation/map.md +0 -123
  86. package/documentation/mcp.md +0 -183
  87. package/documentation/notes/desync.jpg +0 -0
  88. package/documentation/notes/peers.md +0 -59
  89. package/documentation/notes/sse.md +0 -71
  90. package/documentation/notes/throttling.md +0 -122
  91. package/documentation/oauth.md +0 -180
  92. package/documentation/octets.md +0 -334
  93. package/documentation/passkeys.md +0 -11
  94. package/documentation/protocol.md +0 -120
  95. package/documentation/query.md +0 -324
  96. package/documentation/require.md +0 -15
  97. package/documentation/rpc.md +0 -154
  98. package/documentation/tracing.md +0 -70
  99. package/documentation/tree.md +0 -199
  100. package/features/access.feature +0 -596
  101. package/features/annotation.feature +0 -32
  102. package/features/auth.assert.feature +0 -55
  103. package/features/auth.bearer.feature +0 -120
  104. package/features/auth.claims.feature +0 -171
  105. package/features/auth.incept.feature +0 -166
  106. package/features/auth.input.feature +0 -59
  107. package/features/authorities.basic.feature +0 -141
  108. package/features/authorities.feature +0 -71
  109. package/features/authorities.federation.feature +0 -100
  110. package/features/authorities.tokens.feature +0 -117
  111. package/features/body.feature +0 -76
  112. package/features/cache.feature +0 -368
  113. package/features/configuration.feature +0 -206
  114. package/features/cors.feature +0 -127
  115. package/features/credentials.feature +0 -106
  116. package/features/debug.feature +0 -34
  117. package/features/dev.feature +0 -90
  118. package/features/directives.feature +0 -61
  119. package/features/discovery.feature +0 -213
  120. package/features/discovery.ui.feature +0 -213
  121. package/features/dynamic.feature +0 -192
  122. package/features/errors.feature +0 -258
  123. package/features/etag.feature +0 -239
  124. package/features/flow.feature +0 -148
  125. package/features/help.feature +0 -512
  126. package/features/identity.bans.feature +0 -200
  127. package/features/identity.basic.feature +0 -666
  128. package/features/identity.feature +0 -240
  129. package/features/identity.federation.feature +0 -396
  130. package/features/identity.otp.feature +0 -142
  131. package/features/identity.roles.feature +0 -568
  132. package/features/identity.tokens.custom.feature +0 -430
  133. package/features/identity.tokens.feature +0 -131
  134. package/features/interruptions.feature +0 -20
  135. package/features/introspection.feature +0 -565
  136. package/features/introspection.map.feature +0 -108
  137. package/features/io.feature +0 -204
  138. package/features/io.throttle.feature +0 -166
  139. package/features/map.feature +0 -360
  140. package/features/mcp.feature +0 -753
  141. package/features/methods.feature +0 -48
  142. package/features/oauth.clients.feature +0 -195
  143. package/features/oauth.discovery.feature +0 -164
  144. package/features/oauth.grants.feature +0 -301
  145. package/features/octets.cloudinary.feature +0 -233
  146. package/features/octets.download.feature +0 -194
  147. package/features/octets.entries.feature +0 -83
  148. package/features/octets.feature +0 -306
  149. package/features/octets.head.feature +0 -40
  150. package/features/octets.location.feature +0 -83
  151. package/features/octets.meta.feature +0 -117
  152. package/features/octets.workflows.feature +0 -565
  153. package/features/passkeys.feature +0 -66
  154. package/features/probes.feature +0 -18
  155. package/features/query.feature +0 -389
  156. package/features/realtime.feature +0 -34
  157. package/features/require.feature +0 -66
  158. package/features/response.feature +0 -103
  159. package/features/routes.feature +0 -224
  160. package/features/rpc.feature +0 -429
  161. package/features/server.feature +0 -21
  162. package/features/site/_app/immutable/asset.js +0 -1
  163. package/features/site/favicon.ico +0 -0
  164. package/features/site/index.html +0 -10
  165. package/features/steps/.env.example +0 -5
  166. package/features/steps/Captures.ts +0 -20
  167. package/features/steps/Cloudinary.ts +0 -12
  168. package/features/steps/Common.ts +0 -38
  169. package/features/steps/Components.ts +0 -115
  170. package/features/steps/Database.ts +0 -106
  171. package/features/steps/Gateway.ts +0 -239
  172. package/features/steps/HTTP.ts +0 -96
  173. package/features/steps/IDP.ts +0 -361
  174. package/features/steps/Identity.ts +0 -54
  175. package/features/steps/OTP.ts +0 -42
  176. package/features/steps/Parameters.ts +0 -162
  177. package/features/steps/Probe.ts +0 -38
  178. package/features/steps/Realtime.ts +0 -175
  179. package/features/steps/Workspace.ts +0 -48
  180. package/features/steps/components/audit/manifest.toa.yaml +0 -20
  181. package/features/steps/components/audit/operations/record.js +0 -5
  182. package/features/steps/components/echo/manifest.toa.yaml +0 -59
  183. package/features/steps/components/echo/operations/affect.js +0 -3
  184. package/features/steps/components/echo/operations/compute.js +0 -3
  185. package/features/steps/components/echo/operations/echo.js +0 -3
  186. package/features/steps/components/echo/operations/error.js +0 -7
  187. package/features/steps/components/echo/operations/identity.js +0 -3
  188. package/features/steps/components/echo/operations/parameters.js +0 -3
  189. package/features/steps/components/echo/operations/ping.js +0 -3
  190. package/features/steps/components/echo/operations/unwrap.js +0 -3
  191. package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
  192. package/features/steps/components/echo.beacon/operations/hello.js +0 -3
  193. package/features/steps/components/greeter/manifest.toa.yaml +0 -5
  194. package/features/steps/components/greeter/operations/greet.js +0 -3
  195. package/features/steps/components/notify/manifest.toa.yaml +0 -20
  196. package/features/steps/components/notify/operations/send.js +0 -5
  197. package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
  198. package/features/steps/components/octets.tester/operations/authority.js +0 -3
  199. package/features/steps/components/octets.tester/operations/bar.js +0 -9
  200. package/features/steps/components/octets.tester/operations/baz.js +0 -9
  201. package/features/steps/components/octets.tester/operations/concat.js +0 -5
  202. package/features/steps/components/octets.tester/operations/echo.js +0 -5
  203. package/features/steps/components/octets.tester/operations/err.js +0 -14
  204. package/features/steps/components/octets.tester/operations/foo.js +0 -5
  205. package/features/steps/components/octets.tester/operations/id.js +0 -5
  206. package/features/steps/components/octets.tester/operations/identity.js +0 -5
  207. package/features/steps/components/octets.tester/operations/lenna.png +0 -0
  208. package/features/steps/components/octets.tester/operations/redirect.js +0 -17
  209. package/features/steps/components/octets.tester/operations/yex.js +0 -14
  210. package/features/steps/components/octets.tester/operations/yield.js +0 -11
  211. package/features/steps/components/orders/manifest.toa.yaml +0 -30
  212. package/features/steps/components/orders/operations/create.js +0 -7
  213. package/features/steps/components/pots/manifest.toa.yaml +0 -91
  214. package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
  215. package/features/steps/components/pricing/manifest.toa.yaml +0 -13
  216. package/features/steps/components/pricing/operations/quote.js +0 -3
  217. package/features/steps/components/sequences/manifest.toa.yaml +0 -11
  218. package/features/steps/components/sequences/operations/numbers.js +0 -5
  219. package/features/steps/components/sequences/operations/tokens.js +0 -14
  220. package/features/steps/components/users/manifest.toa.yaml +0 -30
  221. package/features/steps/components/users/operations/create.js +0 -11
  222. package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
  223. package/features/steps/map.ts +0 -30
  224. package/features/steps/tsconfig.json +0 -9
  225. package/features/streams.feature +0 -35
  226. package/features/timestamps.feature +0 -41
  227. package/features/timing.feature +0 -49
  228. package/features/tracing.feature +0 -123
  229. package/source/Branch.test.ts +0 -40
  230. package/source/Branch.ts +0 -44
  231. package/source/Composition.ts +0 -51
  232. package/source/Context.ts +0 -11
  233. package/source/Directive.test.ts +0 -199
  234. package/source/Directive.ts +0 -248
  235. package/source/Discovery/Explorer.ts +0 -34
  236. package/source/Discovery/Site.test.ts +0 -147
  237. package/source/Discovery/Site.ts +0 -202
  238. package/source/Discovery/index.ts +0 -3
  239. package/source/Discovery/tree.test.ts +0 -175
  240. package/source/Discovery/tree.ts +0 -77
  241. package/source/Discovery/trunk.ts +0 -33
  242. package/source/Endpoint.test.ts +0 -67
  243. package/source/Endpoint.ts +0 -157
  244. package/source/Factory.ts +0 -42
  245. package/source/Gateway.ts +0 -390
  246. package/source/HTTP/Context.ts +0 -143
  247. package/source/HTTP/Probe.ts +0 -99
  248. package/source/HTTP/Server.ts +0 -435
  249. package/source/HTTP/Timing.ts +0 -14
  250. package/source/HTTP/address.test.ts +0 -28
  251. package/source/HTTP/address.ts +0 -16
  252. package/source/HTTP/exceptions.ts +0 -99
  253. package/source/HTTP/formats/form.ts +0 -21
  254. package/source/HTTP/formats/index.ts +0 -36
  255. package/source/HTTP/formats/json.ts +0 -14
  256. package/source/HTTP/formats/msgpack.ts +0 -14
  257. package/source/HTTP/formats/text.ts +0 -10
  258. package/source/HTTP/formats/yaml.test.ts +0 -22
  259. package/source/HTTP/formats/yaml.ts +0 -40
  260. package/source/HTTP/index.ts +0 -6
  261. package/source/HTTP/messages.test.ts +0 -196
  262. package/source/HTTP/messages.ts +0 -186
  263. package/source/HTTP/types.ts +0 -39
  264. package/source/Interception.ts +0 -37
  265. package/source/Introspection.ts +0 -179
  266. package/source/MCP/Server.ts +0 -335
  267. package/source/MCP/discover.ts +0 -51
  268. package/source/MCP/errors.ts +0 -80
  269. package/source/MCP/index.ts +0 -1
  270. package/source/MCP/schema.test.ts +0 -91
  271. package/source/MCP/schema.ts +0 -94
  272. package/source/MCP/tools.ts +0 -144
  273. package/source/MCP/types.ts +0 -84
  274. package/source/Mapping.ts +0 -101
  275. package/source/Query.test.ts +0 -54
  276. package/source/Query.ts +0 -277
  277. package/source/RPC/Context.ts +0 -75
  278. package/source/RPC/Dispatcher.ts +0 -150
  279. package/source/RPC/errors.test.ts +0 -77
  280. package/source/RPC/errors.ts +0 -82
  281. package/source/RPC/index.ts +0 -1
  282. package/source/RPC/names.test.ts +0 -141
  283. package/source/RPC/names.ts +0 -176
  284. package/source/RPC/types.ts +0 -34
  285. package/source/RTD/Context.ts +0 -16
  286. package/source/RTD/Directives.ts +0 -126
  287. package/source/RTD/Endpoint.ts +0 -27
  288. package/source/RTD/Match.ts +0 -11
  289. package/source/RTD/Method.ts +0 -39
  290. package/source/RTD/Node.ts +0 -169
  291. package/source/RTD/Route.ts +0 -93
  292. package/source/RTD/Tree.ts +0 -137
  293. package/source/RTD/expiration.test.ts +0 -81
  294. package/source/RTD/factory.ts +0 -105
  295. package/source/RTD/index.ts +0 -8
  296. package/source/RTD/segment.test.ts +0 -35
  297. package/source/RTD/segment.ts +0 -51
  298. package/source/RTD/syntax/index.ts +0 -1
  299. package/source/RTD/walk.test.ts +0 -147
  300. package/source/Remotes.test.ts +0 -79
  301. package/source/Remotes.ts +0 -39
  302. package/source/Tenant.ts +0 -73
  303. package/source/directives/auth/Anonymous.test.ts +0 -70
  304. package/source/directives/auth/Anonymous.ts +0 -36
  305. package/source/directives/auth/Anyone.ts +0 -23
  306. package/source/directives/auth/Assert.ts +0 -43
  307. package/source/directives/auth/Authorization.test.ts +0 -24
  308. package/source/directives/auth/Authorization.ts +0 -388
  309. package/source/directives/auth/Delegate.test.ts +0 -36
  310. package/source/directives/auth/Delegate.ts +0 -54
  311. package/source/directives/auth/Echo.ts +0 -24
  312. package/source/directives/auth/Federation.ts +0 -104
  313. package/source/directives/auth/Id.ts +0 -37
  314. package/source/directives/auth/Incept.ts +0 -117
  315. package/source/directives/auth/Input.ts +0 -92
  316. package/source/directives/auth/Role.test.ts +0 -147
  317. package/source/directives/auth/Role.ts +0 -99
  318. package/source/directives/auth/Rule.ts +0 -59
  319. package/source/directives/auth/Scheme.ts +0 -31
  320. package/source/directives/auth/create.ts +0 -11
  321. package/source/directives/auth/index.ts +0 -3
  322. package/source/directives/auth/schemes.test.ts +0 -18
  323. package/source/directives/auth/schemes.ts +0 -39
  324. package/source/directives/auth/split.ts +0 -14
  325. package/source/directives/auth/types.ts +0 -75
  326. package/source/directives/cache/Cache.ts +0 -92
  327. package/source/directives/cache/Control.ts +0 -81
  328. package/source/directives/cache/Exact.ts +0 -7
  329. package/source/directives/cache/etag.ts +0 -38
  330. package/source/directives/cache/index.ts +0 -3
  331. package/source/directives/cache/types.ts +0 -9
  332. package/source/directives/cors/CORS.test.ts +0 -75
  333. package/source/directives/cors/CORS.ts +0 -88
  334. package/source/directives/cors/index.ts +0 -3
  335. package/source/directives/dev/Development.ts +0 -41
  336. package/source/directives/dev/Faulty.ts +0 -31
  337. package/source/directives/dev/Sleep.ts +0 -53
  338. package/source/directives/dev/Stub.ts +0 -14
  339. package/source/directives/dev/Throw.ts +0 -14
  340. package/source/directives/dev/index.ts +0 -3
  341. package/source/directives/dev/types.ts +0 -5
  342. package/source/directives/flow/Compose.ts +0 -98
  343. package/source/directives/flow/Fetch.ts +0 -86
  344. package/source/directives/flow/Flow.ts +0 -43
  345. package/source/directives/flow/index.ts +0 -3
  346. package/source/directives/flow/types.ts +0 -7
  347. package/source/directives/help/Family.ts +0 -122
  348. package/source/directives/help/Help.test.ts +0 -227
  349. package/source/directives/help/Help.ts +0 -47
  350. package/source/directives/help/Parameters.ts +0 -47
  351. package/source/directives/help/described.ts +0 -57
  352. package/source/directives/help/index.ts +0 -45
  353. package/source/directives/index.ts +0 -33
  354. package/source/directives/io/Directive.ts +0 -17
  355. package/source/directives/io/IO.ts +0 -118
  356. package/source/directives/io/Input.ts +0 -55
  357. package/source/directives/io/Message.ts +0 -1
  358. package/source/directives/io/Output.ts +0 -81
  359. package/source/directives/io/Status.test.ts +0 -88
  360. package/source/directives/io/Status.ts +0 -47
  361. package/source/directives/io/Throttle.ts +0 -30
  362. package/source/directives/io/index.ts +0 -3
  363. package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
  364. package/source/directives/io/lib/throttle/Configuration.ts +0 -68
  365. package/source/directives/io/lib/throttle/Keys.ts +0 -53
  366. package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
  367. package/source/directives/io/lib/throttle/Quotas.ts +0 -190
  368. package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
  369. package/source/directives/io/lib/throttle/Sync.ts +0 -93
  370. package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
  371. package/source/directives/io/lib/throttle/Warning.ts +0 -29
  372. package/source/directives/io/lib/throttle/components/Component.ts +0 -7
  373. package/source/directives/io/lib/throttle/components/IP.ts +0 -30
  374. package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
  375. package/source/directives/io/lib/throttle/components/Path.ts +0 -8
  376. package/source/directives/io/lib/throttle/components/Route.ts +0 -19
  377. package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
  378. package/source/directives/io/lib/throttle/components/index.ts +0 -19
  379. package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
  380. package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
  381. package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
  382. package/source/directives/io/lib/throttle/index.ts +0 -4
  383. package/source/directives/io/schemas.test.ts +0 -40
  384. package/source/directives/io/schemas.ts +0 -16
  385. package/source/directives/map/Authority.ts +0 -15
  386. package/source/directives/map/Buffer.ts +0 -15
  387. package/source/directives/map/Claims.ts +0 -63
  388. package/source/directives/map/Directive.ts +0 -4
  389. package/source/directives/map/Headers.ts +0 -60
  390. package/source/directives/map/Language.ts +0 -45
  391. package/source/directives/map/Languages.ts +0 -17
  392. package/source/directives/map/Map.ts +0 -85
  393. package/source/directives/map/Mapping.ts +0 -45
  394. package/source/directives/map/Properties.ts +0 -15
  395. package/source/directives/map/Segments.ts +0 -52
  396. package/source/directives/map/index.ts +0 -3
  397. package/source/directives/mcp/MCP.ts +0 -33
  398. package/source/directives/mcp/Tool.test.ts +0 -56
  399. package/source/directives/mcp/Tool.ts +0 -32
  400. package/source/directives/mcp/index.ts +0 -6
  401. package/source/directives/oauth/Discovery.ts +0 -66
  402. package/source/directives/oauth/documents.ts +0 -110
  403. package/source/directives/oauth/index.ts +0 -3
  404. package/source/directives/octets/Context.ts +0 -23
  405. package/source/directives/octets/Delete.ts +0 -96
  406. package/source/directives/octets/Directive.ts +0 -21
  407. package/source/directives/octets/Get.ts +0 -88
  408. package/source/directives/octets/Octets.ts +0 -82
  409. package/source/directives/octets/Put.ts +0 -186
  410. package/source/directives/octets/Workflow.ts +0 -60
  411. package/source/directives/octets/bytes.test.ts +0 -33
  412. package/source/directives/octets/bytes.ts +0 -18
  413. package/source/directives/octets/index.ts +0 -3
  414. package/source/directives/octets/schemas.test.ts +0 -20
  415. package/source/directives/octets/schemas.ts +0 -15
  416. package/source/directives/octets/types.ts +0 -9
  417. package/source/directives/octets/workflows/Execution.ts +0 -130
  418. package/source/directives/octets/workflows/Workflow.ts +0 -51
  419. package/source/directives/octets/workflows/index.ts +0 -1
  420. package/source/directives/require/Directive.ts +0 -5
  421. package/source/directives/require/Headers.ts +0 -19
  422. package/source/directives/require/Require.ts +0 -27
  423. package/source/directives/require/index.ts +0 -3
  424. package/source/discovery.ts +0 -1
  425. package/source/exceptions.ts +0 -47
  426. package/source/index.ts +0 -10
  427. package/source/io.ts +0 -4
  428. package/source/octets.d.ts +0 -17
  429. package/source/root.ts +0 -59
  430. package/source/service.ts +0 -95
  431. package/source/userland.ts +0 -47
  432. package/tsconfig.json +0 -13
  433. package/tsconfig.tsbuildinfo +0 -1
  434. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
  435. package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
  436. package/ui/dist/_app/immutable/chunks/BaWe3aOV.js +0 -1
  437. package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
  438. package/ui/dist/_app/immutable/chunks/GZTfV0ks.js +0 -6
  439. package/ui/dist/_app/immutable/entry/app.D5v4JoUx.js +0 -2
  440. package/ui/dist/_app/immutable/entry/start.CWxFoIyZ.js +0 -1
  441. package/ui/dist/_app/immutable/nodes/0.DIh5T_5-.js +0 -1
  442. package/ui/dist/_app/immutable/nodes/1.CY-bFzHC.js +0 -1
  443. package/ui/dist/_app/immutable/nodes/2.6Ubd1ItY.js +0 -14
@@ -1,88 +0,0 @@
1
- # Persistent credentials
2
-
3
- Persistent credentials associate an [Identity](identity.md) with a reusable authentication method.
4
- Exposition stores Basic, OpenID Connect federation, and WebAuthn passkey credentials. Local tokens
5
- and one-time passwords are not persistent credentials: tokens are stateless and OTP records expire.
6
-
7
- See [Features](../features/credentials.feature).
8
-
9
- ## Listing credentials
10
-
11
- `GET /identity/credentials/:identity/` returns all persistent credentials associated with the
12
- Identity in the current authority. Access requires credentials of that Identity.
13
-
14
- ```http
15
- GET /identity/credentials/fc8e66ddd51d45eea89602c9dd38a542/ HTTP/1.1
16
- authorization: Token ...
17
- accept: application/yaml
18
- ```
19
-
20
- ```yaml
21
- basic:
22
- username: user@example.com
23
- federation:
24
- - id: 09200d0bcc2448c5863e3f50ae18af84
25
- iss: https://accounts.google.com
26
- CREATED: 1754899200000
27
- passkeys:
28
- - id: 54ed430804324e81b39756ea4708b546
29
- aid: adce0002-35bc-c60a-648b-0b25f1f05503
30
- synced: true
31
- label: Personal iPhone
32
- CREATED: 1754899200000
33
- ```
34
-
35
- `basic` is `null` when Basic credentials do not exist. `federation` and `passkeys` are always
36
- arrays. Secret and authentication data, including password hashes, federation subjects, public
37
- keys, signature counters, and transports, are not returned.
38
-
39
- The federation issuer identifies the provider. For example, Google uses
40
- `https://accounts.google.com` and Apple uses `https://appleid.apple.com`. Applications should map
41
- trusted issuers to their own provider names and presentation.
42
-
43
- The passkey `aid` is its
44
- [AAGUID](https://www.w3.org/TR/webauthn-2/#aaguid), which can be resolved against an authenticator
45
- metadata catalog. `synced` indicates whether the credential was backed up and is therefore likely
46
- available on more than one device.
47
-
48
- ## Basic credentials
49
-
50
- - `POST /identity/basic/:identity/` adds Basic credentials to an Identity.
51
- - `PATCH /identity/basic/:identity/` changes its username or password.
52
- - `DELETE /identity/basic/:identity/` removes its Basic credentials.
53
-
54
- An Identity can have at most one Basic credential in an authority. See
55
- [Basic credentials configuration](components.md#basic-credentials) for password hashing,
56
- constraints, and principal configuration.
57
-
58
- ## Federated credentials
59
-
60
- - `POST /identity/federation/:identity/` associates credentials from a trusted issuer and returns
61
- the associated credential as it is listed.
62
- - `GET /identity/federation/:identity/` lists federated credentials.
63
- - `DELETE /identity/federation/:identity/:credential/` removes one federated credential.
64
-
65
- If the credentials are already associated with the Identity, the existing credential is returned.
66
-
67
- An Identity can have credentials from multiple issuers and can have multiple subjects from the
68
- same issuer. The `:credential` segment is the `id` returned by any of these resources. Federation
69
- resources are provider-independent; issuer-specific authorization flows remain the responsibility
70
- of the application.
71
-
72
- ## Passkeys
73
-
74
- Passkey registration consists of a challenge followed by credential creation:
75
-
76
- - `POST /identity/passkeys/challenges/:identity/` creates a registration challenge.
77
- - `POST /identity/passkeys/:identity/` verifies the response and stores the passkey.
78
- - `GET /identity/passkeys/:identity/` lists passkeys.
79
- - `DELETE /identity/passkeys/:identity/:credential/` removes one passkey.
80
-
81
- See [Web Authentication](passkeys.md) for standards and feature scenarios.
82
-
83
- ## Removing the last credential
84
-
85
- Credential components intentionally do not coordinate with one another. Consequently, credentials
86
- can be removed without checking whether another persistent credential exists.
87
- Applications that require a recoverable login must prevent removal of the last usable credential
88
- in their client workflow.
@@ -1,30 +0,0 @@
1
- # Development tools
2
-
3
- ## `dev:stub`
4
-
5
- Returns a successful response with the given body.
6
-
7
- ```yaml
8
- /foo:
9
- dev:sub: Hello!
10
- /bar:
11
- dev:sub:
12
- hello: world
13
- ```
14
-
15
- ## `dev:sleep`
16
-
17
- Enables random delay before processing the request, up to given maximum time in milliseconds.
18
-
19
- Desired delay range can be set in the `sleep` request header as a JSON array of two numbers, the minimum
20
- and maximum delay in milliseconds.
21
-
22
- ```yaml
23
- /foo:
24
- dev:sleep: 1000
25
- ```
26
-
27
- ```http
28
- GET /foo/ HTTP/1.1
29
- sleep: [500, 1000]
30
- ```
@@ -1,81 +0,0 @@
1
- # Resource discovery
2
-
3
- Everything an application serves, at one path, and a page to read it with.
4
-
5
- ```http
6
- OPTIONS /.discovery HTTP/1.1
7
- accept: application/yaml
8
- ```
9
-
10
- ```http
11
- 200 OK
12
- Allow: GET, HEAD, OPTIONS
13
- cache-control: private, max-age=1800
14
-
15
- routes:
16
- /pots:
17
- title: Pots
18
- GET:
19
- title: Every pot
20
- description: Every pot there is, newest first.
21
- output:
22
- type: array
23
- items:
24
- type: object
25
- properties:
26
- title: { type: string, maxLength: 64 }
27
- POST:
28
- input:
29
- type: object
30
- properties:
31
- title: { type: string, maxLength: 64 }
32
- required: [title]
33
- errors:
34
- - NO_WAY
35
- /pots/:id:
36
- protected: true
37
- GET:
38
- protected: true
39
- route:
40
- id: { title: Which pot }
41
- ```
42
-
43
- `routes` is keyed by route template, and an object so that what is said of the whole tree has
44
- somewhere to go. What a key maps to is what [`OPTIONS`](introspection.md) on that path
45
- answers — what the resource is, from [`help:node`](help.md), beside every method of it — so a key
46
- can be read from here and sent straight back as a request. A method this identity may not reach is
47
- not in either, and a resource they may reach no method of is not here at all — so what a reader
48
- sees is what they may call, and signing in is what adds to it.
49
-
50
- A key carries no trailing slash, and a request needs one: `OPTIONS /pots/:id` and
51
- `OPTIONS /pots/:id/` both answer, but `GET /pots/:id` is `404` and `GET /pots/:id/` is the call.
52
- Append it.
53
-
54
- Held for half an hour, and `private`: what is in it is what the identity that asked may reach.
55
-
56
- ## The page
57
-
58
- `GET /.discovery/` is a page that reads the tree, served from the same origin the API is. It
59
- answers before a credential is read, so it opens for a client whose token has expired — which is
60
- the client most likely to be looking.
61
-
62
- A method is called from it: the verb is a button, what the method takes is a form, and what came
63
- back is shown where the form was. The call is made as whoever is reading — the same request they
64
- would send themselves, and with the same effect.
65
-
66
- A `GET /` is sent here where its `accept` prefers a page, or asks for nothing in particular — so
67
- the address of the application opens it in a browser, and a link to that address unfurls as it.
68
- A client that asked for a media type the gateway answers with gets what it asked for, and a route
69
- declared at `/` answers `/` as it always did.
70
-
71
- ## Turning it off
72
-
73
- Both answer wherever a gateway does, and no annotation turns either on. An application that does
74
- not publish its routes to everyone refuses `/.discovery` at the ingress, which is the whole of
75
- what an operator does about it.
76
-
77
- ## References
78
-
79
- - [Introspection](introspection.md), which is what an entry is
80
- - [Help](help.md), which is what names one
81
- - [Features](../features/discovery.feature)
@@ -1,44 +0,0 @@
1
- # Request flow
2
-
3
- ## `flow:fetch`
4
-
5
- Fetches the content from the resource returned by the specified endpoint.
6
-
7
- The value of the directive is a `string` specifying endpoint to be called for the redirection
8
- request.
9
-
10
- Request `authority`, `path` and `parameters` are passed as input to the redirection endpoint,
11
- and it must return a URL `string`, an `Error` or an object with the following properties:
12
-
13
- ```yaml
14
- url: string
15
- options?:
16
- method?: string
17
- headers?: Record<string, string>
18
- body?: string
19
- ```
20
-
21
- If it returns a URL or Request, then the response to the specified request is returned as the
22
- response to the original request, along with the `content-type`, `content-length`, and `etag`
23
- headers.
24
-
25
- ## `flow:compose`
26
-
27
- Compose an object from a response stream in object mode.
28
-
29
- The value of the directive is an object whose values are JavaScript expressions
30
- accessing the response stream objects composed into an array named `$`.
31
-
32
- ```yaml
33
- flow:compose:
34
- one: $[0].status
35
- two: $[1].data.foo
36
- three: $[2].amount
37
- ```
38
-
39
- ```yaml
40
- flow:compose:
41
- sum: $[0].value + $[1].value
42
- ```
43
-
44
- Be careful.
@@ -1,122 +0,0 @@
1
- # Help
2
-
3
- What a resource and its methods are, in the words an application chooses for them. One
4
- declaration, read by everything that describes a resource: [`OPTIONS`](introspection.md),
5
- [discovery](discovery.md), and the tools [MCP](mcp.md) publishes.
6
-
7
- ```yaml
8
- /pots:
9
- help:node: Pots
10
- GET:
11
- help:method: Every pot
12
- help:query:
13
- criteria:
14
- title: What to match
15
- description: An RSQL expression over a pot's fields.
16
- endpoint: enumerate
17
- /:id:
18
- GET:
19
- help:method:
20
- title: One pot
21
- description: The pot by its id, and what is in it.
22
- help:route:
23
- id: Which pot
24
- endpoint: observe
25
- ```
26
-
27
- <dl>
28
- <dt><code>help:node</code></dt>
29
- <dd>What the resource is.</dd>
30
- <dt><code>help:method</code></dt>
31
- <dd>What one of its methods is.</dd>
32
- <dt><code>help:route</code></dt>
33
- <dd>What a route variable is, by the name the template gives it.</dd>
34
- <dt><code>help:query</code></dt>
35
- <dd>What a querystring parameter is, by name.</dd>
36
- </dl>
37
-
38
- All four take the same value. A bare one is the <code>title</code> — the short thing, and what a
39
- client has somewhere to put. A sentence is written as a <code>description</code> beside it, and
40
- either may stand alone. The parameters name each one they describe.
41
-
42
- `help:method: null` hides the method instead of naming it: it is in no answer — not `OPTIONS`,
43
- not the [tree](discovery.md), not the tools [MCP](mcp.md) publishes — and is reached exactly as
44
- it was. What a monitor calls, and what a person has no business going looking for, is declared
45
- this way. A resource whose every method is hidden answers `403` to `OPTIONS` and is not in the
46
- tree at all.
47
-
48
- ```yaml
49
- /hello/agent:
50
- GET:
51
- help:method: null
52
- endpoint: agent
53
- ```
54
-
55
- A title is not a name. A name is an address — `apps._identity._id.repos.POST` — and reads as one;
56
- this is what a person is shown instead.
57
-
58
- An operation [states what it is](/documentation/component/declaration.md) as well, and that is not
59
- this: it is written without knowledge of any route, and a method is an operation and a route
60
- together. The same operation mounted twice is two methods, and one sentence is not true of both.
61
- The operation's own is the Introspection's to read, and the gateway does not use it.
62
-
63
- ## Where it is answered
64
-
65
- `help:node` is answered beside the methods, and `help:method` inside the method it is on. A verb
66
- is upper case, so neither key can be mistaken for the other. A parameter's goes in its schema,
67
- which is where a schema says these anyway:
68
-
69
- ```yaml
70
- title: Pots
71
- GET:
72
- title: Every pot
73
- query:
74
- criteria:
75
- type: string
76
- title: What to match
77
- description: An RSQL expression over a pot's fields.
78
- ```
79
-
80
- Describe a parameter by the name the answer carries it under. `map:segments` answers a variable
81
- under the property it fills, so that is its name here and the template's is nowhere in the answer.
82
-
83
- A route variable the template names is answered whether or not the operation declares it — an `:id`
84
- an observation takes through the query is otherwise not in the answer at all, and describing it is
85
- what puts it there. Anything else is described only where it is already answered. A name that is
86
- nobody's is not answered, and nothing here checks one: the template does not say them all.
87
-
88
- `help:query` describes the [parameters a resource declares](query.md#parameters). What selects
89
- records — `criteria`, `sort` and the rest — is the same of every queryable resource and says so
90
- itself, so it is neither answered here nor described.
91
-
92
- ## Where it applies
93
-
94
- To the node it is written on, and to nothing under it. Every other directive applies downward;
95
- carried down, this one would say of every resource below that it is the one it was written for.
96
-
97
- ```yaml
98
- /pots:
99
- help:node: Pots # `/pots`, and not `/pots/:id`
100
- GET: enumerate
101
- /:id:
102
- GET: observe
103
- ```
104
-
105
- A node whose `/` answers in its place is the exception, because the two are one resource:
106
-
107
- ```yaml
108
- /pots:
109
- help:node: Pots # `/pots/` is what answers, and it is described
110
- /:
111
- GET: enumerate
112
- ```
113
-
114
- A resource is described beside what it serves, so a node that serves nothing cannot be described.
115
- Declaring it there is refused where it is written, rather than found missing from the answer.
116
-
117
- ## References
118
-
119
- - [Resource introspection](introspection.md), which is where a method's own is answered
120
- - [Resource discovery](discovery.md), which answers every resource at once
121
- - [MCP](mcp.md), where a published method is a tool called this
122
- - [Features](../features/help.feature)
@@ -1,304 +0,0 @@
1
- # Identity
2
-
3
- Identity is the fundamental entity within an authentication system that represents the **unique
4
- identifier** of an individual, organization, application or device.
5
-
6
- To prove its Identity, the request originator must provide a valid _credentials_ that are associated
7
- with that Identity.
8
-
9
- Persistent authentication methods and their management resources are described in
10
- [Persistent credentials](credentials.md).
11
-
12
- Identity is intrinsically linked to credentials, as an Identity is established only when the first
13
- set of credentials for that Identity is created.
14
- In other words, the creation of credentials marks the inception of an Identity.
15
- Once the last credentials are removed from the Identity, it ceases to exist.
16
- Without credentials, there is no basis for defining or asserting an Identity.
17
-
18
- ## Authentication
19
-
20
- The Authentication system resolves provided credentials to an Identity using one of the supported
21
- authentication schemes.
22
-
23
- The Authentication is request-agnostic, meaning it does not depend on the specific URL being
24
- requested or the content of the request body.
25
- The only information it handles is the value of the `Authorization` header.
26
-
27
- > Except for its own [management resources](components.md).
28
-
29
- If the provided credentials are not valid or not associated with an Identity, then Authentication
30
- interrupts request processing and responds with an authentication error.
31
-
32
- ### Basic scheme
33
-
34
- Classic username/password pair. See [RFC7617](https://datatracker.ietf.org/doc/html/rfc7617).
35
-
36
- ```http
37
- Authorization: Basic aGVsbG86d29ybGQK
38
- ```
39
-
40
- See [`identity.basic` component](components.md#basic-credentials).
41
-
42
- ### Token scheme
43
-
44
- Tokens issued by the Authentication system. New tokens are compact
45
- [JSON Web Encryption (JWE)](https://www.rfc-editor.org/rfc/rfc7516) values using direct symmetric
46
- encryption (`alg: dir`) and AES-256-GCM (`enc: A256GCM`). Legacy PASETO V3.local tokens remain
47
- accepted during migration and are always replaced on successful authentication.
48
-
49
- ```http
50
- Authorization: Token eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwidHlwIjoiSldUIiwia2lkIjo...
51
- ```
52
-
53
- The `Token` is the **primary** authentication scheme.
54
- If request originators use an alternative authentication scheme, they will receive a response
55
- containing `Token` credentials and will be required to switch to the `Token` scheme for any
56
- subsequent requests.
57
-
58
- See [`identity.tokens` component](components.md#local-tokens).
59
-
60
- ### Failed authentications
61
-
62
- Credentials that are rejected can be metered per client address, whatever the scheme. An address
63
- may fail `attempts` at once and earns them back at `attempts` per `interval` seconds; a request
64
- carrying credentials from an address with nothing left is answered `429 Too Many Requests` with
65
- `Retry-After`. Nothing is metered unless the exposition annotation carries `bouncer`;
66
- `attempts` and `interval` default to 20 and 60. The address is the one the request context
67
- resolved, see [Client address](ip.md): `bouncer` requires `ip`, in the same environment, and a
68
- request without an address is not metered.
69
-
70
- ```yaml
71
- # context.toa.yaml
72
-
73
- exposition:
74
- ip: cf-connecting-ip
75
- bouncer:
76
- attempts: 20
77
- interval: 60
78
- ```
79
-
80
- The count is shared by the gateway replicas through
81
- [atomicity](../../../connectors/atomicity/readme.md) and decided in each process; nothing is read on
82
- the request path.
83
-
84
- ### Bearer scheme
85
-
86
- OpenID tokens issued by trusted providers, and access tokens issued by
87
- [this authorization server](oauth.md) to OAuth clients. Both are presented the same way, and each
88
- provider says which credentials are its own; a credential neither claims is refused.
89
- For more information, refer
90
- to [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html),
91
- [RFC6750](https://datatracker.ietf.org/doc/html/rfc6750).
92
-
93
- ```http
94
- Authorization: Bearer eyJhbGciOiJIUzI1...
95
- ```
96
-
97
- Trusted providers are specified using the `identity.federation` configuration. Provider metadata
98
- and signing keys are discovered using OpenID Connect discovery and JWKS.
99
-
100
- ```yaml
101
- # context.toa.yaml
102
-
103
- configuration:
104
- identity.federation:
105
- trust:
106
- - iss: https://accounts.google.com
107
- aud: <GOOGLE_CLIENT_ID>
108
-
109
- - iss: https://appleid.apple.com
110
- aud: <APPLE_CLIENT_ID>
111
- secret: <APPLE_CLIENT_SECRET> # enables Authorization Code Flow
112
- principal:
113
- authority: example
114
- iss: https://accounts.google.com
115
- sub: 4218230498234
116
- assert: true
117
- ```
118
-
119
- `principal` specifies the authority and the values of the `iss` and `sub` claims of an Identity
120
- that will be granted with a `system` role. The same subject in another authority is ordinary
121
- credentials.
122
-
123
- `assert` indicates whether the Identity should be implicitly created when valid credentials for a
124
- non-existent Identity are provided (default `true`).
125
-
126
- ### Authorization Code Flow
127
-
128
- [OAuth 2.0 RFC 6749, section 4.1](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)
129
-
130
- ```
131
- GET /identity/
132
- authorization: Code <credentials>
133
- ```
134
-
135
- `<credentials>` is a base64-encoded JSON containing the following properties:
136
-
137
- ```yaml
138
- code: authorization code
139
- iss: code issuer
140
- for: redirect URI
141
- ```
142
-
143
- Trust configuration for the issuer requires either `secret` or `signature`
144
- to enable the Authorization Code Flow.
145
-
146
- > If `aud` is an array, the first value is used.
147
-
148
- ```yaml
149
- # context.toa.yaml
150
- configuration:
151
- identity.federation:
152
- trust:
153
- - iss: https://accounts.google.com
154
- aud: 1045282659797-n705sf85j4b2rodtpdn43od43tvseiet.apps.googleusercontent.com
155
- secret: $GOOGLE_CLIENT_SECRET
156
- - iss: https://appleid.apple.com
157
- aud: io.toa.services.id
158
- signature:
159
- iss: team-id
160
- kid: key-id
161
- key: $APPLE_PRIVATE_KEY # PKCS8 PEM, as in the .p8 file
162
- ```
163
-
164
- ### OTP scheme
165
-
166
- One-time passwords.
167
-
168
- Passwords can be issued by calling `identity.otp.issue` operation, with the following input:
169
-
170
- ```yaml
171
- authority: string
172
- username: string
173
- ```
174
-
175
- The reply will contain the `code` property of type `string` formed as a random 6-digit number,
176
- valid for 60 seconds by default.
177
-
178
- ```yaml
179
- code: 123456
180
- ```
181
-
182
- OTP can be used with `OTP` authentication formatted as `base64(username:password)`.
183
-
184
- ```
185
- GET /identity/ HTTP/1.1
186
- authentication: OTP dXNlcm5hbWU6MTIzNDU2
187
- ```
188
-
189
- OTP expiration time and the number of failed attempts a username is allowed within it can be
190
- configured using the `identity.otp` configuration.
191
-
192
- ```yaml
193
- # context.toa.yaml
194
- configuration:
195
- identity.otp:
196
- lifetime: 60 # seconds
197
- attempts: 5
198
- ```
199
-
200
- ## Identity inception
201
-
202
- The simplest way to establish a relationship between an Identity and an entity representing a user
203
- is to synchronize their identifiers.
204
-
205
- This can be achieved by using the `auth:incept` directive as follows:
206
-
207
- ```yaml
208
- # manifest.toa.yaml
209
- name: users
210
-
211
- entity:
212
- properties:
213
- name:
214
- type: string
215
-
216
- exposition:
217
- /:
218
- POST:
219
- incept: id
220
- endpoint: transit
221
- ```
222
-
223
- The value of the `auth:incept` directive refers to the name of the response property that will be
224
- returned by the `POST` operation, containing the created entity identifier.
225
-
226
- A request with Identity inception may contain (non-existent) credentials that will be associated
227
- with the created Identity.
228
-
229
- ```http
230
- POST /users/
231
- authorization: Basic dXNlcjpwYXNz
232
- accept: application/yaml
233
- content-type: application/yaml
234
-
235
- name: John
236
- ```
237
-
238
- ```
239
- 201 Created
240
- content-type: application/yaml
241
-
242
- id: 2428c31ecb6e4a51a24ef52f0c4181b9
243
- ```
244
-
245
- As a result of processing the above request, the provided Basic credentials associated with the
246
- Identity `2428c31ecb6e4a51a24ef52f0c4181b9` are created.
247
-
248
- > `auth:incept` directive may have a `null` value, which means that the Identity will be created
249
- > without any associated entity.
250
-
251
- Inception is supported for `Basic` and `Bearer` authentication schemes.
252
-
253
- Inception goes ahead when the request carries no credentials, or credentials the scheme verified
254
- and no Identity owns, which its `authenticate` operation reports as `NOT_FOUND`. Credentials
255
- rejected for any other reason, a wrong password for one, are answered with `401 Unauthorized`
256
- before the endpoint is called.
257
-
258
- ## Identity assertion
259
-
260
- `auth:assert` directive is used to ensure that given credentials are associated with an existing
261
- Identity or to create a new Identity if it does not exist.
262
- The directive itself does not allow or deny access to the requested resource.
263
-
264
- > Used authentication scheme must support inception.
265
-
266
- ```yaml
267
- /accounts/echo:
268
- auth:assert: true
269
- auth:anyone: true
270
- endpoint: echo
271
- ```
272
-
273
- ```http
274
- GET /accounts/echo/
275
- authorization: Basic new-or-existent-credentials
276
- ```
277
-
278
- If new Identity is created and endpoint returns a successful response, the status code `201 Created`
279
- is returned.
280
-
281
- ## FAQ
282
-
283
- <dl>
284
- <dt>How can I log in a user?</dt>
285
- <dd>
286
- Technically speaking, since the Authentication is request-agnostic, user credentials
287
- can be sent with any request.
288
-
289
- However, it is most likely that a request originator will need to obtain an Identity value for
290
- subsequent requests.
291
- For this reason, it is recommended to make a `GET /identity/` request.
292
- </dd>
293
- <dt>How can I log out a user?</dt>
294
- <dd>Delete <code>Token</code> credentials from the device.</dd>
295
- <dt>Where are the sessions?</dt>
296
- <dd>
297
- The Authentication is stateless, meaning it does not store any information between
298
- requests except for persistent credentials.</dd>
299
- <dt>How can I pass the Identity to an operation call?</dt>
300
- <dd>
301
- This is not possible. Refer to the Resource Design Guidelines for more information.
302
- <a href="https://github.com/toa-io/toa/issues/353">#353</a>
303
- </dd>
304
- </dl>