@keboola/api-client 24.0.0 → 27.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 (485) hide show
  1. package/AGENTS.md +489 -0
  2. package/API-SURFACE.md +129 -57
  3. package/README.md +29 -25
  4. package/dist/{ManagementClientAuthError-C7q1Jd9I.d.ts → ManagementClientAuthError-4J0S5tV-.d.ts} +1 -1
  5. package/dist/{ManagementClientAuthError-BuqHAOBO.d.cts → ManagementClientAuthError-CyDpa4NS.d.cts} +1 -1
  6. package/dist/{adminRoles-Cil1lavB.d.cts → adminRoles-BSUPLfNf.d.cts} +1 -7
  7. package/dist/{adminRoles-Cil1lavB.d.ts → adminRoles-BSUPLfNf.d.ts} +1 -7
  8. package/dist/ai/index.cjs +4 -4
  9. package/dist/ai/index.d.cts +6 -3
  10. package/dist/ai/index.d.ts +6 -3
  11. package/dist/ai/index.js +3 -3
  12. package/dist/ai/types.d.cts +2 -2
  13. package/dist/ai/types.d.ts +2 -2
  14. package/dist/appLogs-BbgAJ5I8.d.cts +7 -0
  15. package/dist/appLogs-BbgAJ5I8.d.ts +7 -0
  16. package/dist/apps/index.cjs +16 -0
  17. package/dist/apps/index.cjs.map +1 -0
  18. package/dist/apps/index.d.cts +249 -0
  19. package/dist/apps/index.d.ts +249 -0
  20. package/dist/apps/index.js +7 -0
  21. package/dist/apps/index.js.map +1 -0
  22. package/dist/apps/types.cjs +4 -0
  23. package/dist/apps/types.cjs.map +1 -0
  24. package/dist/apps/types.d.cts +3 -0
  25. package/dist/apps/types.d.ts +3 -0
  26. package/dist/apps/types.js +3 -0
  27. package/dist/apps/types.js.map +1 -0
  28. package/dist/assets/index.cjs +2 -2
  29. package/dist/assets/index.d.cts +1 -1
  30. package/dist/assets/index.d.ts +1 -1
  31. package/dist/assets/index.js +1 -1
  32. package/dist/auth/index.cjs +17 -13
  33. package/dist/auth/index.d.cts +19 -6
  34. package/dist/auth/index.d.ts +19 -6
  35. package/dist/auth/index.js +2 -2
  36. package/dist/auth/types.d.cts +3 -3
  37. package/dist/auth/types.d.ts +3 -3
  38. package/dist/backends-UNp_e5y9.d.cts +7 -0
  39. package/dist/backends-UNp_e5y9.d.ts +7 -0
  40. package/dist/chat/index.cjs +4 -4
  41. package/dist/chat/index.d.cts +6 -3
  42. package/dist/chat/index.d.ts +6 -3
  43. package/dist/chat/index.js +3 -3
  44. package/dist/chat/types.d.cts +2 -2
  45. package/dist/chat/types.d.ts +2 -2
  46. package/dist/{chunk-LD3JERYP.js → chunk-24YVNNAG.js} +10 -4
  47. package/dist/chunk-24YVNNAG.js.map +1 -0
  48. package/dist/{chunk-CV2JGHBN.js → chunk-255CHZ3U.js} +23 -6
  49. package/dist/chunk-255CHZ3U.js.map +1 -0
  50. package/dist/{chunk-S4JK7DKM.js → chunk-2BCH2U57.js} +11 -5
  51. package/dist/chunk-2BCH2U57.js.map +1 -0
  52. package/dist/{chunk-XHDYLUM4.js → chunk-2BQBKU6E.js} +15 -13
  53. package/dist/chunk-2BQBKU6E.js.map +1 -0
  54. package/dist/{chunk-NVQ6LGDO.cjs → chunk-2JKTV7UG.cjs} +6 -6
  55. package/dist/{chunk-NVQ6LGDO.cjs.map → chunk-2JKTV7UG.cjs.map} +1 -1
  56. package/dist/chunk-3UBGQFBU.js +29 -0
  57. package/dist/chunk-3UBGQFBU.js.map +1 -0
  58. package/dist/chunk-57Q4CY4H.js +190 -0
  59. package/dist/chunk-57Q4CY4H.js.map +1 -0
  60. package/dist/{chunk-EDX5D6UY.js → chunk-5A3AQIXR.js} +3 -3
  61. package/dist/{chunk-EDX5D6UY.js.map → chunk-5A3AQIXR.js.map} +1 -1
  62. package/dist/{chunk-UABYNGBZ.js → chunk-5HEIR4DC.js} +4 -4
  63. package/dist/chunk-5HEIR4DC.js.map +1 -0
  64. package/dist/chunk-5SR2L35Y.cjs +1828 -0
  65. package/dist/chunk-5SR2L35Y.cjs.map +1 -0
  66. package/dist/{chunk-OUSPQ55W.js → chunk-62LG5KPI.js} +29 -7
  67. package/dist/chunk-62LG5KPI.js.map +1 -0
  68. package/dist/{chunk-HMCZUHR7.js → chunk-67P5UI6H.js} +9 -4
  69. package/dist/{chunk-2CFM7K4U.cjs.map → chunk-67P5UI6H.js.map} +1 -1
  70. package/dist/{chunk-HY7J3OD3.cjs → chunk-6PVEHUJL.cjs} +39 -29
  71. package/dist/chunk-6PVEHUJL.cjs.map +1 -0
  72. package/dist/chunk-6XFXU5N4.js +119 -0
  73. package/dist/chunk-6XFXU5N4.js.map +1 -0
  74. package/dist/chunk-6ZQBFK2Y.js +24 -0
  75. package/dist/chunk-6ZQBFK2Y.js.map +1 -0
  76. package/dist/{chunk-AFJGNBVM.cjs → chunk-AJ3SCWUB.cjs} +14 -8
  77. package/dist/chunk-AJ3SCWUB.cjs.map +1 -0
  78. package/dist/{chunk-GF4XZK5N.cjs → chunk-AXYNFDUI.cjs} +4 -4
  79. package/dist/chunk-AXYNFDUI.cjs.map +1 -0
  80. package/dist/{chunk-UP5SEEYZ.js → chunk-B45B4AYG.js} +61 -7
  81. package/dist/chunk-B45B4AYG.js.map +1 -0
  82. package/dist/{chunk-4VVF2PIX.js → chunk-B4T4QCLB.js} +10 -4
  83. package/dist/chunk-B4T4QCLB.js.map +1 -0
  84. package/dist/{chunk-XIIER7QQ.js → chunk-BGJWHTBJ.js} +10 -4
  85. package/dist/chunk-BGJWHTBJ.js.map +1 -0
  86. package/dist/chunk-BVRPZKRE.cjs +147 -0
  87. package/dist/chunk-BVRPZKRE.cjs.map +1 -0
  88. package/dist/chunk-BZB4UVQA.cjs +192 -0
  89. package/dist/chunk-BZB4UVQA.cjs.map +1 -0
  90. package/dist/{chunk-D3ZZQIY2.cjs → chunk-CHRBWCL7.cjs} +8 -8
  91. package/dist/chunk-CHRBWCL7.cjs.map +1 -0
  92. package/dist/{chunk-3PVERYSF.js → chunk-CPZME73I.js} +3 -3
  93. package/dist/{chunk-3PVERYSF.js.map → chunk-CPZME73I.js.map} +1 -1
  94. package/dist/{chunk-D6O5C67S.js → chunk-DVV35AIS.js} +7 -7
  95. package/dist/chunk-DVV35AIS.js.map +1 -0
  96. package/dist/{chunk-CWUQ6ZAO.cjs → chunk-E7GGDLAH.cjs} +25 -8
  97. package/dist/chunk-E7GGDLAH.cjs.map +1 -0
  98. package/dist/{chunk-J3NLKXQ5.cjs → chunk-EQPBR3BE.cjs} +15 -9
  99. package/dist/chunk-EQPBR3BE.cjs.map +1 -0
  100. package/dist/{chunk-SJZ66FD5.js → chunk-ERZEQ5JR.js} +8 -3
  101. package/dist/chunk-ERZEQ5JR.js.map +1 -0
  102. package/dist/{chunk-CWCUQACX.cjs → chunk-ES3ADC2G.cjs} +4 -4
  103. package/dist/{chunk-CWCUQACX.cjs.map → chunk-ES3ADC2G.cjs.map} +1 -1
  104. package/dist/{chunk-2CFM7K4U.cjs → chunk-FEAE6L3K.cjs} +13 -8
  105. package/dist/chunk-FEAE6L3K.cjs.map +1 -0
  106. package/dist/{chunk-IDWGBCSB.cjs → chunk-FVU7WU2H.cjs} +11 -6
  107. package/dist/chunk-FVU7WU2H.cjs.map +1 -0
  108. package/dist/{chunk-3BFPNM2J.js → chunk-FW5GBBKL.js} +11 -5
  109. package/dist/chunk-FW5GBBKL.js.map +1 -0
  110. package/dist/chunk-G2SWCC3X.js +90 -0
  111. package/dist/chunk-G2SWCC3X.js.map +1 -0
  112. package/dist/{chunk-KUYVBCUM.cjs → chunk-G3JHVIDZ.cjs} +63 -8
  113. package/dist/chunk-G3JHVIDZ.cjs.map +1 -0
  114. package/dist/{chunk-KH6BHTXN.js → chunk-HGKDXF35.js} +59 -108
  115. package/dist/chunk-HGKDXF35.js.map +1 -0
  116. package/dist/chunk-HITKHHWN.cjs +174 -0
  117. package/dist/chunk-HITKHHWN.cjs.map +1 -0
  118. package/dist/chunk-HQO572JW.cjs +34 -0
  119. package/dist/chunk-HQO572JW.cjs.map +1 -0
  120. package/dist/{chunk-MMOAH3EH.cjs → chunk-HUQ5ATIL.cjs} +15 -13
  121. package/dist/chunk-HUQ5ATIL.cjs.map +1 -0
  122. package/dist/{chunk-XKIENBIE.js → chunk-HZDVMHU6.js} +10 -4
  123. package/dist/chunk-HZDVMHU6.js.map +1 -0
  124. package/dist/{chunk-7R22VKV7.cjs → chunk-ICWUR5WA.cjs} +13 -7
  125. package/dist/chunk-ICWUR5WA.cjs.map +1 -0
  126. package/dist/{chunk-BR6WZE3O.cjs → chunk-IQFNHQWP.cjs} +9 -4
  127. package/dist/chunk-IQFNHQWP.cjs.map +1 -0
  128. package/dist/{chunk-7Z4MU7ZB.js → chunk-IZ4QM7O4.js} +32 -22
  129. package/dist/chunk-IZ4QM7O4.js.map +1 -0
  130. package/dist/{chunk-UWQUHP3T.cjs → chunk-J5JCXSAS.cjs} +11 -6
  131. package/dist/chunk-J5JCXSAS.cjs.map +1 -0
  132. package/dist/{chunk-LIXSIM3H.cjs → chunk-JI7HLIDL.cjs} +12 -6
  133. package/dist/chunk-JI7HLIDL.cjs.map +1 -0
  134. package/dist/chunk-JWISA775.cjs +92 -0
  135. package/dist/chunk-JWISA775.cjs.map +1 -0
  136. package/dist/chunk-K3BLXPLA.cjs +16 -0
  137. package/dist/{chunk-7RO6PKZ4.cjs.map → chunk-K3BLXPLA.cjs.map} +1 -1
  138. package/dist/{chunk-BZA3FGO6.js → chunk-KATUDT3E.js} +8 -3
  139. package/dist/chunk-KATUDT3E.js.map +1 -0
  140. package/dist/chunk-KGBWWS6I.js +32 -0
  141. package/dist/chunk-KGBWWS6I.js.map +1 -0
  142. package/dist/chunk-KQENBXPS.cjs +34 -0
  143. package/dist/chunk-KQENBXPS.cjs.map +1 -0
  144. package/dist/chunk-KTKJD4DM.js +60 -0
  145. package/dist/chunk-KTKJD4DM.js.map +1 -0
  146. package/dist/chunk-LNZP2O4P.js +169 -0
  147. package/dist/chunk-LNZP2O4P.js.map +1 -0
  148. package/dist/{chunk-2BOG5U7C.js → chunk-LWQP7OWA.js} +3 -3
  149. package/dist/{chunk-2BOG5U7C.js.map → chunk-LWQP7OWA.js.map} +1 -1
  150. package/dist/chunk-N4COL54U.cjs +22 -0
  151. package/dist/chunk-N4COL54U.cjs.map +1 -0
  152. package/dist/chunk-NFJKJGXR.js +397 -0
  153. package/dist/chunk-NFJKJGXR.js.map +1 -0
  154. package/dist/chunk-NH2TQGRL.cjs +28 -0
  155. package/dist/chunk-NH2TQGRL.cjs.map +1 -0
  156. package/dist/{chunk-XMC355U2.js → chunk-NHYL5QPM.js} +17 -3
  157. package/dist/chunk-NHYL5QPM.js.map +1 -0
  158. package/dist/{chunk-WFXW4XU3.js → chunk-ON4ILCHP.js} +899 -555
  159. package/dist/chunk-ON4ILCHP.js.map +1 -0
  160. package/dist/{chunk-T242YFMT.cjs → chunk-PLF4JX5B.cjs} +12 -7
  161. package/dist/chunk-PLF4JX5B.cjs.map +1 -0
  162. package/dist/{chunk-77LILJYX.js → chunk-QNF3L4B7.js} +9 -4
  163. package/dist/chunk-QNF3L4B7.js.map +1 -0
  164. package/dist/{chunk-NVRVPWNY.js → chunk-RBN3ITTM.js} +9 -4
  165. package/dist/chunk-RBN3ITTM.js.map +1 -0
  166. package/dist/{chunk-DRNOCC6W.cjs → chunk-RXYT7EMN.cjs} +31 -8
  167. package/dist/chunk-RXYT7EMN.cjs.map +1 -0
  168. package/dist/chunk-S46FMY4G.cjs +64 -0
  169. package/dist/chunk-S46FMY4G.cjs.map +1 -0
  170. package/dist/chunk-S6BWQKHJ.cjs +116 -0
  171. package/dist/chunk-S6BWQKHJ.cjs.map +1 -0
  172. package/dist/{chunk-3YWQQ3OG.cjs → chunk-SFTI6QFB.cjs} +13 -7
  173. package/dist/chunk-SFTI6QFB.cjs.map +1 -0
  174. package/dist/{chunk-7YXL4FKN.cjs → chunk-SNP577FA.cjs} +12 -6
  175. package/dist/chunk-SNP577FA.cjs.map +1 -0
  176. package/dist/{chunk-PPQF7LTS.cjs → chunk-SUVM3S2T.cjs} +15 -9
  177. package/dist/chunk-SUVM3S2T.cjs.map +1 -0
  178. package/dist/chunk-SYZ5OFNT.js +114 -0
  179. package/dist/chunk-SYZ5OFNT.js.map +1 -0
  180. package/dist/{chunk-FRLSKIUI.cjs → chunk-SZBW4EE2.cjs} +6 -6
  181. package/dist/{chunk-FRLSKIUI.cjs.map → chunk-SZBW4EE2.cjs.map} +1 -1
  182. package/dist/{chunk-G66EP527.js → chunk-TBHJQCAE.js} +9 -4
  183. package/dist/chunk-TBHJQCAE.js.map +1 -0
  184. package/dist/{chunk-EYIPM2XB.cjs → chunk-U3E5YMLO.cjs} +4 -4
  185. package/dist/{chunk-EYIPM2XB.cjs.map → chunk-U3E5YMLO.cjs.map} +1 -1
  186. package/dist/{chunk-34GM6NXB.js → chunk-UVX733BX.js} +10 -4
  187. package/dist/chunk-UVX733BX.js.map +1 -0
  188. package/dist/{chunk-FMS5PNM2.cjs → chunk-V6FT3RTU.cjs} +8 -3
  189. package/dist/chunk-V6FT3RTU.cjs.map +1 -0
  190. package/dist/{chunk-35MODDCL.cjs → chunk-VB56OVFM.cjs} +59 -111
  191. package/dist/chunk-VB56OVFM.cjs.map +1 -0
  192. package/dist/{chunk-5XWVWFTC.js → chunk-WQ7NNIJ3.js} +4 -4
  193. package/dist/{chunk-5XWVWFTC.js.map → chunk-WQ7NNIJ3.js.map} +1 -1
  194. package/dist/{chunk-DHOVQ2TW.js → chunk-WUFODWZV.js} +3 -3
  195. package/dist/{chunk-DHOVQ2TW.js.map → chunk-WUFODWZV.js.map} +1 -1
  196. package/dist/{chunk-3KEVPUSX.cjs → chunk-WUJ53PP7.cjs} +17 -3
  197. package/dist/chunk-WUJ53PP7.cjs.map +1 -0
  198. package/dist/chunk-YDOSWWE4.cjs +419 -0
  199. package/dist/chunk-YDOSWWE4.cjs.map +1 -0
  200. package/dist/chunk-YGEJDWGG.js +19 -0
  201. package/dist/chunk-YGEJDWGG.js.map +1 -0
  202. package/dist/constants/index.cjs +16 -164
  203. package/dist/constants/index.cjs.map +1 -1
  204. package/dist/constants/index.d.cts +14 -1
  205. package/dist/constants/index.d.ts +14 -1
  206. package/dist/constants/index.js +2 -163
  207. package/dist/constants/index.js.map +1 -1
  208. package/dist/createFetchClient-BHAsPDgF.d.cts +86 -0
  209. package/dist/createFetchClient-CFIwc6Lh.d.ts +86 -0
  210. package/dist/{createGenericFetchClient-Df_wFqT8.d.cts → createGenericFetchClient-JcbIIqwF.d.cts} +1 -1
  211. package/dist/{createGenericFetchClient-Sl1DH71J.d.ts → createGenericFetchClient-ZGG5wbAC.d.ts} +1 -1
  212. package/dist/{createOpenapiFetchClient-GZxZgYHd.d.cts → createOpenapiFetchClient-CduEua6F.d.cts} +2 -2
  213. package/dist/{createOpenapiFetchClient-BSy6dVM5.d.ts → createOpenapiFetchClient-wLlVgp3k.d.ts} +2 -2
  214. package/dist/dataScience/index.cjs +6 -5
  215. package/dist/dataScience/index.d.cts +8 -6
  216. package/dist/dataScience/index.d.ts +8 -6
  217. package/dist/dataScience/index.js +4 -3
  218. package/dist/dataScience/types.d.cts +2172 -2
  219. package/dist/dataScience/types.d.ts +2172 -2
  220. package/dist/domain/permissions/index.cjs +3 -3
  221. package/dist/domain/permissions/index.d.cts +5 -4
  222. package/dist/domain/permissions/index.d.ts +5 -4
  223. package/dist/domain/permissions/index.js +1 -1
  224. package/dist/editor/index.cjs +4 -4
  225. package/dist/editor/index.d.cts +6 -3
  226. package/dist/editor/index.d.ts +6 -3
  227. package/dist/editor/index.js +3 -3
  228. package/dist/editor/types.d.cts +2 -2
  229. package/dist/editor/types.d.ts +2 -2
  230. package/dist/encryption/index.cjs +3 -3
  231. package/dist/encryption/index.d.cts +6 -4
  232. package/dist/encryption/index.d.ts +6 -4
  233. package/dist/encryption/index.js +2 -2
  234. package/dist/encryption/types.d.cts +4 -3
  235. package/dist/encryption/types.d.ts +4 -3
  236. package/dist/import/index.cjs +4 -4
  237. package/dist/import/index.d.cts +6 -3
  238. package/dist/import/index.d.ts +6 -3
  239. package/dist/import/index.js +3 -3
  240. package/dist/index.cjs +228 -135
  241. package/dist/index.cjs.map +1 -1
  242. package/dist/index.d.cts +952 -463
  243. package/dist/index.d.ts +952 -463
  244. package/dist/index.js +98 -46
  245. package/dist/index.js.map +1 -1
  246. package/dist/management/index.cjs +5 -5
  247. package/dist/management/index.d.cts +62 -69
  248. package/dist/management/index.d.ts +62 -69
  249. package/dist/management/index.js +3 -3
  250. package/dist/management/types.d.cts +3 -3
  251. package/dist/management/types.d.ts +3 -3
  252. package/dist/metastore/index.cjs +4 -4
  253. package/dist/metastore/index.d.cts +6 -7
  254. package/dist/metastore/index.d.ts +6 -7
  255. package/dist/metastore/index.js +3 -3
  256. package/dist/metastore/types.d.cts +2 -2
  257. package/dist/metastore/types.d.ts +2 -2
  258. package/dist/notifications/index.cjs +5 -5
  259. package/dist/notifications/index.d.cts +4 -3
  260. package/dist/notifications/index.d.ts +4 -3
  261. package/dist/notifications/index.js +4 -4
  262. package/dist/notifications/types.d.cts +2 -2
  263. package/dist/notifications/types.d.ts +2 -2
  264. package/dist/oauth/index.cjs +4 -4
  265. package/dist/oauth/index.d.cts +3 -2
  266. package/dist/oauth/index.d.ts +3 -2
  267. package/dist/oauth/index.js +3 -3
  268. package/dist/oauth/types.d.cts +1 -1
  269. package/dist/oauth/types.d.ts +1 -1
  270. package/dist/omnisearch/index.cjs +14 -0
  271. package/dist/omnisearch/index.cjs.map +1 -0
  272. package/dist/omnisearch/index.d.cts +32 -0
  273. package/dist/omnisearch/index.d.ts +32 -0
  274. package/dist/omnisearch/index.js +5 -0
  275. package/dist/omnisearch/index.js.map +1 -0
  276. package/dist/omnisearch/types.cjs +4 -0
  277. package/dist/omnisearch/types.cjs.map +1 -0
  278. package/dist/omnisearch/types.d.cts +3 -0
  279. package/dist/omnisearch/types.d.ts +3 -0
  280. package/dist/omnisearch/types.js +3 -0
  281. package/dist/omnisearch/types.js.map +1 -0
  282. package/dist/{project-DmC8vKnh.d.ts → project-Dmr-zrQG.d.ts} +2 -2
  283. package/dist/{project-CSJzVylj.d.cts → project-DstzWVMN.d.cts} +2 -2
  284. package/dist/queryService/index.cjs +4 -4
  285. package/dist/queryService/index.d.cts +4 -3
  286. package/dist/queryService/index.d.ts +4 -3
  287. package/dist/queryService/index.js +3 -3
  288. package/dist/queryService/types.d.cts +2 -2
  289. package/dist/queryService/types.d.ts +2 -2
  290. package/dist/queue/index.cjs +4 -4
  291. package/dist/queue/index.d.cts +9 -3
  292. package/dist/queue/index.d.ts +9 -3
  293. package/dist/queue/index.js +3 -3
  294. package/dist/queue/types.d.cts +2 -2
  295. package/dist/queue/types.d.ts +2 -2
  296. package/dist/scheduler/index.cjs +5 -5
  297. package/dist/scheduler/index.d.cts +3 -2
  298. package/dist/scheduler/index.d.ts +3 -2
  299. package/dist/scheduler/index.js +4 -4
  300. package/dist/scheduler/types.d.cts +3 -3
  301. package/dist/scheduler/types.d.ts +3 -3
  302. package/dist/sdk/configurations/index.cjs +3 -3
  303. package/dist/sdk/configurations/index.d.cts +9 -8
  304. package/dist/sdk/configurations/index.d.ts +9 -8
  305. package/dist/sdk/configurations/index.js +2 -2
  306. package/dist/sdk/queryService/index.cjs +16 -0
  307. package/dist/sdk/queryService/index.cjs.map +1 -0
  308. package/dist/sdk/queryService/index.d.cts +35 -0
  309. package/dist/sdk/queryService/index.d.ts +35 -0
  310. package/dist/sdk/queryService/index.js +7 -0
  311. package/dist/sdk/queryService/index.js.map +1 -0
  312. package/dist/sdk/semanticLayer/index.cjs +18 -14
  313. package/dist/sdk/semanticLayer/index.d.cts +26 -11
  314. package/dist/sdk/semanticLayer/index.d.ts +26 -11
  315. package/dist/sdk/semanticLayer/index.js +2 -2
  316. package/dist/sdk/semanticLayer/types.d.cts +26 -6
  317. package/dist/sdk/semanticLayer/types.d.ts +26 -6
  318. package/dist/sdk/storage/index.cjs +12 -11
  319. package/dist/sdk/storage/index.d.cts +9 -8
  320. package/dist/sdk/storage/index.d.ts +9 -8
  321. package/dist/sdk/storage/index.js +2 -1
  322. package/dist/sdk/tag/index.cjs +3 -3
  323. package/dist/sdk/tag/index.d.cts +4 -4
  324. package/dist/sdk/tag/index.d.ts +4 -4
  325. package/dist/sdk/tag/index.js +2 -2
  326. package/dist/sdk/tag/types.d.cts +11 -5
  327. package/dist/sdk/tag/types.d.ts +11 -5
  328. package/dist/sdk/vault/index.cjs +8 -8
  329. package/dist/sdk/vault/index.d.cts +6 -5
  330. package/dist/sdk/vault/index.d.ts +6 -5
  331. package/dist/sdk/vault/index.js +2 -2
  332. package/dist/status/index.cjs +2 -2
  333. package/dist/status/index.d.cts +1 -1
  334. package/dist/status/index.d.ts +1 -1
  335. package/dist/status/index.js +1 -1
  336. package/dist/storage/index.cjs +59 -12
  337. package/dist/storage/index.d.cts +21 -22
  338. package/dist/storage/index.d.ts +21 -22
  339. package/dist/storage/index.js +8 -5
  340. package/dist/storage/types.d.cts +741 -390
  341. package/dist/storage/types.d.ts +741 -390
  342. package/dist/{storageClient-B4OooGB9.d.ts → storageClient-BAid0vi2.d.cts} +482 -250
  343. package/dist/{storageClient-CdFqTbn3.d.cts → storageClient-BX50Attd.d.ts} +482 -250
  344. package/dist/{storageSdk-DA7U-1Hy.d.ts → storageSdk-BS5982c_.d.cts} +23 -16
  345. package/dist/{storageSdk-U45zMbUb.d.cts → storageSdk-BeJcnEIO.d.ts} +23 -16
  346. package/dist/stream/index.cjs +4 -4
  347. package/dist/stream/index.d.cts +4 -3
  348. package/dist/stream/index.d.ts +4 -3
  349. package/dist/stream/index.js +3 -3
  350. package/dist/stream/types.d.cts +2 -2
  351. package/dist/stream/types.d.ts +2 -2
  352. package/dist/syncActions/index.cjs +9 -4
  353. package/dist/syncActions/index.d.cts +55 -80
  354. package/dist/syncActions/index.d.ts +55 -80
  355. package/dist/syncActions/index.js +8 -3
  356. package/dist/syncActions/types.d.cts +387 -25
  357. package/dist/syncActions/types.d.ts +387 -25
  358. package/dist/telemetry/index.cjs +4 -4
  359. package/dist/telemetry/index.d.cts +2 -2
  360. package/dist/telemetry/index.d.ts +2 -2
  361. package/dist/telemetry/index.js +3 -3
  362. package/dist/{types-DbAO-Tgk.d.ts → types-BALUbGA5.d.ts} +10 -2
  363. package/dist/{types-B30y9Lhc.d.ts → types-BCBF_5cU.d.cts} +186 -4
  364. package/dist/{types-B-vmDlWB.d.cts → types-BPKQRahf.d.cts} +3 -3
  365. package/dist/types-BcaALDYY.d.cts +2130 -0
  366. package/dist/{types-BfuVN8Pk.d.cts → types-Bom93Zx2.d.cts} +3 -3
  367. package/dist/types-Bp8d9PJf.d.cts +607 -0
  368. package/dist/types-BsejtGjZ.d.ts +2130 -0
  369. package/dist/{types-DeoA45gz.d.cts → types-BuEkMmKT.d.ts} +491 -308
  370. package/dist/{types-WGZN6XLN.d.cts → types-C5DdOzx8.d.cts} +1 -1
  371. package/dist/{types-D-MuJHwl.d.cts → types-CFeOCzzg.d.cts} +3 -2
  372. package/dist/{types-DpUcInCX.d.ts → types-COti0FGo.d.ts} +3 -3
  373. package/dist/{types-Brc6lq7i.d.ts → types-C_jxWM7A.d.ts} +1 -1
  374. package/dist/{types-CM1zHzgm.d.ts → types-Cffam0Nw.d.ts} +856 -36
  375. package/dist/{types-BieLFMW1.d.cts → types-CfzHhZVG.d.ts} +3 -3
  376. package/dist/{types-DYnHIm7m.d.cts → types-CniF_D1P.d.cts} +3 -3
  377. package/dist/{types-BEnE7LHB.d.cts → types-CwAYn1EJ.d.cts} +10 -2
  378. package/dist/{types-DgSyBwP3.d.cts → types-CxAH36ip.d.cts} +3 -3
  379. package/dist/{types-DwMezEHT.d.ts → types-D2qGShlS.d.ts} +15 -3
  380. package/dist/{types-CSZoV4lM.d.cts → types-D6dnnju2.d.ts} +186 -4
  381. package/dist/{types-CrLjE5xf.d.ts → types-DM1glEQI.d.ts} +3 -3
  382. package/dist/{types-Hj1CaKtV.d.ts → types-DNyZ0z3L.d.cts} +491 -308
  383. package/dist/types-DOc5_aYZ.d.ts +607 -0
  384. package/dist/{types-DHXZZKb3.d.ts → types-Dpwb4dD0.d.ts} +3 -3
  385. package/dist/{types-YzkNUuYo.d.ts → types-DrGnvgkB.d.ts} +3 -3
  386. package/dist/{types-BhlJw2f2.d.ts → types-EZBBpiFU.d.ts} +886 -114
  387. package/dist/{types-DNg4M5JV.d.cts → types-UwuKN9Kx.d.cts} +1 -1
  388. package/dist/{types-DNg4M5JV.d.ts → types-UwuKN9Kx.d.ts} +1 -1
  389. package/dist/{types-BX1xr4CX.d.cts → types-Y1ynT2PH.d.cts} +15 -3
  390. package/dist/{types-DVhcwrwN.d.cts → types-cxk-0ftN.d.cts} +886 -114
  391. package/dist/{types-DeS-oVdn.d.ts → types-ebolWqn1.d.ts} +3 -2
  392. package/dist/{types-gcShAmmi.d.cts → types-f8dUjMX4.d.cts} +1 -1
  393. package/dist/{types-gcShAmmi.d.ts → types-f8dUjMX4.d.ts} +1 -1
  394. package/dist/{types-CiJ5ULtS.d.ts → types-nt7I4XNc.d.cts} +3 -3
  395. package/dist/{types-Cgh3jqrV.d.cts → types-qvle4Ydu.d.cts} +856 -36
  396. package/dist/vault/index.cjs +4 -4
  397. package/dist/vault/index.d.cts +3 -2
  398. package/dist/vault/index.d.ts +3 -2
  399. package/dist/vault/index.js +3 -3
  400. package/dist/vault/types.d.cts +3 -3
  401. package/dist/vault/types.d.ts +3 -3
  402. package/package.json +71 -3
  403. package/surface/ai.md +1 -0
  404. package/surface/apps.md +32 -0
  405. package/surface/auth.md +6 -4
  406. package/surface/chat.md +2 -1
  407. package/surface/dataScience.md +1 -0
  408. package/surface/editor.md +1 -0
  409. package/surface/encryption.md +1 -0
  410. package/surface/import.md +1 -0
  411. package/surface/kaiAgent.md +2 -1
  412. package/surface/management.md +17 -16
  413. package/surface/metastore.md +2 -1
  414. package/surface/notifications.md +1 -0
  415. package/surface/oauth.md +1 -0
  416. package/surface/omnisearch.md +9 -0
  417. package/surface/queryService.md +1 -0
  418. package/surface/queue.md +8 -7
  419. package/surface/scheduler.md +1 -0
  420. package/surface/sdk.md +17 -17
  421. package/surface/storage.md +125 -88
  422. package/surface/stream.md +1 -0
  423. package/surface/syncActions.md +19 -7
  424. package/surface/vault.md +1 -0
  425. package/dist/chunk-34GM6NXB.js.map +0 -1
  426. package/dist/chunk-35MODDCL.cjs.map +0 -1
  427. package/dist/chunk-3BFPNM2J.js.map +0 -1
  428. package/dist/chunk-3FZHFTLG.cjs +0 -12
  429. package/dist/chunk-3FZHFTLG.cjs.map +0 -1
  430. package/dist/chunk-3KEVPUSX.cjs.map +0 -1
  431. package/dist/chunk-3MTY6I2W.js +0 -192
  432. package/dist/chunk-3MTY6I2W.js.map +0 -1
  433. package/dist/chunk-3YWQQ3OG.cjs.map +0 -1
  434. package/dist/chunk-4VVF2PIX.js.map +0 -1
  435. package/dist/chunk-77LILJYX.js.map +0 -1
  436. package/dist/chunk-7R22VKV7.cjs.map +0 -1
  437. package/dist/chunk-7RO6PKZ4.cjs +0 -16
  438. package/dist/chunk-7YXL4FKN.cjs.map +0 -1
  439. package/dist/chunk-7Z4MU7ZB.js.map +0 -1
  440. package/dist/chunk-AFJGNBVM.cjs.map +0 -1
  441. package/dist/chunk-AXEANGGK.js +0 -226
  442. package/dist/chunk-AXEANGGK.js.map +0 -1
  443. package/dist/chunk-BR6WZE3O.cjs.map +0 -1
  444. package/dist/chunk-BZA3FGO6.js.map +0 -1
  445. package/dist/chunk-CV2JGHBN.js.map +0 -1
  446. package/dist/chunk-CWUQ6ZAO.cjs.map +0 -1
  447. package/dist/chunk-D3ZZQIY2.cjs.map +0 -1
  448. package/dist/chunk-D6O5C67S.js.map +0 -1
  449. package/dist/chunk-DRNOCC6W.cjs.map +0 -1
  450. package/dist/chunk-FMS5PNM2.cjs.map +0 -1
  451. package/dist/chunk-G66EP527.js.map +0 -1
  452. package/dist/chunk-GF4XZK5N.cjs.map +0 -1
  453. package/dist/chunk-GM3AKU5T.js +0 -10
  454. package/dist/chunk-GM3AKU5T.js.map +0 -1
  455. package/dist/chunk-HMCZUHR7.js.map +0 -1
  456. package/dist/chunk-HY7J3OD3.cjs.map +0 -1
  457. package/dist/chunk-IDWGBCSB.cjs.map +0 -1
  458. package/dist/chunk-J3NLKXQ5.cjs.map +0 -1
  459. package/dist/chunk-KH6BHTXN.js.map +0 -1
  460. package/dist/chunk-KUYVBCUM.cjs.map +0 -1
  461. package/dist/chunk-L262THNK.cjs +0 -253
  462. package/dist/chunk-L262THNK.cjs.map +0 -1
  463. package/dist/chunk-LD3JERYP.js.map +0 -1
  464. package/dist/chunk-LIXSIM3H.cjs.map +0 -1
  465. package/dist/chunk-MMOAH3EH.cjs.map +0 -1
  466. package/dist/chunk-NVRVPWNY.js.map +0 -1
  467. package/dist/chunk-OUSPQ55W.js.map +0 -1
  468. package/dist/chunk-PPQF7LTS.cjs.map +0 -1
  469. package/dist/chunk-QZKDBVAU.cjs +0 -1482
  470. package/dist/chunk-QZKDBVAU.cjs.map +0 -1
  471. package/dist/chunk-S4JK7DKM.js.map +0 -1
  472. package/dist/chunk-SJZ66FD5.js.map +0 -1
  473. package/dist/chunk-T242YFMT.cjs.map +0 -1
  474. package/dist/chunk-UABYNGBZ.js.map +0 -1
  475. package/dist/chunk-UP5SEEYZ.js.map +0 -1
  476. package/dist/chunk-UWQUHP3T.cjs.map +0 -1
  477. package/dist/chunk-WFXW4XU3.js.map +0 -1
  478. package/dist/chunk-XHDYLUM4.js.map +0 -1
  479. package/dist/chunk-XIIER7QQ.js.map +0 -1
  480. package/dist/chunk-XKIENBIE.js.map +0 -1
  481. package/dist/chunk-XMC355U2.js.map +0 -1
  482. package/dist/chunk-Y44G2VDC.cjs +0 -214
  483. package/dist/chunk-Y44G2VDC.cjs.map +0 -1
  484. package/dist/utils-B_SOM1XR.d.ts +0 -3051
  485. package/dist/utils-DK7uJcmR.d.cts +0 -3051
