@keboola/api-client 56.0.0 → 57.0.0

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 (345) hide show
  1. package/AGENTS.md +110 -229
  2. package/API-SURFACE.md +10 -2
  3. package/CHANGELOG.md +45 -0
  4. package/README.md +20 -133
  5. package/dist/{ManagementSessionMintError-Bc9bc7Ai.cjs → ManagementSessionMintError-BCOLLaJi.cjs} +3 -2
  6. package/dist/ManagementSessionMintError-BCOLLaJi.cjs.map +1 -0
  7. package/dist/{ManagementSessionMintError-BMHDcEqV.js → ManagementSessionMintError-KUX3utTV.js} +3 -2
  8. package/dist/ManagementSessionMintError-KUX3utTV.js.map +1 -0
  9. package/dist/{adminRoles-CUB0JddB.d.ts → adminRoles-CnfGDvjN.d.ts} +2 -2
  10. package/dist/{adminRoles-BFOPSedO.d.cts → adminRoles-D6AS9Bzx.d.cts} +2 -2
  11. package/dist/ai/index.d.cts +2 -2
  12. package/dist/ai/index.d.ts +2 -2
  13. package/dist/ai/types.d.cts +1 -1
  14. package/dist/ai/types.d.ts +1 -1
  15. package/dist/apps/index.cjs +1 -1
  16. package/dist/apps/index.d.cts +2 -2
  17. package/dist/apps/index.d.ts +2 -2
  18. package/dist/apps/index.js +1 -1
  19. package/dist/apps/types.d.cts +2 -2
  20. package/dist/apps/types.d.ts +2 -2
  21. package/dist/{apps-C1x5IKNQ.cjs → apps-BA9JRLAZ.cjs} +55 -1
  22. package/dist/apps-BA9JRLAZ.cjs.map +1 -0
  23. package/dist/{apps-BN7fWtSm.js → apps-DDcguJ1i.js} +55 -1
  24. package/dist/apps-DDcguJ1i.js.map +1 -0
  25. package/dist/assets/index.d.cts +1 -1
  26. package/dist/assets/index.d.ts +1 -1
  27. package/dist/auth/index.cjs +1 -1
  28. package/dist/auth/index.d.cts +1 -1
  29. package/dist/auth/index.d.ts +1 -1
  30. package/dist/auth/index.js +1 -1
  31. package/dist/auth/types.d.cts +2 -2
  32. package/dist/auth/types.d.ts +2 -2
  33. package/dist/{authClient-B_Mb4Vzs.js → authClient-BKGpJI5L.js} +13 -2
  34. package/dist/authClient-BKGpJI5L.js.map +1 -0
  35. package/dist/{authClient-C9QqhT2M.cjs → authClient-C3KG9hXw.cjs} +17 -6
  36. package/dist/authClient-C3KG9hXw.cjs.map +1 -0
  37. package/dist/{authClient-Dgyb0EFi.d.ts → authClient-CbWpMmdX.d.ts} +7 -4
  38. package/dist/{authClient-DOetdp2k.d.cts → authClient-UKeopxZZ.d.cts} +7 -4
  39. package/dist/billing/index.d.cts +1 -1
  40. package/dist/billing/index.d.ts +1 -1
  41. package/dist/billing/types.d.cts +1 -1
  42. package/dist/billing/types.d.ts +1 -1
  43. package/dist/chat/index.d.cts +2 -2
  44. package/dist/chat/index.d.ts +2 -2
  45. package/dist/chat/types.d.cts +1 -1
  46. package/dist/chat/types.d.ts +1 -1
  47. package/dist/componentsMcp/index.d.cts +1 -1
  48. package/dist/componentsMcp/index.d.ts +1 -1
  49. package/dist/componentsMcp/types.d.cts +1 -1
  50. package/dist/componentsMcp/types.d.ts +1 -1
  51. package/dist/constants/index.cjs +2 -2
  52. package/dist/constants/index.d.cts +3 -3
  53. package/dist/constants/index.d.ts +3 -3
  54. package/dist/constants/index.js +2 -2
  55. package/dist/{constants-HccvU5kx.js → constants-CxEaHCyt.js} +4 -3
  56. package/dist/constants-CxEaHCyt.js.map +1 -0
  57. package/dist/{constants-V9hAyPTo.cjs → constants-fiyOLyZE.cjs} +4 -3
  58. package/dist/constants-fiyOLyZE.cjs.map +1 -0
  59. package/dist/dataScience/index.d.cts +3 -3
  60. package/dist/dataScience/index.d.ts +3 -3
  61. package/dist/dataScience/types.d.cts +1 -1
  62. package/dist/dataScience/types.d.ts +1 -1
  63. package/dist/developerPortal/index.cjs +1 -1
  64. package/dist/developerPortal/index.d.cts +3 -3
  65. package/dist/developerPortal/index.d.ts +3 -3
  66. package/dist/developerPortal/index.js +1 -1
  67. package/dist/developerPortal/types.d.cts +2 -2
  68. package/dist/developerPortal/types.d.ts +2 -2
  69. package/dist/{developerPortalClient-CzCJ5sE3.js → developerPortalClient-3Q7049-4.js} +19 -1
  70. package/dist/developerPortalClient-3Q7049-4.js.map +1 -0
  71. package/dist/{developerPortalClient-BcK9F-Fs.cjs → developerPortalClient-Cj9bStCS.cjs} +19 -1
  72. package/dist/developerPortalClient-Cj9bStCS.cjs.map +1 -0
  73. package/dist/domain/permissions/index.d.cts +1 -1
  74. package/dist/domain/permissions/index.d.ts +1 -1
  75. package/dist/editor/index.d.cts +2 -2
  76. package/dist/editor/index.d.ts +2 -2
  77. package/dist/editor/types.d.cts +1 -1
  78. package/dist/editor/types.d.ts +1 -1
  79. package/dist/{emitter-raKkIqRp.d.ts → emitter-yaYzJOdh.d.cts} +1 -2
  80. package/dist/{emitter-raKkIqRp.d.cts → emitter-yaYzJOdh.d.ts} +1 -2
  81. package/dist/encryption/index.d.cts +1 -1
  82. package/dist/encryption/index.d.ts +1 -1
  83. package/dist/encryption/types.d.cts +1 -1
  84. package/dist/encryption/types.d.ts +1 -1
  85. package/dist/import/index.d.cts +3 -3
  86. package/dist/import/index.d.ts +3 -3
  87. package/dist/{index-DcKc3_Y1.d.cts → index-9p4O-clX.d.cts} +2033 -72
  88. package/dist/{index-DcKc3_Y1.d.ts → index-9p4O-clX.d.ts} +2033 -72
  89. package/dist/{index-CLqZfRpv.d.cts → index-B-HCh7LL.d.cts} +3 -3
  90. package/dist/{index-CxoJuIzB.d.cts → index-B0e42GnK.d.cts} +4 -3
  91. package/dist/{index-Bgu3hnMO.d.ts → index-BbXGsspe.d.ts} +4 -4
  92. package/dist/{index-B7Ogo2SK.d.ts → index-Bg9BWpIY.d.ts} +4 -3
  93. package/dist/{index-DPhGNQC5.d.cts → index-BgEu7wGk.d.cts} +2559 -7319
  94. package/dist/{index-C_A0JS9s.d.ts → index-Btft3BFn.d.ts} +29 -3
  95. package/dist/{index-DXNRd61K.d.cts → index-ByaAn_lm.d.cts} +4 -4
  96. package/dist/{index-A8udJCGv.d.ts → index-C92Ct6K5.d.ts} +178 -4
  97. package/dist/{index-B30dBBBH.d.ts → index-CBq59Aif.d.ts} +3 -3
  98. package/dist/{index-DAb1g6je.d.cts → index-CGUPsu_R.d.cts} +29 -3
  99. package/dist/{index-CLxvW_pn.d.ts → index-CIA6-x2Q.d.ts} +4 -4
  100. package/dist/{index-B2YNTI4p.d.ts → index-CeWVf3d1.d.ts} +4 -4
  101. package/dist/{index-GlHJ4j3a.d.ts → index-Cj0l_DL_.d.ts} +2559 -7319
  102. package/dist/{index-BUZ-vTRt.d.ts → index-Ck0UPKMM.d.ts} +2 -2
  103. package/dist/{index-B-HhOTVk.d.cts → index-D0ACg_Pp.d.cts} +7 -4
  104. package/dist/{index-Dx02AUpZ.d.cts → index-D8nMnVp1.d.cts} +4 -4
  105. package/dist/{index-24GpnYhn.d.cts → index-DENUPo51.d.cts} +2 -2
  106. package/dist/{index-RHYdFrfn.d.cts → index-DGjxLWZ-.d.cts} +3 -3
  107. package/dist/{index-BH1jo-bb.d.ts → index-Dse6Psvc.d.ts} +7 -4
  108. package/dist/{index-BaJ-GMa7.d.ts → index-DxcaEIhU.d.ts} +3 -3
  109. package/dist/{index-CpidrJQc.d.cts → index-OCEoQ1Y-.d.cts} +4 -4
  110. package/dist/{index-DxbqDi_0.d.cts → index-jR69kGUZ.d.cts} +178 -4
  111. package/dist/index.cjs +615 -867
  112. package/dist/index.cjs.map +1 -1
  113. package/dist/index.d.cts +9 -9
  114. package/dist/index.d.ts +9 -9
  115. package/dist/index.js +611 -860
  116. package/dist/index.js.map +1 -1
  117. package/dist/kaiAgent/index.cjs +1 -1
  118. package/dist/kaiAgent/index.d.cts +2 -2
  119. package/dist/kaiAgent/index.d.ts +2 -2
  120. package/dist/kaiAgent/index.js +1 -1
  121. package/dist/kaiAgent/types.d.cts +2 -2
  122. package/dist/kaiAgent/types.d.ts +2 -2
  123. package/dist/{kaiAgent-De2T6G4G.cjs → kaiAgent-Q00g6S1v.cjs} +16 -1
  124. package/dist/kaiAgent-Q00g6S1v.cjs.map +1 -0
  125. package/dist/{kaiAgent-D0MoKqXe.js → kaiAgent-aqylPZHY.js} +16 -1
  126. package/dist/kaiAgent-aqylPZHY.js.map +1 -0
  127. package/dist/management/index.cjs +1 -1
  128. package/dist/management/index.d.cts +1 -1
  129. package/dist/management/index.d.ts +1 -1
  130. package/dist/management/index.js +1 -1
  131. package/dist/management/types.d.cts +1 -1
  132. package/dist/management/types.d.ts +1 -1
  133. package/dist/{management-BlMQnPNS.js → management-CIK5-Aq5.js} +14 -7
  134. package/dist/management-CIK5-Aq5.js.map +1 -0
  135. package/dist/{management-dIMrTTpI.cjs → management-Dqrc516s.cjs} +14 -7
  136. package/dist/management-Dqrc516s.cjs.map +1 -0
  137. package/dist/{metaObject-qWyZAD-5.d.ts → metaObject-AQ7wKDOu.d.ts} +2 -2
  138. package/dist/{metaObject-BsBMgWRt.d.cts → metaObject-I35_krxf.d.cts} +2 -2
  139. package/dist/metastore/index.d.cts +1 -1
  140. package/dist/metastore/index.d.ts +1 -1
  141. package/dist/metastore/types.d.cts +1 -1
  142. package/dist/metastore/types.d.ts +1 -1
  143. package/dist/microsoftGraph/index.d.cts +3 -3
  144. package/dist/microsoftGraph/index.d.ts +3 -3
  145. package/dist/microsoftGraph/types.d.cts +2 -2
  146. package/dist/microsoftGraph/types.d.ts +2 -2
  147. package/dist/{middleware-DxGv7DG8.js → middleware-DWmhthX0.js} +2 -2
  148. package/dist/middleware-DWmhthX0.js.map +1 -0
  149. package/dist/{middleware-vIaPDtQI.cjs → middleware-DYdDD4O6.cjs} +2 -2
  150. package/dist/middleware-DYdDD4O6.cjs.map +1 -0
  151. package/dist/notifications/index.d.cts +2 -2
  152. package/dist/notifications/index.d.ts +2 -2
  153. package/dist/notifications/types.d.cts +1 -1
  154. package/dist/notifications/types.d.ts +1 -1
  155. package/dist/oauth/index.d.cts +2 -2
  156. package/dist/oauth/index.d.ts +2 -2
  157. package/dist/oauth/types.d.cts +1 -1
  158. package/dist/oauth/types.d.ts +1 -1
  159. package/dist/omnisearch/index.d.cts +2 -2
  160. package/dist/omnisearch/index.d.ts +2 -2
  161. package/dist/omnisearch/types.d.cts +1 -1
  162. package/dist/omnisearch/types.d.ts +1 -1
  163. package/dist/{project-CmV1OhK4.d.ts → project-DwRvx_zN.d.ts} +3 -3
  164. package/dist/{project-F6eHCACz.d.cts → project-ERH0FTGW.d.cts} +3 -3
  165. package/dist/queryService/index.cjs +1 -1
  166. package/dist/queryService/index.d.cts +1 -1
  167. package/dist/queryService/index.d.ts +1 -1
  168. package/dist/queryService/index.js +1 -1
  169. package/dist/queryService/types.d.cts +1 -1
  170. package/dist/queryService/types.d.ts +1 -1
  171. package/dist/{queryService-C3BQ6GKW.cjs → queryService-CECWubS0.cjs} +2 -2
  172. package/dist/{queryService-C3BQ6GKW.cjs.map → queryService-CECWubS0.cjs.map} +1 -1
  173. package/dist/{queryService-DQHtHy2-.js → queryService-CIxb_mcP.js} +2 -2
  174. package/dist/{queryService-DQHtHy2-.js.map → queryService-CIxb_mcP.js.map} +1 -1
  175. package/dist/queue/index.cjs +1 -1
  176. package/dist/queue/index.d.cts +11 -4
  177. package/dist/queue/index.d.ts +11 -4
  178. package/dist/queue/index.js +1 -1
  179. package/dist/queue/types.d.cts +1 -1
  180. package/dist/queue/types.d.ts +1 -1
  181. package/dist/{queue-6cywDnA-.js → queue-BBihD5qQ.js} +2 -2
  182. package/dist/{queue-6cywDnA-.js.map → queue-BBihD5qQ.js.map} +1 -1
  183. package/dist/{queue-J2uXzXR9.cjs → queue-PmTfoniJ.cjs} +2 -2
  184. package/dist/{queue-J2uXzXR9.cjs.map → queue-PmTfoniJ.cjs.map} +1 -1
  185. package/dist/scheduler/index.d.cts +2 -2
  186. package/dist/scheduler/index.d.ts +2 -2
  187. package/dist/scheduler/types.d.cts +1 -1
  188. package/dist/scheduler/types.d.ts +1 -1
  189. package/dist/{schema-DLmBEgPM.d.cts → schema-CqzWi5cO.d.cts} +14 -4
  190. package/dist/{schema-DLmBEgPM.d.ts → schema-CqzWi5cO.d.ts} +14 -4
  191. package/dist/sdk/configurations/index.d.cts +2 -3
  192. package/dist/sdk/configurations/index.d.ts +2 -3
  193. package/dist/sdk/dataAppServer/index.cjs +3 -3
  194. package/dist/sdk/dataAppServer/index.d.cts +1 -1
  195. package/dist/sdk/dataAppServer/index.d.ts +1 -1
  196. package/dist/sdk/dataAppServer/index.js +3 -3
  197. package/dist/sdk/developerPortal/index.cjs +3 -3
  198. package/dist/sdk/developerPortal/index.cjs.map +1 -1
  199. package/dist/sdk/developerPortal/index.d.cts +178 -4
  200. package/dist/sdk/developerPortal/index.d.ts +178 -4
  201. package/dist/sdk/developerPortal/index.js +3 -3
  202. package/dist/sdk/developerPortal/index.js.map +1 -1
  203. package/dist/sdk/kaiMemory/index.d.cts +1 -1
  204. package/dist/sdk/kaiMemory/index.d.ts +1 -1
  205. package/dist/sdk/kaiMemory/types.d.cts +1 -1
  206. package/dist/sdk/kaiMemory/types.d.ts +1 -1
  207. package/dist/sdk/queryService/index.d.cts +1 -1
  208. package/dist/sdk/queryService/index.d.ts +1 -1
  209. package/dist/sdk/securityPolicy/index.d.cts +2 -2
  210. package/dist/sdk/securityPolicy/index.d.ts +2 -2
  211. package/dist/sdk/securityPolicy/types.d.cts +1 -1
  212. package/dist/sdk/securityPolicy/types.d.ts +1 -1
  213. package/dist/sdk/semanticLayer/index.d.cts +1 -1
  214. package/dist/sdk/semanticLayer/index.d.ts +1 -1
  215. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  216. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  217. package/dist/sdk/tag/index.d.cts +3 -3
  218. package/dist/sdk/tag/index.d.ts +3 -3
  219. package/dist/sdk/tag/types.d.cts +1 -1
  220. package/dist/sdk/tag/types.d.ts +1 -1
  221. package/dist/sdk/vault/index.d.cts +1 -1
  222. package/dist/sdk/vault/index.d.ts +1 -1
  223. package/dist/status/index.d.cts +1 -1
  224. package/dist/status/index.d.ts +1 -1
  225. package/dist/storage/index.cjs +5 -5
  226. package/dist/storage/index.d.cts +2 -3
  227. package/dist/storage/index.d.ts +2 -3
  228. package/dist/storage/index.js +3 -3
  229. package/dist/storage/types.d.cts +5 -5
  230. package/dist/storage/types.d.ts +5 -5
  231. package/dist/{storage-jLhVrKZh.cjs → storage-chxoWtAL.cjs} +44 -56
  232. package/dist/storage-chxoWtAL.cjs.map +1 -0
  233. package/dist/{storage-Bw-HSnPp.js → storage-o9teEKl_.js} +42 -54
  234. package/dist/storage-o9teEKl_.js.map +1 -0
  235. package/dist/{store-2OyH1XOP.cjs → store-7xlVu4qF.cjs} +3 -14
  236. package/dist/store-7xlVu4qF.cjs.map +1 -0
  237. package/dist/{store-HP0zRcLz.js → store-DDUzPeCm.js} +3 -14
  238. package/dist/store-DDUzPeCm.js.map +1 -0
  239. package/dist/stream/index.d.cts +2 -2
  240. package/dist/stream/index.d.ts +2 -2
  241. package/dist/stream/types.d.cts +1 -1
  242. package/dist/stream/types.d.ts +1 -1
  243. package/dist/syncActions/index.d.cts +2 -2
  244. package/dist/syncActions/index.d.ts +2 -2
  245. package/dist/syncActions/types.d.cts +1 -1
  246. package/dist/syncActions/types.d.ts +1 -1
  247. package/dist/telemetry/index.d.cts +2 -2
  248. package/dist/telemetry/index.d.ts +2 -2
  249. package/dist/telemetry/types.d.cts +1 -1
  250. package/dist/telemetry/types.d.ts +1 -1
  251. package/dist/{transientRetries-BORv47mH.js → transientRetries-dssygpwU.js} +2 -2
  252. package/dist/{transientRetries-BORv47mH.js.map → transientRetries-dssygpwU.js.map} +1 -1
  253. package/dist/{transientRetries-CBorl4Ue.cjs → transientRetries-yVaQgKqP.cjs} +2 -2
  254. package/dist/{transientRetries-CBorl4Ue.cjs.map → transientRetries-yVaQgKqP.cjs.map} +1 -1
  255. package/dist/{types-LOf_GCej.d.cts → types-B1kernzE.d.cts} +2 -2
  256. package/dist/{types-Cvbcjdgf.d.ts → types-BBmS7-IS.d.ts} +151 -4
  257. package/dist/{types-DaRxZt3v.d.ts → types-BJyWTgXX.d.ts} +2 -2
  258. package/dist/{types-CnKiVVb8.d.ts → types-BPNFTA63.d.cts} +21 -7
  259. package/dist/{types-BJRRAQ9R.d.cts → types-BPSExpye.d.cts} +244 -4
  260. package/dist/{types-Cg_66Toy.d.ts → types-BiXonOK6.d.ts} +2 -2
  261. package/dist/{types-CNDemlfn.d.cts → types-BimRBONo.d.cts} +3 -3
  262. package/dist/{types-CrXoqs8E.d.cts → types-BuEC58u3.d.cts} +2 -2
  263. package/dist/{types-BnkHyxdp.d.ts → types-BzHyi99r.d.cts} +5 -3
  264. package/dist/{types-2CMPwArl.d.ts → types-C4T_2JdN.d.cts} +40 -27
  265. package/dist/{types-lZRyNwOH.d.ts → types-C53aKnWt.d.ts} +2 -2
  266. package/dist/{types-6oLbURTK.d.cts → types-CEjgqmr2.d.cts} +2 -2
  267. package/dist/{types-BEEGI4aq.d.ts → types-CGtpwTJk.d.ts} +2 -2
  268. package/dist/{types-B_yv00AL.d.ts → types-CH1uguug.d.cts} +2 -163
  269. package/dist/{types-DMEl2iet.d.ts → types-CP8-CssY.d.ts} +2 -2
  270. package/dist/{types-DgAMVyiT.d.ts → types-CPQ6RkiZ.d.ts} +244 -4
  271. package/dist/{types-EdL0Eb0B.d.ts → types-CPwofeyq.d.ts} +3 -3
  272. package/dist/{types-CFuT8zr3.d.cts → types-CQAEOq-K.d.cts} +2 -2
  273. package/dist/{types-DslO1S5E.d.cts → types-CVWoP_PC.d.cts} +3 -3
  274. package/dist/{types-BqJycQNM.d.cts → types-CbM2MApW.d.cts} +2 -2
  275. package/dist/{types-BDGkMVWf.d.cts → types-CbOfT6lb.d.ts} +21 -7
  276. package/dist/{types-B6OG1lLf.d.cts → types-CcPpqVhm.d.cts} +2 -2
  277. package/dist/{types-D2J3SaoY.d.ts → types-CeqpzbBH.d.ts} +2 -2
  278. package/dist/{types-C_JO7FI9.d.cts → types-CjJYZaMO.d.cts} +2 -2
  279. package/dist/{types-D0Gqu-Xz.d.cts → types-CjP8RcFN.d.cts} +2 -2
  280. package/dist/{types-CUovU--e.d.ts → types-CjfsPtwk.d.ts} +2 -2
  281. package/dist/{types-DPFG6AAA.d.ts → types-CnSBLcZB.d.ts} +163 -3
  282. package/dist/{types-D4knWlwr.d.ts → types-CsXLdnfV.d.ts} +2 -2
  283. package/dist/{types-C3Kf_ggm.d.cts → types-CzAh5-0z.d.cts} +2 -2
  284. package/dist/{types-D6Fbf_y3.d.ts → types-D0F_c5KI.d.ts} +4 -4
  285. package/dist/{types-DykEfF2N.d.cts → types-D3L3CqKl.d.cts} +151 -4
  286. package/dist/{types--mz2z0Zm.d.cts → types-D4oIei5M.d.cts} +163 -3
  287. package/dist/{types-Cm1iOHE5.d.cts → types-D6ilG8sC.d.cts} +3 -3
  288. package/dist/{types-DtS7qAdz.d.cts → types-DEGkXcw2.d.ts} +5 -3
  289. package/dist/{types-DQguGTlM.d.cts → types-DEhAcO1Z.d.cts} +2 -2
  290. package/dist/{types-CuYaiy4R.d.cts → types-DaIfg9Mb.d.cts} +4 -4
  291. package/dist/{types-ByKSM08P.d.ts → types-DhofEmWy.d.ts} +2 -2
  292. package/dist/{types-B5FgsIiY.d.ts → types-Dp61pYgP.d.ts} +3 -3
  293. package/dist/{types-BhGr9OQ4.d.ts → types-Dteot3tT.d.ts} +757 -112
  294. package/dist/{types-3ZE32k8V.d.cts → types-K-JISUUI.d.cts} +757 -112
  295. package/dist/{types-CjqFLXVx.d.cts → types-TywAc1ow.d.ts} +40 -27
  296. package/dist/{types-DiXeO0yB.d.ts → types-UBpth6_9.d.ts} +2 -2
  297. package/dist/{types-D0BOES7q.d.cts → types-Vw-tduOH.d.ts} +2 -163
  298. package/dist/{types-CF5ZROX5.d.cts → types-ZyLTqgpa.d.cts} +2 -2
  299. package/dist/{types-BmcZyKgM.d.cts → types-aylD1zQz.d.cts} +3 -3
  300. package/dist/{types-CbPO9cGq.d.cts → types-fYY4q7dC.d.cts} +2 -2
  301. package/dist/{types-Foy0RnqF.d.ts → types-jYn3e3Du.d.ts} +3 -3
  302. package/dist/{types-p6UYqJo_.d.ts → types-qXqJRPHj.d.ts} +2 -2
  303. package/dist/{types-B452bFfS.d.ts → types-r-Qa3y8e.d.ts} +2 -2
  304. package/dist/{types-DhE7iY90.d.ts → types-z82j5aNW.d.ts} +3 -3
  305. package/dist/{collectByCursor-2-8SuJ-8.js → validateConnectionStatus-DgJwuEy9.js} +32 -22
  306. package/dist/validateConnectionStatus-DgJwuEy9.js.map +1 -0
  307. package/dist/{collectByCursor-D58__WD1.cjs → validateConnectionStatus-DpYRsU-e.cjs} +37 -21
  308. package/dist/validateConnectionStatus-DpYRsU-e.cjs.map +1 -0
  309. package/dist/vault/index.d.cts +1 -1
  310. package/dist/vault/index.d.ts +1 -1
  311. package/dist/vault/types.d.cts +1 -1
  312. package/dist/vault/types.d.ts +1 -1
  313. package/package.json +2 -2
  314. package/surface/apps.md +8 -3
  315. package/surface/auth.md +3 -2
  316. package/surface/chat.md +3 -3
  317. package/surface/dataScience.md +2 -2
  318. package/surface/kaiAgent.md +4 -3
  319. package/surface/management.md +4 -4
  320. package/surface/queue.md +7 -7
  321. package/surface/storage.md +27 -26
  322. package/dist/ManagementSessionMintError-BMHDcEqV.js.map +0 -1
  323. package/dist/ManagementSessionMintError-Bc9bc7Ai.cjs.map +0 -1
  324. package/dist/apps-BN7fWtSm.js.map +0 -1
  325. package/dist/apps-C1x5IKNQ.cjs.map +0 -1
  326. package/dist/authClient-B_Mb4Vzs.js.map +0 -1
  327. package/dist/authClient-C9QqhT2M.cjs.map +0 -1
  328. package/dist/collectByCursor-2-8SuJ-8.js.map +0 -1
  329. package/dist/collectByCursor-D58__WD1.cjs.map +0 -1
  330. package/dist/constants-HccvU5kx.js.map +0 -1
  331. package/dist/constants-V9hAyPTo.cjs.map +0 -1
  332. package/dist/developerPortalClient-BcK9F-Fs.cjs.map +0 -1
  333. package/dist/developerPortalClient-CzCJ5sE3.js.map +0 -1
  334. package/dist/index-C6FI_Lc7.d.ts +0 -10
  335. package/dist/index-CmtqbTse.d.cts +0 -10
  336. package/dist/kaiAgent-D0MoKqXe.js.map +0 -1
  337. package/dist/kaiAgent-De2T6G4G.cjs.map +0 -1
  338. package/dist/management-BlMQnPNS.js.map +0 -1
  339. package/dist/management-dIMrTTpI.cjs.map +0 -1
  340. package/dist/middleware-DxGv7DG8.js.map +0 -1
  341. package/dist/middleware-vIaPDtQI.cjs.map +0 -1
  342. package/dist/storage-Bw-HSnPp.js.map +0 -1
  343. package/dist/storage-jLhVrKZh.cjs.map +0 -1
  344. package/dist/store-2OyH1XOP.cjs.map +0 -1
  345. package/dist/store-HP0zRcLz.js.map +0 -1
