@keboola/api-client 35.0.0 → 39.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 (268) hide show
  1. package/AGENTS.md +12 -3
  2. package/API-SURFACE.md +14 -1
  3. package/CHANGELOG.md +102 -0
  4. package/README.md +19 -17
  5. package/dist/{ManagementClientAuthError-ey-f03vy.js → ManagementClientAuthError-Cr9IOsnJ.js} +3 -2
  6. package/dist/{ManagementClientAuthError-ey-f03vy.js.map → ManagementClientAuthError-Cr9IOsnJ.js.map} +1 -1
  7. package/dist/{ManagementClientAuthError-DD4u0EU7.cjs → ManagementClientAuthError-FcfMJNhr.cjs} +3 -2
  8. package/dist/{ManagementClientAuthError-DD4u0EU7.cjs.map → ManagementClientAuthError-FcfMJNhr.cjs.map} +1 -1
  9. package/dist/ai/index.cjs +2 -2
  10. package/dist/ai/index.js +2 -2
  11. package/dist/{appLogs-BjfUoWzs.cjs → appLogs-C_zP0lpv.cjs} +2 -2
  12. package/dist/{appLogs-BjfUoWzs.cjs.map → appLogs-C_zP0lpv.cjs.map} +1 -1
  13. package/dist/{appLogs-xsVkTriU.js → appLogs-Cl7Q_MR9.js} +2 -2
  14. package/dist/{appLogs-xsVkTriU.js.map → appLogs-Cl7Q_MR9.js.map} +1 -1
  15. package/dist/apps/index.cjs +29 -22
  16. package/dist/apps/index.cjs.map +1 -1
  17. package/dist/apps/index.d.cts +31 -73
  18. package/dist/apps/index.d.ts +31 -73
  19. package/dist/apps/index.js +29 -22
  20. package/dist/apps/index.js.map +1 -1
  21. package/dist/apps/types.d.cts +2 -2
  22. package/dist/apps/types.d.ts +2 -2
  23. package/dist/assets/index.cjs +1 -1
  24. package/dist/assets/index.js +1 -1
  25. package/dist/auth/index.cjs +1 -1
  26. package/dist/auth/index.js +1 -1
  27. package/dist/{auth-aItmDu45.js → auth-BjmkFOgd.js} +2 -2
  28. package/dist/{auth-aItmDu45.js.map → auth-BjmkFOgd.js.map} +1 -1
  29. package/dist/{auth-JQ33o3nU.cjs → auth-DLWnl18b.cjs} +2 -2
  30. package/dist/{auth-JQ33o3nU.cjs.map → auth-DLWnl18b.cjs.map} +1 -1
  31. package/dist/{authClient-_PpvGgZJ.cjs → authClient-8yU1last.cjs} +5 -5
  32. package/dist/{authClient-_PpvGgZJ.cjs.map → authClient-8yU1last.cjs.map} +1 -1
  33. package/dist/{authClient-D7W9vWPR.js → authClient-BTo4Afm6.js} +5 -5
  34. package/dist/{authClient-D7W9vWPR.js.map → authClient-BTo4Afm6.js.map} +1 -1
  35. package/dist/billing/index.cjs +2 -2
  36. package/dist/billing/index.js +2 -2
  37. package/dist/businessWorkspaceApi/index.cjs +3 -0
  38. package/dist/businessWorkspaceApi/index.d.cts +2 -0
  39. package/dist/businessWorkspaceApi/index.d.ts +2 -0
  40. package/dist/businessWorkspaceApi/index.js +2 -0
  41. package/dist/businessWorkspaceApi/types.cjs +0 -0
  42. package/dist/businessWorkspaceApi/types.d.cts +2 -0
  43. package/dist/businessWorkspaceApi/types.d.ts +2 -0
  44. package/dist/businessWorkspaceApi/types.js +1 -0
  45. package/dist/businessWorkspaceApi-BD-iUj07.js +61 -0
  46. package/dist/businessWorkspaceApi-BD-iUj07.js.map +1 -0
  47. package/dist/businessWorkspaceApi-wyBdbpIJ.cjs +66 -0
  48. package/dist/businessWorkspaceApi-wyBdbpIJ.cjs.map +1 -0
  49. package/dist/businessWorkspaceApiClient-C2WyWN3b.d.ts +529 -0
  50. package/dist/businessWorkspaceApiClient-CRM1U8b-.d.cts +529 -0
  51. package/dist/chat/index.cjs +5 -5
  52. package/dist/chat/index.cjs.map +1 -1
  53. package/dist/chat/index.d.cts +1 -1
  54. package/dist/chat/index.d.ts +1 -1
  55. package/dist/chat/index.js +5 -5
  56. package/dist/chat/index.js.map +1 -1
  57. package/dist/constants/index.cjs +1 -1
  58. package/dist/constants/index.d.cts +2 -2
  59. package/dist/constants/index.d.ts +2 -2
  60. package/dist/constants/index.js +1 -1
  61. package/dist/{constants-wfbFsqqN.js → constants-C2tYAJSj.js} +10 -1
  62. package/dist/constants-C2tYAJSj.js.map +1 -0
  63. package/dist/{constants-C4DlsF_M.cjs → constants-C6xku_Vx.cjs} +10 -1
  64. package/dist/constants-C6xku_Vx.cjs.map +1 -0
  65. package/dist/{createFetchClient-DgMiqTJ8.cjs → createFetchClient-BlgPbjFj.cjs} +14 -2
  66. package/dist/createFetchClient-BlgPbjFj.cjs.map +1 -0
  67. package/dist/{createFetchClient-U-ZrwPl2.js → createFetchClient-C-cadpBx.js} +14 -2
  68. package/dist/createFetchClient-C-cadpBx.js.map +1 -0
  69. package/dist/{createGenericFetchClient-rxvUUbap.js → createGenericFetchClient-Bnf1QK9W.js} +2 -2
  70. package/dist/{createGenericFetchClient-rxvUUbap.js.map → createGenericFetchClient-Bnf1QK9W.js.map} +1 -1
  71. package/dist/{createGenericFetchClient-o3cPJeRn.cjs → createGenericFetchClient-lcozzwk2.cjs} +2 -2
  72. package/dist/{createGenericFetchClient-o3cPJeRn.cjs.map → createGenericFetchClient-lcozzwk2.cjs.map} +1 -1
  73. package/dist/{createOpenapiFetchClient-DhUU3M1W.cjs → createOpenapiFetchClient-C3UmDXpe.cjs} +2 -2
  74. package/dist/{createOpenapiFetchClient-DhUU3M1W.cjs.map → createOpenapiFetchClient-C3UmDXpe.cjs.map} +1 -1
  75. package/dist/{createOpenapiFetchClient-BVSc9ibR.js → createOpenapiFetchClient-COaPeeQ0.js} +2 -2
  76. package/dist/{createOpenapiFetchClient-BVSc9ibR.js.map → createOpenapiFetchClient-COaPeeQ0.js.map} +1 -1
  77. package/dist/{credential-DVWvJFJs.cjs → credential-CAulvfZ-.cjs} +2 -2
  78. package/dist/{credential-DVWvJFJs.cjs.map → credential-CAulvfZ-.cjs.map} +1 -1
  79. package/dist/{credential-CihSf_xs.js → credential-DWXbo4IX.js} +2 -2
  80. package/dist/{credential-CihSf_xs.js.map → credential-DWXbo4IX.js.map} +1 -1
  81. package/dist/dataScience/index.cjs +2 -2
  82. package/dist/dataScience/index.js +2 -2
  83. package/dist/{dataScience-C1gO5zUn.js → dataScience-B_BmnB1m.js} +5 -5
  84. package/dist/{dataScience-C1gO5zUn.js.map → dataScience-B_BmnB1m.js.map} +1 -1
  85. package/dist/{dataScience-0Rl_EuV_.cjs → dataScience-D-hyc4GY.cjs} +5 -5
  86. package/dist/{dataScience-0Rl_EuV_.cjs.map → dataScience-D-hyc4GY.cjs.map} +1 -1
  87. package/dist/developerPortal/index.cjs +1 -1
  88. package/dist/developerPortal/index.js +1 -1
  89. package/dist/{developerPortalClient-ki0XS_OD.cjs → developerPortalClient-CutPqoAa.cjs} +3 -3
  90. package/dist/{developerPortalClient-ki0XS_OD.cjs.map → developerPortalClient-CutPqoAa.cjs.map} +1 -1
  91. package/dist/{developerPortalClient-C_48z8BN.js → developerPortalClient-yHFTkKPb.js} +3 -3
  92. package/dist/{developerPortalClient-C_48z8BN.js.map → developerPortalClient-yHFTkKPb.js.map} +1 -1
  93. package/dist/domain/permissions/index.d.cts +2 -2
  94. package/dist/domain/permissions/index.d.ts +2 -2
  95. package/dist/editor/index.cjs +2 -2
  96. package/dist/editor/index.js +2 -2
  97. package/dist/encryption/index.cjs +1 -1
  98. package/dist/encryption/index.d.cts +1 -1
  99. package/dist/encryption/index.d.ts +1 -1
  100. package/dist/encryption/index.js +1 -1
  101. package/dist/encryption/types.d.cts +1 -1
  102. package/dist/encryption/types.d.ts +1 -1
  103. package/dist/import/index.cjs +1 -1
  104. package/dist/import/index.js +1 -1
  105. package/dist/{import-C83w7BKz.cjs → import-7YyyD_U_.cjs} +3 -3
  106. package/dist/{import-C83w7BKz.cjs.map → import-7YyyD_U_.cjs.map} +1 -1
  107. package/dist/{import-CROEK82b.js → import-xliONVib.js} +3 -3
  108. package/dist/{import-CROEK82b.js.map → import-xliONVib.js.map} +1 -1
  109. package/dist/{index-D8rcUbnk.d.ts → index-1r_CskjU.d.ts} +2 -2
  110. package/dist/{index-P-iT5THa.d.ts → index-BK-qHT39.d.ts} +8 -4
  111. package/dist/{index-BLx14ZI4.d.cts → index-CHXnJQ9s.d.cts} +117 -76
  112. package/dist/{index-Dodwl64k.d.cts → index-CWoEnDJ_.d.cts} +8 -4
  113. package/dist/{index-NaYLwG_h.d.ts → index-DBklbaTp.d.cts} +9 -1
  114. package/dist/{index-NaYLwG_h.d.cts → index-DBklbaTp.d.ts} +9 -1
  115. package/dist/{index-BgLnWTZU.d.cts → index-DVw4Av4b.d.cts} +4 -4
  116. package/dist/{index-DR4QqItd.d.cts → index-DWf6FXOr.d.cts} +2 -2
  117. package/dist/{index-CqgtL2NU.d.ts → index-De5qUWhp.d.ts} +4 -4
  118. package/dist/{index-DFBFa3SS.d.ts → index-GfKzh267.d.ts} +117 -76
  119. package/dist/index.cjs +30 -19
  120. package/dist/index.cjs.map +1 -1
  121. package/dist/index.d.cts +3 -3
  122. package/dist/index.d.ts +3 -3
  123. package/dist/index.js +30 -20
  124. package/dist/index.js.map +1 -1
  125. package/dist/{isLoginPageRedirect-B0EmRsHr.cjs → isLoginPageRedirect-Cm6Pn8Pj.cjs} +2 -2
  126. package/dist/{isLoginPageRedirect-B0EmRsHr.cjs.map → isLoginPageRedirect-Cm6Pn8Pj.cjs.map} +1 -1
  127. package/dist/{isLoginPageRedirect-BTTAedW-.js → isLoginPageRedirect-hyPqyWNX.js} +2 -2
  128. package/dist/{isLoginPageRedirect-BTTAedW-.js.map → isLoginPageRedirect-hyPqyWNX.js.map} +1 -1
  129. package/dist/kaiAgent/index.cjs +1 -1
  130. package/dist/kaiAgent/index.d.cts +1 -1
  131. package/dist/kaiAgent/index.d.ts +1 -1
  132. package/dist/kaiAgent/index.js +1 -1
  133. package/dist/kaiAgent/types.d.cts +2 -2
  134. package/dist/kaiAgent/types.d.ts +2 -2
  135. package/dist/{kaiAgent-8LNzGhZc.js → kaiAgent-CcT2oNip.js} +41 -6
  136. package/dist/kaiAgent-CcT2oNip.js.map +1 -0
  137. package/dist/{kaiAgent-B_TaUPRt.cjs → kaiAgent-DaB6UCsh.cjs} +41 -6
  138. package/dist/kaiAgent-DaB6UCsh.cjs.map +1 -0
  139. package/dist/{kaiAgentClient-BJj_2aqt.d.ts → kaiAgentClient-B5L4gbQ1.d.ts} +8 -3
  140. package/dist/{kaiAgentClient-DhTaM3GC.d.cts → kaiAgentClient-CHpULyeG.d.cts} +8 -3
  141. package/dist/management/index.cjs +1 -1
  142. package/dist/management/index.d.cts +2 -2
  143. package/dist/management/index.d.ts +2 -2
  144. package/dist/management/index.js +1 -1
  145. package/dist/management/types.d.cts +2 -2
  146. package/dist/management/types.d.ts +2 -2
  147. package/dist/{management-BoxlRNg2.cjs → management-DeZiQSlw.cjs} +41 -8
  148. package/dist/management-DeZiQSlw.cjs.map +1 -0
  149. package/dist/{management-Bp440RsV.js → management-ckdnu1dA.js} +41 -8
  150. package/dist/management-ckdnu1dA.js.map +1 -0
  151. package/dist/metastore/index.cjs +1 -1
  152. package/dist/metastore/index.js +1 -1
  153. package/dist/{metastore-BYYWTb3m.cjs → metastore-9AGrwjmN.cjs} +4 -4
  154. package/dist/{metastore-BYYWTb3m.cjs.map → metastore-9AGrwjmN.cjs.map} +1 -1
  155. package/dist/{metastore-VCDRVhUT.js → metastore-B0PolCjQ.js} +4 -4
  156. package/dist/{metastore-VCDRVhUT.js.map → metastore-B0PolCjQ.js.map} +1 -1
  157. package/dist/microsoftGraph/index.cjs +2 -2
  158. package/dist/microsoftGraph/index.js +2 -2
  159. package/dist/notifications/index.cjs +3 -3
  160. package/dist/notifications/index.js +3 -3
  161. package/dist/oauth/index.cjs +1 -1
  162. package/dist/oauth/index.js +1 -1
  163. package/dist/{oauth--asfePw-.js → oauth-BnHVf4cB.js} +5 -5
  164. package/dist/{oauth--asfePw-.js.map → oauth-BnHVf4cB.js.map} +1 -1
  165. package/dist/{oauth-B8yqG6Sy.cjs → oauth-DNtv4Ihb.cjs} +5 -5
  166. package/dist/{oauth-B8yqG6Sy.cjs.map → oauth-DNtv4Ihb.cjs.map} +1 -1
  167. package/dist/omnisearch/index.cjs +2 -2
  168. package/dist/omnisearch/index.js +2 -2
  169. package/dist/{project-hePfzUY0.d.cts → project-BRpzv3yE.d.cts} +2 -2
  170. package/dist/{project-C2wvX0xZ.d.ts → project-DCHOxRWd.d.ts} +2 -2
  171. package/dist/queryService/index.cjs +1 -1
  172. package/dist/queryService/index.d.cts +1 -1
  173. package/dist/queryService/index.d.ts +1 -1
  174. package/dist/queryService/index.js +1 -1
  175. package/dist/{queryService-BVtjkXy1.cjs → queryService-BVwD6Vmc.cjs} +5 -5
  176. package/dist/{queryService-BVtjkXy1.cjs.map → queryService-BVwD6Vmc.cjs.map} +1 -1
  177. package/dist/{queryService-Ca65E5KH.js → queryService-j3XZ2mX6.js} +5 -5
  178. package/dist/{queryService-Ca65E5KH.js.map → queryService-j3XZ2mX6.js.map} +1 -1
  179. package/dist/queue/index.cjs +1 -1
  180. package/dist/queue/index.d.cts +1 -1
  181. package/dist/queue/index.d.ts +1 -1
  182. package/dist/queue/index.js +1 -1
  183. package/dist/{queue-DyotLFJi.js → queue-Dagl0sdP.js} +4 -4
  184. package/dist/{queue-DyotLFJi.js.map → queue-Dagl0sdP.js.map} +1 -1
  185. package/dist/{queue-OJJUUqc2.cjs → queue-e3rMWbmK.cjs} +4 -4
  186. package/dist/{queue-OJJUUqc2.cjs.map → queue-e3rMWbmK.cjs.map} +1 -1
  187. package/dist/scheduler/index.cjs +3 -3
  188. package/dist/scheduler/index.js +3 -3
  189. package/dist/sdk/configurations/index.d.cts +4 -4
  190. package/dist/sdk/configurations/index.d.ts +4 -4
  191. package/dist/sdk/developerPortal/index.cjs +3 -3
  192. package/dist/sdk/developerPortal/index.js +3 -3
  193. package/dist/sdk/queryService/index.d.cts +1 -1
  194. package/dist/sdk/queryService/index.d.ts +1 -1
  195. package/dist/sdk/semanticLayer/index.cjs +1 -1
  196. package/dist/sdk/semanticLayer/index.js +1 -1
  197. package/dist/sdk/storage/index.d.cts +1 -1
  198. package/dist/sdk/storage/index.d.ts +1 -1
  199. package/dist/sdk/vault/index.d.cts +1 -1
  200. package/dist/sdk/vault/index.d.ts +1 -1
  201. package/dist/{semanticLayer-CSqmtHRo.js → semanticLayer-6_gtFxDu.js} +38 -5
  202. package/dist/semanticLayer-6_gtFxDu.js.map +1 -0
  203. package/dist/{semanticLayer-E0Vilu8u.cjs → semanticLayer-9uTaU7UT.cjs} +38 -5
  204. package/dist/semanticLayer-9uTaU7UT.cjs.map +1 -0
  205. package/dist/{serviceIds-DRcoTnSd.d.ts → serviceIds-DC-H6ZD9.d.cts} +2 -1
  206. package/dist/{serviceIds-DRcoTnSd.d.cts → serviceIds-DC-H6ZD9.d.ts} +2 -1
  207. package/dist/status/index.cjs +1 -1
  208. package/dist/status/index.js +1 -1
  209. package/dist/storage/index.cjs +5 -4
  210. package/dist/storage/index.d.cts +2 -2
  211. package/dist/storage/index.d.ts +2 -2
  212. package/dist/storage/index.js +5 -5
  213. package/dist/storage/types.d.cts +3 -3
  214. package/dist/storage/types.d.ts +3 -3
  215. package/dist/{storage-BKm7cztt.cjs → storage-HFUdEy7P.cjs} +43 -6
  216. package/dist/storage-HFUdEy7P.cjs.map +1 -0
  217. package/dist/{storage-LYwFQPNO.js → storage-Ob1LUIDq.js} +38 -7
  218. package/dist/storage-Ob1LUIDq.js.map +1 -0
  219. package/dist/stream/index.cjs +3 -3
  220. package/dist/stream/index.js +3 -3
  221. package/dist/syncActions/index.cjs +1 -1
  222. package/dist/syncActions/index.js +1 -1
  223. package/dist/{syncActions-QeBhIVhG.js → syncActions-B3NS5a0g.js} +5 -5
  224. package/dist/{syncActions-QeBhIVhG.js.map → syncActions-B3NS5a0g.js.map} +1 -1
  225. package/dist/{syncActions-OEZdVffK.cjs → syncActions-D2DhY6pP.cjs} +5 -5
  226. package/dist/{syncActions-OEZdVffK.cjs.map → syncActions-D2DhY6pP.cjs.map} +1 -1
  227. package/dist/telemetry/index.cjs +3 -3
  228. package/dist/telemetry/index.js +3 -3
  229. package/dist/{types-B3GOGUJ7.d.cts → types-B-P4vQe0.d.cts} +47 -2
  230. package/dist/{types-DEc55spK.d.ts → types-B95uNQ9o.d.ts} +3 -3
  231. package/dist/{types-BQsOHNI0.d.ts → types-BrPlv-NS.d.ts} +3 -3
  232. package/dist/{types-DjrRmQUe.d.cts → types-CmF3pR2n.d.cts} +3 -3
  233. package/dist/{types-f8W_j6qD.d.cts → types-Crhy0c9m.d.cts} +657 -199
  234. package/dist/{types-CBgLCkYe.d.ts → types-D6UmMa6E.d.ts} +224 -401
  235. package/dist/{types-DPS8nwkV.d.cts → types-DOyNe7oe.d.cts} +2 -1
  236. package/dist/{types-BMeDOB_D.d.ts → types-DPl8pZsY.d.ts} +47 -2
  237. package/dist/{types-DARv_P6O.d.cts → types-DXskkNp8.d.cts} +224 -401
  238. package/dist/{types-CaYtinmA.d.cts → types-D_j2Uq5X.d.cts} +3 -3
  239. package/dist/{types-BupPADSm.d.ts → types-DrqKICcK.d.ts} +657 -199
  240. package/dist/{types-DBOSvWtD.d.ts → types-gi4Eay19.d.ts} +2 -1
  241. package/dist/{validateConnectionStatus-olE2sQ3U.js → validateConnectionStatus-828HV8WL.js} +4 -3
  242. package/dist/validateConnectionStatus-828HV8WL.js.map +1 -0
  243. package/dist/{validateConnectionStatus-CsvYmCOI.cjs → validateConnectionStatus-CvBKyeDO.cjs} +4 -3
  244. package/dist/validateConnectionStatus-CvBKyeDO.cjs.map +1 -0
  245. package/dist/vault/index.cjs +4 -4
  246. package/dist/vault/index.js +4 -4
  247. package/package.json +34 -8
  248. package/surface/apps.md +11 -11
  249. package/surface/billing.md +2 -2
  250. package/surface/businessWorkspaceApi.md +12 -0
  251. package/surface/chat.md +1 -1
  252. package/surface/editor.md +5 -5
  253. package/surface/kaiAgent.md +5 -2
  254. package/surface/management.md +4 -0
  255. package/dist/constants-C4DlsF_M.cjs.map +0 -1
  256. package/dist/constants-wfbFsqqN.js.map +0 -1
  257. package/dist/createFetchClient-DgMiqTJ8.cjs.map +0 -1
  258. package/dist/createFetchClient-U-ZrwPl2.js.map +0 -1
  259. package/dist/kaiAgent-8LNzGhZc.js.map +0 -1
  260. package/dist/kaiAgent-B_TaUPRt.cjs.map +0 -1
  261. package/dist/management-BoxlRNg2.cjs.map +0 -1
  262. package/dist/management-Bp440RsV.js.map +0 -1
  263. package/dist/semanticLayer-CSqmtHRo.js.map +0 -1
  264. package/dist/semanticLayer-E0Vilu8u.cjs.map +0 -1
  265. package/dist/storage-BKm7cztt.cjs.map +0 -1
  266. package/dist/storage-LYwFQPNO.js.map +0 -1
  267. package/dist/validateConnectionStatus-CsvYmCOI.cjs.map +0 -1
  268. package/dist/validateConnectionStatus-olE2sQ3U.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","createAuthHeaders","readAppLogsTail","readAppLogsDownload"],"sources":["../../src/clients/apps/appsClient.ts"],"sourcesContent":["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 GetAppRunsQuery,\n GetAppsQuery,\n GetLogsTailQuery,\n RunId,\n} from './types';\n\n/**\n * No `idempotencyKey`. The service accepted an `Idempotency-Key` that turned a replayed create\n * into a no-op, and support for it was **dropped on 17 Aug 2026** — the spec still documents the\n * header and has yet to catch up. It was\n * unusable from a browser in any case — the service's `Access-Control-Allow-Headers` never listed\n * the header, so sending it failed the preflight and the request never left the page.\n *\n * Every create here is therefore a genuine create, and a caller that retries one is responsible\n * for the duplicate it may produce.\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 plus the immutable deployment history behind them. Sibling of\n * the `dataScience` client, which wraps the same service's `/v1` surface.\n *\n * `baseUrl` must already point past the `/v2` prefix (`https://<data-science-host>/v2`); the\n * registry composes it — see `createServiceClients`.\n *\n * Two documented endpoints are deliberately absent: `PATCH /apps/{appId}` has no patchable field\n * yet (`name`/`description` are create-only, so `{}` is the only accepted body), and\n * `POST /apps/{appId}/activity` is apps-proxy's heartbeat, authenticated by a Manage API token with\n * the `apps:proxy` scope that this storage-token client cannot supply.\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 (`appName`, `appVersion`, `apiDocs`) — 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. Content (`parameters`) and auth\n * (`authorization.app_proxy`) are written afterwards through the Storage API, on the config named\n * by the response's `componentId`/`branchId`/`configId`.\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 /**\n * Drops production routing — the app's URL 404s afterwards. `null` when there was nothing to\n * unpublish (already unpublished, or never deployed via `/v2`): the service answers `204`.\n */\n const unpublishApp = async (appId: AppId, signal?: AbortSignal): Promise<App | null> => {\n const { data } = await client.post('/apps/{appId}/unpublish', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * Sleeps the app now instead of waiting for the idle timer, and disarms wake-on-request: a\n * visitor gets a `503` until an explicit {@link resumeApp}. `null` when already suspended (`204`).\n */\n const suspendApp = async (appId: AppId, signal?: AbortSignal): Promise<App | null> => {\n const { data } = await client.post('/apps/{appId}/suspend', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * Wakes the app now and re-arms wake-on-request. `null` when it was already running (`204`).\n * The returned app reports `STARTING` — the operator has not confirmed it serving yet.\n */\n const resumeApp = async (appId: AppId, signal?: AbortSignal): Promise<App | null> => {\n const { data } = await client.post('/apps/{appId}/resume', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** `password` is `null` until one is minted — by the app's first deployment or {@link resetAppPassword}. */\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 /** Mints a fresh password, replacing any existing one. Read it back with {@link getAppPassword}. */\n const resetAppPassword = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/apps/{appId}/reset-password',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Runs of the app, newest first — app-wide, so this is where a failed deployment's cause lives\n * (`failureReason`, `startupLogs`). Narrow to one deployment with `query.deploymentId`.\n */\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 app's current config version as a new immutable deployment, promoting it unless\n * `body.promote` is `false` (a staged release never runs until promoted). The id and `number` come\n * back 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 /** Full history, retired (`archived: true`) deployments included — rows outlive their workloads. */\n const getDeployments = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/deployments', { path: { appId } }, { signal });\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 /**\n * Retires the deployment: the workload and its rendered-config secret go, the row stays in\n * history as `archived`. Rejected with a `409` while the app's `production` still names it.\n */\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 — the same call rolls back, applied to an older one. The route\n * switches only once the target serves, so the returned app's `production.desiredId` and\n * `.actualId` differ until it converges. `null` when it was already production (`204`).\n */\n const promoteDeployment = async (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ): Promise<App | null> => {\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 /**\n * Container output of the app's currently serving member. `query.since` and `query.lines` are\n * mutually exclusive; passing neither returns the log from its start.\n */\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 /** The app's Git repository — managed or external. `409` when it has none 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 /** Credentials of the app's managed repository, per app rather than 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 returns its `secret` here and nowhere else — store it now or lose it. */\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 getAppGitRepoCredentials,\n getAppGitRepoCredential,\n createAppGitRepoCredential,\n deleteAppGitRepoCredential,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","createAuthHeaders","readAppLogsTail","readAppLogsDownload"],"sources":["../../src/clients/apps/appsClient.ts"],"sourcesContent":["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 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 accepts no `Idempotency-Key`, so every create here is a\n * genuine create and a caller that retries one owns the duplicate it may produce.\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 plus the immutable deployment history behind them. Sibling of\n * the `dataScience` client, which wraps the same service's `/v1` surface.\n *\n * `baseUrl` must already point past the `/v2` prefix (`https://<data-science-host>/v2`); the\n * registry composes it — see `createServiceClients`.\n *\n * One documented endpoint is deliberately absent: `POST /apps/{appId}/activity` is apps-proxy's\n * heartbeat, authenticated by a Manage API token with the `apps:proxy` scope that this\n * storage-token client cannot supply.\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 (`appName`, `appVersion`, `apiDocs`) — 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. Content (`parameters`) and auth\n * (`authorization.app_proxy`) are written afterwards through the Storage API, on the config named\n * by the response's `componentId`/`branchId`/`configId`.\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 /**\n * Drops production routing — the app's URL 404s afterwards. A no-op (already unpublished, or\n * never deployed) returns the app unchanged rather than failing.\n */\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 /**\n * Sleeps the app now instead of waiting for the idle timer, and disarms wake-on-request: a\n * visitor gets a `503` until an explicit {@link resumeApp}. A no-op on an already suspended app.\n */\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 /**\n * Wakes the app now and re-arms wake-on-request. A no-op on an already running app.\n * The returned app reports `starting` — the operator has not confirmed it serving yet.\n */\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 /** `password` is `null` until one is minted — by the app's first deployment or {@link resetAppPassword}. */\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 /** Mints a fresh password, replacing any existing one. 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 /**\n * Runs of the app, newest first — app-wide, so this is where a failed deployment's cause lives\n * (`failureReason`, `startupLogs`). Narrow to one deployment with `query.deploymentId`.\n */\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 app's current config version as a new immutable deployment, promoting it unless\n * `body.promote` is `false` (a staged release never runs until promoted). Pin an older config\n * version with `body.configVersion`. The deployment comes back 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 /**\n * Deployment history, newest page first.\n *\n * - `query.archived` filters on whether the deployment was deleted; omitting it returns both.\n * - A deleted deployment keeps its row — history outlives the workload.\n */\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 /**\n * Deletes the deployment: its running resources and credentials go, the row stays in history as\n * `archived`. Rejected with a `409` while the app's `production` still names it.\n */\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 — the same call rolls back, applied to an older one. The route\n * switches only once the target serves, so the returned app's `production.desiredDeploymentId`\n * and `.actualDeploymentId` differ until it converges.\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 /**\n * Container output of the app's currently serving member. `query.since` and `query.lines` are\n * mutually exclusive; passing neither returns the log from its start.\n */\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 /** The app's Git repository — managed or external. `409` when it has none 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 /** Credentials of the app's managed repository, per app rather than 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 returns its `secret` here and nowhere else — store it now or lose it. */\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 getAppGitRepoCredentials,\n getAppGitRepoCredential,\n createAppGitRepoCredential,\n deleteAppGitRepoCredential,\n };\n};\n"],"mappings":"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"}
@@ -1,16 +1,12 @@
1
1
  import { n as ClientInitOptions } from "../types-_RhBCj4_.cjs";
2
- import { S as components, b as GetLogsTailQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as RunId, y as GetAppsQuery } from "../types-DARv_P6O.cjs";
2
+ import { C as components, S as RunId, b as GetDeploymentsQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as GetLogsTailQuery, y as GetAppsQuery } from "../types-DXskkNp8.cjs";
3
3
  import { t as LogEntry } from "../appLogs-D5A13Y0y.cjs";
4
4
  //#region src/clients/apps/appsClient.d.ts
5
5
  /**
6
- * No `idempotencyKey`. The service accepted an `Idempotency-Key` that turned a replayed create
7
- * into a no-op, and support for it was **dropped on 17 Aug 2026** — the spec still documents the
8
- * header and has yet to catch up. It was
9
- * unusable from a browser in any case — the service's `Access-Control-Allow-Headers` never listed
10
- * the header, so sending it failed the preflight and the request never left the page.
6
+ * Options every write takes.
11
7
  *
12
- * Every create here is therefore a genuine create, and a caller that retries one is responsible
13
- * for the duplicate it may produce.
8
+ * - No `idempotencyKey`: the service accepts no `Idempotency-Key`, so every create here is a
9
+ * genuine create and a caller that retries one owns the duplicate it may produce.
14
10
  */
15
11
  type WriteOptions = {
16
12
  signal?: AbortSignal;
@@ -26,10 +22,9 @@ type LogsTailOptions = {
26
22
  * `baseUrl` must already point past the `/v2` prefix (`https://<data-science-host>/v2`); the
27
23
  * registry composes it — see `createServiceClients`.
28
24
  *
29
- * Two documented endpoints are deliberately absent: `PATCH /apps/{appId}` has no patchable field
30
- * yet (`name`/`description` are create-only, so `{}` is the only accepted body), and
31
- * `POST /apps/{appId}/activity` is apps-proxy's heartbeat, authenticated by a Manage API token with
32
- * the `apps:proxy` scope that this storage-token client cannot supply.
25
+ * One documented endpoint is deliberately absent: `POST /apps/{appId}/activity` is apps-proxy's
26
+ * heartbeat, authenticated by a Manage API token with the `apps:proxy` scope that this
27
+ * storage-token client cannot supply.
33
28
  */
34
29
  declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
35
30
  healthCheck: (signal?: AbortSignal) => Promise<{
@@ -43,18 +38,13 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
43
38
  componentId: string;
44
39
  branchId: string | null;
45
40
  configId: string;
46
- configVersion: string;
47
41
  type?: 'streamlit' | 'python-js' | null;
48
- mode?: 'prod' | 'dev';
49
42
  url: string | null;
50
43
  production: {
51
- desiredNumber?: number | null;
52
- desiredId?: string | null;
53
- actualNumber?: number | null;
54
- actualId?: string | null;
44
+ desiredDeploymentId?: string | null;
45
+ actualDeploymentId?: string | null;
55
46
  };
56
- undeployedChanges?: boolean;
57
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
47
+ state: 'notDeployed' | 'starting' | 'running' | 'suspended' | 'disabled';
58
48
  }[]>;
59
49
  getApp: (appId: AppId, signal?: AbortSignal) => Promise<{
60
50
  id: string;
@@ -62,18 +52,13 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
62
52
  componentId: string;
63
53
  branchId: string | null;
64
54
  configId: string;
65
- configVersion: string;
66
55
  type?: 'streamlit' | 'python-js' | null;
67
- mode?: 'prod' | 'dev';
68
56
  url: string | null;
69
57
  production: {
70
- desiredNumber?: number | null;
71
- desiredId?: string | null;
72
- actualNumber?: number | null;
73
- actualId?: string | null;
58
+ desiredDeploymentId?: string | null;
59
+ actualDeploymentId?: string | null;
74
60
  };
75
- undeployedChanges?: boolean;
76
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
61
+ state: 'notDeployed' | 'starting' | 'running' | 'suspended' | 'disabled';
77
62
  }>;
78
63
  createApp: (body: CreateAppBody, options?: WriteOptions) => Promise<{
79
64
  id: string;
@@ -81,44 +66,23 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
81
66
  componentId: string;
82
67
  branchId: string | null;
83
68
  configId: string;
84
- configVersion: string;
85
69
  type?: 'streamlit' | 'python-js' | null;
86
- mode?: 'prod' | 'dev';
87
70
  url: string | null;
88
71
  production: {
89
- desiredNumber?: number | null;
90
- desiredId?: string | null;
91
- actualNumber?: number | null;
92
- actualId?: string | null;
72
+ desiredDeploymentId?: string | null;
73
+ actualDeploymentId?: string | null;
93
74
  };
94
- undeployedChanges?: boolean;
95
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
75
+ state: 'notDeployed' | 'starting' | 'running' | 'suspended' | 'disabled';
96
76
  }>;
97
77
  deleteApp: (appId: AppId, signal?: AbortSignal) => Promise<void>;
98
- unpublishApp: (appId: AppId, signal?: AbortSignal) => Promise<App | null>;
99
- suspendApp: (appId: AppId, signal?: AbortSignal) => Promise<App | null>;
100
- resumeApp: (appId: AppId, signal?: AbortSignal) => Promise<App | null>;
78
+ unpublishApp: (appId: AppId, signal?: AbortSignal) => Promise<App>;
79
+ suspendApp: (appId: AppId, signal?: AbortSignal) => Promise<App>;
80
+ resumeApp: (appId: AppId, signal?: AbortSignal) => Promise<App>;
101
81
  getAppPassword: (appId: AppId, signal?: AbortSignal) => Promise<{
102
82
  password?: string | null;
103
83
  }>;
104
84
  resetAppPassword: (appId: AppId, signal?: AbortSignal) => Promise<{
105
- id: string;
106
- projectId: string;
107
- componentId: string;
108
- branchId: string | null;
109
- configId: string;
110
- configVersion: string;
111
- type?: 'streamlit' | 'python-js' | null;
112
- mode?: 'prod' | 'dev';
113
- url: string | null;
114
- production: {
115
- desiredNumber?: number | null;
116
- desiredId?: string | null;
117
- actualNumber?: number | null;
118
- actualId?: string | null;
119
- };
120
- undeployedChanges?: boolean;
121
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
85
+ password: string;
122
86
  }>;
123
87
  getAppRuns: (appId: AppId, query?: GetAppRunsQuery, signal?: AbortSignal) => Promise<{
124
88
  id: string;
@@ -160,45 +124,39 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
160
124
  }>;
161
125
  createDeployment: (appId: AppId, body?: CreateDeploymentBody, options?: WriteOptions) => Promise<{
162
126
  id: string;
163
- number: number;
164
- configId: string;
165
127
  configVersion: string;
166
128
  gitCommitSha: string | null;
167
- size?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
168
- buildState: 'PREBUILT' | 'PENDING' | 'BUILDING' | 'BUILT' | 'FAILED';
169
- runState: 'NEVER_RUN' | 'PENDING' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'STOPPED' | 'FAILED';
129
+ runtimeSize?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
130
+ buildState: 'pending' | 'building' | 'ready' | 'failed';
131
+ runState: 'neverRun' | 'pending' | 'starting' | 'running' | 'stopping' | 'stopped' | 'failed';
170
132
  archived: boolean;
171
133
  archivedAt: string | null;
172
134
  createdAt: string;
173
135
  }>;
174
- getDeployments: (appId: AppId, signal?: AbortSignal) => Promise<{
136
+ getDeployments: (appId: AppId, query?: GetDeploymentsQuery, signal?: AbortSignal) => Promise<{
175
137
  id: string;
176
- number: number;
177
- configId: string;
178
138
  configVersion: string;
179
139
  gitCommitSha: string | null;
180
- size?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
181
- buildState: 'PREBUILT' | 'PENDING' | 'BUILDING' | 'BUILT' | 'FAILED';
182
- runState: 'NEVER_RUN' | 'PENDING' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'STOPPED' | 'FAILED';
140
+ runtimeSize?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
141
+ buildState: 'pending' | 'building' | 'ready' | 'failed';
142
+ runState: 'neverRun' | 'pending' | 'starting' | 'running' | 'stopping' | 'stopped' | 'failed';
183
143
  archived: boolean;
184
144
  archivedAt: string | null;
185
145
  createdAt: string;
186
146
  }[]>;
187
147
  getDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<{
188
148
  id: string;
189
- number: number;
190
- configId: string;
191
149
  configVersion: string;
192
150
  gitCommitSha: string | null;
193
- size?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
194
- buildState: 'PREBUILT' | 'PENDING' | 'BUILDING' | 'BUILT' | 'FAILED';
195
- runState: 'NEVER_RUN' | 'PENDING' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'STOPPED' | 'FAILED';
151
+ runtimeSize?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
152
+ buildState: 'pending' | 'building' | 'ready' | 'failed';
153
+ runState: 'neverRun' | 'pending' | 'starting' | 'running' | 'stopping' | 'stopped' | 'failed';
196
154
  archived: boolean;
197
155
  archivedAt: string | null;
198
156
  createdAt: string;
199
157
  }>;
200
158
  deleteDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<void>;
201
- promoteDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<App | null>;
159
+ promoteDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<App>;
202
160
  getAppLogsTail: (appId: AppId, { query, signal }?: LogsTailOptions) => Promise<{
203
161
  entries: LogEntry[];
204
162
  nextLogTimestamp: string | null;
@@ -1,16 +1,12 @@
1
1
  import { n as ClientInitOptions } from "../types-Ct0YPy2w.js";
2
- import { S as components, b as GetLogsTailQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as RunId, y as GetAppsQuery } from "../types-CBgLCkYe.js";
2
+ import { C as components, S as RunId, b as GetDeploymentsQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as GetLogsTailQuery, y as GetAppsQuery } from "../types-D6UmMa6E.js";
3
3
  import { t as LogEntry } from "../appLogs-Ch7DYpzx.js";
4
4
  //#region src/clients/apps/appsClient.d.ts
5
5
  /**
6
- * No `idempotencyKey`. The service accepted an `Idempotency-Key` that turned a replayed create
7
- * into a no-op, and support for it was **dropped on 17 Aug 2026** — the spec still documents the
8
- * header and has yet to catch up. It was
9
- * unusable from a browser in any case — the service's `Access-Control-Allow-Headers` never listed
10
- * the header, so sending it failed the preflight and the request never left the page.
6
+ * Options every write takes.
11
7
  *
12
- * Every create here is therefore a genuine create, and a caller that retries one is responsible
13
- * for the duplicate it may produce.
8
+ * - No `idempotencyKey`: the service accepts no `Idempotency-Key`, so every create here is a
9
+ * genuine create and a caller that retries one owns the duplicate it may produce.
14
10
  */
15
11
  type WriteOptions = {
16
12
  signal?: AbortSignal;
@@ -26,10 +22,9 @@ type LogsTailOptions = {
26
22
  * `baseUrl` must already point past the `/v2` prefix (`https://<data-science-host>/v2`); the
27
23
  * registry composes it — see `createServiceClients`.
28
24
  *
29
- * Two documented endpoints are deliberately absent: `PATCH /apps/{appId}` has no patchable field
30
- * yet (`name`/`description` are create-only, so `{}` is the only accepted body), and
31
- * `POST /apps/{appId}/activity` is apps-proxy's heartbeat, authenticated by a Manage API token with
32
- * the `apps:proxy` scope that this storage-token client cannot supply.
25
+ * One documented endpoint is deliberately absent: `POST /apps/{appId}/activity` is apps-proxy's
26
+ * heartbeat, authenticated by a Manage API token with the `apps:proxy` scope that this
27
+ * storage-token client cannot supply.
33
28
  */
34
29
  declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
35
30
  healthCheck: (signal?: AbortSignal) => Promise<{
@@ -43,18 +38,13 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
43
38
  componentId: string;
44
39
  branchId: string | null;
45
40
  configId: string;
46
- configVersion: string;
47
41
  type?: 'streamlit' | 'python-js' | null;
48
- mode?: 'prod' | 'dev';
49
42
  url: string | null;
50
43
  production: {
51
- desiredNumber?: number | null;
52
- desiredId?: string | null;
53
- actualNumber?: number | null;
54
- actualId?: string | null;
44
+ desiredDeploymentId?: string | null;
45
+ actualDeploymentId?: string | null;
55
46
  };
56
- undeployedChanges?: boolean;
57
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
47
+ state: 'notDeployed' | 'starting' | 'running' | 'suspended' | 'disabled';
58
48
  }[]>;
59
49
  getApp: (appId: AppId, signal?: AbortSignal) => Promise<{
60
50
  id: string;
@@ -62,18 +52,13 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
62
52
  componentId: string;
63
53
  branchId: string | null;
64
54
  configId: string;
65
- configVersion: string;
66
55
  type?: 'streamlit' | 'python-js' | null;
67
- mode?: 'prod' | 'dev';
68
56
  url: string | null;
69
57
  production: {
70
- desiredNumber?: number | null;
71
- desiredId?: string | null;
72
- actualNumber?: number | null;
73
- actualId?: string | null;
58
+ desiredDeploymentId?: string | null;
59
+ actualDeploymentId?: string | null;
74
60
  };
75
- undeployedChanges?: boolean;
76
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
61
+ state: 'notDeployed' | 'starting' | 'running' | 'suspended' | 'disabled';
77
62
  }>;
78
63
  createApp: (body: CreateAppBody, options?: WriteOptions) => Promise<{
79
64
  id: string;
@@ -81,44 +66,23 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
81
66
  componentId: string;
82
67
  branchId: string | null;
83
68
  configId: string;
84
- configVersion: string;
85
69
  type?: 'streamlit' | 'python-js' | null;
86
- mode?: 'prod' | 'dev';
87
70
  url: string | null;
88
71
  production: {
89
- desiredNumber?: number | null;
90
- desiredId?: string | null;
91
- actualNumber?: number | null;
92
- actualId?: string | null;
72
+ desiredDeploymentId?: string | null;
73
+ actualDeploymentId?: string | null;
93
74
  };
94
- undeployedChanges?: boolean;
95
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
75
+ state: 'notDeployed' | 'starting' | 'running' | 'suspended' | 'disabled';
96
76
  }>;
97
77
  deleteApp: (appId: AppId, signal?: AbortSignal) => Promise<void>;
98
- unpublishApp: (appId: AppId, signal?: AbortSignal) => Promise<App | null>;
99
- suspendApp: (appId: AppId, signal?: AbortSignal) => Promise<App | null>;
100
- resumeApp: (appId: AppId, signal?: AbortSignal) => Promise<App | null>;
78
+ unpublishApp: (appId: AppId, signal?: AbortSignal) => Promise<App>;
79
+ suspendApp: (appId: AppId, signal?: AbortSignal) => Promise<App>;
80
+ resumeApp: (appId: AppId, signal?: AbortSignal) => Promise<App>;
101
81
  getAppPassword: (appId: AppId, signal?: AbortSignal) => Promise<{
102
82
  password?: string | null;
103
83
  }>;
104
84
  resetAppPassword: (appId: AppId, signal?: AbortSignal) => Promise<{
105
- id: string;
106
- projectId: string;
107
- componentId: string;
108
- branchId: string | null;
109
- configId: string;
110
- configVersion: string;
111
- type?: 'streamlit' | 'python-js' | null;
112
- mode?: 'prod' | 'dev';
113
- url: string | null;
114
- production: {
115
- desiredNumber?: number | null;
116
- desiredId?: string | null;
117
- actualNumber?: number | null;
118
- actualId?: string | null;
119
- };
120
- undeployedChanges?: boolean;
121
- state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
85
+ password: string;
122
86
  }>;
123
87
  getAppRuns: (appId: AppId, query?: GetAppRunsQuery, signal?: AbortSignal) => Promise<{
124
88
  id: string;
@@ -160,45 +124,39 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
160
124
  }>;
161
125
  createDeployment: (appId: AppId, body?: CreateDeploymentBody, options?: WriteOptions) => Promise<{
162
126
  id: string;
163
- number: number;
164
- configId: string;
165
127
  configVersion: string;
166
128
  gitCommitSha: string | null;
167
- size?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
168
- buildState: 'PREBUILT' | 'PENDING' | 'BUILDING' | 'BUILT' | 'FAILED';
169
- runState: 'NEVER_RUN' | 'PENDING' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'STOPPED' | 'FAILED';
129
+ runtimeSize?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
130
+ buildState: 'pending' | 'building' | 'ready' | 'failed';
131
+ runState: 'neverRun' | 'pending' | 'starting' | 'running' | 'stopping' | 'stopped' | 'failed';
170
132
  archived: boolean;
171
133
  archivedAt: string | null;
172
134
  createdAt: string;
173
135
  }>;
174
- getDeployments: (appId: AppId, signal?: AbortSignal) => Promise<{
136
+ getDeployments: (appId: AppId, query?: GetDeploymentsQuery, signal?: AbortSignal) => Promise<{
175
137
  id: string;
176
- number: number;
177
- configId: string;
178
138
  configVersion: string;
179
139
  gitCommitSha: string | null;
180
- size?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
181
- buildState: 'PREBUILT' | 'PENDING' | 'BUILDING' | 'BUILT' | 'FAILED';
182
- runState: 'NEVER_RUN' | 'PENDING' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'STOPPED' | 'FAILED';
140
+ runtimeSize?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
141
+ buildState: 'pending' | 'building' | 'ready' | 'failed';
142
+ runState: 'neverRun' | 'pending' | 'starting' | 'running' | 'stopping' | 'stopped' | 'failed';
183
143
  archived: boolean;
184
144
  archivedAt: string | null;
185
145
  createdAt: string;
186
146
  }[]>;
187
147
  getDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<{
188
148
  id: string;
189
- number: number;
190
- configId: string;
191
149
  configVersion: string;
192
150
  gitCommitSha: string | null;
193
- size?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
194
- buildState: 'PREBUILT' | 'PENDING' | 'BUILDING' | 'BUILT' | 'FAILED';
195
- runState: 'NEVER_RUN' | 'PENDING' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'STOPPED' | 'FAILED';
151
+ runtimeSize?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
152
+ buildState: 'pending' | 'building' | 'ready' | 'failed';
153
+ runState: 'neverRun' | 'pending' | 'starting' | 'running' | 'stopping' | 'stopped' | 'failed';
196
154
  archived: boolean;
197
155
  archivedAt: string | null;
198
156
  createdAt: string;
199
157
  }>;
200
158
  deleteDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<void>;
201
- promoteDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<App | null>;
159
+ promoteDeployment: (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => Promise<App>;
202
160
  getAppLogsTail: (appId: AppId, { query, signal }?: LogsTailOptions) => Promise<{
203
161
  entries: LogEntry[];
204
162
  nextLogTimestamp: string | null;
@@ -1,6 +1,6 @@
1
- import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-BVSc9ibR.js";
2
- import { t as createAuthHeaders } from "../auth-aItmDu45.js";
3
- import { n as readAppLogsDownload, r as readAppLogsTail } from "../appLogs-xsVkTriU.js";
1
+ import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-COaPeeQ0.js";
2
+ import { t as createAuthHeaders } from "../auth-BjmkFOgd.js";
3
+ import { n as readAppLogsDownload, r as readAppLogsTail } from "../appLogs-Cl7Q_MR9.js";
4
4
  //#region src/clients/apps/appsClient.ts
5
5
  /**
6
6
  * `/v2` App Deployments — data apps plus the immutable deployment history behind them. Sibling of
@@ -9,10 +9,9 @@ import { n as readAppLogsDownload, r as readAppLogsTail } from "../appLogs-xsVkT
9
9
  * `baseUrl` must already point past the `/v2` prefix (`https://<data-science-host>/v2`); the
10
10
  * registry composes it — see `createServiceClients`.
11
11
  *
12
- * Two documented endpoints are deliberately absent: `PATCH /apps/{appId}` has no patchable field
13
- * yet (`name`/`description` are create-only, so `{}` is the only accepted body), and
14
- * `POST /apps/{appId}/activity` is apps-proxy's heartbeat, authenticated by a Manage API token with
15
- * the `apps:proxy` scope that this storage-token client cannot supply.
12
+ * One documented endpoint is deliberately absent: `POST /apps/{appId}/activity` is apps-proxy's
13
+ * heartbeat, authenticated by a Manage API token with the `apps:proxy` scope that this
14
+ * storage-token client cannot supply.
16
15
  */
17
16
  const createAppsClient = ({ baseUrl, middlewares, auth }) => {
18
17
  const client = createOpenapiFetchClient({
@@ -47,8 +46,8 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
47
46
  await client.delete("/apps/{appId}", { path: { appId } }, { signal });
48
47
  };
49
48
  /**
50
- * Drops production routing — the app's URL 404s afterwards. `null` when there was nothing to
51
- * unpublish (already unpublished, or never deployed via `/v2`): the service answers `204`.
49
+ * Drops production routing — the app's URL 404s afterwards. A no-op (already unpublished, or
50
+ * never deployed) returns the app unchanged rather than failing.
52
51
  */
53
52
  const unpublishApp = async (appId, signal) => {
54
53
  const { data } = await client.post("/apps/{appId}/unpublish", { path: { appId } }, { signal });
@@ -56,15 +55,15 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
56
55
  };
57
56
  /**
58
57
  * Sleeps the app now instead of waiting for the idle timer, and disarms wake-on-request: a
59
- * visitor gets a `503` until an explicit {@link resumeApp}. `null` when already suspended (`204`).
58
+ * visitor gets a `503` until an explicit {@link resumeApp}. A no-op on an already suspended app.
60
59
  */
61
60
  const suspendApp = async (appId, signal) => {
62
61
  const { data } = await client.post("/apps/{appId}/suspend", { path: { appId } }, { signal });
63
62
  return data;
64
63
  };
65
64
  /**
66
- * Wakes the app now and re-arms wake-on-request. `null` when it was already running (`204`).
67
- * The returned app reports `STARTING` — the operator has not confirmed it serving yet.
65
+ * Wakes the app now and re-arms wake-on-request. A no-op on an already running app.
66
+ * The returned app reports `starting` — the operator has not confirmed it serving yet.
68
67
  */
69
68
  const resumeApp = async (appId, signal) => {
70
69
  const { data } = await client.post("/apps/{appId}/resume", { path: { appId } }, { signal });
@@ -77,7 +76,7 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
77
76
  };
78
77
  /** Mints a fresh password, replacing any existing one. Read it back with {@link getAppPassword}. */
79
78
  const resetAppPassword = async (appId, signal) => {
80
- const { data } = await client.post("/apps/{appId}/reset-password", { path: { appId } }, { signal });
79
+ const { data } = await client.post("/apps/{appId}/password/reset", { path: { appId } }, { signal });
81
80
  return data;
82
81
  };
83
82
  /**
@@ -100,8 +99,8 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
100
99
  };
101
100
  /**
102
101
  * Deploys the app's current config version as a new immutable deployment, promoting it unless
103
- * `body.promote` is `false` (a staged release never runs until promoted). The id and `number` come
104
- * back synchronously; readiness does not.
102
+ * `body.promote` is `false` (a staged release never runs until promoted). Pin an older config
103
+ * version with `body.configVersion`. The deployment comes back synchronously; readiness does not.
105
104
  */
106
105
  const createDeployment = async (appId, body, options = {}) => {
107
106
  const { data } = await client.post("/apps/{appId}/deployments", {
@@ -110,9 +109,17 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
110
109
  }, writeOptions(options));
111
110
  return data;
112
111
  };
113
- /** Full history, retired (`archived: true`) deployments included — rows outlive their workloads. */
114
- const getDeployments = async (appId, signal) => {
115
- const { data } = await client.get("/apps/{appId}/deployments", { path: { appId } }, { signal });
112
+ /**
113
+ * Deployment history, newest page first.
114
+ *
115
+ * - `query.archived` filters on whether the deployment was deleted; omitting it returns both.
116
+ * - A deleted deployment keeps its row — history outlives the workload.
117
+ */
118
+ const getDeployments = async (appId, query = {}, signal) => {
119
+ const { data } = await client.get("/apps/{appId}/deployments", {
120
+ path: { appId },
121
+ query
122
+ }, { signal });
116
123
  return data;
117
124
  };
118
125
  const getDeployment = async (appId, deploymentId, signal) => {
@@ -123,8 +130,8 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
123
130
  return data;
124
131
  };
125
132
  /**
126
- * Retires the deployment: the workload and its rendered-config secret go, the row stays in
127
- * history as `archived`. Rejected with a `409` while the app's `production` still names it.
133
+ * Deletes the deployment: its running resources and credentials go, the row stays in history as
134
+ * `archived`. Rejected with a `409` while the app's `production` still names it.
128
135
  */
129
136
  const deleteDeployment = async (appId, deploymentId, signal) => {
130
137
  await client.delete("/apps/{appId}/deployments/{deploymentId}", { path: {
@@ -134,8 +141,8 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
134
141
  };
135
142
  /**
136
143
  * Makes this deployment production — the same call rolls back, applied to an older one. The route
137
- * switches only once the target serves, so the returned app's `production.desiredId` and
138
- * `.actualId` differ until it converges. `null` when it was already production (`204`).
144
+ * switches only once the target serves, so the returned app's `production.desiredDeploymentId`
145
+ * and `.actualDeploymentId` differ until it converges.
139
146
  */
140
147
  const promoteDeployment = async (appId, deploymentId, signal) => {
141
148
  const { data } = await client.post("/apps/{appId}/deployments/{deploymentId}/promote", { path: {