@@ -0,0 +1,2130 @@
1
+ import { c as OpenapiQueryType, d as OpenapiPathType, O as OpenapiBodyType, b as OpenapiReturnType } from './types-f8dUjMX4.cjs';
2
+ import './appLogs-BbgAJ5I8.cjs';
3
+
4
+ /**
5
+ * This file was auto-generated by openapi-typescript.
6
+ * Do not make direct changes to the file.
7
+ */
8
+
9
+ type paths = {
10
+ '/': {
11
+ parameters: {
12
+ query?: never;
13
+ header?: never;
14
+ path?: never;
15
+ cookie?: never;
16
+ };
17
+ /**
18
+ * Service metadata
19
+ * @description Returns the service name, version and a link to this API specification.
20
+ * No authentication required.
21
+ */
22
+ get: operations['index'];
23
+ put?: never;
24
+ post?: never;
25
+ delete?: never;
26
+ options?: never;
27
+ head?: never;
28
+ patch?: never;
29
+ trace?: never;
30
+ };
31
+ '/apps': {
32
+ parameters: {
33
+ query?: never;
34
+ header?: never;
35
+ path?: never;
36
+ cookie?: never;
37
+ };
38
+ /**
39
+ * List apps
40
+ * @description Lists apps for the project, each including `production {desiredNumber, desiredId,
41
+ * actualNumber, actualId}` and `undeployedChanges` (whether the production
42
+ * deployment's config version differs from the app's current config version — a
43
+ * future branch-HEAD comparison is not implemented yet).
44
+ */
45
+ get: operations['listApps'];
46
+ put?: never;
47
+ /**
48
+ * Create app
49
+ * @description Creates the app row plus its AppGroup CR (the product's Kubernetes object); the
50
+ * app starts with `production: null` — its URL is reserved but publicly 404s until
51
+ * a deployment is promoted. An optional `Idempotency-Key` header makes a retried
52
+ * create return the same app instead of a duplicate Storage config, DB row, and
53
+ * App CRD — `201` only on the request that actually created it, `200` on every
54
+ * replay, so the status code alone tells a caller which happened without diffing
55
+ * the body. A retry with no `Idempotency-Key` is always a genuine create (`201`):
56
+ * nothing links it to the earlier request.
57
+ *
58
+ * The Storage config this creates has no app content and only the platform's
59
+ * default auth (`authorization.app_proxy` requiring a password nobody has set
60
+ * yet, so the URL stays unopenable) — this endpoint reserves the app and its
61
+ * config address, nothing more. Set `parameters` (what the app runs) and
62
+ * `authorization.app_proxy` (who can open it) via the Storage API, on the config
63
+ * named by the response's `componentId`/`branchId`/`configId`, before deploying.
64
+ */
65
+ post: operations['createApp'];
66
+ delete?: never;
67
+ options?: never;
68
+ head?: never;
69
+ patch?: never;
70
+ trace?: never;
71
+ };
72
+ '/apps/{appId}': {
73
+ parameters: {
74
+ query?: never;
75
+ header?: never;
76
+ path?: never;
77
+ cookie?: never;
78
+ };
79
+ /**
80
+ * Get app detail
81
+ * @description Same shape as the list entry, incl. `production {desiredNumber, desiredId,
82
+ * actualNumber, actualId}` and `undeployedChanges`.
83
+ */
84
+ get: operations['getApp'];
85
+ put?: never;
86
+ post?: never;
87
+ /**
88
+ * Delete app
89
+ * @description Deletes the AppGroup CR, cascading to every deployment, Secret and pod owned by
90
+ * it; rows are soft-deleted.
91
+ */
92
+ delete: operations['deleteApp'];
93
+ options?: never;
94
+ head?: never;
95
+ /**
96
+ * Update app settings
97
+ * @description Updates plain product settings. Per the `/v2` design rule (see API description),
98
+ * operations with side effects beyond a plain attribute write — promote, unpublish,
99
+ * suspend, resume — are separate action-verb endpoints, not part of this `PATCH`.
100
+ *
101
+ * No patchable field exists yet: `name` and `description` are create-only (see
102
+ * `AppCreateRequest`) and live in the app's Storage configuration, not on the App
103
+ * row, so there is nothing here to rename them into. Sending either is rejected as
104
+ * an unknown field (`422`), not silently accepted — the only currently valid body is
105
+ * `{}`. Additional fields will land here as the `/v2` surface grows.
106
+ */
107
+ patch: operations['patchApp'];
108
+ trace?: never;
109
+ };
110
+ '/apps/{appId}/unpublish': {
111
+ parameters: {
112
+ query?: never;
113
+ header?: never;
114
+ path?: never;
115
+ cookie?: never;
116
+ };
117
+ get?: never;
118
+ put?: never;
119
+ /**
120
+ * Unpublish app
121
+ * @description Sets `production` to none — routing is dropped and the app's URL 404s.
122
+ * Idempotent: unpublishing an already-unpublished app is a no-op, and so is
123
+ * unpublishing an app that has no App CRD at all (never deployed via `/v2`) — from a
124
+ * caller's perspective "no App CRD" and "an App CRD with nothing published" are the
125
+ * same fact, so both return `204` rather than one of them 409ing.
126
+ */
127
+ post: operations['unpublishApp'];
128
+ delete?: never;
129
+ options?: never;
130
+ head?: never;
131
+ patch?: never;
132
+ trace?: never;
133
+ };
134
+ '/apps/{appId}/suspend': {
135
+ parameters: {
136
+ query?: never;
137
+ header?: never;
138
+ path?: never;
139
+ cookie?: never;
140
+ };
141
+ get?: never;
142
+ put?: never;
143
+ /**
144
+ * Suspend app
145
+ * @description Sleeps the app's currently serving member now, instead of waiting for the idle
146
+ * timer, and disarms wake-on-request: unlike idle auto-suspend, a visitor hitting
147
+ * the app's URL afterwards gets a 503 rather than triggering a wakeup. Stays
148
+ * suspended until an explicit `resume`. Idempotent: suspending an already-suspended
149
+ * app is a no-op; returns `409` if the app has no serving member to suspend.
150
+ *
151
+ * The returned App's `state` becomes `SUSPENDED` — immediately, not on the next
152
+ * list/get poll.
153
+ */
154
+ post: operations['suspendApp'];
155
+ delete?: never;
156
+ options?: never;
157
+ head?: never;
158
+ patch?: never;
159
+ trace?: never;
160
+ };
161
+ '/apps/{appId}/resume': {
162
+ parameters: {
163
+ query?: never;
164
+ header?: never;
165
+ path?: never;
166
+ cookie?: never;
167
+ };
168
+ get?: never;
169
+ put?: never;
170
+ /**
171
+ * Resume app
172
+ * @description Wakes the app's currently serving member now (a warm-up) and re-arms
173
+ * wake-on-request, instead of waiting for a visitor to trigger it. Idempotent:
174
+ * resuming an already-running app is a no-op; returns `409` if the app has no
175
+ * serving member to resume.
176
+ *
177
+ * The returned App's `state` is `STARTING` immediately after resuming an app that
178
+ * was actually stopped — the operator has not confirmed the member serving yet at
179
+ * the instant this call returns — settling to `RUNNING` once it does.
180
+ */
181
+ post: operations['resumeApp'];
182
+ delete?: never;
183
+ options?: never;
184
+ head?: never;
185
+ patch?: never;
186
+ trace?: never;
187
+ };
188
+ '/apps/{appId}/activity': {
189
+ parameters: {
190
+ query?: never;
191
+ header?: never;
192
+ path?: never;
193
+ cookie?: never;
194
+ };
195
+ get?: never;
196
+ put?: never;
197
+ /**
198
+ * Record app activity
199
+ * @description Records the timestamp of the app's most recent request — the heartbeat that drives
200
+ * idle auto-suspend. Caller-supplied rather than server-stamped, so a caller can batch
201
+ * several observed requests into one call and report the actual last-seen time instead
202
+ * of the time of the call itself.
203
+ *
204
+ * Callable only by apps-proxy: requires a Manage API application token with the
205
+ * `apps:proxy` scope (or an equivalent ServiceAccount token). A Storage API token is
206
+ * not accepted here, unlike `PATCH /apps/{appId}`.
207
+ *
208
+ * Idempotent by nature: re-reporting the same or an older timestamp has no side effect
209
+ * beyond overwriting the stored value, so no `Idempotency-Key` is needed.
210
+ */
211
+ post: operations['recordAppActivity'];
212
+ delete?: never;
213
+ options?: never;
214
+ head?: never;
215
+ patch?: never;
216
+ trace?: never;
217
+ };
218
+ '/apps/{appId}/password': {
219
+ parameters: {
220
+ query?: never;
221
+ header?: never;
222
+ path?: never;
223
+ cookie?: never;
224
+ };
225
+ /**
226
+ * Get app password
227
+ * @description Returns the app's current password for its `password`-type auth provider. `null`
228
+ * if none has been minted yet — that happens on the app's first deployment (see
229
+ * `POST .../deployments`) or on demand via `POST .../reset-password`. Mirrors
230
+ * `/v1`'s `GET /apps/{appId}/password`.
231
+ */
232
+ get: operations['getAppPassword'];
233
+ put?: never;
234
+ post?: never;
235
+ delete?: never;
236
+ options?: never;
237
+ head?: never;
238
+ patch?: never;
239
+ trace?: never;
240
+ };
241
+ '/apps/{appId}/reset-password': {
242
+ parameters: {
243
+ query?: never;
244
+ header?: never;
245
+ path?: never;
246
+ cookie?: never;
247
+ };
248
+ get?: never;
249
+ put?: never;
250
+ /**
251
+ * Reset app password
252
+ * @description Mints a new password, replacing any existing one. Not idempotent by design: the
253
+ * minted value is unpredictable, so there is no target state a retry could
254
+ * re-declare — each call always generates a fresh secret. `400` if the app's config
255
+ * has no `password`-type auth provider (nothing to reset). The new password is not
256
+ * returned here; fetch it with `GET .../password` immediately after.
257
+ */
258
+ post: operations['resetAppPassword'];
259
+ delete?: never;
260
+ options?: never;
261
+ head?: never;
262
+ patch?: never;
263
+ trace?: never;
264
+ };
265
+ '/apps/{appId}/runs': {
266
+ parameters: {
267
+ query?: never;
268
+ header?: never;
269
+ path?: never;
270
+ cookie?: never;
271
+ };
272
+ /**
273
+ * List runs
274
+ * @description Runs of this app, newest first — app-wide, mirroring `/v1`'s paths. The rollup is
275
+ * what you want when something is wrong and you do not yet know which deployment to
276
+ * look at; each run carries its own `deploymentId`, and `deploymentId=` narrows the
277
+ * list once you do.
278
+ *
279
+ * This is where a failed deployment's cause lives: a run carries `failureReason` and
280
+ * `startupLogs`. A deployment reported `FAILED` has an explanation here. One reported
281
+ * `PENDING` does not, and that is not an omission — nothing upstream records a cause
282
+ * for a container that never executed.
283
+ *
284
+ * `since`/`until` filter on `createdAt`, not `startedAt`: `createdAt` is stamped
285
+ * before any compute exists, so it is the only timestamp every run has, including one
286
+ * that never started. Filtering on `startedAt` would silently drop exactly the runs
287
+ * this endpoint exists to explain. `offset`/`limit` page through the filtered window,
288
+ * not the full history — pass `since`/`until` and page until the response is shorter
289
+ * than `limit` to know you have the whole window, rather than an arbitrary slice of a
290
+ * larger, unbounded one.
291
+ */
292
+ get: operations['listRuns'];
293
+ put?: never;
294
+ post?: never;
295
+ delete?: never;
296
+ options?: never;
297
+ head?: never;
298
+ patch?: never;
299
+ trace?: never;
300
+ };
301
+ '/apps/{appId}/runs/{runId}': {
302
+ parameters: {
303
+ query?: never;
304
+ header?: never;
305
+ path?: never;
306
+ cookie?: never;
307
+ };
308
+ /**
309
+ * Get run detail
310
+ * @description A single run. Addressed under the app rather than under its deployment, matching `/v1`: a run id is unique on its own, so nesting it would add a path segment carrying no information and force a caller holding an id from the app-wide list to find its deployment first.
311
+ */
312
+ get: operations['getRun'];
313
+ put?: never;
314
+ post?: never;
315
+ delete?: never;
316
+ options?: never;
317
+ head?: never;
318
+ patch?: never;
319
+ trace?: never;
320
+ };
321
+ '/apps/{appId}/deployments': {
322
+ parameters: {
323
+ query?: never;
324
+ header?: never;
325
+ path?: never;
326
+ cookie?: never;
327
+ };
328
+ /**
329
+ * List deployments
330
+ * @description Full deployment history including retired (`archived: true`) deployments —
331
+ * rows outlive their Kubernetes CRs.
332
+ */
333
+ get: operations['listDeployments'];
334
+ put?: never;
335
+ /**
336
+ * Create deployment (deploy)
337
+ * @description Deploys the current config version / branch HEAD as a new immutable deployment.
338
+ * `promote: true` by default — deploying also promotes to production unless
339
+ * explicitly disabled, in which case the deployment is staged for a later
340
+ * promotion and never runs in the meantime. The deployment id is minted synchronously (deterministic
341
+ * Kubernetes CR name); the display `number` is allocated from a per-app DB
342
+ * sequence, also returned synchronously — an optional `Idempotency-Key` header
343
+ * makes a retried deploy return the same row instead of a duplicate: `202` only on
344
+ * the request that actually created it, `200` on every replay. A request with no
345
+ * `Idempotency-Key` is always a genuine deploy (`202`): nothing links it to an
346
+ * earlier request, so it can never be recognised as a replay.
347
+ *
348
+ * Nothing here validates app content: a config with no `parameters` builds
349
+ * (`buildState: PREBUILT`) and promotes successfully, then crashes on every run.
350
+ * Content lives in the Storage config named by the app's `componentId`/
351
+ * `branchId`/`configId`, set via the Storage API — not this request.
352
+ *
353
+ * If the app's config has a `password`-type auth provider and the app has no
354
+ * password yet, this call mints one — the same lazy, one-time generation `/v1`
355
+ * does when an app with simple auth is first started. Fetch it with
356
+ * `GET .../password`; a later deployment never rotates it.
357
+ */
358
+ post: operations['createDeployment'];
359
+ delete?: never;
360
+ options?: never;
361
+ head?: never;
362
+ patch?: never;
363
+ trace?: never;
364
+ };
365
+ '/apps/{appId}/deployments/{deploymentId}': {
366
+ parameters: {
367
+ query?: never;
368
+ header?: never;
369
+ path?: never;
370
+ cookie?: never;
371
+ };
372
+ /**
373
+ * Get deployment detail
374
+ * @description Deployment detail; served from the DB projection. The row is written
375
+ * synchronously before the create request returns, so there is no window
376
+ * where it is missing (read-your-writes) and no Kubernetes CR fallback.
377
+ */
378
+ get: operations['getDeployment'];
379
+ put?: never;
380
+ post?: never;
381
+ /**
382
+ * Retire deployment
383
+ * @description **Retires, does not erase** — deletes the member CR and its rendered-config
384
+ * Secret immediately (credential hygiene); the row stays in history marked
385
+ * `archived: true` and is re-materializable. Deployments have no `PATCH`/`PUT` —
386
+ * they are immutable; retirement is a lifecycle transition, not a mutation. `409`
387
+ * if this deployment's id is named production by either `production.desiredId` or
388
+ * `production.actualId` on the app (promote or roll back to another deployment, or
389
+ * unpublish, before retiring it) — a promotion in flight can leave those two
390
+ * different for a while, and retiring the one not currently named `desiredId` is
391
+ * just as unsafe as retiring the one not currently named `actualId`, since either
392
+ * one is still something the app depends on. Idempotent: retiring an already
393
+ * `archived` deployment is a no-op. Row hard-deletion happens only via app
394
+ * deletion.
395
+ */
396
+ delete: operations['deleteDeployment'];
397
+ options?: never;
398
+ head?: never;
399
+ patch?: never;
400
+ trace?: never;
401
+ };
402
+ '/apps/{appId}/deployments/{deploymentId}/promote': {
403
+ parameters: {
404
+ query?: never;
405
+ header?: never;
406
+ path?: never;
407
+ cookie?: never;
408
+ };
409
+ get?: never;
410
+ put?: never;
411
+ /**
412
+ * Promote deployment (promote / rollback)
413
+ * @description Makes this deployment production. Rollback is the same action applied to an
414
+ * older deployment — every repoint is audited. Promoting an `archived` deployment
415
+ * is allowed (it is re-materialized first).
416
+ *
417
+ * Promotion is **declarative**: this records the intent and returns. The operator
418
+ * validates by starting the target deployment — including when the app is
419
+ * suspended — and switches the route only once that deployment is serving. A
420
+ * target that fails to start never becomes production, and the deployment that was
421
+ * already serving keeps serving. There is deliberately no readiness precondition:
422
+ * a deployment cannot become ready until it has been asked to be production.
423
+ *
424
+ * Idempotent: re-declaring the deployment that is already production is a no-op.
425
+ * Authorized separately from plain app settings.
426
+ *
427
+ * `runState`/`buildState` are not inputs to this decision — a `FAILED`,
428
+ * non-archived deployment is promoted exactly like any other non-archived one, by
429
+ * whether it is already production, not by why it stopped running. Re-declaring it
430
+ * while it is still `production.desired`/`.actual` is the no-op above (`204`).
431
+ * Re-declaring it while it is **not** currently production — rolled back away from,
432
+ * or never promoted — repoints `production.desired` (`202`) and the operator starts
433
+ * it, which from the outside looks like restarting a failed deployment; it is the
434
+ * same repoint any not-yet-run deployment gets, not special-cased recovery.
435
+ */
436
+ post: operations['promoteDeployment'];
437
+ delete?: never;
438
+ options?: never;
439
+ head?: never;
440
+ patch?: never;
441
+ trace?: never;
442
+ };
443
+ '/apps/{appId}/logs/tail': {
444
+ parameters: {
445
+ query?: never;
446
+ header?: never;
447
+ path?: never;
448
+ cookie?: never;
449
+ };
450
+ /**
451
+ * Tail app logs
452
+ * @description Streams recent container output of the app's currently serving member — the same
453
+ * member `promote` most recently switched traffic to, resolved by the operator from
454
+ * the App CRD's serving pointer, not looked up by this service. Mirrors `/v1`'s
455
+ * `GET /apps/{appId}/logs/tail`.
456
+ *
457
+ * `since` and `lines` are mutually exclusive filters on where the tail starts;
458
+ * omitting both returns the log from its start. `404` if the app has no App CRD at
459
+ * all (never deployed via `/v2`); `400` (`apps.appNotRunning`) if it has one but
460
+ * nothing is currently serving — both are "there is nothing to tail right now",
461
+ * distinguished only by whether the app was ever deployed.
462
+ */
463
+ get: operations['tailAppLogs'];
464
+ put?: never;
465
+ post?: never;
466
+ delete?: never;
467
+ options?: never;
468
+ head?: never;
469
+ patch?: never;
470
+ trace?: never;
471
+ };
472
+ '/apps/{appId}/logs/download': {
473
+ parameters: {
474
+ query?: never;
475
+ header?: never;
476
+ path?: never;
477
+ cookie?: never;
478
+ };
479
+ /**
480
+ * Download app logs
481
+ * @description The full container output of the app's currently serving member, as a file
482
+ * download. Same underlying call as `tail` with neither `since` nor `lines` set —
483
+ * no separate retention or size limit applies. Mirrors `/v1`'s
484
+ * `GET /apps/{appId}/logs/download`.
485
+ */
486
+ get: operations['downloadAppLogs'];
487
+ put?: never;
488
+ post?: never;
489
+ delete?: never;
490
+ options?: never;
491
+ head?: never;
492
+ patch?: never;
493
+ trace?: never;
494
+ };
495
+ '/apps/{appId}/deployments/{deploymentId}/logs/tail': {
496
+ parameters: {
497
+ query?: never;
498
+ header?: never;
499
+ path?: never;
500
+ cookie?: never;
501
+ };
502
+ /**
503
+ * Tail deployment logs
504
+ * @description Streams recent container output of this specific deployment's own member — not
505
+ * resolved through the app's serving pointer, so this works for a deployment that
506
+ * is not (or never was) production, e.g. a candidate that failed to promote. The
507
+ * operator streams directly from the deployment's Sandbox CR, which is named after
508
+ * the deployment id.
509
+ *
510
+ * `since` and `lines` are mutually exclusive filters on where the tail starts;
511
+ * omitting both returns the log from its start. `404` if the app or the deployment
512
+ * doesn't exist (or the deployment belongs to a different app); `400`
513
+ * (`apps.deploymentNotRunning`) if the deployment exists but has nothing currently
514
+ * running to read logs from.
515
+ */
516
+ get: operations['tailDeploymentLogs'];
517
+ put?: never;
518
+ post?: never;
519
+ delete?: never;
520
+ options?: never;
521
+ head?: never;
522
+ patch?: never;
523
+ trace?: never;
524
+ };
525
+ '/apps/{appId}/deployments/{deploymentId}/logs/download': {
526
+ parameters: {
527
+ query?: never;
528
+ header?: never;
529
+ path?: never;
530
+ cookie?: never;
531
+ };
532
+ /**
533
+ * Download deployment logs
534
+ * @description The full container output of this specific deployment's own member, as a file
535
+ * download — same underlying call as `tail` with neither `since` nor `lines` set.
536
+ * Not resolved through the app's serving pointer; see `tail` for why that matters.
537
+ */
538
+ get: operations['downloadDeploymentLogs'];
539
+ put?: never;
540
+ post?: never;
541
+ delete?: never;
542
+ options?: never;
543
+ head?: never;
544
+ patch?: never;
545
+ trace?: never;
546
+ };
547
+ '/apps/{appId}/git-repo': {
548
+ parameters: {
549
+ query?: never;
550
+ header?: never;
551
+ path?: never;
552
+ cookie?: never;
553
+ };
554
+ /**
555
+ * Get app's Git repository
556
+ * @description Returns details of the Git repository configured in the app's config
557
+ * (`parameters.dataApp.git`). For a managed Git repository both `sshUrl` and
558
+ * `httpsUrl` are returned, fetched from the upstream git-service. For an
559
+ * externally configured repository only the URL matching the configured protocol
560
+ * is returned and the other field is `null`; any embedded credentials are
561
+ * stripped.
562
+ */
563
+ get: operations['getAppGitRepo'];
564
+ put?: never;
565
+ post?: never;
566
+ delete?: never;
567
+ options?: never;
568
+ head?: never;
569
+ patch?: never;
570
+ trace?: never;
571
+ };
572
+ '/apps/{appId}/git-repo/credentials': {
573
+ parameters: {
574
+ query?: never;
575
+ header?: never;
576
+ path?: never;
577
+ cookie?: never;
578
+ };
579
+ /**
580
+ * List credentials for the app's managed Git repository
581
+ * @description Lists non-deleted credentials for the app's managed Git repository. Requires an
582
+ * admin Storage API token.
583
+ */
584
+ get: operations['listAppGitRepoCredentials'];
585
+ put?: never;
586
+ /**
587
+ * Create credential for the app's managed Git repository
588
+ * @description Creates a credential (SSH key or HTTP token) for the app's managed Git
589
+ * repository. For `http_token` credentials, the response includes a one-time
590
+ * `secret` that is never returned again — not on subsequent reads, and not on an
591
+ * `Idempotency-Key` replay of this request. Requires an admin Storage API token.
592
+ * An optional `Idempotency-Key` header makes a retried create return the existing
593
+ * credential instead of a duplicate: `201` only on the request that actually
594
+ * created it, `200` on every replay.
595
+ */
596
+ post: operations['createAppGitRepoCredential'];
597
+ delete?: never;
598
+ options?: never;
599
+ head?: never;
600
+ patch?: never;
601
+ trace?: never;
602
+ };
603
+ '/apps/{appId}/git-repo/credentials/{credentialId}': {
604
+ parameters: {
605
+ query?: never;
606
+ header?: never;
607
+ path?: never;
608
+ cookie?: never;
609
+ };
610
+ /**
611
+ * Get credential detail
612
+ * @description Returns details of a credential registered with the app's managed Git
613
+ * repository. The response never contains the one-time `secret` field. Requires
614
+ * an admin Storage API token.
615
+ */
616
+ get: operations['getAppGitRepoCredential'];
617
+ put?: never;
618
+ post?: never;
619
+ /**
620
+ * Revoke and remove a credential
621
+ * @description Revokes a credential on git-service and soft-deletes the local row. Tolerates
622
+ * git-service `404` as already-removed. Requires an admin Storage API token.
623
+ */
624
+ delete: operations['deleteAppGitRepoCredential'];
625
+ options?: never;
626
+ head?: never;
627
+ patch?: never;
628
+ trace?: never;
629
+ };
630
+ };
631
+ type components = {
632
+ schemas: {
633
+ /** @description Flat error shape used by every v2 endpoint, matching the v1 convention (e.g. 404 → `{"error": "App \"123\" not found"}`). */
634
+ ErrorResponse: {
635
+ error?: string;
636
+ };
637
+ App: {
638
+ id: string;
639
+ projectId: string;
640
+ /**
641
+ * @description Together with `branchId` and `configId`, the Storage address of this app's configuration. The app's **name** and **description** — both set once at creation via `AppCreateRequest` and never editable afterwards — live there and are deliberately not copied onto this response — pointing at where they authoritatively live keeps them correct by construction. Resolve labels for a page of apps with one bulk `listComponentConfigurations` call.
642
+ * The app's **content** (`parameters` — what it runs) and **auth** (`authorization.app_proxy` — who can open it) live there too, for the same reason: `/v2` manages apps and deployments, not their configuration. A newly created app's config has neither — no content, and an auth block that requires a password nobody has set — until configured via the Storage API.
643
+ */
644
+ componentId: string;
645
+ /** @description `null` on an app created through `/v1` without a branch. Apps created through `/v2` always resolve the project's default branch at creation, so this is never null for them. */
646
+ branchId: string | null;
647
+ configId: string;
648
+ /** @description The app's current configuration revision. */
649
+ configVersion: string;
650
+ /** @enum {string|null} */
651
+ type?: 'streamlit' | 'python-js' | null;
652
+ /**
653
+ * @description Apps created through `/v2` are always `prod`; `dev` occurs only on an app created through `/v1` in dev mode and later adopted.
654
+ * @enum {string}
655
+ */
656
+ mode?: 'prod' | 'dev';
657
+ /**
658
+ * Format: url
659
+ * @description Production URL — stable, unchanged by promote/rollback.
660
+ * Mirrored from the operator, which derives the address and publishes it on the App resource; it is not computed here, so it cannot disagree with where the app actually answers. `null` only in the window between creating an app and the first state-sync pass picking the address up, so a freshly created app can report `null` here for a short time.
661
+ * Null does not mean "not deployed" — check `production` for that. A URL is reserved from creation and 404s publicly until something is promoted to it.
662
+ */
663
+ url: string | null;
664
+ /**
665
+ * @description Always present. `null` on all four fields means the app has never been deployed (URL reserved, publicly 404s). Carries both the display number and the id for each of `desired`/`actual` because `promote`/`retire` take a deployment id, not a number — a client holding only the number would have to fetch the deployment list just to find the id it needs to act.
666
+ * `desired` and `actual` differ while a promotion is in flight — the operator only moves `actual` once the newly desired deployment reports ready — and this is the supported way to detect that in progress, independently of `state`, which deliberately does not encode it. See `App.state`'s own description.
667
+ */
668
+ production: {
669
+ /** @description Deployment number most recently asked to be production. */
670
+ desiredNumber?: number | null;
671
+ /** @description Id of the deployment most recently asked to be production — pass this to `promote`/`retire`, not `desiredNumber`. */
672
+ desiredId?: string | null;
673
+ /** @description Deployment number actually serving production traffic right now, per the AppGroup controller's convergence status. */
674
+ actualNumber?: number | null;
675
+ /** @description Id of the deployment actually serving production traffic right now — pass this to `promote`/`retire`, not `actualNumber`. */
676
+ actualId?: string | null;
677
+ };
678
+ /** @description Whether the production deployment's config version differs from the app's current config version. A future branch-HEAD comparison is not implemented yet. */
679
+ undeployedChanges?: boolean;
680
+ /**
681
+ * @description Is this app's production currently serving traffic, and if not, why? Answers
682
+ * exactly that one question — not "is my code healthy" (that's a deployment's
683
+ * own `runState`, which can be `FAILED` while this stays `RUNNING`, because an
684
+ * older, still-serving deployment and the newest built one are different
685
+ * things at the same instant) and not "will a request wake it" alone (both
686
+ * `SLEEPING` and `SUSPENDED` are stopped; only the label tells you which).
687
+ *
688
+ * Deliberately does NOT encode rollout progress — whether a promotion is in
689
+ * flight is an orthogonal question to whether production is serving, and this
690
+ * field answers only the latter. A promotion can be started from an app that is
691
+ * currently `RUNNING` (the old deployment keeps serving throughout) just as much
692
+ * as from one that is `SUSPENDED`/`SLEEPING`/`NOT_DEPLOYED` (nothing serves until
693
+ * the new one comes up), so "is a promotion in progress" cannot be read off this
694
+ * field's value under any reading of it. To detect one, compare `production`'s
695
+ * `desiredId`/`desiredNumber` against `actualId`/`actualNumber`: while they
696
+ * differ, the deployment named `desired` has been asked for but the one named
697
+ * `actual` is still what traffic actually reaches (or nothing is serving yet, if
698
+ * `actual` is still `null`). A client that needs both facts — is production
699
+ * serving, and is a rollout in progress — must read both `state` and `production`;
700
+ * neither can be derived from the other.
701
+ *
702
+ * | Value | Meaning for a caller |
703
+ * |---|---|
704
+ * | `NOT_DEPLOYED` | No `/v2` deployment has ever been promoted to this app's production. Its URL is reserved and publicly 404s. Also shown for an app that only runs via `/v1` and was never adopted into the deployments model — `production` is `{null, null}` for it too, for the same reason. |
705
+ * | `STARTING` | Production is named but not yet confirmed serving — right after a first `promote`/`resume`, during a normal startup, or a promotion in flight where nothing was already serving beforehand (`production.actualId` was `null` going in). |
706
+ * | `RUNNING` | Production is named and serving. Normal and healthy — including for the entire duration of a blue/green promotion started from a `RUNNING` app: the old, still-`actual` deployment keeps serving traffic throughout, so this stays `RUNNING` rather than dropping to `STARTING` for the length of the rollout. Compare `production.desiredId`/`actualId` if you need to know whether that rollout is still in progress. |
707
+ * | `SLEEPING` | Stopped, but **will** wake on the next request — apps-proxy's wake-on-request path is still armed. This is the NORMAL, expected condition for an idle data app between visits, not an outage; do not alert on it. Produced by idle auto-suspend, which patches only the workload state and deliberately leaves wake-on-request armed. No idle-auto-suspend mechanism exists for a purely `/v2`-created app yet (deferred, not built) — today this is reachable only for a `/v1`-adopted app still picked up by the legacy idle-suspend job, the same way `Deployment.buildState`'s non-`PREBUILT` values are not reachable until builds land. |
708
+ * | `SUSPENDED` | Stopped and will **not** wake on the next request — a visitor gets a `503` instead. Produced only by an explicit `POST .../suspend`; cleared only by `POST .../resume`. This is the field this whole enum exists to make distinguishable from `SLEEPING`: before it, both looked identical from the outside, and the only way to tell them apart was `POST .../resume` and inspecting `202` vs `204` — a write used as a read, which could itself wake a sleeping app. |
709
+ *
710
+ * Mirrored from the App CRD (`spec.state`, `spec.autoRestartEnabled`,
711
+ * `status.currentState`, `status.production`) by the same background sync that
712
+ * mirrors `production`, so reading it costs no extra cluster call — including on
713
+ * `GET /apps`, which would otherwise be one cluster round trip per row. The one
714
+ * exception: `suspend`/`resume`/`promote`/`unpublish` write this field
715
+ * themselves, immediately, in the same call that changes it, so the App they
716
+ * return is never one sync cycle stale about its own action.
717
+ *
718
+ * Deliberately not `Stopping`, even though the App CRD's `status.currentState`
719
+ * names a fourth value: verified against the operator's product-role
720
+ * controller, which never publishes it for a product App — its derivation has
721
+ * exactly three branches. Also deliberately not `FAILED` — see above.
722
+ * @enum {string}
723
+ */
724
+ state: 'NOT_DEPLOYED' | 'STARTING' | 'RUNNING' | 'SLEEPING' | 'SUSPENDED';
725
+ };
726
+ /** @description Minimal shape — additional fields may be added as the `/v2` surface grows. Deliberately excludes app content and auth: both are Storage API concerns, configured after creation on the config named by the response's `componentId`/`branchId`/`configId` — content via `parameters`, auth via `authorization.app_proxy`. */
727
+ AppCreateRequest: {
728
+ /** @description Create-only: stored in the app's Storage configuration (see `App.componentId`) and never copied onto the `App` response. There is no way to rename it after creation — `AppPatchRequest` carries no field for it. */
729
+ name: string;
730
+ /**
731
+ * @description App type. Only data-app types are supported by `/v2/apps` — workspace types (e.g. `snowflake`, `bigquery`) are created via `/apps`, not this endpoint.
732
+ * @enum {string}
733
+ */
734
+ type: 'streamlit' | 'python-js';
735
+ /** @description Create-only, same as `name` — stored in the app's Storage configuration (see `App.componentId`) and never copied onto the `App` response or editable afterwards. */
736
+ description?: string | null;
737
+ };
738
+ /** @description No patchable field exists yet — `name` and `description` are create-only (see `AppCreateRequest`), so the only currently valid body is `{}`; sending either is rejected as an unknown field (`422`), not silently ignored. Additional fields may be added here as the `/v2` surface grows. Promotion, unpublishing, suspend, and resume are separate action-verb endpoints, not part of this shape. */
739
+ AppPatchRequest: Record<string, never>;
740
+ Deployment: {
741
+ /** @description Deployment id — also the deterministic Kubernetes CR name. */
742
+ id: string;
743
+ /** @description Display/sort number, allocated from a per-app DB sequence. */
744
+ number: number;
745
+ /** @description Storage config id this deployment was created from. Paired with `configVersion` below because a version number alone cannot be resolved via the Storage API without knowing which config it belongs to — the pairing mirrors `GET /apps/{appId}`, whose own `configId`/`configVersion` describe the app's *current* config rather than what a specific deployment was pinned to. */
746
+ configId: string;
747
+ /** @description Storage config version pinned at deploy time. Resolved fresh from Storage on every `POST .../deployments` call, so it can differ from the app's own `configVersion` (which only reflects the config as of app creation). */
748
+ configVersion: string;
749
+ /** @description Git commit the deployment's code was built from. Always `null` today: no /v2 app type builds from a git-managed source yet, so nothing ever resolves a commit SHA to attach here. Present as a field now so a future git-backed build path has nowhere else to put it. */
750
+ gitCommitSha: string | null;
751
+ /**
752
+ * @description Backend size, pinned per version at deploy time from the config's `runtime.backend.size` (falling back to `parameters.size`). `null` when the config named no size, or named one that is not a recognised value — in both cases the platform default applies.
753
+ * @enum {string|null}
754
+ */
755
+ size?: 'micro' | 'tiny' | 'small' | 'medium' | 'large' | 'external' | null;
756
+ /**
757
+ * @description Does a runnable artifact exist for this deployment?
758
+ *
759
+ * Only `PREBUILT` occurs today, and it is a fact rather than a placeholder: a
760
+ * deployment is created with `source.image`, so an image is supplied and the
761
+ * platform builds nothing. The remaining values become reachable when builds
762
+ * land and a deployment can name a commit or branch instead. `PREBUILT` does
763
+ * not become obsolete then — supplying a ready image stays legitimate, so it
764
+ * stops being the only value rather than becoming a wrong one.
765
+ *
766
+ * `FAILED` here means no artifact was produced, so the deployment can never
767
+ * run. That is a different problem, with a different fix, from a run failure.
768
+ * @enum {string}
769
+ */
770
+ buildState: 'PREBUILT' | 'PENDING' | 'BUILDING' | 'BUILT' | 'FAILED';
771
+ /**
772
+ * @description Is there a live workload for this deployment right now, and is it healthy?
773
+ *
774
+ * * `NEVER_RUN` — nothing ever started it. Deployments are created stopped and
775
+ * only become running once promoted, so this is the normal state of a staged
776
+ * deployment, not a stall.
777
+ * * `PENDING` — a run was requested but nothing is executing yet: pulling an
778
+ * image, waiting to be scheduled, or unable to be placed at all.
779
+ * * `STARTING` — a container is executing but not ready yet.
780
+ * * `RUNNING` — up and ready.
781
+ * * `STOPPING` / `STOPPED` — shutting down, or stopped having run before.
782
+ * * `FAILED` — the workload crashed, could not start, or hit a terminal
783
+ * dependency error. `GET /apps/{appId}/runs` carries the cause.
784
+ *
785
+ * **Known limitation.** A promoted deployment blocked by a *platform* failure —
786
+ * an image that cannot be pulled, a pod that cannot be scheduled — stays
787
+ * `PENDING` indefinitely with no reason attached and no automatic resolution.
788
+ * Its container never executes, so nothing records a workload failure. This is
789
+ * accepted behaviour, not a transient state to wait out: a `PENDING` that is
790
+ * not advancing, with the app's `production.desiredId` naming this deployment's
791
+ * `id` while `production.actualId` names another, is what it looks like.
792
+ * Production is unaffected — the previously promoted deployment keeps serving.
793
+ *
794
+ * This axis says nothing about whether the deployment is production. That is a
795
+ * property of the app's pointer, not of the version, and lives on the app as
796
+ * `production.desiredId` / `production.actualId` (plus their `Number` twins).
797
+ *
798
+ * **Deriving a single headline status**, for clients that want one. Apply in
799
+ * order, first match wins — recorded here so every client agrees rather than
800
+ * inventing its own rule:
801
+ *
802
+ * | condition | headline |
803
+ * |---|---|
804
+ * | `buildState == FAILED` | build failed |
805
+ * | `buildState in (PENDING, BUILDING)` | building |
806
+ * | `runState == FAILED` | failed |
807
+ * | `runState in (PENDING, STARTING)` | starting |
808
+ * | `runState == RUNNING` | running |
809
+ * | `runState == STOPPING` | stopping |
810
+ * | `runState == STOPPED` | stopped |
811
+ * | `runState == NEVER_RUN` | ready — built, idle, promotable |
812
+ *
813
+ * Not published as a field: with `buildState` fixed at `PREBUILT`, it would be
814
+ * a pure function of `runState` and so a rename of the field beside it. It
815
+ * becomes worth shipping once builds make `buildState` vary.
816
+ * @enum {string}
817
+ */
818
+ runState:
819
+ | 'NEVER_RUN'
820
+ | 'PENDING'
821
+ | 'STARTING'
822
+ | 'RUNNING'
823
+ | 'STOPPING'
824
+ | 'STOPPED'
825
+ | 'FAILED';
826
+ /** @description `true` once retired (member CR + rendered-config Secret deleted); the row remains in history and is re-materializable. */
827
+ archived: boolean;
828
+ /**
829
+ * Format: date-time
830
+ * @description When the deployment was retired; `null` while `archived` is `false`.
831
+ */
832
+ archivedAt: string | null;
833
+ /**
834
+ * Format: date-time
835
+ * @description When this deployment row was created (i.e. deployed).
836
+ */
837
+ createdAt: string;
838
+ };
839
+ /** @description A single execution of a deployment. Shares every field with `/v1`'s run payload except `deploymentId`, which `/v1` does not carry: `/v1` has no concept of deployments, so unlike the rest of this shape it does not travel back there. This is a deliberate, permanent divergence — not drift to "fix" by adding `deploymentId` to `/v1` or by removing it here. */
840
+ Run: {
841
+ /** Format: uuid */
842
+ id: string;
843
+ appId: string;
844
+ /** @description The deployment this run belongs to. `null` for a run that belongs to the app itself rather than to a deployment (a `/v1`-style run), which is why it is nullable rather than required-and-present. */
845
+ deploymentId: string | null;
846
+ /**
847
+ * @description Lower-case, unlike the `UPPER_SNAKE` of a deployment's `buildState` and `runState`. That is deliberate, not an oversight: this field is shared with `/v1`'s run payload, and changing the casing on the `/v2` copy alone would fork the two. If it is ever normalised, both surfaces move together.
848
+ * @enum {string|null}
849
+ */
850
+ state?: 'starting' | 'running' | 'failed' | 'finished' | null;
851
+ /**
852
+ * Format: date-time
853
+ * @description When the run was opened — stamped before any compute exists, so `now - createdAt` on a deployment still reported `PENDING` is how long it has failed to start.
854
+ */
855
+ createdAt?: string | null;
856
+ /**
857
+ * Format: date-time
858
+ * @description When the run's workload became ready — stamped only once a Pod matching this run reports `Ready`. A run that never got that far keeps `null` here for good, so `startedAt: null` means "no compute ever became healthy", not "no information". It is not a failure signal on its own: a run can end `failed` with `startedAt: null` and still carry a classified `failureReason`.
859
+ */
860
+ startedAt?: string | null;
861
+ /** Format: date-time */
862
+ stoppedAt?: string | null;
863
+ startupLogs?: string | null;
864
+ runtimeSize?: string | null;
865
+ runtimeBackendType?: string | null;
866
+ configVersion?: string | null;
867
+ imageVersion?: string | null;
868
+ /**
869
+ * @description Why the run failed, when it did. The cause a failed deployment points at. Set at the moment a cause is attributed and never updated afterwards.
870
+ * A cause is recorded whenever one can be attributed, which happens on both sides of the container ever executing: **before compute** — configuration, decryption, storage-token and workspace failures — and **after the container has executed** — a startup probe that never passed, a startup deadline exceeded. So a classified failure says nothing about how far the run got: plenty of them never started at all.
871
+ * **The one gap is a container that never executed for a platform reason** — `ImagePullBackOff`, `CreateContainerError`, a Pod that cannot be scheduled. Such a run keeps its `createdAt`, never gets a `startedAt`, and never gets a `failureReason`; it stays open indefinitely rather than being closed as failed. That is deliberate — platform problems are left to recover once the platform issue is fixed — and it is the same gap a deployment stuck at `runState: PENDING` is the visible form of. A run left open this way is never billed: billing needs `startedAt`, and there is no fallback to `createdAt`.
872
+ * Absence therefore means "no cause was attributable", not "look again later" — for the platform case nothing further will ever arrive. Runs predating the field are also unclassified.
873
+ * Both members are present whenever the object is, but either may be `null`. Branch on `reason`, not on `message`.
874
+ */
875
+ failureReason?: {
876
+ /**
877
+ * @description Short, stable, machine-readable identifier, intended as a UI i18n key — the member to switch on when headlining a failure. The value set is owned by the operator and is not enumerated here, so a client must keep a default branch for identifiers it does not know.
878
+ * Stable, but **coarser than the names suggest**: one identifier is deliberately reused across related causes rather than split, because each value is an i18n key a client has to learn before it can be emitted. Do not infer the precise cause from `reason` alone — `message` carries the actionable detail, and two failures sharing a `reason` need not share a remedy.
879
+ */
880
+ reason?: string | null;
881
+ /** @description Human-readable description of the failure, free of internal resource names and cluster-internal detail. Safe to show verbatim. */
882
+ message?: string | null;
883
+ } | null;
884
+ mode?: string;
885
+ };
886
+ DeploymentCreateRequest: {
887
+ /**
888
+ * @description If true (the default), this deployment is also promoted to production. Set `false` to stage a release now and promote it later: the deployment is created and its config version pinned immutably, but nothing starts it and it is not reachable — a staged deployment only ever runs once promoted, at which point the operator validates it by starting it and switches the route only if it becomes healthy.
889
+ * @default true
890
+ */
891
+ promote: boolean;
892
+ };
893
+ CreateCredentialRequest: {
894
+ /** @enum {string} */
895
+ type: 'ssh_key' | 'http_token';
896
+ /** @description SSH public key. Required iff `type` is `ssh_key`; forbidden otherwise. */
897
+ publicKey?: string;
898
+ /**
899
+ * @description Optional caller-supplied display label.
900
+ * @default
901
+ */
902
+ name: string;
903
+ /** @enum {string} */
904
+ permissions: 'readOnly' | 'readWrite';
905
+ };
906
+ Credential: {
907
+ /** Format: uuid */
908
+ id: string;
909
+ /** @enum {string} */
910
+ type: 'ssh_key' | 'http_token';
911
+ name: string;
912
+ /** @enum {string} */
913
+ permissions: 'readOnly' | 'readWrite';
914
+ ownerAdminId: string;
915
+ /** Format: date-time */
916
+ createdAt: string;
917
+ };
918
+ CreatedCredential: components['schemas']['Credential'] & {
919
+ /** @description One-time secret returned only at creation for `http_token` credentials. */
920
+ secret?: string;
921
+ };
922
+ CredentialList: {
923
+ credentials: components['schemas']['Credential'][];
924
+ };
925
+ };
926
+ responses: never;
927
+ parameters: never;
928
+ requestBodies: never;
929
+ headers: never;
930
+ pathItems: never;
931
+ };
932
+ interface operations {
933
+ index: {
934
+ parameters: {
935
+ query?: never;
936
+ header?: never;
937
+ path?: never;
938
+ cookie?: never;
939
+ };
940
+ requestBody?: never;
941
+ responses: {
942
+ /** @description Service metadata */
943
+ 200: {
944
+ headers: {
945
+ [name: string]: unknown;
946
+ };
947
+ content: {
948
+ /**
949
+ * @example {
950
+ * "appName": "sandboxes-service",
951
+ * "appVersion": "1.2.3",
952
+ * "apiDocs": "http://apps.eu-west-1.aws.keboola.dev/docs/swagger.yaml"
953
+ * }
954
+ */
955
+ 'application/json': {
956
+ appName?: string;
957
+ appVersion?: string;
958
+ /** Format: url */
959
+ apiDocs?: string;
960
+ };
961
+ };
962
+ };
963
+ };
964
+ };
965
+ listApps: {
966
+ parameters: {
967
+ query?: {
968
+ offset?: number;
969
+ limit?: number;
970
+ };
971
+ header?: never;
972
+ path?: never;
973
+ cookie?: never;
974
+ };
975
+ requestBody?: never;
976
+ responses: {
977
+ /** @description OK */
978
+ 200: {
979
+ headers: {
980
+ [name: string]: unknown;
981
+ };
982
+ content: {
983
+ 'application/json': components['schemas']['App'][];
984
+ };
985
+ };
986
+ };
987
+ };
988
+ createApp: {
989
+ parameters: {
990
+ query?: never;
991
+ header?: {
992
+ 'Idempotency-Key'?: string;
993
+ };
994
+ path?: never;
995
+ cookie?: never;
996
+ };
997
+ requestBody: {
998
+ content: {
999
+ 'application/json': components['schemas']['AppCreateRequest'];
1000
+ };
1001
+ };
1002
+ responses: {
1003
+ /** @description OK — an `Idempotency-Key` replay; the app already existed and nothing was created. */
1004
+ 200: {
1005
+ headers: {
1006
+ [name: string]: unknown;
1007
+ };
1008
+ content: {
1009
+ 'application/json': components['schemas']['App'];
1010
+ };
1011
+ };
1012
+ /** @description Created */
1013
+ 201: {
1014
+ headers: {
1015
+ [name: string]: unknown;
1016
+ };
1017
+ content: {
1018
+ 'application/json': components['schemas']['App'];
1019
+ };
1020
+ };
1021
+ /** @description Unprocessable Entity */
1022
+ 422: {
1023
+ headers: {
1024
+ [name: string]: unknown;
1025
+ };
1026
+ content?: never;
1027
+ };
1028
+ };
1029
+ };
1030
+ getApp: {
1031
+ parameters: {
1032
+ query?: never;
1033
+ header?: never;
1034
+ path: {
1035
+ appId: string;
1036
+ };
1037
+ cookie?: never;
1038
+ };
1039
+ requestBody?: never;
1040
+ responses: {
1041
+ /** @description OK */
1042
+ 200: {
1043
+ headers: {
1044
+ [name: string]: unknown;
1045
+ };
1046
+ content: {
1047
+ 'application/json': components['schemas']['App'];
1048
+ };
1049
+ };
1050
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1051
+ 403: {
1052
+ headers: {
1053
+ [name: string]: unknown;
1054
+ };
1055
+ content?: never;
1056
+ };
1057
+ /** @description Not Found */
1058
+ 404: {
1059
+ headers: {
1060
+ [name: string]: unknown;
1061
+ };
1062
+ content?: never;
1063
+ };
1064
+ };
1065
+ };
1066
+ deleteApp: {
1067
+ parameters: {
1068
+ query?: never;
1069
+ header?: never;
1070
+ path: {
1071
+ appId: string;
1072
+ };
1073
+ cookie?: never;
1074
+ };
1075
+ requestBody?: never;
1076
+ responses: {
1077
+ /** @description Accepted */
1078
+ 202: {
1079
+ headers: {
1080
+ [name: string]: unknown;
1081
+ };
1082
+ content?: never;
1083
+ };
1084
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1085
+ 403: {
1086
+ headers: {
1087
+ [name: string]: unknown;
1088
+ };
1089
+ content?: never;
1090
+ };
1091
+ /** @description Not Found */
1092
+ 404: {
1093
+ headers: {
1094
+ [name: string]: unknown;
1095
+ };
1096
+ content?: never;
1097
+ };
1098
+ };
1099
+ };
1100
+ patchApp: {
1101
+ parameters: {
1102
+ query?: never;
1103
+ header?: never;
1104
+ path: {
1105
+ appId: string;
1106
+ };
1107
+ cookie?: never;
1108
+ };
1109
+ requestBody: {
1110
+ content: {
1111
+ 'application/json': components['schemas']['AppPatchRequest'];
1112
+ };
1113
+ };
1114
+ responses: {
1115
+ /** @description OK */
1116
+ 200: {
1117
+ headers: {
1118
+ [name: string]: unknown;
1119
+ };
1120
+ content: {
1121
+ 'application/json': components['schemas']['App'];
1122
+ };
1123
+ };
1124
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1125
+ 403: {
1126
+ headers: {
1127
+ [name: string]: unknown;
1128
+ };
1129
+ content?: never;
1130
+ };
1131
+ /** @description Not Found */
1132
+ 404: {
1133
+ headers: {
1134
+ [name: string]: unknown;
1135
+ };
1136
+ content?: never;
1137
+ };
1138
+ };
1139
+ };
1140
+ unpublishApp: {
1141
+ parameters: {
1142
+ query?: never;
1143
+ header?: never;
1144
+ path: {
1145
+ appId: string;
1146
+ };
1147
+ cookie?: never;
1148
+ };
1149
+ requestBody?: never;
1150
+ responses: {
1151
+ /** @description Accepted — production is being unset */
1152
+ 202: {
1153
+ headers: {
1154
+ [name: string]: unknown;
1155
+ };
1156
+ content: {
1157
+ 'application/json': components['schemas']['App'];
1158
+ };
1159
+ };
1160
+ /** @description No Content — already unpublished (with or without an App CRD); no-op */
1161
+ 204: {
1162
+ headers: {
1163
+ [name: string]: unknown;
1164
+ };
1165
+ content?: never;
1166
+ };
1167
+ /** @description Not Found */
1168
+ 404: {
1169
+ headers: {
1170
+ [name: string]: unknown;
1171
+ };
1172
+ content?: never;
1173
+ };
1174
+ };
1175
+ };
1176
+ suspendApp: {
1177
+ parameters: {
1178
+ query?: never;
1179
+ header?: never;
1180
+ path: {
1181
+ appId: string;
1182
+ };
1183
+ cookie?: never;
1184
+ };
1185
+ requestBody?: never;
1186
+ responses: {
1187
+ /** @description Accepted — suspend is being applied */
1188
+ 202: {
1189
+ headers: {
1190
+ [name: string]: unknown;
1191
+ };
1192
+ content: {
1193
+ 'application/json': components['schemas']['App'];
1194
+ };
1195
+ };
1196
+ /** @description No Content — already suspended; no-op */
1197
+ 204: {
1198
+ headers: {
1199
+ [name: string]: unknown;
1200
+ };
1201
+ content?: never;
1202
+ };
1203
+ /** @description Not Found */
1204
+ 404: {
1205
+ headers: {
1206
+ [name: string]: unknown;
1207
+ };
1208
+ content?: never;
1209
+ };
1210
+ /** @description Conflict — either the app has no currently serving member to suspend, or the app has no App CRD (it was never deployed via /v2). */
1211
+ 409: {
1212
+ headers: {
1213
+ [name: string]: unknown;
1214
+ };
1215
+ content: {
1216
+ 'application/json': components['schemas']['ErrorResponse'];
1217
+ };
1218
+ };
1219
+ };
1220
+ };
1221
+ resumeApp: {
1222
+ parameters: {
1223
+ query?: never;
1224
+ header?: never;
1225
+ path: {
1226
+ appId: string;
1227
+ };
1228
+ cookie?: never;
1229
+ };
1230
+ requestBody?: never;
1231
+ responses: {
1232
+ /** @description Accepted — resume is being applied */
1233
+ 202: {
1234
+ headers: {
1235
+ [name: string]: unknown;
1236
+ };
1237
+ content: {
1238
+ 'application/json': components['schemas']['App'];
1239
+ };
1240
+ };
1241
+ /** @description No Content — already running; no-op */
1242
+ 204: {
1243
+ headers: {
1244
+ [name: string]: unknown;
1245
+ };
1246
+ content?: never;
1247
+ };
1248
+ /** @description Not Found */
1249
+ 404: {
1250
+ headers: {
1251
+ [name: string]: unknown;
1252
+ };
1253
+ content?: never;
1254
+ };
1255
+ /** @description Conflict — either the app has no currently serving member to resume, or the app has no App CRD (it was never deployed via /v2). */
1256
+ 409: {
1257
+ headers: {
1258
+ [name: string]: unknown;
1259
+ };
1260
+ content: {
1261
+ 'application/json': components['schemas']['ErrorResponse'];
1262
+ };
1263
+ };
1264
+ };
1265
+ };
1266
+ recordAppActivity: {
1267
+ parameters: {
1268
+ query?: never;
1269
+ header?: never;
1270
+ path: {
1271
+ appId: string;
1272
+ };
1273
+ cookie?: never;
1274
+ };
1275
+ requestBody: {
1276
+ content: {
1277
+ 'application/json': {
1278
+ /** Format: date-time */
1279
+ lastRequestTimestamp: string;
1280
+ };
1281
+ };
1282
+ };
1283
+ responses: {
1284
+ /** @description No Content — recorded */
1285
+ 204: {
1286
+ headers: {
1287
+ [name: string]: unknown;
1288
+ };
1289
+ content?: never;
1290
+ };
1291
+ /** @description Unauthorized */
1292
+ 401: {
1293
+ headers: {
1294
+ [name: string]: unknown;
1295
+ };
1296
+ content?: never;
1297
+ };
1298
+ /** @description Forbidden */
1299
+ 403: {
1300
+ headers: {
1301
+ [name: string]: unknown;
1302
+ };
1303
+ content?: never;
1304
+ };
1305
+ /** @description Not Found */
1306
+ 404: {
1307
+ headers: {
1308
+ [name: string]: unknown;
1309
+ };
1310
+ content?: never;
1311
+ };
1312
+ /** @description Unprocessable Entity — missing or malformed `lastRequestTimestamp` */
1313
+ 422: {
1314
+ headers: {
1315
+ [name: string]: unknown;
1316
+ };
1317
+ content: {
1318
+ 'application/json': components['schemas']['ErrorResponse'];
1319
+ };
1320
+ };
1321
+ };
1322
+ };
1323
+ getAppPassword: {
1324
+ parameters: {
1325
+ query?: never;
1326
+ header?: never;
1327
+ path: {
1328
+ appId: string;
1329
+ };
1330
+ cookie?: never;
1331
+ };
1332
+ requestBody?: never;
1333
+ responses: {
1334
+ /** @description OK */
1335
+ 200: {
1336
+ headers: {
1337
+ [name: string]: unknown;
1338
+ };
1339
+ content: {
1340
+ 'application/json': {
1341
+ password?: string | null;
1342
+ };
1343
+ };
1344
+ };
1345
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1346
+ 403: {
1347
+ headers: {
1348
+ [name: string]: unknown;
1349
+ };
1350
+ content?: never;
1351
+ };
1352
+ /** @description Not Found */
1353
+ 404: {
1354
+ headers: {
1355
+ [name: string]: unknown;
1356
+ };
1357
+ content?: never;
1358
+ };
1359
+ };
1360
+ };
1361
+ resetAppPassword: {
1362
+ parameters: {
1363
+ query?: never;
1364
+ header?: never;
1365
+ path: {
1366
+ appId: string;
1367
+ };
1368
+ cookie?: never;
1369
+ };
1370
+ requestBody?: never;
1371
+ responses: {
1372
+ /** @description OK */
1373
+ 200: {
1374
+ headers: {
1375
+ [name: string]: unknown;
1376
+ };
1377
+ content: {
1378
+ 'application/json': components['schemas']['App'];
1379
+ };
1380
+ };
1381
+ /** @description Bad Request — the app's config has no `password`-type auth provider. */
1382
+ 400: {
1383
+ headers: {
1384
+ [name: string]: unknown;
1385
+ };
1386
+ content: {
1387
+ 'application/json': components['schemas']['ErrorResponse'];
1388
+ };
1389
+ };
1390
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1391
+ 403: {
1392
+ headers: {
1393
+ [name: string]: unknown;
1394
+ };
1395
+ content?: never;
1396
+ };
1397
+ /** @description Not Found */
1398
+ 404: {
1399
+ headers: {
1400
+ [name: string]: unknown;
1401
+ };
1402
+ content?: never;
1403
+ };
1404
+ };
1405
+ };
1406
+ listRuns: {
1407
+ parameters: {
1408
+ query?: {
1409
+ /** @description Restrict to runs of a single deployment. */
1410
+ deploymentId?: string;
1411
+ /** @description Restrict to runs with `createdAt >= since` (RFC 3339 / ISO-8601, e.g. `2026-01-01T00:00:00+00:00`). */
1412
+ since?: string;
1413
+ /** @description Restrict to runs with `createdAt <= until` (RFC 3339 / ISO-8601). */
1414
+ until?: string;
1415
+ /** @description Applies to the window already narrowed by `since`/`until`/`deploymentId`, not to the app's full run history. */
1416
+ offset?: number;
1417
+ limit?: number;
1418
+ };
1419
+ header?: never;
1420
+ path: {
1421
+ appId: string;
1422
+ };
1423
+ cookie?: never;
1424
+ };
1425
+ requestBody?: never;
1426
+ responses: {
1427
+ /** @description OK */
1428
+ 200: {
1429
+ headers: {
1430
+ [name: string]: unknown;
1431
+ };
1432
+ content: {
1433
+ 'application/json': components['schemas']['Run'][];
1434
+ };
1435
+ };
1436
+ /** @description Bad Request — `since` or `until` is not a parseable RFC 3339 timestamp. */
1437
+ 400: {
1438
+ headers: {
1439
+ [name: string]: unknown;
1440
+ };
1441
+ content: {
1442
+ 'application/json': components['schemas']['ErrorResponse'];
1443
+ };
1444
+ };
1445
+ /** @description Forbidden — the token belongs to a different project */
1446
+ 403: {
1447
+ headers: {
1448
+ [name: string]: unknown;
1449
+ };
1450
+ content?: never;
1451
+ };
1452
+ /** @description Not Found */
1453
+ 404: {
1454
+ headers: {
1455
+ [name: string]: unknown;
1456
+ };
1457
+ content: {
1458
+ 'application/json': components['schemas']['ErrorResponse'];
1459
+ };
1460
+ };
1461
+ };
1462
+ };
1463
+ getRun: {
1464
+ parameters: {
1465
+ query?: never;
1466
+ header?: never;
1467
+ path: {
1468
+ appId: string;
1469
+ runId: string;
1470
+ };
1471
+ cookie?: never;
1472
+ };
1473
+ requestBody?: never;
1474
+ responses: {
1475
+ /** @description OK */
1476
+ 200: {
1477
+ headers: {
1478
+ [name: string]: unknown;
1479
+ };
1480
+ content: {
1481
+ 'application/json': components['schemas']['Run'];
1482
+ };
1483
+ };
1484
+ /** @description Forbidden — the token belongs to a different project */
1485
+ 403: {
1486
+ headers: {
1487
+ [name: string]: unknown;
1488
+ };
1489
+ content?: never;
1490
+ };
1491
+ /** @description Not Found */
1492
+ 404: {
1493
+ headers: {
1494
+ [name: string]: unknown;
1495
+ };
1496
+ content: {
1497
+ 'application/json': components['schemas']['ErrorResponse'];
1498
+ };
1499
+ };
1500
+ };
1501
+ };
1502
+ listDeployments: {
1503
+ parameters: {
1504
+ query?: never;
1505
+ header?: never;
1506
+ path: {
1507
+ appId: string;
1508
+ };
1509
+ cookie?: never;
1510
+ };
1511
+ requestBody?: never;
1512
+ responses: {
1513
+ /** @description OK */
1514
+ 200: {
1515
+ headers: {
1516
+ [name: string]: unknown;
1517
+ };
1518
+ content: {
1519
+ 'application/json': components['schemas']['Deployment'][];
1520
+ };
1521
+ };
1522
+ /** @description Not Found */
1523
+ 404: {
1524
+ headers: {
1525
+ [name: string]: unknown;
1526
+ };
1527
+ content?: never;
1528
+ };
1529
+ };
1530
+ };
1531
+ createDeployment: {
1532
+ parameters: {
1533
+ query?: never;
1534
+ header?: {
1535
+ 'Idempotency-Key'?: string;
1536
+ };
1537
+ path: {
1538
+ appId: string;
1539
+ };
1540
+ cookie?: never;
1541
+ };
1542
+ requestBody?: {
1543
+ content: {
1544
+ 'application/json': components['schemas']['DeploymentCreateRequest'];
1545
+ };
1546
+ };
1547
+ responses: {
1548
+ /** @description OK — an `Idempotency-Key` replay; the deployment already existed and nothing was created. */
1549
+ 200: {
1550
+ headers: {
1551
+ [name: string]: unknown;
1552
+ };
1553
+ content: {
1554
+ 'application/json': components['schemas']['Deployment'];
1555
+ };
1556
+ };
1557
+ /** @description Accepted — deployment created. It starts at `buildState: PREBUILT`, `runState: NEVER_RUN`; promoting it is what causes it to run. */
1558
+ 202: {
1559
+ headers: {
1560
+ [name: string]: unknown;
1561
+ };
1562
+ content: {
1563
+ 'application/json': components['schemas']['Deployment'];
1564
+ };
1565
+ };
1566
+ /** @description Not Found */
1567
+ 404: {
1568
+ headers: {
1569
+ [name: string]: unknown;
1570
+ };
1571
+ content?: never;
1572
+ };
1573
+ };
1574
+ };
1575
+ getDeployment: {
1576
+ parameters: {
1577
+ query?: never;
1578
+ header?: never;
1579
+ path: {
1580
+ appId: string;
1581
+ deploymentId: string;
1582
+ };
1583
+ cookie?: never;
1584
+ };
1585
+ requestBody?: never;
1586
+ responses: {
1587
+ /** @description OK */
1588
+ 200: {
1589
+ headers: {
1590
+ [name: string]: unknown;
1591
+ };
1592
+ content: {
1593
+ 'application/json': components['schemas']['Deployment'];
1594
+ };
1595
+ };
1596
+ /** @description Not Found */
1597
+ 404: {
1598
+ headers: {
1599
+ [name: string]: unknown;
1600
+ };
1601
+ content?: never;
1602
+ };
1603
+ };
1604
+ };
1605
+ deleteDeployment: {
1606
+ parameters: {
1607
+ query?: never;
1608
+ header?: never;
1609
+ path: {
1610
+ appId: string;
1611
+ deploymentId: string;
1612
+ };
1613
+ cookie?: never;
1614
+ };
1615
+ requestBody?: never;
1616
+ responses: {
1617
+ /** @description Accepted — the member CR and its rendered-config Secret are being deleted */
1618
+ 202: {
1619
+ headers: {
1620
+ [name: string]: unknown;
1621
+ };
1622
+ content?: never;
1623
+ };
1624
+ /** @description No Content — already archived; no-op */
1625
+ 204: {
1626
+ headers: {
1627
+ [name: string]: unknown;
1628
+ };
1629
+ content?: never;
1630
+ };
1631
+ /** @description Not Found */
1632
+ 404: {
1633
+ headers: {
1634
+ [name: string]: unknown;
1635
+ };
1636
+ content?: never;
1637
+ };
1638
+ /** @description Conflict — this deployment's id is named production.desiredId or production.actualId on the app. */
1639
+ 409: {
1640
+ headers: {
1641
+ [name: string]: unknown;
1642
+ };
1643
+ content: {
1644
+ 'application/json': components['schemas']['ErrorResponse'];
1645
+ };
1646
+ };
1647
+ };
1648
+ };
1649
+ promoteDeployment: {
1650
+ parameters: {
1651
+ query?: never;
1652
+ header?: never;
1653
+ path: {
1654
+ appId: string;
1655
+ deploymentId: string;
1656
+ };
1657
+ cookie?: never;
1658
+ };
1659
+ requestBody?: never;
1660
+ responses: {
1661
+ /** @description Accepted — the intent was recorded. The operator validates and switches the route asynchronously; `production.desiredId`/`desiredNumber` and `production.actualId`/`actualNumber` on the app differ until it converges, and the deployment's own `runState` reports a target that failed to start. */
1662
+ 202: {
1663
+ headers: {
1664
+ [name: string]: unknown;
1665
+ };
1666
+ content: {
1667
+ 'application/json': components['schemas']['App'];
1668
+ };
1669
+ };
1670
+ /** @description No Content — already production; no-op */
1671
+ 204: {
1672
+ headers: {
1673
+ [name: string]: unknown;
1674
+ };
1675
+ content?: never;
1676
+ };
1677
+ /** @description Not Found */
1678
+ 404: {
1679
+ headers: {
1680
+ [name: string]: unknown;
1681
+ };
1682
+ content?: never;
1683
+ };
1684
+ /** @description Conflict — the app has no App CRD (it was never deployed via /v2). */
1685
+ 409: {
1686
+ headers: {
1687
+ [name: string]: unknown;
1688
+ };
1689
+ content: {
1690
+ 'application/json': components['schemas']['ErrorResponse'];
1691
+ };
1692
+ };
1693
+ };
1694
+ };
1695
+ tailAppLogs: {
1696
+ parameters: {
1697
+ query?: {
1698
+ since?: string;
1699
+ lines?: number;
1700
+ };
1701
+ header?: never;
1702
+ path: {
1703
+ appId: string;
1704
+ };
1705
+ cookie?: never;
1706
+ };
1707
+ requestBody?: never;
1708
+ responses: {
1709
+ /** @description OK */
1710
+ 200: {
1711
+ headers: {
1712
+ [name: string]: unknown;
1713
+ };
1714
+ content: {
1715
+ 'text/plain': string;
1716
+ };
1717
+ };
1718
+ /** @description Bad Request — the app has an App CRD but no currently serving member (`apps.appNotRunning`). */
1719
+ 400: {
1720
+ headers: {
1721
+ [name: string]: unknown;
1722
+ };
1723
+ content: {
1724
+ 'application/json': components['schemas']['ErrorResponse'];
1725
+ };
1726
+ };
1727
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1728
+ 403: {
1729
+ headers: {
1730
+ [name: string]: unknown;
1731
+ };
1732
+ content?: never;
1733
+ };
1734
+ /** @description Not Found */
1735
+ 404: {
1736
+ headers: {
1737
+ [name: string]: unknown;
1738
+ };
1739
+ content?: never;
1740
+ };
1741
+ };
1742
+ };
1743
+ downloadAppLogs: {
1744
+ parameters: {
1745
+ query?: never;
1746
+ header?: never;
1747
+ path: {
1748
+ appId: string;
1749
+ };
1750
+ cookie?: never;
1751
+ };
1752
+ requestBody?: never;
1753
+ responses: {
1754
+ /** @description OK */
1755
+ 200: {
1756
+ headers: {
1757
+ [name: string]: unknown;
1758
+ };
1759
+ content: {
1760
+ 'text/plain': string;
1761
+ };
1762
+ };
1763
+ /** @description Bad Request — the app has an App CRD but no currently serving member (`apps.appNotRunning`). */
1764
+ 400: {
1765
+ headers: {
1766
+ [name: string]: unknown;
1767
+ };
1768
+ content: {
1769
+ 'application/json': components['schemas']['ErrorResponse'];
1770
+ };
1771
+ };
1772
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1773
+ 403: {
1774
+ headers: {
1775
+ [name: string]: unknown;
1776
+ };
1777
+ content?: never;
1778
+ };
1779
+ /** @description Not Found */
1780
+ 404: {
1781
+ headers: {
1782
+ [name: string]: unknown;
1783
+ };
1784
+ content?: never;
1785
+ };
1786
+ };
1787
+ };
1788
+ tailDeploymentLogs: {
1789
+ parameters: {
1790
+ query?: {
1791
+ since?: string;
1792
+ lines?: number;
1793
+ };
1794
+ header?: never;
1795
+ path: {
1796
+ appId: string;
1797
+ deploymentId: string;
1798
+ };
1799
+ cookie?: never;
1800
+ };
1801
+ requestBody?: never;
1802
+ responses: {
1803
+ /** @description OK */
1804
+ 200: {
1805
+ headers: {
1806
+ [name: string]: unknown;
1807
+ };
1808
+ content: {
1809
+ 'text/plain': string;
1810
+ };
1811
+ };
1812
+ /** @description Bad Request — the deployment exists but has nothing currently running (`apps.deploymentNotRunning`). */
1813
+ 400: {
1814
+ headers: {
1815
+ [name: string]: unknown;
1816
+ };
1817
+ content: {
1818
+ 'application/json': components['schemas']['ErrorResponse'];
1819
+ };
1820
+ };
1821
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1822
+ 403: {
1823
+ headers: {
1824
+ [name: string]: unknown;
1825
+ };
1826
+ content?: never;
1827
+ };
1828
+ /** @description Not Found — the app doesn't exist, or the deployment doesn't exist or belongs to a different app. */
1829
+ 404: {
1830
+ headers: {
1831
+ [name: string]: unknown;
1832
+ };
1833
+ content?: never;
1834
+ };
1835
+ };
1836
+ };
1837
+ downloadDeploymentLogs: {
1838
+ parameters: {
1839
+ query?: never;
1840
+ header?: never;
1841
+ path: {
1842
+ appId: string;
1843
+ deploymentId: string;
1844
+ };
1845
+ cookie?: never;
1846
+ };
1847
+ requestBody?: never;
1848
+ responses: {
1849
+ /** @description OK */
1850
+ 200: {
1851
+ headers: {
1852
+ [name: string]: unknown;
1853
+ };
1854
+ content: {
1855
+ 'text/plain': string;
1856
+ };
1857
+ };
1858
+ /** @description Bad Request — the deployment exists but has nothing currently running (`apps.deploymentNotRunning`). */
1859
+ 400: {
1860
+ headers: {
1861
+ [name: string]: unknown;
1862
+ };
1863
+ content: {
1864
+ 'application/json': components['schemas']['ErrorResponse'];
1865
+ };
1866
+ };
1867
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1868
+ 403: {
1869
+ headers: {
1870
+ [name: string]: unknown;
1871
+ };
1872
+ content?: never;
1873
+ };
1874
+ /** @description Not Found — the app doesn't exist, or the deployment doesn't exist or belongs to a different app. */
1875
+ 404: {
1876
+ headers: {
1877
+ [name: string]: unknown;
1878
+ };
1879
+ content?: never;
1880
+ };
1881
+ };
1882
+ };
1883
+ getAppGitRepo: {
1884
+ parameters: {
1885
+ query?: never;
1886
+ header?: never;
1887
+ path: {
1888
+ appId: string;
1889
+ };
1890
+ cookie?: never;
1891
+ };
1892
+ requestBody?: never;
1893
+ responses: {
1894
+ /** @description OK */
1895
+ 200: {
1896
+ headers: {
1897
+ [name: string]: unknown;
1898
+ };
1899
+ content: {
1900
+ 'application/json': {
1901
+ /** @description SSH clone URL. `null` for a repository configured over HTTP(S). */
1902
+ sshUrl: string | null;
1903
+ /** @description HTTPS clone URL. `null` for a repository configured over SSH. */
1904
+ httpsUrl: string | null;
1905
+ /** @description Whether the repository is a managed Git repository provisioned by the service. */
1906
+ isManagedGitRepo: boolean;
1907
+ };
1908
+ };
1909
+ };
1910
+ /** @description Forbidden — the app belongs to a different project than the token's. */
1911
+ 403: {
1912
+ headers: {
1913
+ [name: string]: unknown;
1914
+ };
1915
+ content?: never;
1916
+ };
1917
+ /** @description Not Found */
1918
+ 404: {
1919
+ headers: {
1920
+ [name: string]: unknown;
1921
+ };
1922
+ content?: never;
1923
+ };
1924
+ /** @description Conflict — the app has no Git repository configured. */
1925
+ 409: {
1926
+ headers: {
1927
+ [name: string]: unknown;
1928
+ };
1929
+ content?: never;
1930
+ };
1931
+ };
1932
+ };
1933
+ listAppGitRepoCredentials: {
1934
+ parameters: {
1935
+ query?: never;
1936
+ header?: never;
1937
+ path: {
1938
+ appId: string;
1939
+ };
1940
+ cookie?: never;
1941
+ };
1942
+ requestBody?: never;
1943
+ responses: {
1944
+ /** @description OK */
1945
+ 200: {
1946
+ headers: {
1947
+ [name: string]: unknown;
1948
+ };
1949
+ content: {
1950
+ 'application/json': components['schemas']['CredentialList'];
1951
+ };
1952
+ };
1953
+ /** @description Forbidden — token lacks admin context, or the app belongs to a different project than the token's. */
1954
+ 403: {
1955
+ headers: {
1956
+ [name: string]: unknown;
1957
+ };
1958
+ content?: never;
1959
+ };
1960
+ /** @description Not Found */
1961
+ 404: {
1962
+ headers: {
1963
+ [name: string]: unknown;
1964
+ };
1965
+ content?: never;
1966
+ };
1967
+ };
1968
+ };
1969
+ createAppGitRepoCredential: {
1970
+ parameters: {
1971
+ query?: never;
1972
+ header?: {
1973
+ 'Idempotency-Key'?: string;
1974
+ };
1975
+ path: {
1976
+ appId: string;
1977
+ };
1978
+ cookie?: never;
1979
+ };
1980
+ requestBody: {
1981
+ content: {
1982
+ 'application/json': components['schemas']['CreateCredentialRequest'];
1983
+ };
1984
+ };
1985
+ responses: {
1986
+ /** @description OK — an `Idempotency-Key` replay; the credential already existed and nothing was created. */
1987
+ 200: {
1988
+ headers: {
1989
+ [name: string]: unknown;
1990
+ };
1991
+ content: {
1992
+ 'application/json': components['schemas']['CreatedCredential'];
1993
+ };
1994
+ };
1995
+ /** @description Created */
1996
+ 201: {
1997
+ headers: {
1998
+ [name: string]: unknown;
1999
+ };
2000
+ content: {
2001
+ 'application/json': components['schemas']['CreatedCredential'];
2002
+ };
2003
+ };
2004
+ /** @description Bad Request — invalid payload (wrong type/publicKey combination, missing required fields). */
2005
+ 400: {
2006
+ headers: {
2007
+ [name: string]: unknown;
2008
+ };
2009
+ content?: never;
2010
+ };
2011
+ /** @description Forbidden — token lacks admin context, or the app belongs to a different project than the token's. */
2012
+ 403: {
2013
+ headers: {
2014
+ [name: string]: unknown;
2015
+ };
2016
+ content?: never;
2017
+ };
2018
+ /** @description Not Found */
2019
+ 404: {
2020
+ headers: {
2021
+ [name: string]: unknown;
2022
+ };
2023
+ content?: never;
2024
+ };
2025
+ /** @description Conflict — the app has no managed Git repository. */
2026
+ 409: {
2027
+ headers: {
2028
+ [name: string]: unknown;
2029
+ };
2030
+ content?: never;
2031
+ };
2032
+ };
2033
+ };
2034
+ getAppGitRepoCredential: {
2035
+ parameters: {
2036
+ query?: never;
2037
+ header?: never;
2038
+ path: {
2039
+ appId: string;
2040
+ credentialId: string;
2041
+ };
2042
+ cookie?: never;
2043
+ };
2044
+ requestBody?: never;
2045
+ responses: {
2046
+ /** @description OK */
2047
+ 200: {
2048
+ headers: {
2049
+ [name: string]: unknown;
2050
+ };
2051
+ content: {
2052
+ 'application/json': components['schemas']['Credential'];
2053
+ };
2054
+ };
2055
+ /** @description Forbidden — token lacks admin context, or the app belongs to a different project than the token's. */
2056
+ 403: {
2057
+ headers: {
2058
+ [name: string]: unknown;
2059
+ };
2060
+ content?: never;
2061
+ };
2062
+ /** @description Not Found — the app doesn't exist, or the credential doesn't exist or belongs to a different app. */
2063
+ 404: {
2064
+ headers: {
2065
+ [name: string]: unknown;
2066
+ };
2067
+ content?: never;
2068
+ };
2069
+ };
2070
+ };
2071
+ deleteAppGitRepoCredential: {
2072
+ parameters: {
2073
+ query?: never;
2074
+ header?: never;
2075
+ path: {
2076
+ appId: string;
2077
+ credentialId: string;
2078
+ };
2079
+ cookie?: never;
2080
+ };
2081
+ requestBody?: never;
2082
+ responses: {
2083
+ /** @description No Content */
2084
+ 204: {
2085
+ headers: {
2086
+ [name: string]: unknown;
2087
+ };
2088
+ content?: never;
2089
+ };
2090
+ /** @description Forbidden — token lacks admin context, or the app belongs to a different project than the token's. */
2091
+ 403: {
2092
+ headers: {
2093
+ [name: string]: unknown;
2094
+ };
2095
+ content?: never;
2096
+ };
2097
+ /** @description Not Found — the app doesn't exist, or the credential doesn't exist or belongs to a different app. */
2098
+ 404: {
2099
+ headers: {
2100
+ [name: string]: unknown;
2101
+ };
2102
+ content?: never;
2103
+ };
2104
+ };
2105
+ };
2106
+ }
2107
+
2108
+ type App = components['schemas']['App'];
2109
+ type AppState = App['state'];
2110
+ type Deployment = components['schemas']['Deployment'];
2111
+ type DeploymentBuildState = Deployment['buildState'];
2112
+ type DeploymentRunState = Deployment['runState'];
2113
+ type AppRun = components['schemas']['Run'];
2114
+ type AppPassword = OpenapiReturnType<paths['/apps/{appId}/password']['get']>;
2115
+ type AppGitRepo = OpenapiReturnType<paths['/apps/{appId}/git-repo']['get']>;
2116
+ type Credential = components['schemas']['Credential'];
2117
+ type CreatedCredential = components['schemas']['CreatedCredential'];
2118
+ type CredentialList = components['schemas']['CredentialList'];
2119
+ type AppId = OpenapiPathType<paths['/apps/{appId}']['get']>['appId'];
2120
+ type DeploymentId = OpenapiPathType<paths['/apps/{appId}/deployments/{deploymentId}']['get']>['deploymentId'];
2121
+ type RunId = OpenapiPathType<paths['/apps/{appId}/runs/{runId}']['get']>['runId'];
2122
+ type CredentialId = OpenapiPathType<paths['/apps/{appId}/git-repo/credentials/{credentialId}']['get']>['credentialId'];
2123
+ type GetAppsQuery = OpenapiQueryType<paths['/apps']['get']>;
2124
+ type GetAppRunsQuery = OpenapiQueryType<paths['/apps/{appId}/runs']['get']>;
2125
+ type GetLogsTailQuery = OpenapiQueryType<paths['/apps/{appId}/logs/tail']['get']>;
2126
+ type CreateAppBody = OpenapiBodyType<paths['/apps']['post']>;
2127
+ type CreateDeploymentBody = OpenapiBodyType<paths['/apps/{appId}/deployments']['post']>;
2128
+ type CreateCredentialBody = OpenapiBodyType<paths['/apps/{appId}/git-repo/credentials']['post']>;
2129
+
2130
+ export type { AppId as A, CreateAppBody as C, DeploymentId as D, GetAppsQuery as G, RunId as R, App as a, GetAppRunsQuery as b, CreateDeploymentBody as c, GetLogsTailQuery as d, components as e, CredentialId as f, CreateCredentialBody as g, AppGitRepo as h, AppPassword as i, AppRun as j, AppState as k, CreatedCredential as l, Credential as m, CredentialList as n, Deployment as o, DeploymentBuildState as p, DeploymentRunState as q };