@@ -15,9 +15,9 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
15
15
  - `api.storage.branches.deleteDevBranchAsync(id: number, signal?: AbortSignal | undefined): Promise<DeleteDevBranchJob>`
16
16
  - `api.storage.branches.deleteDevBranchMetadata({ branchId, metadataId }: { branchId: string; metadataId: number; }, signal?: AbortSignal | undefined): Promise<void>`
17
17
  - `api.storage.branches.deleteDevBranchPoller(id: number, options?: StorageJobPollOptions | undefined): Poller<DeleteDevBranchJob, JobBase<"devBranchDelete", { values: { id: number; }; }> & { status: "success"; results: null; }>`
18
- - `api.storage.branches.getDevBranchMetadata(branchId: string, signal?: AbortSignal | undefined): Promise<{ id: string; key: string; value: string; timestamp: string; }[]>`
18
+ - `api.storage.branches.getDevBranchMetadata(branchId: string, signal?: AbortSignal | undefined): Promise<{ id: string; key: string; value: string | null; timestamp: string; }[]>`
19
19
  - `api.storage.branches.getDevBranches(signal?: AbortSignal | undefined): Promise<DevBranch[]>`
20
- - `api.storage.branches.saveDevBranchMetadata({ branchId, metadata }: SaveDevBranchMetadataInput, signal?: AbortSignal | undefined): Promise<{ id: string; key: string; value: string; timestamp: string; }[]>`
20
+ - `api.storage.branches.saveDevBranchMetadata({ branchId, metadata }: SaveDevBranchMetadataInput, signal?: AbortSignal | undefined): Promise<{ id: string; key: string; value: string | null; timestamp: string; }[]>`
21
21
  - `api.storage.branches.updateDevBranch({ id, ...body }: UpdateDevBranchInput): Promise<DevBranch>`
22
22
 
23
23
  ### `api.storage.bucketExternal`
@@ -36,11 +36,11 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
36
36
  - `api.storage.bucketListings.createListingPoller(input: CreateBucketListingInput, options?: StorageJobPollOptions | undefined): Poller<BucketListingCreateJob, JobBase<"bucketListingCreate", { bucketId: string; }> & { status: "success"; results: null; }>`
37
37
  - `api.storage.bucketListings.deleteListingAsync({ branchId, bucketId }: { bucketId: string; branchId: string; }, signal?: AbortSignal | undefined): Promise<BucketListingDeleteJob>`
38
38
  - `api.storage.bucketListings.deleteListingPoller(input: { bucketId: string; branchId: string; }, options?: StorageJobPollOptions | undefined): Poller<BucketListingDeleteJob, JobBase<"bucketListingDelete", { bucketId: string; }> & { status: "success"; results: null; }>`
39
- - `api.storage.bucketListings.getListing({ branchId, bucketId }: { bucketId: string; branchId: string; }, signal?: AbortSignal | undefined): Promise<{ name: string; description?: string | undefined; backend: "bigquery"; bigquery?: { listingId: string; listingResourceName?: string | undefined; subscribers: string[]; } | undefined; createdAt: string; } | null>`
39
+ - `api.storage.bucketListings.getListing({ branchId, bucketId }: { bucketId: string; branchId: string; }, signal?: AbortSignal | undefined): Promise<{ name: string; description?: string | undefined; backend: "bigquery" | "snowflake"; bigquery?: { listingId: string; listingResourceName?: string | undefined; subscribers: string[]; } | undefined; snowflake?: { mode: "grant" | "share"; grantees?: string[] | undefined; accounts?: string[] | undefined; objectName: string | null; } | undefined; createdAt: string; } | null>`
40
40
  - `api.storage.bucketListings.getListingSubscriptions({ branchId, bucketId }: { bucketId: string; branchId: string; }, signal?: AbortSignal | undefined): Promise<BucketListingSubscription[] | null>`
41
- - `api.storage.bucketListings.getListings(signal?: AbortSignal | undefined): Promise<{ bucketId: string; name: string; description?: string | undefined; backend: "bigquery"; bigquery?: { listingId: string; listingResourceName?: string | undefined; subscribers: string[]; } | undefined; createdAt: string; }[]>`
41
+ - `api.storage.bucketListings.getListings(signal?: AbortSignal | undefined): Promise<{ bucketId: string; name: string; description?: string | undefined; backend: "bigquery" | "snowflake"; bigquery?: { listingId: string; listingResourceName?: string | undefined; subscribers: string[]; } | undefined; snowflake?: { mode: "grant" | "share"; grantees?: string[] | undefined; accounts?: string[] | undefined; objectName: string | null; } | undefined; createdAt: string; }[]>`
42
42
  - `api.storage.bucketListings.updateListingAsync({ branchId, bucketId, ...input }: UpdateBucketListingInput, signal?: AbortSignal | undefined): Promise<BucketListingUpdateJob>`
43
- - `api.storage.bucketListings.updateListingPoller(input: UpdateBucketListingInput, options?: StorageJobPollOptions | undefined): Poller<BucketListingUpdateJob, JobBase<"bucketListingUpdate", { bucketId: string; }> & { status: "success"; results: null; }>`
43
+ - `api.storage.bucketListings.updateListingPoller(input: UpdateBucketListingInput, options?: StorageJobPollOptions | undefined): Poller<BucketListingUpdateJob, JobBase<"bucketListingUpdate", { bucketId: string; }> & { status: "success"; results: { bucketId: string; exposureName: string; exposureDescription: string | null; bigquery: { listingId: string; subscribers: string[]; }; } | { idBucket: number; backend: "snowflake"; snowflake: { mode: "grant" | "share"; grantees?: string[] | undefined; accounts?: string[] | undefined; added: string[]; removed: string[]; }; }; }>`
44
44
 
45
45
  ### `api.storage.bucketSharing`
46
46
 
@@ -63,7 +63,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
63
63
 
64
64
  ### `api.storage.buckets`
65
65
 
66
- - `api.storage.buckets.createBucket({ branchId, ...body }: CreateBucketInput): Promise<{ uri: string; id: string; name: string; displayName: string; idBranch: number; stage: "out" | "in" | "sys"; description: string; tables: string; created: string; lastChangeDate: string | null; updated: string | null; isReadOnly: boolean; dataSizeBytes: number; rowsCount: number; isMaintenance: boolean; backend: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; hasExternalSchema: boolean; databaseName: string; path: string; isSnowflakeSharedDatabase: boolean; isLinkedBucket: boolean; color: string | null; bucketSharingAllowed: boolean; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; owner: { id: number; name: string; email: string; } | null; sourceBucket?: { id: string; name: string; displayName: string; stage: "out" | "in" | "sys"; description: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; created: string; lastChangeDate: string | null; dataSizeBytes: number; rowsCount: number; backend: string; hasExternalSchema: boolean; databaseName: string; path: string; project: { id: number; name: string; }; color: string | null; tables?: { id: string; name: string; displayName: string; path: string; }[] | undefined; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; owner: { id: number; name: string; email: string; } | null; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; } | undefined; backendPath: string[]; } & { attributes: Record<string, never>[]; }>`
66
+ - `api.storage.buckets.createBucket({ branchId, ...body }: CreateBucketInput): Promise<{ uri: string; id: string; name: string; displayName: string; idBranch: number; stage: "out" | "in" | "sys"; description: string; tables: string; created: string; lastChangeDate: string | null; updated: string | null; isReadOnly: boolean; dataSizeBytes: number; rowsCount: number; isMaintenance: boolean; backend: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; hasExternalSchema: boolean; databaseName: string; path: string; isSnowflakeSharedDatabase: boolean; isLinkedBucket: boolean; color: string | null; bucketSharingAllowed: boolean; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; sharedByActor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; owner: { id: number; name: string; email: string; } | null; sourceBucket?: { id: string; name: string; displayName: string; stage: "out" | "in" | "sys"; description: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; created: string; lastChangeDate: string | null; dataSizeBytes: number; rowsCount: number; backend: string; hasExternalSchema: boolean; databaseName: string; path: string; project: { id: number; name: string; }; color: string | null; tables?: { id: string; name: string; displayName: string; path: string; }[] | undefined; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; sharedByActor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; owner: { id: number; name: string; email: string; } | null; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; } | undefined; backendPath: string[]; } & { attributes: Record<string, never>[]; }>`
67
67
  - `api.storage.buckets.deleteBucket({ branchId, bucketId }: { bucketId: string; branchId: string; }): Promise<void>`
68
68
  - `api.storage.buckets.deleteBucketAsync({ branchId, bucketId, ...query }: DeleteBucketAsyncInput, signal?: AbortSignal | undefined): Promise<DeleteBucketJob>`
69
69
  - `api.storage.buckets.deleteBucketMetadata({ branchId, bucketId, metadataId }: { bucketId: string; metadataId: number; branchId: string; }, signal?: AbortSignal | undefined): Promise<void>`
@@ -72,7 +72,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
72
72
  - `api.storage.buckets.getBucketOwner({ branchId, bucketId }: { bucketId: string; branchId: string; }, signal?: AbortSignal | undefined): Promise<{ id: number; name: string; email: string; }>`
73
73
  - `api.storage.buckets.getBuckets<const I extends readonly BucketInclude[] = []>({ branchId, ...query }: GetBucketsInput<I>, signal?: AbortSignal | undefined): Promise<BucketWith<I>[]>`
74
74
  - `api.storage.buckets.saveBucketMetadata({ branchId, bucketId, ...body }: SaveBucketMetadataInput, signal?: AbortSignal | undefined): Promise<{ id: string; key: string; value: string | null; provider: string; timestamp: string; }[]>`
75
- - `api.storage.buckets.updateBucket({ branchId, bucketId, ...body }: UpdateBucketInput): Promise<{ uri: string; id: string; name: string; displayName: string; idBranch: number; stage: "out" | "in" | "sys"; description: string; tables: string; created: string; lastChangeDate: string | null; updated: string | null; isReadOnly: boolean; dataSizeBytes: number; rowsCount: number; isMaintenance: boolean; backend: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; hasExternalSchema: boolean; databaseName: string; path: string; isSnowflakeSharedDatabase: boolean; isLinkedBucket: boolean; color: string | null; bucketSharingAllowed: boolean; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; owner: { id: number; name: string; email: string; } | null; sourceBucket?: { id: string; name: string; displayName: string; stage: "out" | "in" | "sys"; description: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; created: string; lastChangeDate: string | null; dataSizeBytes: number; rowsCount: number; backend: string; hasExternalSchema: boolean; databaseName: string; path: string; project: { id: number; name: string; }; color: string | null; tables?: { id: string; name: string; displayName: string; path: string; }[] | undefined; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; owner: { id: number; name: string; email: string; } | null; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; } | undefined; backendPath: string[]; }>`
75
+ - `api.storage.buckets.updateBucket({ branchId, bucketId, ...body }: UpdateBucketInput): Promise<{ uri: string; id: string; name: string; displayName: string; idBranch: number; stage: "out" | "in" | "sys"; description: string; tables: string; created: string; lastChangeDate: string | null; updated: string | null; isReadOnly: boolean; dataSizeBytes: number; rowsCount: number; isMaintenance: boolean; backend: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; hasExternalSchema: boolean; databaseName: string; path: string; isSnowflakeSharedDatabase: boolean; isLinkedBucket: boolean; color: string | null; bucketSharingAllowed: boolean; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; sharedByActor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; owner: { id: number; name: string; email: string; } | null; sourceBucket?: { id: string; name: string; displayName: string; stage: "out" | "in" | "sys"; description: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; created: string; lastChangeDate: string | null; dataSizeBytes: number; rowsCount: number; backend: string; hasExternalSchema: boolean; databaseName: string; path: string; project: { id: number; name: string; }; color: string | null; tables?: { id: string; name: string; displayName: string; path: string; }[] | undefined; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; sharedByActor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; owner: { id: number; name: string; email: string; } | null; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; } | undefined; backendPath: string[]; }>`
76
76
  - `api.storage.buckets.updateBucketOwner({ branchId, bucketId, ...body }: UpdateBucketOwnerInput, signal?: AbortSignal | undefined): Promise<void>`
77
77
 
78
78
  ### `api.storage.columns`
@@ -112,12 +112,12 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
112
112
  ### `api.storage.configurationVersions`
113
113
 
114
114
  - `api.storage.configurationVersions.copyConfigurationFromVersion({ branchId, componentId, configurationId, versionId, ...body }: CopyConfigurationFromVersionInput): Promise<{ id: string; }>`
115
- - `api.storage.configurationVersions.copyConfigurationRowFromVersion({ branchId, componentId, configurationId, rowId, versionId, }: { componentId: string; configurationId: string; rowId: string; versionId: number; branchId: string; }): Promise<{ id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; changeDescription: string | null; versionIdentifier: string | null; state: { [key: string]: unknown; }; configuration: { [key: string]: unknown; }; }>`
116
- - `api.storage.configurationVersions.getConfigurationRowVersion({ branchId, componentId, configurationId, rowId, versionId }: { componentId: string; configurationId: string; rowId: string; versionId: number; branchId: string; }, signal?: AbortSignal | undefined): Promise<{ id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; changeDescription: string | null; versionIdentifier: string | null; configuration: { [key: string]: unknown; }; }>`
115
+ - `api.storage.configurationVersions.copyConfigurationRowFromVersion({ branchId, componentId, configurationId, rowId, versionId, }: { componentId: string; configurationId: string; rowId: string; versionId: number; branchId: string; }): Promise<{ id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; changeDescription: string | null; versionIdentifier: string | null; state: { [key: string]: unknown; }; configuration: { [key: string]: unknown; }; }>`
116
+ - `api.storage.configurationVersions.getConfigurationRowVersion({ branchId, componentId, configurationId, rowId, versionId }: { componentId: string; configurationId: string; rowId: string; versionId: number; branchId: string; }, signal?: AbortSignal | undefined): Promise<{ id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; changeDescription: string | null; versionIdentifier: string | null; configuration: { [key: string]: unknown; }; }>`
117
117
  - `api.storage.configurationVersions.getConfigurationRowVersions<const I extends readonly ConfigurationRowVersionInclude[] = []>({ branchId, componentId, configurationId, rowId, ...query }: GetConfigurationRowVersionsInput<I>, signal?: AbortSignal | undefined): Promise<ConfigurationRowVersionWith<I>[]>`
118
- - `api.storage.configurationVersions.getConfigurationVersion({ branchId, componentId, configurationId, versionId }: { componentId: string; configurationId: string; versionId: number; branchId: string; }, signal?: AbortSignal | undefined): Promise<{ version: number; created: string; versionIdentifier: string | null; creatorToken: { id: number; description: string | null; }; changeDescription: string | null; isDisabled: boolean; isDeleted: boolean; name: string; description: string | null; configuration: { [key: string]: unknown; }; rowsSortOrder: string[]; rows: { id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; changeDescription: string | null; versionIdentifier: string | null; configuration: { [key: string]: unknown; }; }[]; }>`
118
+ - `api.storage.configurationVersions.getConfigurationVersion({ branchId, componentId, configurationId, versionId }: { componentId: string; configurationId: string; versionId: number; branchId: string; }, signal?: AbortSignal | undefined): Promise<{ version: number; created: string; versionIdentifier: string | null; creatorToken: { id: number; description: string | null; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; changeDescription: string | null; isDisabled: boolean; isDeleted: boolean; name: string; description: string | null; configuration: { [key: string]: unknown; }; rowsSortOrder: string[]; rows: { id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; changeDescription: string | null; versionIdentifier: string | null; configuration: { [key: string]: unknown; }; }[]; }>`
119
119
  - `api.storage.configurationVersions.getConfigurationVersions<const I extends readonly ConfigurationVersionInclude[] = []>({ branchId, componentId, configurationId, ...query }: GetConfigurationVersionsInput<I>, signal?: AbortSignal | undefined): Promise<ConfigurationVersionWith<I>[]>`
120
- - `api.storage.configurationVersions.rollbackConfigurationRowToVersion({ branchId, componentId, configurationId, rowId, versionId, }: { componentId: string; configurationId: string; rowId: string; versionId: number; branchId: string; }): Promise<{ id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; changeDescription: string | null; versionIdentifier: string | null; state: { [key: string]: unknown; }; configuration: { [key: string]: unknown; }; }>`
120
+ - `api.storage.configurationVersions.rollbackConfigurationRowToVersion({ branchId, componentId, configurationId, rowId, versionId, }: { componentId: string; configurationId: string; rowId: string; versionId: number; branchId: string; }): Promise<{ id: string; name: string; description: string; isDisabled: boolean; version: number; created: string; creatorToken: { id: number; description: string | null; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; changeDescription: string | null; versionIdentifier: string | null; state: { [key: string]: unknown; }; configuration: { [key: string]: unknown; }; }>`
121
121
  - `api.storage.configurationVersions.rollbackConfigurationToVersion({ branchId, componentId, configurationId, versionId, }: { componentId: string; configurationId: string; versionId: number; branchId: string; }): Promise<{ version: string; }>`
122
122
 
123
123
  ### `api.storage.configurationWorkspaces`
@@ -125,7 +125,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
125
125
  - `api.storage.configurationWorkspaces.createConfigurationWorkspace({ componentId, branchId, configurationId, ...body }: CreateConfigurationWorkspaceInput): Promise<CreatedWorkspace>`
126
126
  - `api.storage.configurationWorkspaces.createConfigurationWorkspaceAsync({ componentId, branchId, configurationId, ...body }: CreateConfigurationWorkspaceInput, signal?: AbortSignal | undefined): Promise<CreateWorkspaceJob>`
127
127
  - `api.storage.configurationWorkspaces.createConfigurationWorkspacePoller(input: CreateConfigurationWorkspaceInput, options?: StorageJobPollOptions | undefined): Poller<CreateWorkspaceJob, JobBase<"workspaceCreate", { backend: string; backendConfiguration: []; backendSize: null; branchId: number; componentId: string; configurationId: string; loginType: number; networkPolicy: string; publicKey: string; readOnlyStorageAccess: boolean; useCase: ConfigurationUseCaseType; }> & { status: "success"; results: Workspace; }>`
128
- - `api.storage.configurationWorkspaces.getConfigurationWorkspaces({ componentId, branchId, configurationId, }: { componentId: string; configurationId: string; branchId: string; }): Promise<{ id: number; type: "file" | "table"; name: string | null; component: string | null; configurationId: string | null; configurationVersion: number | null; created: string; connection: { backend: "bigquery" | "snowflake" | "synapse" | "exasol" | "teradata" | "postgres" | "ducklake"; region: string; host: string; database: string | null; schema: string | null; warehouse: string | null; user: string; loginType: "default" | "snowflake-person-sso" | "snowflake-legacy-service" | "snowflake-person-keypair" | "snowflake-service-keypair" | "none" | "governed"; ssoLoginAvailable: boolean; account?: string | undefined; role?: string | null | undefined; } | { backend: string; container: string | null; region: string; }; backendSize: string | null; statementTimeoutSeconds: number; creatorToken: { id: number; description: string | null; }; readOnlyStorageAccess: boolean; platformUsageType: "user" | "service" | "reader" | null; state: "active" | "deactivated"; lastActivityAt: string | null; warnAt: string | null; deactivateAt: string | null; deleteAt: string | null; }[]>`
128
+ - `api.storage.configurationWorkspaces.getConfigurationWorkspaces({ componentId, branchId, configurationId, }: { componentId: string; configurationId: string; branchId: string; }): Promise<{ id: number; type: "file" | "table"; name: string | null; component: string | null; configurationId: string | null; configurationVersion: number | null; created: string; connection: { backend: "bigquery" | "snowflake" | "synapse" | "exasol" | "teradata" | "postgres" | "ducklake"; region: string; host: string; database: string | null; schema: string | null; warehouse: string | null; user: string; loginType: "default" | "snowflake-person-sso" | "snowflake-legacy-service" | "snowflake-person-keypair" | "snowflake-service-keypair" | "none" | "governed"; ssoLoginAvailable: boolean; account?: string | undefined; role?: string | null | undefined; } | { backend: string; container: string | null; region: string; }; backendSize: string | null; statementTimeoutSeconds: number; creatorToken: { id: number; description: string | null; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; readOnlyStorageAccess: boolean; platformUsageType: "user" | "service" | "reader" | null; state: "active" | "deactivated"; lastActivityAt: string | null; warnAt: string | null; deactivateAt: string | null; deleteAt: string | null; }[]>`
129
129
 
130
130
  ### `api.storage.configurations`
131
131
 
@@ -173,16 +173,16 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
173
173
 
174
174
  ### `api.storage.mergeRequests`
175
175
 
176
- - `api.storage.mergeRequests.approveMergeRequest(id: number): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "approved" | "canceled" | "development" | "in_review" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; } & { changeLog: { configurations?: { componentId: string; configurationId: string; lastVersionIdentifier: string; isDeleted: boolean; }[] | undefined; }; }>`
177
- - `api.storage.mergeRequests.createMergeRequest(body: CreateMergeRequestBody): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "approved" | "canceled" | "development" | "in_review" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; }>`
176
+ - `api.storage.mergeRequests.approveMergeRequest(id: number): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "canceled" | "development" | "in_review" | "approved" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; } & { changeLog: { configurations?: { componentId: string; configurationId: string; lastVersionIdentifier: string; isDeleted: boolean; }[] | undefined; }; }>`
177
+ - `api.storage.mergeRequests.createMergeRequest(body: CreateMergeRequestBody): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "canceled" | "development" | "in_review" | "approved" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; }>`
178
178
  - `api.storage.mergeRequests.getMergeRequest<const I extends readonly MergeRequestDetailInclude[] = []>({ id, ...query }: GetMergeRequestInput<I>, signal?: AbortSignal | undefined): Promise<MergeRequestDetailWith<I>>`
179
179
  - `api.storage.mergeRequests.getMergeRequestConflicts(id: number, signal?: AbortSignal | undefined): Promise<{ message: string; componentId: string; configurationId: string; isDeleted: boolean; devBranchVersionIdentifier: string; defaultBranchVersionIdentifier: string; }[]>`
180
- - `api.storage.mergeRequests.getMergeRequests(signal?: AbortSignal | undefined): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "approved" | "canceled" | "development" | "in_review" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; }[]>`
180
+ - `api.storage.mergeRequests.getMergeRequests(signal?: AbortSignal | undefined): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "canceled" | "development" | "in_review" | "approved" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; }[]>`
181
181
  - `api.storage.mergeRequests.mergeMergeRequestAsync(id: number, signal?: AbortSignal | undefined): Promise<MergeDevBranchJob>`
182
182
  - `api.storage.mergeRequests.mergeMergeRequestPoller(id: number, options?: StorageJobPollOptions | undefined): Poller<MergeDevBranchJob, JobBase<"devBranchMerge", Record<string, unknown>> & { status: "success"; results: unknown; }>`
183
- - `api.storage.mergeRequests.requestChangesMergeRequest(id: number, reason?: string | undefined): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "approved" | "canceled" | "development" | "in_review" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; } & { changeLog: { configurations?: { componentId: string; configurationId: string; lastVersionIdentifier: string; isDeleted: boolean; }[] | undefined; }; }>`
184
- - `api.storage.mergeRequests.requestReview(id: number): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "approved" | "canceled" | "development" | "in_review" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; } & { changeLog: { configurations?: { componentId: string; configurationId: string; lastVersionIdentifier: string; isDeleted: boolean; }[] | undefined; }; }>`
185
- - `api.storage.mergeRequests.updateMergeRequest({ id, ...body }: UpdateMergeRequestInput): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "approved" | "canceled" | "development" | "in_review" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; }>`
183
+ - `api.storage.mergeRequests.requestChangesMergeRequest(id: number, reason?: string | undefined): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "canceled" | "development" | "in_review" | "approved" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; } & { changeLog: { configurations?: { componentId: string; configurationId: string; lastVersionIdentifier: string; isDeleted: boolean; }[] | undefined; }; }>`
184
+ - `api.storage.mergeRequests.requestReview(id: number): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "canceled" | "development" | "in_review" | "approved" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; } & { changeLog: { configurations?: { componentId: string; configurationId: string; lastVersionIdentifier: string; isDeleted: boolean; }[] | undefined; }; }>`
185
+ - `api.storage.mergeRequests.updateMergeRequest({ id, ...body }: UpdateMergeRequestInput): Promise<{ id: number; creator: { id: number; name: string; }; title: string; description: string; state: "canceled" | "development" | "in_review" | "approved" | "in_merge" | "published"; branches: { branchFromId: number | null; branchIntoId: number | null; }; merge: { mergedAt: string | null; mergerId: number | null; mergerName: string; }; createdAt: string; externalId: string; autoMergeStrategy: "immediately" | "scheduled" | "none"; autoMergeAt: string | null; approvals: { approverId: string; approverName: string; createdAt: string; }[]; reviewers: { id: number; name: string; email: string; status: "approved" | "rejected" | null; }[]; }>`
186
186
 
187
187
  ### `api.storage.search`
188
188
 
@@ -195,8 +195,8 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
195
195
  - `api.storage.snapshots.createSnapshotPoller(input: CreateSnapshotInput, options?: StorageJobPollOptions | undefined): Poller<CreateSnapshotJob, JobBase<"tableSnapshotCreate", { id: string; }> & { status: "success"; results: null; }>`
196
196
  - `api.storage.snapshots.deleteSnapshotAsync({ snapshotId }: { snapshotId: number; }, signal?: AbortSignal | undefined): Promise<DeleteSnapshotJob>`
197
197
  - `api.storage.snapshots.deleteSnapshotPoller(input: { snapshotId: number; }, options?: StorageJobPollOptions | undefined): Poller<DeleteSnapshotJob, JobBase<"tableSnapshotDelete", Record<string, unknown>> & { status: "success"; results: null; }>`
198
- - `api.storage.snapshots.getSnapshot({ snapshotId }: { snapshotId: number; }, signal?: AbortSignal | undefined): Promise<{ id: string; description: string | null; createdTime: string; type: "table"; creatorToken: { id: number; description: string; }; uri: string; dataFileId: number; table: { id: string; primaryKey: string[]; attributes: Record<string, never>[]; columns: string[]; }; }>`
199
- - `api.storage.snapshots.getTableSnapshots({ branchId, id, ...query }: GetTableSnapshotsInput, signal?: AbortSignal | undefined): Promise<{ id: string; description: string | null; createdTime: string; type: string; creatorToken: { id: number; description: string; }; uri: string; dataFileId: number; }[]>`
198
+ - `api.storage.snapshots.getSnapshot({ snapshotId }: { snapshotId: number; }, signal?: AbortSignal | undefined): Promise<{ id: string; description: string | null; createdTime: string; type: "table"; creatorToken: { id: number; description: string; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; uri: string; dataFileId: number; table: { id: string; primaryKey: string[]; attributes: Record<string, never>[]; columns: string[]; }; }>`
199
+ - `api.storage.snapshots.getTableSnapshots({ branchId, id, ...query }: GetTableSnapshotsInput, signal?: AbortSignal | undefined): Promise<{ id: string; description: string | null; createdTime: string; type: string; creatorToken: { id: number; description: string; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; uri: string; dataFileId: number; }[]>`
200
200
 
201
201
  ### `api.storage.stats`
202
202
 
@@ -206,6 +206,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
206
206
 
207
207
  - `api.storage.tableList.getAllTables<const I extends readonly TableListInclude[] = []>(input: GetAllTableListInput<I>, signal?: AbortSignal | undefined): Promise<TableListWith<I>[]>`
208
208
  - `api.storage.tableList.getTables<const I extends readonly TableListInclude[] = []>({ branchId, include, filter, limit, after }: GetTableListInput<I>, signal?: AbortSignal | undefined): Promise<TableListPage<I>>`
209
+ - `api.storage.tableList.iterateTables<const I extends readonly TableListInclude[] = []>(input: GetAllTableListInput<I>, signal?: AbortSignal | undefined): AsyncGenerator<TableListWith<I>[], void, undefined>`
209
210
 
210
211
  ### `api.storage.tables`
211
212
 
@@ -231,7 +232,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
231
232
  - `api.storage.tables.removeAliasTableFilter(tableId: string, signal?: AbortSignal | undefined): Promise<void>`
232
233
  - `api.storage.tables.saveTableMetadata({ branchId, id, ...body }: SaveTableMetadataInput, signal?: AbortSignal | undefined): Promise<{ metadata: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[]; columnsMetadata: { [key: string]: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[]; }; }>`
233
234
  - `api.storage.tables.setAliasTableFilter({ tableId, ...body }: SetAliasTableFilterInput, signal?: AbortSignal | undefined): Promise<Table>`
234
- - `api.storage.tables.updateTable({ branchId, tableId, ...body }: UpdateTableInput, signal?: AbortSignal | undefined): Promise<{ uri: string; id: string; name: string; displayName: string; transactional: boolean; primaryKey: string[]; indexType: string | null; indexKey: string[]; distributionType: string | null; distributionKey: string[]; syntheticPrimaryKeyEnabled: boolean; created: string | null; lastImportDate: string | null; lastChangeDate: string | null; rowsCount: number | null; dataSizeBytes: number | null; isAlias: boolean; isAliasable: boolean; isTyped: boolean; isDescriptionSystemManaged: boolean; timestampType: string; tableType: string; path: string; columns: string[]; columnMetadata: { [key: string]: Record<string, never>[]; }; attributes: Record<string, never>[]; metadata: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[]; bucket: { uri: string; id: string; name: string; displayName: string; idBranch: number; stage: "out" | "in" | "sys"; description: string; tables: string; created: string; lastChangeDate: string | null; updated: string | null; isReadOnly: boolean; dataSizeBytes: number; rowsCount: number; isMaintenance: boolean; backend: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; hasExternalSchema: boolean; databaseName: string; path: string; isSnowflakeSharedDatabase: boolean; isLinkedBucket: boolean; color: string | null; bucketSharingAllowed: boolean; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; owner: { id: number; name: string; email: string; } | null; sourceBucket?: { id: string; name: string; displayName: string; stage: "out" | "in" | "sys"; description: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; created: string; lastChangeDate: string | null; dataSizeBytes: number; rowsCount: number; backend: string; hasExternalSchema: boolean; databaseName: string; path: string; project: { id: number; name: string; }; color: string | null; tables?: { id: string; name: string; displayName: string; path: string; }[] | undefined; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; owner: { id: number; name: string; email: string; } | null; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; } | undefined; backendPath: string[]; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; }; sourceTable?: { id: string; uri: string; project: { id: number; name: string; }; columnMetadata?: { [key: string]: Record<string, never>[]; } | undefined; } | undefined; aliasColumnsAutoSync?: boolean | undefined; aliasFilter?: { column: string; operator: string; values: string[]; } | undefined; selectSql?: string | undefined; isPersisted?: boolean | undefined; }>`
235
+ - `api.storage.tables.updateTable({ branchId, tableId, ...body }: UpdateTableInput, signal?: AbortSignal | undefined): Promise<{ uri: string; id: string; name: string; displayName: string; transactional: boolean; primaryKey: string[]; indexType: string | null; indexKey: string[]; distributionType: string | null; distributionKey: string[]; syntheticPrimaryKeyEnabled: boolean; created: string | null; lastImportDate: string | null; lastChangeDate: string | null; rowsCount: number | null; dataSizeBytes: number | null; isAlias: boolean; isAliasable: boolean; isTyped: boolean; isDescriptionSystemManaged: boolean; timestampType: string; tableType: string; path: string; columns: string[]; columnMetadata: { [key: string]: Record<string, never>[]; }; attributes: Record<string, never>[]; metadata: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[]; bucket: { uri: string; id: string; name: string; displayName: string; idBranch: number; stage: "out" | "in" | "sys"; description: string; tables: string; created: string; lastChangeDate: string | null; updated: string | null; isReadOnly: boolean; dataSizeBytes: number; rowsCount: number; isMaintenance: boolean; backend: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; hasExternalSchema: boolean; databaseName: string; path: string; isSnowflakeSharedDatabase: boolean; isLinkedBucket: boolean; color: string | null; bucketSharingAllowed: boolean; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; sharedByActor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; owner: { id: number; name: string; email: string; } | null; sourceBucket?: { id: string; name: string; displayName: string; stage: "out" | "in" | "sys"; description: string; sharing: "organization" | "organization-project" | "specific-projects" | "specific-users" | null; created: string; lastChangeDate: string | null; dataSizeBytes: number; rowsCount: number; backend: string; hasExternalSchema: boolean; databaseName: string; path: string; project: { id: number; name: string; }; color: string | null; tables?: { id: string; name: string; displayName: string; path: string; }[] | undefined; sharingParameters?: unknown[] | { projects?: { id: number; name: string; }[] | undefined; users?: { id: number; name: string; email: string; }[] | undefined; } | undefined; sharedBy?: { id: number | null; name: string | null; date: string; } | undefined; sharedByActor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; owner: { id: number; name: string; email: string; } | null; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; } | undefined; backendPath: string[]; metadata?: { id: string; key: string; value: string | null; provider: string; timestamp: string; }[] | undefined; }; sourceTable?: { id: string; uri: string; project: { id: number; name: string; }; columnMetadata?: { [key: string]: Record<string, never>[]; } | undefined; } | undefined; aliasColumnsAutoSync?: boolean | undefined; aliasFilter?: { column: string; operator: string; values: string[]; } | undefined; selectSql?: string | undefined; isPersisted?: boolean | undefined; }>`
235
236
  - `api.storage.tables.updateTableDefinitionAsync({ branchId, tableId, ...body }: UpdateTableDefinitionInput, signal?: AbortSignal | undefined): Promise<TableDefinitionUpdateJob>`
236
237
  - `api.storage.tables.updateTableDefinitionPoller(input: UpdateTableDefinitionInput, options?: StorageJobPollOptions | undefined): Poller<TableDefinitionUpdateJob, JobBase<"tableDefinitionUpdate", { tableId: string; displayName: string; description?: string | null | undefined; columns: unknown[]; }> & { status: "success"; results: Table; }>`
237
238
 
@@ -240,7 +241,7 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
240
241
  - `api.storage.tokens.createToken(body: Partial<{ description?: string | null | undefined; bucketPermissions?: { [key: string]: "read" | "write"; } | undefined; componentAccess?: string[] | undefined; canManageBuckets: boolean; canReadAllFileUploads: boolean; canPurgeTrash: boolean; expiresIn?: number | null | undefined; canManageProtectedDefaultBranch: boolean; canCreateJobs: boolean; canReadAllProjectEvents: boolean; canManageDevBranches: boolean; }>, signal?: AbortSignal | undefined): Promise<CreateTokenResponse>`
241
242
  - `api.storage.tokens.deleteToken(id: number, signal?: AbortSignal | undefined): Promise<void>`
242
243
  - `api.storage.tokens.getTokenEvents({ id, ...query }: GetTokenEventsInput, signal?: AbortSignal | undefined): Promise<{ uuid: string; event: string; component: string; message: string; description: string; type: "error" | "success" | "info" | "warn"; runId: string | null; created: string; configurationId: string | null; objectId: string | number; objectName: string; objectType: string; context: unknown[] | { remoteAddr?: string | null | undefined; httpReferer?: string | null | undefined; httpUserAgent?: string | null | undefined; httpUserAgentOriginal?: string | null | undefined; authorization?: string | null | undefined; apiVersion?: string | null | undefined; }; params: { [key: string]: unknown; }; results: { [key: string]: unknown; }; performance: { [key: string]: unknown; }; token: { id: number; name: string | null; }; idBranch: number | null; uri: string; attachments: { id: number; isSliced: boolean; uploadType: string; isExpired: boolean; created: string; name: string; url: string; sizeBytes: number | null; }[]; }[]>`
243
- - `api.storage.tokens.getTokens(signal?: AbortSignal | undefined): Promise<{ id: string; created: string | null; refreshed: string | null; description: string; uri: string; isMasterToken: boolean; canManageBuckets: boolean; canManageTokens: boolean; canReadAllFileUploads: boolean; canPurgeTrash: boolean; canManageProtectedDefaultBranch: boolean; canCreateJobs: boolean; canReadAllProjectEvents: boolean; canManageDevBranches: boolean; expires: string | null; isExpired: boolean; isDisabled: boolean; dailyCapacity: number; token?: string | undefined; creatorToken?: { id: number; description: string; } | undefined; componentAccess?: string[] | undefined; bucketPermissions: unknown[] | { [key: string]: string; }; admin?: { name: string; id: number; role: string | null; } | undefined; }[]>`
244
+ - `api.storage.tokens.getTokens(signal?: AbortSignal | undefined): Promise<{ id: string; created: string | null; refreshed: string | null; description: string; uri: string; isMasterToken: boolean; canManageBuckets: boolean; canManageTokens: boolean; canReadAllFileUploads: boolean; canPurgeTrash: boolean; canManageProtectedDefaultBranch: boolean; canCreateJobs: boolean; canReadAllProjectEvents: boolean; canManageDevBranches: boolean; expires: string | null; isExpired: boolean; isDisabled: boolean; dailyCapacity: number; token?: string | undefined; creatorToken?: { id: number; description: string; } | undefined; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; componentAccess?: string[] | undefined; bucketPermissions: unknown[] | { [key: string]: string; }; admin?: { name: string; id: number; role: string | null; } | undefined; }[]>`
244
245
  - `api.storage.tokens.refresh(id: number, signal?: AbortSignal | undefined): Promise<StorageToken>`
245
246
  - `api.storage.tokens.shareToken({ id, ...body }: ShareTokenInput, signal?: AbortSignal | undefined): Promise<void>`
246
247
  - `api.storage.tokens.updateToken({ id, ...body }: UpdateTokenInput, signal?: AbortSignal | undefined): Promise<StorageToken>`
@@ -248,10 +249,10 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
248
249
 
249
250
  ### `api.storage.triggers`
250
251
 
251
- - `api.storage.triggers.createTrigger(body: { runWithTokenId?: number | null | undefined; component: string; configurationId: string; coolDownPeriodMinutes: number; tableIds: string[]; }, signal?: AbortSignal | undefined): Promise<{ id: string; runWithTokenId: number; component: string; configurationId: string; lastRun: string | null; creatorToken: { id: number; description: string; }; coolDownPeriodMinutes: number; tables: { tableId: string; }[]; }>`
252
+ - `api.storage.triggers.createTrigger(body: { runWithTokenId?: number | null | undefined; component: string; configurationId: string; coolDownPeriodMinutes: number; tableIds: string[]; }, signal?: AbortSignal | undefined): Promise<{ id: string; runWithTokenId: number; component: string; configurationId: string; lastRun: string | null; creatorToken: { id: number; description: string; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; }; coolDownPeriodMinutes: number; tables: { tableId: string; }[]; }>`
252
253
  - `api.storage.triggers.deleteTrigger({ triggerId }: { triggerId: number; }, signal?: AbortSignal | undefined): Promise<void>`
253
- - `api.storage.triggers.getTriggers(query?: { component?: string | null | undefined; configurationId?: string | null | undefined; } | undefined, signal?: AbortSignal | undefined): Promise<{ id: string; runWithTokenId: number; component: string; configurationId: string; lastRun: string | null; creatorToken: { id: number; description: string; }; coolDownPeriodMinutes: number; tables: { tableId: string; }[]; }[]>`
254
- - `api.storage.triggers.updateTrigger({ triggerId, ...body }: UpdateTriggerInput, signal?: AbortSignal | undefined): Promise<{ id: string; runWithTokenId: number; component: string; configurationId: string; lastRun: string | null; creatorToken: { id: number; description: string; }; coolDownPeriodMinutes: number; tables: { tableId: string; }[]; }>`
254
+ - `api.storage.triggers.getTriggers(query?: { component?: string | null | undefined; configurationId?: string | null | undefined; } | undefined, signal?: AbortSignal | undefined): Promise<{ id: string; runWithTokenId: number; component: string; configurationId: string; lastRun: string | null; creatorToken: { id: number; description: string; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; }; coolDownPeriodMinutes: number; tables: { tableId: string; }[]; }[]>`
255
+ - `api.storage.triggers.updateTrigger({ triggerId, ...body }: UpdateTriggerInput, signal?: AbortSignal | undefined): Promise<{ id: string; runWithTokenId: number; component: string; configurationId: string; lastRun: string | null; creatorToken: { id: number; description: string; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; }; coolDownPeriodMinutes: number; tables: { tableId: string; }[]; }>`
255
256
 
256
257
  ### `api.storage.workspaces`
257
258
 
@@ -267,5 +268,5 @@ Part of the [`@keboola/api-client` surface index](../API-SURFACE.md).
267
268
  - `api.storage.workspaces.getWorkspaces(path: { branchId: string; }, signal?: AbortSignal | undefined): Promise<Workspace[]>`
268
269
  - `api.storage.workspaces.inputMappingLoadPreview({ branchId, body, ...query }: WorkspaceInputMappingLoadPreviewInput, signal?: AbortSignal | undefined): Promise<{ input: { source: string; destination: string; loadType: "VIEW" | "COPY" | "CLONE"; possibleLoadTypes: ("VIEW" | "COPY" | "CLONE")[]; }[]; }>`
269
270
  - `api.storage.workspaces.resetWorkspacePassword({ branchId, workspaceId }: { workspaceId: number; branchId: string; }): Promise<{ password?: string | undefined; connectionString?: string | undefined; credentials?: { type?: string | undefined; project_id?: string | undefined; private_key_id?: string | undefined; private_key?: string | undefined; client_email?: string | undefined; client_id?: string | undefined; auth_uri?: string | undefined; token_uri?: string | undefined; auth_provider_x509_cert_url?: string | undefined; client_x509_cert_url?: string | undefined; } | undefined; }>`
270
- - `api.storage.workspaces.setWorkspacePublicKey({ branchId, workspaceId, ...body }: SetWorkspacePublicInput): Promise<{ id: number; type: "file" | "table"; name: string | null; component: string | null; configurationId: string | null; configurationVersion: number | null; created: string; connection: { backend: "bigquery" | "snowflake" | "synapse" | "exasol" | "teradata" | "postgres" | "ducklake"; region: string; host: string; database: string | null; schema: string | null; warehouse: string | null; user: string; loginType: "default" | "snowflake-person-sso" | "snowflake-legacy-service" | "snowflake-person-keypair" | "snowflake-service-keypair" | "none" | "governed"; ssoLoginAvailable: boolean; account?: string | undefined; role?: string | null | undefined; } | { backend: string; container: string | null; region: string; }; backendSize: string | null; statementTimeoutSeconds: number; creatorToken: { id: number; description: string | null; }; readOnlyStorageAccess: boolean; platformUsageType: "user" | "service" | "reader" | null; state: "active" | "deactivated"; lastActivityAt: string | null; warnAt: string | null; deactivateAt: string | null; deleteAt: string | null; }>`
271
+ - `api.storage.workspaces.setWorkspacePublicKey({ branchId, workspaceId, ...body }: SetWorkspacePublicInput): Promise<{ id: number; type: "file" | "table"; name: string | null; component: string | null; configurationId: string | null; configurationVersion: number | null; created: string; connection: { backend: "bigquery" | "snowflake" | "synapse" | "exasol" | "teradata" | "postgres" | "ducklake"; region: string; host: string; database: string | null; schema: string | null; warehouse: string | null; user: string; loginType: "default" | "snowflake-person-sso" | "snowflake-legacy-service" | "snowflake-person-keypair" | "snowflake-service-keypair" | "none" | "governed"; ssoLoginAvailable: boolean; account?: string | undefined; role?: string | null | undefined; } | { backend: string; container: string | null; region: string; }; backendSize: string | null; statementTimeoutSeconds: number; creatorToken: { id: number; description: string | null; }; actor: { type: "system" | "token" | "session" | "pat"; id: string; name: string; adminId: number | null; } | null; readOnlyStorageAccess: boolean; platformUsageType: "user" | "service" | "reader" | null; state: "active" | "deactivated"; lastActivityAt: string | null; warnAt: string | null; deactivateAt: string | null; deleteAt: string | null; }>`
271
272
  - `api.storage.workspaces.unloadWorkspace({ branchId, workspaceId, ...query }: UnloadWorkspaceInput): Promise<Record<string, never>[]>`
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManagementSessionMintError-BMHDcEqV.js","names":[],"sources":["../src/errors/ManagementClientAuthError.ts","../src/errors/ManagementSessionMintError.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\nexport class ManagementClientAuthError extends ApiError {\n title: string;\n message: string;\n constructor(title: string, message: string, res: ApiResponse) {\n super(res);\n this.name = 'ManagementClientAuthError';\n this.title = title;\n this.message = message;\n }\n}\n","import { ManagementClientAuthError } from './ManagementClientAuthError';\n\n/**\n * The Manage client has no credential of its own and could not mint a session token from the\n * login cookie.\n *\n * - Only the legacy (SAPI) entry point mints; a bearer client never raises it.\n * - The login page in place of the token: the session expired, or there is no cookie (off the\n * stack host).\n */\nexport class ManagementSessionMintError extends ManagementClientAuthError {\n constructor({ title, message, response, request, data }: ManagementClientAuthError) {\n super(title, message, { response, request, data });\n this.name = 'ManagementSessionMintError';\n }\n}\n"],"mappings":";;AAIA,IAAa,4BAAb,cAA+C,SAAS;CACtD;CACA;CACA,YAAY,OAAe,SAAiB,KAAkB;EAC5D,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;CACjB;AACF;;;;;;;;;;ACHA,IAAa,6BAAb,cAAgD,0BAA0B;CACxE,YAAY,EAAE,OAAO,SAAS,UAAU,SAAS,QAAmC;EAClF,MAAM,OAAO,SAAS;GAAE;GAAU;GAAS;EAAK,CAAC;EACjD,KAAK,OAAO;CACd;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManagementSessionMintError-Bc9bc7Ai.cjs","names":["ApiError"],"sources":["../src/errors/ManagementClientAuthError.ts","../src/errors/ManagementSessionMintError.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\nexport class ManagementClientAuthError extends ApiError {\n title: string;\n message: string;\n constructor(title: string, message: string, res: ApiResponse) {\n super(res);\n this.name = 'ManagementClientAuthError';\n this.title = title;\n this.message = message;\n }\n}\n","import { ManagementClientAuthError } from './ManagementClientAuthError';\n\n/**\n * The Manage client has no credential of its own and could not mint a session token from the\n * login cookie.\n *\n * - Only the legacy (SAPI) entry point mints; a bearer client never raises it.\n * - The login page in place of the token: the session expired, or there is no cookie (off the\n * stack host).\n */\nexport class ManagementSessionMintError extends ManagementClientAuthError {\n constructor({ title, message, response, request, data }: ManagementClientAuthError) {\n super(title, message, { response, request, data });\n this.name = 'ManagementSessionMintError';\n }\n}\n"],"mappings":";;AAIA,IAAa,4BAAb,cAA+CA,0BAAAA,SAAS;CACtD;CACA;CACA,YAAY,OAAe,SAAiB,KAAkB;EAC5D,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;CACjB;AACF;;;;;;;;;;ACHA,IAAa,6BAAb,cAAgD,0BAA0B;CACxE,YAAY,EAAE,OAAO,SAAS,UAAU,SAAS,QAAmC;EAClF,MAAM,OAAO,SAAS;GAAE;GAAU;GAAS;EAAK,CAAC;EACjD,KAAK,OAAO;CACd;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps-BN7fWtSm.js","names":["z","record"],"sources":["../src/domain/appLogs.ts","../src/clients/apps/appsClient.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc.js';\nimport * as z from 'zod';\n\nimport {\n type ApiResponse,\n HttpHeader,\n isApiError,\n parseContentDispositionHeader,\n} from '../fetchClient';\nimport { HttpStatus } from '../internal';\nimport { isPlainObject } from '../utils/isPlainObject';\n\n/**\n * Reading a data app's container output, as the `apps` client serves it.\n *\n * - The tail contract lives here: how a line is parsed, where the next poll resumes, and that an\n * idle app is not an error.\n */\n\ndayjs.extend(utc);\n\nexport type LogEntry = {\n timestamp: string | null;\n message: string;\n};\n\nconst DEFAULT_LOGS_FILE_NAME = 'logs.txt';\n\nconst ISO_TIMESTAMP_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z/;\nconst LEADING_ISO_TIMESTAMP_REGEX = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z)\\s?/;\n\n/** The error envelope sandboxes-service returns; the tail branches on its `code`. */\nconst TailError = z.object({\n context: z.object({\n code: z.string(),\n }),\n});\n\n/**\n * There is nothing to read right now, reported per scope: an app whose serving member is asleep\n * answers `apps.appNotRunning`, a deployment that isn't running answers `apps.deploymentNotRunning` —\n * the normal state of a staged or retired one, since a deployment only runs while it is production.\n */\nconst NOTHING_RUNNING_CODES = new Set(['apps.appNotRunning', 'apps.deploymentNotRunning']);\n\nconst tryParseJsonl = (line: string): LogEntry | null => {\n if (!line.startsWith('{')) return null;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(line);\n } catch {\n return null;\n }\n\n if (typeof parsed !== 'object' || parsed === null) return null;\n\n const record = parsed as Record<string, unknown>;\n const { timestamp, message } = record;\n\n if (typeof timestamp !== 'string' || typeof message !== 'string') return null;\n\n return {\n timestamp,\n message,\n };\n};\n\nconst parsePlainTextLine = (line: string): LogEntry => {\n const match = line.match(LEADING_ISO_TIMESTAMP_REGEX);\n if (match) {\n return { timestamp: match[1]!, message: line.slice(match[0].length) };\n }\n return { timestamp: null, message: line };\n};\n\nexport const parseLogLine = (line: string): LogEntry =>\n tryParseJsonl(line) ?? parsePlainTextLine(line);\n\nconst toLogEntryFromObject = (raw: Record<string, unknown>): LogEntry | null => {\n if (typeof raw.message !== 'string') return null;\n return {\n timestamp: typeof raw.timestamp === 'string' ? raw.timestamp : null,\n message: raw.message,\n };\n};\n\nexport const parseLogLines = (raw: unknown): LogEntry[] => {\n if (raw === null || raw === undefined || raw === '') return [];\n\n if (Array.isArray(raw)) {\n return raw.flatMap((item) => {\n if (typeof item === 'string') return item === '' ? [] : [parseLogLine(item)];\n if (isPlainObject(item)) {\n const entry = toLogEntryFromObject(item);\n return entry ? [entry] : [];\n }\n return [];\n });\n }\n\n if (isPlainObject(raw)) {\n const entry = toLogEntryFromObject(raw);\n return entry ? [entry] : [];\n }\n\n if (typeof raw !== 'string') return [];\n\n const lines = raw.split('\\n');\n const entries: LogEntry[] = [];\n for (const line of lines) {\n if (line === '') continue;\n entries.push(parseLogLine(line));\n }\n return entries;\n};\n\nexport const lastLogTimestamp = (entries: LogEntry[]) => {\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (!entry) continue;\n if (entry.timestamp) return entry.timestamp;\n\n // A plain-text line may carry a timestamp embedded mid-line (legacy format).\n const match = entry.message.match(ISO_TIMESTAMP_REGEX);\n if (match) return match[0];\n }\n return null;\n};\n\nconst calculateNextLogTimestamp = (timestamp: string | null) => {\n if (timestamp === null) return null;\n return dayjs(timestamp).utc().add(1, 'second').utc().format();\n};\n\n/**\n * The tail plus the timestamp a follow-up poll resumes from. A {@link NOTHING_RUNNING_CODES} `400`\n * reads as an empty tail rather than an error — an idle app between visits, or a deployment that is\n * not the one currently serving, has no logs to stream and that is its normal condition.\n */\nexport const readAppLogsTail = async (fetchTail: () => Promise<ApiResponse<string>>) => {\n try {\n const { data } = await fetchTail();\n const entries = parseLogLines(data);\n\n return {\n entries,\n nextLogTimestamp: calculateNextLogTimestamp(lastLogTimestamp(entries)),\n };\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.BAD_REQUEST) {\n const code = TailError.safeParse(error.data).data?.context?.code;\n if (code !== undefined && NOTHING_RUNNING_CODES.has(code)) {\n return { entries: [], nextLogTimestamp: null };\n }\n }\n throw error;\n }\n};\n\n/** The whole log as a file download, named by the service's `Content-Disposition` where it sets one. */\nexport const readAppLogsDownload = async (fetchLogs: () => Promise<ApiResponse<string>>) => {\n const { data, response } = await fetchLogs();\n const contentDisposition = parseContentDispositionHeader(\n response.headers.get(HttpHeader.CONTENT_DISPOSITION),\n );\n\n return {\n logs: data,\n fileName: contentDisposition.filename ?? DEFAULT_LOGS_FILE_NAME,\n };\n};\n","import { readAppLogsDownload, readAppLogsTail } from '../../domain/appLogs';\nimport { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n App,\n AppId,\n CreateAppBody,\n CreateCredentialBody,\n CreateDeploymentBody,\n CredentialId,\n DeploymentId,\n GetAppGitEntrypointsQuery,\n GetAppRunsQuery,\n GetAppsQuery,\n GetDeploymentsQuery,\n GetLogsTailQuery,\n RunId,\n} from './types';\n\n/**\n * Options every write takes.\n *\n * - No `idempotencyKey`: the service ignores it, so a retried create may duplicate.\n */\ntype WriteOptions = {\n signal?: AbortSignal;\n};\n\ntype LogsTailOptions = {\n query?: GetLogsTailQuery;\n signal?: AbortSignal;\n};\n\n/**\n * `/v2` App Deployments — data apps and their immutable deployment history.\n *\n * - `/v1` of the same service is the `dataScience` client.\n * - `baseUrl` must already end in `/v2`; `createServiceClients` composes it.\n * - `POST /apps/{appId}/activity` is absent: it needs a Manage token with `apps:proxy` scope.\n */\nexport const createAppsClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const writeOptions = ({ signal }: WriteOptions) => ({ signal });\n\n /** Service metadata — the `/v2` surface has no `/health-check`. */\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/', {}, { signal });\n\n return data;\n };\n\n const getApps = async (query: GetAppsQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/apps', { query }, { signal });\n\n return data;\n };\n\n const getApp = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * Reserves the app and its Storage configuration only.\n *\n * - `parameters` and `authorization.app_proxy` are written afterwards via the Storage API.\n */\n const createApp = async (body: CreateAppBody, options: WriteOptions = {}) => {\n const { data } = await client.post('/apps', { body }, writeOptions(options));\n\n return data;\n };\n\n const deleteApp = async (appId: AppId, signal?: AbortSignal) => {\n await client.delete('/apps/{appId}', { path: { appId } }, { signal });\n };\n\n /** Drops production routing (URL 404s). A no-op returns the app unchanged, not an error. */\n const unpublishApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/unpublish', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Sleeps the app now; the next visitor wakes it, as after an idle auto-suspend. */\n const suspendApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/suspend', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Wakes the app now and clears a failure stop (`disabled`). A stopped app comes back `starting`. */\n const resumeApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/resume', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** `null` until the first deployment or {@link resetAppPassword} mints one. */\n const getAppPassword = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/password', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Replaces any existing password. Read it back with {@link getAppPassword}. */\n const resetAppPassword = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/apps/{appId}/password/reset',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n /** App-wide runs, newest first — where a failed deployment's `failureReason` lives. */\n const getAppRuns = async (appId: AppId, query: GetAppRunsQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/runs', { path: { appId }, query }, { signal });\n\n return data;\n };\n\n const getAppRun = async (appId: AppId, runId: RunId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/runs/{runId}',\n { path: { appId, runId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Deploys the current config version as a new immutable deployment.\n *\n * - Promotes it unless `body.promote` is `false`; a staged release never runs until promoted.\n * - Returns synchronously; readiness does not.\n */\n const createDeployment = async (\n appId: AppId,\n body?: CreateDeploymentBody,\n options: WriteOptions = {},\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/deployments',\n { path: { appId }, body },\n writeOptions(options),\n );\n\n return data;\n };\n\n /** Live deployment history, newest first; `query.archived: true` lists the deleted ones instead. */\n const getDeployments = async (\n appId: AppId,\n query: GetDeploymentsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/deployments',\n { path: { appId }, query },\n { signal },\n );\n\n return data;\n };\n\n const getDeployment = async (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/deployments/{deploymentId}',\n { path: { appId, deploymentId } },\n { signal },\n );\n\n return data;\n };\n\n /** Deletes the deployment, keeping its row as `archived`. `409` while it is production. */\n const deleteDeployment = async (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ) => {\n await client.delete(\n '/apps/{appId}/deployments/{deploymentId}',\n { path: { appId, deploymentId } },\n { signal },\n );\n };\n\n /**\n * Makes this deployment production; also the rollback.\n *\n * - Routing switches once it serves; `desired`/`actualDeploymentId` differ until then.\n */\n const promoteDeployment = async (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ): Promise<App> => {\n const { data } = await client.post(\n '/apps/{appId}/deployments/{deploymentId}/promote',\n { path: { appId, deploymentId } },\n { signal },\n );\n\n return data;\n };\n\n /** Serving container's log. `query.since` and `query.lines` are mutually exclusive. */\n const getAppLogsTail = (appId: AppId, { query, signal }: LogsTailOptions = {}) =>\n readAppLogsTail(() =>\n client.get('/apps/{appId}/logs/tail', { path: { appId }, query }, { signal }),\n );\n\n const getAppLogsDownload = (appId: AppId, signal?: AbortSignal) =>\n readAppLogsDownload(() =>\n client.get('/apps/{appId}/logs/download', { path: { appId } }, { signal }),\n );\n\n const getDeploymentLogsTail = (\n appId: AppId,\n deploymentId: DeploymentId,\n { query, signal }: LogsTailOptions = {},\n ) =>\n readAppLogsTail(() =>\n client.get(\n '/apps/{appId}/deployments/{deploymentId}/logs/tail',\n { path: { appId, deploymentId }, query },\n { signal },\n ),\n );\n\n const getDeploymentLogsDownload = (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ) =>\n readAppLogsDownload(() =>\n client.get(\n '/apps/{appId}/deployments/{deploymentId}/logs/download',\n { path: { appId, deploymentId } },\n { signal },\n ),\n );\n\n /** `409` when the app has no Git repository configured. */\n const getAppGitRepo = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/git-repo', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * The branches of the app's repository, read with the credentials in its saved configuration.\n *\n * - The request carries no credentials: changes to the Git settings count only once saved.\n * - `409` when the app has no Git repository, or the saved credentials cannot read it.\n */\n const getAppGitRepoBranches = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/branches',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * The Streamlit entrypoint candidates in the repository root, read like `getAppGitRepoBranches`.\n *\n * - `query.ref` omitted means the saved branch, then the repository default.\n */\n const getAppGitRepoEntrypoints = async (\n appId: AppId,\n query: GetAppGitEntrypointsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/entrypoints',\n { path: { appId }, query },\n { signal },\n );\n\n return data;\n };\n\n /** Per app, not per deployment. */\n const getAppGitRepoCredentials = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/credentials',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n const getAppGitRepoCredential = async (\n appId: AppId,\n credentialId: CredentialId,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/credentials/{credentialId}',\n { path: { appId, credentialId } },\n { signal },\n );\n\n return data;\n };\n\n /** An `http_token` credential's `secret` is returned only here. */\n const createAppGitRepoCredential = async (\n appId: AppId,\n body: CreateCredentialBody,\n options: WriteOptions = {},\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/git-repo/credentials',\n { path: { appId }, body },\n writeOptions(options),\n );\n\n return data;\n };\n\n const deleteAppGitRepoCredential = async (\n appId: AppId,\n credentialId: CredentialId,\n signal?: AbortSignal,\n ) => {\n await client.delete(\n '/apps/{appId}/git-repo/credentials/{credentialId}',\n { path: { appId, credentialId } },\n { signal },\n );\n };\n\n return {\n healthCheck,\n getApps,\n getApp,\n createApp,\n deleteApp,\n unpublishApp,\n suspendApp,\n resumeApp,\n getAppPassword,\n resetAppPassword,\n getAppRuns,\n getAppRun,\n createDeployment,\n getDeployments,\n getDeployment,\n deleteDeployment,\n promoteDeployment,\n getAppLogsTail,\n getAppLogsDownload,\n getDeploymentLogsTail,\n getDeploymentLogsDownload,\n getAppGitRepo,\n getAppGitRepoBranches,\n getAppGitRepoEntrypoints,\n getAppGitRepoCredentials,\n getAppGitRepoCredential,\n createAppGitRepoCredential,\n deleteAppGitRepoCredential,\n };\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps-C1x5IKNQ.cjs","names":["utc","z","record","isPlainObject","isApiError","HttpStatus","parseContentDispositionHeader","HttpHeader","createOpenapiFetchClient","createAuthHeaders"],"sources":["../src/domain/appLogs.ts","../src/clients/apps/appsClient.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc.js';\nimport * as z from 'zod';\n\nimport {\n type ApiResponse,\n HttpHeader,\n isApiError,\n parseContentDispositionHeader,\n} from '../fetchClient';\nimport { HttpStatus } from '../internal';\nimport { isPlainObject } from '../utils/isPlainObject';\n\n/**\n * Reading a data app's container output, as the `apps` client serves it.\n *\n * - The tail contract lives here: how a line is parsed, where the next poll resumes, and that an\n * idle app is not an error.\n */\n\ndayjs.extend(utc);\n\nexport type LogEntry = {\n timestamp: string | null;\n message: string;\n};\n\nconst DEFAULT_LOGS_FILE_NAME = 'logs.txt';\n\nconst ISO_TIMESTAMP_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z/;\nconst LEADING_ISO_TIMESTAMP_REGEX = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z)\\s?/;\n\n/** The error envelope sandboxes-service returns; the tail branches on its `code`. */\nconst TailError = z.object({\n context: z.object({\n code: z.string(),\n }),\n});\n\n/**\n * There is nothing to read right now, reported per scope: an app whose serving member is asleep\n * answers `apps.appNotRunning`, a deployment that isn't running answers `apps.deploymentNotRunning` —\n * the normal state of a staged or retired one, since a deployment only runs while it is production.\n */\nconst NOTHING_RUNNING_CODES = new Set(['apps.appNotRunning', 'apps.deploymentNotRunning']);\n\nconst tryParseJsonl = (line: string): LogEntry | null => {\n if (!line.startsWith('{')) return null;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(line);\n } catch {\n return null;\n }\n\n if (typeof parsed !== 'object' || parsed === null) return null;\n\n const record = parsed as Record<string, unknown>;\n const { timestamp, message } = record;\n\n if (typeof timestamp !== 'string' || typeof message !== 'string') return null;\n\n return {\n timestamp,\n message,\n };\n};\n\nconst parsePlainTextLine = (line: string): LogEntry => {\n const match = line.match(LEADING_ISO_TIMESTAMP_REGEX);\n if (match) {\n return { timestamp: match[1]!, message: line.slice(match[0].length) };\n }\n return { timestamp: null, message: line };\n};\n\nexport const parseLogLine = (line: string): LogEntry =>\n tryParseJsonl(line) ?? parsePlainTextLine(line);\n\nconst toLogEntryFromObject = (raw: Record<string, unknown>): LogEntry | null => {\n if (typeof raw.message !== 'string') return null;\n return {\n timestamp: typeof raw.timestamp === 'string' ? raw.timestamp : null,\n message: raw.message,\n };\n};\n\nexport const parseLogLines = (raw: unknown): LogEntry[] => {\n if (raw === null || raw === undefined || raw === '') return [];\n\n if (Array.isArray(raw)) {\n return raw.flatMap((item) => {\n if (typeof item === 'string') return item === '' ? [] : [parseLogLine(item)];\n if (isPlainObject(item)) {\n const entry = toLogEntryFromObject(item);\n return entry ? [entry] : [];\n }\n return [];\n });\n }\n\n if (isPlainObject(raw)) {\n const entry = toLogEntryFromObject(raw);\n return entry ? [entry] : [];\n }\n\n if (typeof raw !== 'string') return [];\n\n const lines = raw.split('\\n');\n const entries: LogEntry[] = [];\n for (const line of lines) {\n if (line === '') continue;\n entries.push(parseLogLine(line));\n }\n return entries;\n};\n\nexport const lastLogTimestamp = (entries: LogEntry[]) => {\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (!entry) continue;\n if (entry.timestamp) return entry.timestamp;\n\n // A plain-text line may carry a timestamp embedded mid-line (legacy format).\n const match = entry.message.match(ISO_TIMESTAMP_REGEX);\n if (match) return match[0];\n }\n return null;\n};\n\nconst calculateNextLogTimestamp = (timestamp: string | null) => {\n if (timestamp === null) return null;\n return dayjs(timestamp).utc().add(1, 'second').utc().format();\n};\n\n/**\n * The tail plus the timestamp a follow-up poll resumes from. A {@link NOTHING_RUNNING_CODES} `400`\n * reads as an empty tail rather than an error — an idle app between visits, or a deployment that is\n * not the one currently serving, has no logs to stream and that is its normal condition.\n */\nexport const readAppLogsTail = async (fetchTail: () => Promise<ApiResponse<string>>) => {\n try {\n const { data } = await fetchTail();\n const entries = parseLogLines(data);\n\n return {\n entries,\n nextLogTimestamp: calculateNextLogTimestamp(lastLogTimestamp(entries)),\n };\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.BAD_REQUEST) {\n const code = TailError.safeParse(error.data).data?.context?.code;\n if (code !== undefined && NOTHING_RUNNING_CODES.has(code)) {\n return { entries: [], nextLogTimestamp: null };\n }\n }\n throw error;\n }\n};\n\n/** The whole log as a file download, named by the service's `Content-Disposition` where it sets one. */\nexport const readAppLogsDownload = async (fetchLogs: () => Promise<ApiResponse<string>>) => {\n const { data, response } = await fetchLogs();\n const contentDisposition = parseContentDispositionHeader(\n response.headers.get(HttpHeader.CONTENT_DISPOSITION),\n );\n\n return {\n logs: data,\n fileName: contentDisposition.filename ?? DEFAULT_LOGS_FILE_NAME,\n };\n};\n","import { readAppLogsDownload, readAppLogsTail } from '../../domain/appLogs';\nimport { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n App,\n AppId,\n CreateAppBody,\n CreateCredentialBody,\n CreateDeploymentBody,\n CredentialId,\n DeploymentId,\n GetAppGitEntrypointsQuery,\n GetAppRunsQuery,\n GetAppsQuery,\n GetDeploymentsQuery,\n GetLogsTailQuery,\n RunId,\n} from './types';\n\n/**\n * Options every write takes.\n *\n * - No `idempotencyKey`: the service ignores it, so a retried create may duplicate.\n */\ntype WriteOptions = {\n signal?: AbortSignal;\n};\n\ntype LogsTailOptions = {\n query?: GetLogsTailQuery;\n signal?: AbortSignal;\n};\n\n/**\n * `/v2` App Deployments — data apps and their immutable deployment history.\n *\n * - `/v1` of the same service is the `dataScience` client.\n * - `baseUrl` must already end in `/v2`; `createServiceClients` composes it.\n * - `POST /apps/{appId}/activity` is absent: it needs a Manage token with `apps:proxy` scope.\n */\nexport const createAppsClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const writeOptions = ({ signal }: WriteOptions) => ({ signal });\n\n /** Service metadata — the `/v2` surface has no `/health-check`. */\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/', {}, { signal });\n\n return data;\n };\n\n const getApps = async (query: GetAppsQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/apps', { query }, { signal });\n\n return data;\n };\n\n const getApp = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * Reserves the app and its Storage configuration only.\n *\n * - `parameters` and `authorization.app_proxy` are written afterwards via the Storage API.\n */\n const createApp = async (body: CreateAppBody, options: WriteOptions = {}) => {\n const { data } = await client.post('/apps', { body }, writeOptions(options));\n\n return data;\n };\n\n const deleteApp = async (appId: AppId, signal?: AbortSignal) => {\n await client.delete('/apps/{appId}', { path: { appId } }, { signal });\n };\n\n /** Drops production routing (URL 404s). A no-op returns the app unchanged, not an error. */\n const unpublishApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/unpublish', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Sleeps the app now; the next visitor wakes it, as after an idle auto-suspend. */\n const suspendApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/suspend', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Wakes the app now and clears a failure stop (`disabled`). A stopped app comes back `starting`. */\n const resumeApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/resume', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** `null` until the first deployment or {@link resetAppPassword} mints one. */\n const getAppPassword = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/password', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Replaces any existing password. Read it back with {@link getAppPassword}. */\n const resetAppPassword = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/apps/{appId}/password/reset',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n /** App-wide runs, newest first — where a failed deployment's `failureReason` lives. */\n const getAppRuns = async (appId: AppId, query: GetAppRunsQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/runs', { path: { appId }, query }, { signal });\n\n return data;\n };\n\n const getAppRun = async (appId: AppId, runId: RunId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/runs/{runId}',\n { path: { appId, runId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Deploys the current config version as a new immutable deployment.\n *\n * - Promotes it unless `body.promote` is `false`; a staged release never runs until promoted.\n * - Returns synchronously; readiness does not.\n */\n const createDeployment = async (\n appId: AppId,\n body?: CreateDeploymentBody,\n options: WriteOptions = {},\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/deployments',\n { path: { appId }, body },\n writeOptions(options),\n );\n\n return data;\n };\n\n /** Live deployment history, newest first; `query.archived: true` lists the deleted ones instead. */\n const getDeployments = async (\n appId: AppId,\n query: GetDeploymentsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/deployments',\n { path: { appId }, query },\n { signal },\n );\n\n return data;\n };\n\n const getDeployment = async (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/deployments/{deploymentId}',\n { path: { appId, deploymentId } },\n { signal },\n );\n\n return data;\n };\n\n /** Deletes the deployment, keeping its row as `archived`. `409` while it is production. */\n const deleteDeployment = async (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ) => {\n await client.delete(\n '/apps/{appId}/deployments/{deploymentId}',\n { path: { appId, deploymentId } },\n { signal },\n );\n };\n\n /**\n * Makes this deployment production; also the rollback.\n *\n * - Routing switches once it serves; `desired`/`actualDeploymentId` differ until then.\n */\n const promoteDeployment = async (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ): Promise<App> => {\n const { data } = await client.post(\n '/apps/{appId}/deployments/{deploymentId}/promote',\n { path: { appId, deploymentId } },\n { signal },\n );\n\n return data;\n };\n\n /** Serving container's log. `query.since` and `query.lines` are mutually exclusive. */\n const getAppLogsTail = (appId: AppId, { query, signal }: LogsTailOptions = {}) =>\n readAppLogsTail(() =>\n client.get('/apps/{appId}/logs/tail', { path: { appId }, query }, { signal }),\n );\n\n const getAppLogsDownload = (appId: AppId, signal?: AbortSignal) =>\n readAppLogsDownload(() =>\n client.get('/apps/{appId}/logs/download', { path: { appId } }, { signal }),\n );\n\n const getDeploymentLogsTail = (\n appId: AppId,\n deploymentId: DeploymentId,\n { query, signal }: LogsTailOptions = {},\n ) =>\n readAppLogsTail(() =>\n client.get(\n '/apps/{appId}/deployments/{deploymentId}/logs/tail',\n { path: { appId, deploymentId }, query },\n { signal },\n ),\n );\n\n const getDeploymentLogsDownload = (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ) =>\n readAppLogsDownload(() =>\n client.get(\n '/apps/{appId}/deployments/{deploymentId}/logs/download',\n { path: { appId, deploymentId } },\n { signal },\n ),\n );\n\n /** `409` when the app has no Git repository configured. */\n const getAppGitRepo = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/git-repo', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * The branches of the app's repository, read with the credentials in its saved configuration.\n *\n * - The request carries no credentials: changes to the Git settings count only once saved.\n * - `409` when the app has no Git repository, or the saved credentials cannot read it.\n */\n const getAppGitRepoBranches = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/branches',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * The Streamlit entrypoint candidates in the repository root, read like `getAppGitRepoBranches`.\n *\n * - `query.ref` omitted means the saved branch, then the repository default.\n */\n const getAppGitRepoEntrypoints = async (\n appId: AppId,\n query: GetAppGitEntrypointsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/entrypoints',\n { path: { appId }, query },\n { signal },\n );\n\n return data;\n };\n\n /** Per app, not per deployment. */\n const getAppGitRepoCredentials = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/credentials',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n const getAppGitRepoCredential = async (\n appId: AppId,\n credentialId: CredentialId,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/credentials/{credentialId}',\n { path: { appId, credentialId } },\n { signal },\n );\n\n return data;\n };\n\n /** An `http_token` credential's `secret` is returned only here. */\n const createAppGitRepoCredential = async (\n appId: AppId,\n body: CreateCredentialBody,\n options: WriteOptions = {},\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/git-repo/credentials',\n { path: { appId }, body },\n writeOptions(options),\n );\n\n return data;\n };\n\n const deleteAppGitRepoCredential = async (\n appId: AppId,\n credentialId: CredentialId,\n signal?: AbortSignal,\n ) => {\n await client.delete(\n '/apps/{appId}/git-repo/credentials/{credentialId}',\n { path: { appId, credentialId } },\n { signal },\n );\n };\n\n return {\n healthCheck,\n getApps,\n getApp,\n createApp,\n deleteApp,\n unpublishApp,\n suspendApp,\n resumeApp,\n getAppPassword,\n resetAppPassword,\n getAppRuns,\n getAppRun,\n createDeployment,\n getDeployments,\n getDeployment,\n deleteDeployment,\n promoteDeployment,\n getAppLogsTail,\n getAppLogsDownload,\n getDeploymentLogsTail,\n getDeploymentLogsDownload,\n getAppGitRepo,\n getAppGitRepoBranches,\n getAppGitRepoEntrypoints,\n getAppGitRepoCredentials,\n getAppGitRepoCredential,\n createAppGitRepoCredential,\n deleteAppGitRepoCredential,\n };\n};\n"],"mappings":"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AO,IAC5B,sCACA,EAAE,MAAM,EAAE,MAAM,EAAE,GAClB,EAAE,OAAO,CACX;EAEA,OAAO;CACT;CAEA,MAAM,0BAA0B,OAC9B,OACA,cACA,WACG;EACH,MAAM,EAAE,SAAS,MAAM,OAAO,IAC5B,qDACA,EAAE,MAAM;GAAE;GAAO;EAAa,EAAE,GAChC,EAAE,OAAO,CACX;EAEA,OAAO;CACT;;CAGA,MAAM,6BAA6B,OACjC,OACA,MACA,UAAwB,CAAC,MACtB;EACH,MAAM,EAAE,SAAS,MAAM,OAAO,KAC5B,sCACA;GAAE,MAAM,EAAE,MAAM;GAAG;EAAK,GACxB,aAAa,OAAO,CACtB;EAEA,OAAO;CACT;CAEA,MAAM,6BAA6B,OACjC,OACA,cACA,WACG;EACH,MAAM,OAAO,OACX,qDACA,EAAE,MAAM;GAAE;GAAO;EAAa,EAAE,GAChC,EAAE,OAAO,CACX;CACF;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"authClient-B_Mb4Vzs.js","names":["z","z","z","z"],"sources":["../src/clients/auth/device/device.ts","../src/clients/auth/login/schemas.ts","../src/clients/auth/login/login.ts","../src/clients/auth/manageTokens/manageTokens.ts","../src/clients/auth/me/me.ts","../src/clients/auth/mfa/schemas.ts","../src/clients/auth/mfa/mfa.ts","../src/clients/auth/password/schemas.ts","../src/clients/auth/password/password.ts","../src/clients/auth/pat/pat.ts","../src/clients/auth/pkce/pkce.ts","../src/clients/auth/saml/saml.ts","../src/clients/auth/session/session.ts","../src/clients/auth/sudo/sudo.ts","../src/clients/auth/token/schemas.ts","../src/clients/auth/token/token.ts","../src/clients/auth/webauthn/webauthn.ts","../src/clients/auth/authClient.ts"],"sourcesContent":["import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type {\n ApproveDeviceAuthorizationBody,\n CreateDeviceAuthorizationBody,\n GetDeviceAuthorizationTokenBody,\n} from './types';\n\nexport const createDevice = (client: AuthOpenApiFetchClient) => {\n const create = async (body: CreateDeviceAuthorizationBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/device', { body }, { signal });\n return data;\n };\n\n const approve = async (body: ApproveDeviceAuthorizationBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/device/approve', { body }, { signal });\n return data;\n };\n\n const getToken = async (body: GetDeviceAuthorizationTokenBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/device/token', { body }, { signal });\n return data;\n };\n\n return { create, approve, getToken };\n};\n","import * as z from 'zod';\n\nconst loginInputSchema = z.object({\n /** Also mints a session cookie; `Origin` must be the stack app URL, else 403. */\n browserMode: z.boolean().default(false),\n});\n\nexport const passwordInputSchema = loginInputSchema.extend({\n email: z.email(),\n password: z.string().min(1, 'Required'),\n});\n\nexport const oidcInputSchema = loginInputSchema.extend({\n grantType: z.enum(['google', 'microsoft']),\n idToken: z.string().min(1, 'Required'),\n});\n\n// No `browserMode`: as `boolean` it would widen the result; the method signature keeps the literal.\nexport type PasswordInput = Omit<z.input<typeof passwordInputSchema>, 'browserMode'>;\nexport type OidcInput = Omit<z.input<typeof oidcInputSchema>, 'browserMode'>;\n\nconst userSchema = z.object({\n id: z.number(),\n email: z.string(),\n name: z.string(),\n});\n\n// The backend omits `mfaRequired` on success; the `false` default makes it the union discriminant.\nconst loginSuccessBaseSchema = z.object({\n mfaRequired: z.literal(false).default(false),\n accessToken: z.string(),\n tokenType: z.string(),\n expiresIn: z.number(),\n user: userSchema,\n sessionId: z.string(),\n});\n\nexport const apiLoginSuccessSchema = loginSuccessBaseSchema.extend({\n refreshToken: z.string(),\n});\n\nexport const browserLoginSuccessSchema = loginSuccessBaseSchema.extend({\n refreshToken: z.null().optional(),\n});\n\n/**\n * MFA-challenge shape.\n *\n * - `mfaType` / `allowedMethods` stay `string` so a new method still parses.\n * - `webauthn` is `PublicKeyCredentialRequestOptionsJSON`: present, `null` or absent (TOTP).\n * - `unknown`: a stricter shape failing would block every MFA sign-in; the ceremony validates.\n */\nexport const mfaChallengeSchema = z.object({\n mfaRequired: z.literal(true),\n mfaType: z.string(),\n mfaToken: z.string(),\n expiresIn: z.number(),\n allowedMethods: z.array(z.string()),\n // zod 4 `z.unknown()` is not implicitly optional; TOTP challenges omit the key.\n webauthn: z.unknown().optional(),\n});\n\nexport const apiLoginResultSchema = z.union([apiLoginSuccessSchema, mfaChallengeSchema]);\nexport const browserLoginResultSchema = z.union([browserLoginSuccessSchema, mfaChallengeSchema]);\n\nexport type LoginUser = z.infer<typeof userSchema>;\nexport type MfaChallenge = z.infer<typeof mfaChallengeSchema>;\nexport type ApiLoginSuccess = z.infer<typeof apiLoginSuccessSchema>;\nexport type BrowserLoginSuccess = z.infer<typeof browserLoginSuccessSchema>;\nexport type ApiLoginResult = z.infer<typeof apiLoginResultSchema>;\nexport type BrowserLoginResult = z.infer<typeof browserLoginResultSchema>;\n\nexport type LoginResultFor<Browser extends boolean> = Browser extends true\n ? BrowserLoginResult\n : ApiLoginResult;\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { LoginResultFor, OidcInput, PasswordInput } from './schemas';\nimport {\n apiLoginResultSchema,\n browserLoginResultSchema,\n oidcInputSchema,\n passwordInputSchema,\n} from './schemas';\nimport type { LoginBody } from './types';\n\nexport const createLogin = (client: AuthOpenApiFetchClient) => {\n const _login = async (body: LoginBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/login', { body }, { signal });\n return data;\n };\n\n /**\n * Grants parse with our own schemas — the generated response type is unreliable.\n *\n * - `browserMode` picks the schema: only API mode carries a refresh token.\n * - `const Browser` keeps the literal; a `boolean` flag widens the result to the union.\n */\n const withPassword = async <const Browser extends boolean = false>(\n input: Omit<PasswordInput, 'browserMode'> & { browserMode?: Browser },\n signal?: AbortSignal,\n ) => {\n const { email, password, browserMode } = passwordInputSchema.parse(input);\n // Cast: omit fields outside the grant — the backend rejects null.\n const data = await _login(\n { grantType: 'password', email, password, browserMode } as LoginBody,\n signal,\n );\n const schema = browserMode ? browserLoginResultSchema : apiLoginResultSchema;\n return schema.parse(data) as LoginResultFor<Browser>;\n };\n\n const withOidc = async <const Browser extends boolean = false>(\n input: Omit<OidcInput, 'browserMode'> & { browserMode?: Browser },\n signal?: AbortSignal,\n ) => {\n const { grantType, idToken, browserMode } = oidcInputSchema.parse(input);\n // Cast: omit fields outside the grant — the backend rejects null.\n const data = await _login({ grantType, idToken, browserMode } as LoginBody, signal);\n const schema = browserMode ? browserLoginResultSchema : apiLoginResultSchema;\n return schema.parse(data) as LoginResultFor<Browser>;\n };\n\n // Unauthenticated. Carries the public OAuth client ids `withOidc` callers mint an id token with.\n const methods = async (signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/methods', {}, { signal });\n return data;\n };\n\n return { withPassword, withOidc, methods };\n};\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { CreateManageTokenInput, RevokeManageTokenPath } from './types';\n\nexport const createManageTokens = (client: AuthOpenApiFetchClient) => {\n /**\n * Every Manage API token the caller owns, in two lists.\n *\n * - `tokens` — the ones the caller created by hand, newest first.\n * - `sessionTokens` — the ones a browser sign-in minted, newest first.\n * - A token carries `scopes: []` when it merely inherits the caller's own permissions.\n */\n const getAll = async (signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/manage-tokens', {}, { signal });\n return data;\n };\n\n /**\n * Mint a token and read its secret.\n *\n * - `token` in the response is returned this once and is unreadable afterwards.\n * - `manageToken` is the same row the list endpoint returns.\n * - Needs an active sudo window; without one the endpoint answers `403`.\n * - Rate-limited per caller, answering `429` with `Retry-After`.\n */\n const create = async (input: CreateManageTokenInput, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/manage-tokens', { body: input }, { signal });\n return data;\n };\n\n /** Deleting an id that is already gone answers `404` — the call is not idempotent. */\n const revoke = async (id: RevokeManageTokenPath['id'], signal?: AbortSignal) => {\n await client.delete('/v1/auth/manage-tokens/{id}', { path: { id } }, { signal });\n };\n\n return { getAll, create, revoke };\n};\n","import { collectByCursor } from '../../../utils';\nimport type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { GetMeMaintainersQuery, GetMeOrganizationsQuery, GetMeProjectsQuery } from './types';\n\n// Connection's `app.auth.me.page.max_limit` (`config/packages/auth_me.yaml`); above it the request is a 400.\nconst PAGE_LIMIT = 200;\n\n/**\n * The signed-in user and the organizations, maintainers and projects they reach.\n *\n * - Session-only: a PAT bearer answers `403`.\n * - `404` while the stack's `programmatic-auth` feature is off.\n */\nexport const createMe = (client: AuthOpenApiFetchClient) => {\n /** Each collection is a counted preview — its first page; the rest is behind the paged methods. */\n const get = async (signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/me', {}, { signal });\n return data;\n };\n\n const getOrganizations = async (query?: GetMeOrganizationsQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/me/organizations', { query }, { signal });\n return data;\n };\n\n const getMaintainers = async (query?: GetMeMaintainersQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/me/maintainers', { query }, { signal });\n return data;\n };\n\n const getProjects = async (query?: GetMeProjectsQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/me/projects', { query }, { signal });\n return data;\n };\n\n /** Every organization the caller reaches, across all pages. */\n const getAllOrganizations = (signal?: AbortSignal) =>\n collectByCursor({\n pageSize: PAGE_LIMIT,\n signal,\n fetchFrom: (after, limit, pageSignal) =>\n getOrganizations({ page: { limit, after } }, pageSignal),\n });\n\n /** Every project the caller can open, across all pages. */\n const getAllProjects = (signal?: AbortSignal) =>\n collectByCursor({\n pageSize: PAGE_LIMIT,\n signal,\n fetchFrom: (after, limit, pageSignal) => getProjects({ page: { limit, after } }, pageSignal),\n });\n\n return {\n get,\n getOrganizations,\n getMaintainers,\n getProjects,\n getAllOrganizations,\n getAllProjects,\n };\n};\n","import * as z from 'zod';\n\nimport type { VerifyMfaType } from './types';\n\n/**\n * Methods `POST /v1/auth/mfa` accepts, also reported in a challenge's `mfaType` / `allowedMethods`.\n *\n * - `satisfies` fails the build if the generated spec renames or drops one.\n * - A challenge may name a method not listed here, so the wire fields stay `string`.\n */\nexport const MFA_METHOD = {\n totp: 'totp',\n webauthn: 'webauthn',\n recoveryCode: 'recovery_code',\n} as const satisfies Record<string, VerifyMfaType>;\n\nexport type MfaMethod = (typeof MFA_METHOD)[keyof typeof MFA_METHOD];\n\nexport const mfaCodeInputSchema = z.object({\n mfaToken: z.string(),\n type: z.enum([MFA_METHOD.totp, MFA_METHOD.recoveryCode]),\n code: z.string().min(1, 'Required'),\n});\n\nexport const mfaWebauthnInputSchema = z.object({\n mfaToken: z.string(),\n assertion: z.string(),\n});\n\nexport const totpVerifyInputSchema = z.object({\n code: z.string().min(1, 'Required'),\n // Mirrors the backend default; the generated type wrongly marks it required.\n revokeOtherSessions: z.boolean().default(false),\n});\n\nexport type MfaCodeInput = z.infer<typeof mfaCodeInputSchema>;\nexport type MfaWebauthnInput = z.infer<typeof mfaWebauthnInputSchema>;\nexport type TotpVerifyInput = z.input<typeof totpVerifyInputSchema>;\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { MfaCodeInput, MfaWebauthnInput, TotpVerifyInput } from './schemas';\nimport {\n MFA_METHOD,\n mfaCodeInputSchema,\n mfaWebauthnInputSchema,\n totpVerifyInputSchema,\n} from './schemas';\nimport type { DisableTotpPath, VerifyMfaBody } from './types';\n\nexport const createMfa = (client: AuthOpenApiFetchClient) => {\n const _verify = async (body: VerifyMfaBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/mfa', { body }, { signal });\n return data;\n };\n\n const verifyWithCode = async (input: MfaCodeInput, signal?: AbortSignal) => {\n const { mfaToken, type, code } = mfaCodeInputSchema.parse(input);\n // Cast: omit fields outside the type — the backend rejects null.\n return _verify({ mfaToken, type, code } as VerifyMfaBody, signal);\n };\n\n const verifyWithWebauthn = async (input: MfaWebauthnInput, signal?: AbortSignal) => {\n const { mfaToken, assertion } = mfaWebauthnInputSchema.parse(input);\n // Cast: omit fields outside the type — the backend rejects null.\n return _verify({ mfaToken, type: MFA_METHOD.webauthn, assertion } as VerifyMfaBody, signal);\n };\n\n const regenerateRecoveryCodes = async (signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/mfa/recovery-codes', {}, { signal });\n return data;\n };\n\n // TOTP enrollment for the signed-in user (account MFA management). `setup` returns the shared\n // secret + `otpauthUri` to render as a QR; `verify` confirms the first code and hands back the\n // one-time recovery codes plus the new factor `id`; `disable` removes a factor by that `id`.\n const totp = {\n setup: async (signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/mfa/totp', {}, { signal });\n return data;\n },\n verify: async (input: TotpVerifyInput, signal?: AbortSignal) => {\n const body = totpVerifyInputSchema.parse(input);\n const { data } = await client.post('/v1/auth/mfa/totp/verify', { body }, { signal });\n return data;\n },\n disable: async (id: DisableTotpPath['id'], signal?: AbortSignal) => {\n await client.delete('/v1/auth/mfa/totp/{id}', { path: { id } }, { signal });\n },\n };\n\n return { verifyWithCode, verifyWithWebauthn, regenerateRecoveryCodes, totp };\n};\n","import * as z from 'zod';\n\nexport const resetRequestInputSchema = z.object({\n email: z.email(),\n});\n\nexport const resetInputSchema = z.object({\n // The single-use reset token (`kbc_pr_…`) delivered by e-mail.\n token: z.string().min(1, 'Required'),\n newPassword: z.string().min(1, 'Required'),\n // Defaults to true, matching the backend. Password policy is backend-enforced.\n revokeSessions: z.boolean().default(true),\n});\n\nexport const changeInputSchema = z.object({\n currentPassword: z.string().min(1, 'Required'),\n newPassword: z.string().min(1, 'Required'),\n // Defaults to true on parse, so the SDK always sends it (matches the backend default).\n revokeOtherSessions: z.boolean().default(true),\n});\n\nexport type ResetRequestInput = z.infer<typeof resetRequestInputSchema>;\n// `z.input`, not `z.infer`: callers may omit `revokeSessions`.\nexport type ResetInput = z.input<typeof resetInputSchema>;\n// `z.input`: callers may omit `revokeOtherSessions`.\nexport type ChangePasswordInput = z.input<typeof changeInputSchema>;\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { ChangePasswordInput, ResetInput, ResetRequestInput } from './schemas';\nimport { changeInputSchema, resetInputSchema, resetRequestInputSchema } from './schemas';\n\nexport const createPassword = (client: AuthOpenApiFetchClient) => {\n // Fire-and-forget from the caller's view: the backend always answers 202 and reveals nothing about\n // whether the account exists. Resolves on 202; rejects on 429 (rate limited) or 400.\n const resetRequest = async (input: ResetRequestInput, signal?: AbortSignal) => {\n const body = resetRequestInputSchema.parse(input);\n await client.post('/v1/auth/password/reset-request', { body }, { signal });\n };\n\n // Applies the new password for the given reset token. Resolves on 204; rejects on 400 (invalid or\n // expired token, or a password that violates the policy).\n const reset = async (input: ResetInput, signal?: AbortSignal) => {\n // `revokeSessions` is defaulted by the schema, so the parsed body always carries all three\n // fields the endpoint requires — no field omission, no type assertion.\n const body = resetInputSchema.parse(input);\n await client.post('/v1/auth/password/reset', { body }, { signal });\n };\n\n // Changes the password for the signed-in user (bearer session). Resolves on 204; rejects on 400\n // (wrong current password, or a new password that violates the policy). Password policy is\n // backend-enforced.\n const change = async (input: ChangePasswordInput, signal?: AbortSignal) => {\n const body = changeInputSchema.parse(input);\n await client.post('/v1/auth/password/change', { body }, { signal });\n };\n\n return { resetRequest, reset, change };\n};\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type {\n CreatePatBodyRaw,\n CreatePatInput,\n ExchangePatBodyRaw,\n ExchangePatInput,\n PatScopeInput,\n RevokePatPath,\n} from './types';\n\n/**\n * Drop the keys whose value is `null` or `undefined`, and only those — an empty array or string is\n * a value the caller meant.\n *\n * The spec documents each optional PAT field as \"Omit (do not send `null`)\". Callers hold nullables\n * either way — an empty expiry picker, an untouched switch — so the rule lives here rather than at\n * every call site, where one of them would forget it.\n */\nconst withoutNullish = (entries: Record<string, unknown>): Record<string, unknown> =>\n Object.fromEntries(Object.entries(entries).filter(([, value]) => value != null));\n\n/** `undefined` for a scope that narrows nothing — which is what an absent `scope` already asks for. */\nconst toScope = (scope: PatScopeInput | null | undefined): Record<string, unknown> | undefined => {\n if (scope == null) return undefined;\n\n const payload = withoutNullish({ projects: scope.projects, readOnly: scope.readOnly });\n return Object.keys(payload).length > 0 ? payload : undefined;\n};\n\n// `as unknown as` at these two boundaries: `CreatePatBodyRaw` and `ExchangePatBodyRaw` both demand\n// the keys the endpoint documents as omittable, so the honest body is not expressible in either.\nconst toCreateBody = ({ name, expiresIn, scope }: CreatePatInput): CreatePatBodyRaw =>\n ({\n name,\n ...withoutNullish({ expiresIn, scope: toScope(scope) }),\n }) as unknown as CreatePatBodyRaw;\n\nconst toExchangeBody = ({ expiresIn, scope }: ExchangePatInput): ExchangePatBodyRaw =>\n withoutNullish({ expiresIn, scope: toScope(scope) }) as unknown as ExchangePatBodyRaw;\n\nexport const createPat = (client: AuthOpenApiFetchClient) => {\n const getAll = async (signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/pat', {}, { signal });\n return data;\n };\n\n const create = async (input: CreatePatInput, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/pat', { body: toCreateBody(input) }, { signal });\n return data;\n };\n\n /**\n * Issue a child token from the one this request is authorized with.\n *\n * A child only ever attenuates its parent, so an empty input is a full-inheritance copy.\n */\n const exchange = async (input: ExchangePatInput = {}, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/v1/auth/pat/exchange',\n { body: toExchangeBody(input) },\n { signal },\n );\n return data;\n };\n\n const revoke = async (id: RevokePatPath['id'], signal?: AbortSignal) => {\n await client.delete('/v1/auth/pat/{id}', { path: { id } }, { signal });\n };\n\n return { create, exchange, revoke, getAll };\n};\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { GetPkceTokenBody } from './types';\n\nexport const createPkce = (client: AuthOpenApiFetchClient) => {\n const getToken = async (body: GetPkceTokenBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/pkce/token', { body }, { signal });\n return data;\n };\n\n return { getToken };\n};\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { AssertSamlBody, InitiateSamlBody } from './types';\n\nexport const createSaml = (client: AuthOpenApiFetchClient) => {\n const assert = async (body: AssertSamlBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/saml/assert', { body }, { signal });\n return data;\n };\n\n const initiate = async (body?: InitiateSamlBody, signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/saml/initiate', { body }, { signal });\n return data;\n };\n\n return { assert, initiate };\n};\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { RevokeSessionPath } from './types';\n\nexport const createSession = (client: AuthOpenApiFetchClient) => {\n const getAll = async (signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/sessions', {}, { signal });\n return data;\n };\n\n const revoke = async (sessionId: RevokeSessionPath['sessionId'], signal?: AbortSignal) => {\n await client.delete('/v1/auth/sessions/{sessionId}', { path: { sessionId } }, { signal });\n };\n\n const revokeAll = async (signal?: AbortSignal) => {\n await client.delete('/v1/auth/sessions', {}, { signal });\n };\n\n return { getAll, revoke, revokeAll };\n};\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { SudoBody, SudoBodyRaw } from './types';\n\nexport const createSudo = (client: AuthOpenApiFetchClient) => {\n const verify = async (body: SudoBody, signal?: AbortSignal) => {\n // The generated request body (`SudoBodyRaw`) describes a payload the endpoint rejects — see the\n // `SudoBody` docs. Assert at this one boundary rather than making every caller send the invalid\n // shape; the real fix is the `#[OA\\Schema]`-vs-object mismatch on the backend, upstream of the\n // generated schema. Same pattern as `syncActionsClient`'s `PostActionsBodyRaw`.\n const { data } = await client.post(\n '/v1/auth/sudo',\n { body: body as unknown as SudoBodyRaw },\n { signal },\n );\n return data;\n };\n\n const challenge = async (signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/sudo/challenge', {}, { signal });\n return data;\n };\n\n return { verify, challenge };\n};\n","import * as z from 'zod';\n\nexport const refreshTokenInputSchema = z.object({\n refreshToken: z.string().min(1, 'Required'),\n});\n\nexport const refreshSessionInputSchema = z.object({\n // The session id the login response carried. The refresh token itself stays in a server-side\n // channel bound to the session cookie, so the client never holds it.\n sessionId: z.string().min(1, 'Required'),\n});\n\nexport type RefreshTokenInput = z.infer<typeof refreshTokenInputSchema>;\nexport type RefreshSessionInput = z.infer<typeof refreshSessionInputSchema>;\n","import { HttpHeader } from '../../../fetchClient';\nimport { KeboolaHttpHeader } from '../../../internal';\nimport type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type { RefreshSessionInput, RefreshTokenInput } from './schemas';\nimport { refreshSessionInputSchema, refreshTokenInputSchema } from './schemas';\nimport type { RefreshTokenBody, RefreshTokenPartialBody, RevokeTokenBody } from './types';\n\nexport const createToken = (client: AuthOpenApiFetchClient) => {\n const _refresh = async (\n body: RefreshTokenPartialBody,\n { signal, headers }: { signal?: AbortSignal; headers?: Record<string, string> } = {},\n ) => {\n const { data } = await client.post(\n '/v1/auth/token/refresh',\n { body: body as RefreshTokenBody },\n { signal, headers },\n );\n\n return data;\n };\n\n /** API mode: rotates the pair. The response carries the next refresh token. */\n const refreshWithToken = async (input: RefreshTokenInput, signal?: AbortSignal) => {\n const { refreshToken } = refreshTokenInputSchema.parse(input);\n return _refresh({ refreshToken }, { signal });\n };\n\n /**\n * Browser/cookie mode: renews the access token off the session cookie.\n *\n * - The `X-KBC-CSRF` header opts in; without it the request is API mode.\n * - Its value is a constant: its presence is the CSRF proof (custom headers need a preflight).\n * - No refresh token in the response; it stays server-side, bound to the cookie.\n * - Works only from the stack's own origin (fetch's default `same-origin` credentials).\n * - An `Authorization` header rejects the request — use a client with no auth middleware.\n */\n const refreshWithSession = async (input: RefreshSessionInput, signal?: AbortSignal) => {\n const { sessionId } = refreshSessionInputSchema.parse(input);\n return _refresh({ sessionId }, { signal, headers: { [KeboolaHttpHeader.CSRF]: '1' } });\n };\n\n /**\n * Introspects an authenticated session token.\n *\n * @param token - Optional token to introspect (`Authorization: Bearer`); a middleware-set header wins.\n */\n const introspect = async (token?: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/v1/auth/token/introspect',\n {},\n { signal, headers: token ? { [HttpHeader.AUTHORIZATION]: `Bearer ${token}` } : undefined },\n );\n return data;\n };\n\n const revoke = async (body: RevokeTokenBody, signal?: AbortSignal) => {\n await client.post('/v1/auth/token/revoke', { body }, { signal });\n };\n\n return { refreshWithToken, refreshWithSession, introspect, revoke };\n};\n","import type { AuthOpenApiFetchClient } from '../authClient';\n\nimport type {\n RegisterWebauthnInput,\n RegisterWebauthnOptionsResult,\n RemoveWebauthnInput,\n} from './types';\n\nexport const createWebauthn = (client: AuthOpenApiFetchClient) => {\n const getAll = async (signal?: AbortSignal) => {\n const { data } = await client.get('/v1/auth/webauthn', {}, { signal });\n return data;\n };\n\n const registerOptions = async (signal?: AbortSignal) => {\n const { data } = await client.post('/v1/auth/webauthn/register/options', {}, { signal });\n // Cast: the spec types the free-form `options` object as `Record<string, never>`.\n return data as RegisterWebauthnOptionsResult;\n };\n\n const register = async (\n { credential, deviceName = null, revokeOtherSessions = false }: RegisterWebauthnInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/v1/auth/webauthn/register',\n { body: { credential, deviceName, revokeOtherSessions } },\n { signal },\n );\n return data;\n };\n\n // `revokeOtherSessions` signs every other session out along with the credential — the calling\n // session and personal access tokens survive. Omitted means the backend's own `false`.\n const remove = async ({ id, ...query }: RemoveWebauthnInput, signal?: AbortSignal) => {\n await client.delete('/v1/auth/webauthn/{id}', { path: { id }, query }, { signal });\n };\n\n return { getAll, registerOptions, register, remove };\n};\n","import { createGenericFetchClient, createOpenapiFetchClient } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\nimport { validateConnectionStatus } from '../validateConnectionStatus';\n\nimport type { paths } from './__generated__/schema';\nimport { createDevice } from './device';\nimport { createLogin } from './login';\nimport { createManageTokens } from './manageTokens';\nimport { createMe } from './me';\nimport { createMfa } from './mfa';\nimport { createPassword } from './password';\nimport { createPat } from './pat';\nimport { createPkce } from './pkce';\nimport { createSaml } from './saml';\nimport { createSession } from './session';\nimport { createSudo } from './sudo';\nimport { createToken } from './token';\nimport { createWebauthn } from './webauthn';\n\nexport type AuthClientInitOptions = Omit<ClientInitOptions, 'auth'>;\n\nexport type AuthOpenApiFetchClient = ReturnType<typeof createOpenapiFetchClient<paths>>;\n\nexport const createAuthClient = ({ baseUrl, middlewares }: AuthClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n validateStatus: validateConnectionStatus,\n });\n const genericClient = createGenericFetchClient({\n baseUrl,\n middlewares,\n validateStatus: validateConnectionStatus,\n });\n\n // Host-level: Connection serves the storage, management and auth APIs off one baseUrl, so this\n // probes the host, not this API's prefix — `/v2/storage/health-check`, `/manage/health-check`\n // and `/v1/auth/health-check` all 404.\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n login: createLogin(client),\n mfa: createMfa(client),\n password: createPassword(client),\n saml: createSaml(client),\n pat: createPat(client),\n manageTokens: createManageTokens(client),\n me: createMe(client),\n device: createDevice(client),\n sudo: createSudo(client),\n pkce: createPkce(client),\n session: createSession(client),\n token: createToken(client),\n webauthn: createWebauthn(client),\n };\n};\n"],"mappings":"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"}