@keboola/api-client 39.0.0 → 40.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 (518) hide show
  1. package/AGENTS.md +121 -100
  2. package/API-SURFACE.md +23 -2
  3. package/CHANGELOG.md +120 -0
  4. package/README.md +3 -3
  5. package/dist/{ManagementClientAuthError-FcfMJNhr.cjs → ManagementClientAuthError-DE7lNGZQ.cjs} +2 -2
  6. package/dist/{ManagementClientAuthError-FcfMJNhr.cjs.map → ManagementClientAuthError-DE7lNGZQ.cjs.map} +1 -1
  7. package/dist/{ManagementClientAuthError-Cr9IOsnJ.js → ManagementClientAuthError-H30lti_Q.js} +2 -2
  8. package/dist/{ManagementClientAuthError-Cr9IOsnJ.js.map → ManagementClientAuthError-H30lti_Q.js.map} +1 -1
  9. package/dist/{ValidationError-CLVJCCwH.cjs → ValidationError-D65QU0uq.cjs} +10 -16
  10. package/dist/ValidationError-D65QU0uq.cjs.map +1 -0
  11. package/dist/ValidationError-DjhtNMfZ.js +42 -0
  12. package/dist/ValidationError-DjhtNMfZ.js.map +1 -0
  13. package/dist/ai/index.cjs +2 -2
  14. package/dist/ai/index.d.cts +2 -2
  15. package/dist/ai/index.d.ts +2 -2
  16. package/dist/ai/index.js +2 -2
  17. package/dist/ai/types.d.cts +1 -1
  18. package/dist/ai/types.d.ts +1 -1
  19. package/dist/{appLogs-C_zP0lpv.cjs → appLogs-B9zFJIuy.cjs} +2 -2
  20. package/dist/{appLogs-C_zP0lpv.cjs.map → appLogs-B9zFJIuy.cjs.map} +1 -1
  21. package/dist/{appLogs-Cl7Q_MR9.js → appLogs-BBkkUOW1.js} +2 -2
  22. package/dist/{appLogs-Cl7Q_MR9.js.map → appLogs-BBkkUOW1.js.map} +1 -1
  23. package/dist/{appLogs-Ch7DYpzx.d.ts → appLogs-BS6ViVGR.d.ts} +2 -2
  24. package/dist/{appLogs-D5A13Y0y.d.cts → appLogs-C9YlJ2g8.d.cts} +2 -2
  25. package/dist/apps/index.cjs +30 -56
  26. package/dist/apps/index.cjs.map +1 -1
  27. package/dist/apps/index.d.cts +8 -13
  28. package/dist/apps/index.d.ts +8 -13
  29. package/dist/apps/index.js +30 -56
  30. package/dist/apps/index.js.map +1 -1
  31. package/dist/apps/types.d.cts +2 -2
  32. package/dist/apps/types.d.ts +2 -2
  33. package/dist/assets/index.cjs +1 -1
  34. package/dist/assets/index.d.cts +1 -1
  35. package/dist/assets/index.d.ts +1 -1
  36. package/dist/assets/index.js +1 -1
  37. package/dist/auth/index.cjs +8 -4
  38. package/dist/auth/index.d.cts +2 -2
  39. package/dist/auth/index.d.ts +2 -2
  40. package/dist/auth/index.js +2 -2
  41. package/dist/auth/types.d.cts +2 -2
  42. package/dist/auth/types.d.ts +2 -2
  43. package/dist/{auth-DLWnl18b.cjs → auth-Dm0F2rOh.cjs} +2 -2
  44. package/dist/{auth-DLWnl18b.cjs.map → auth-Dm0F2rOh.cjs.map} +1 -1
  45. package/dist/{auth-BjmkFOgd.js → auth-DworfoPy.js} +2 -2
  46. package/dist/{auth-BjmkFOgd.js.map → auth-DworfoPy.js.map} +1 -1
  47. package/dist/{authClient-8yU1last.cjs → authClient-BmuUo0J4.cjs} +141 -48
  48. package/dist/authClient-BmuUo0J4.cjs.map +1 -0
  49. package/dist/{authClient-CTHNs6Tq.d.cts → authClient-CHXWJ9x3.d.ts} +109 -76
  50. package/dist/{authClient-BTo4Afm6.js → authClient-CgcDGd30.js} +108 -39
  51. package/dist/authClient-CgcDGd30.js.map +1 -0
  52. package/dist/{authClient-D8i3JTM-.d.ts → authClient-vEt_7_uk.d.cts} +109 -76
  53. package/dist/billing/index.cjs +2 -2
  54. package/dist/billing/index.d.cts +1 -1
  55. package/dist/billing/index.d.ts +1 -1
  56. package/dist/billing/index.js +2 -2
  57. package/dist/billing/types.d.cts +1 -1
  58. package/dist/billing/types.d.ts +1 -1
  59. package/dist/businessWorkspaceApi/index.cjs +1 -1
  60. package/dist/businessWorkspaceApi/index.d.cts +1 -1
  61. package/dist/businessWorkspaceApi/index.d.ts +1 -1
  62. package/dist/businessWorkspaceApi/index.js +1 -1
  63. package/dist/businessWorkspaceApi/types.d.cts +1 -1
  64. package/dist/businessWorkspaceApi/types.d.ts +1 -1
  65. package/dist/{businessWorkspaceApi-wyBdbpIJ.cjs → businessWorkspaceApi-6tCDdpnY.cjs} +3 -3
  66. package/dist/{businessWorkspaceApi-wyBdbpIJ.cjs.map → businessWorkspaceApi-6tCDdpnY.cjs.map} +1 -1
  67. package/dist/{businessWorkspaceApi-BD-iUj07.js → businessWorkspaceApi-BLUdefRF.js} +3 -3
  68. package/dist/{businessWorkspaceApi-BD-iUj07.js.map → businessWorkspaceApi-BLUdefRF.js.map} +1 -1
  69. package/dist/{businessWorkspaceApiClient-CRM1U8b-.d.cts → businessWorkspaceApiClient-BHDJlHFo.d.cts} +3 -3
  70. package/dist/{businessWorkspaceApiClient-C2WyWN3b.d.ts → businessWorkspaceApiClient-DI-z1VIH.d.ts} +3 -3
  71. package/dist/chat/index.cjs +7 -3
  72. package/dist/chat/index.cjs.map +1 -1
  73. package/dist/chat/index.d.cts +2 -2
  74. package/dist/chat/index.d.ts +2 -2
  75. package/dist/chat/index.js +7 -3
  76. package/dist/chat/index.js.map +1 -1
  77. package/dist/chat/types.cjs +1 -3
  78. package/dist/chat/types.cjs.map +1 -1
  79. package/dist/chat/types.d.cts +2 -2
  80. package/dist/chat/types.d.ts +2 -2
  81. package/dist/chat/types.js +1 -3
  82. package/dist/chat/types.js.map +1 -1
  83. package/dist/{componentId-DkyQ8PM0.cjs → componentId-57vjsa2i.cjs} +4 -2
  84. package/dist/{componentId-DkyQ8PM0.cjs.map → componentId-57vjsa2i.cjs.map} +1 -1
  85. package/dist/{componentId-vJz-kWs6.js → componentId-C6WZa_R1.js} +4 -2
  86. package/dist/{componentId-vJz-kWs6.js.map → componentId-C6WZa_R1.js.map} +1 -1
  87. package/dist/{concurrent-CH9fbNr3.js → concurrent-BacWxPwi.js} +5 -7
  88. package/dist/concurrent-BacWxPwi.js.map +1 -0
  89. package/dist/{concurrent-tbiIa0UL.cjs → concurrent-CdVfR1N5.cjs} +5 -7
  90. package/dist/concurrent-CdVfR1N5.cjs.map +1 -0
  91. package/dist/{configurations-VtNE0nrT.js → configurations-BPKGGy-M.js} +14 -22
  92. package/dist/configurations-BPKGGy-M.js.map +1 -0
  93. package/dist/{configurations-CyFF9Dtu.cjs → configurations-BTRHVSRq.cjs} +20 -53
  94. package/dist/configurations-BTRHVSRq.cjs.map +1 -0
  95. package/dist/{configurations-BVvcimzo.js → configurations-Chg_JwJ1.js} +20 -53
  96. package/dist/configurations-Chg_JwJ1.js.map +1 -0
  97. package/dist/{configurations-zkNjr73Q.cjs → configurations-IYyOvhI3.cjs} +14 -22
  98. package/dist/configurations-IYyOvhI3.cjs.map +1 -0
  99. package/dist/constants/index.cjs +1 -1
  100. package/dist/constants/index.d.cts +1 -1
  101. package/dist/constants/index.d.ts +1 -1
  102. package/dist/constants/index.js +1 -1
  103. package/dist/{createFetchClient-BlgPbjFj.cjs → createFetchClient-Cwp8max9.cjs} +11 -4
  104. package/dist/createFetchClient-Cwp8max9.cjs.map +1 -0
  105. package/dist/{createFetchClient-C-cadpBx.js → createFetchClient-DXHQK63w.js} +11 -4
  106. package/dist/createFetchClient-DXHQK63w.js.map +1 -0
  107. package/dist/{createGenericFetchClient-Bnf1QK9W.js → createGenericFetchClient-Dg1rgzmG.js} +2 -2
  108. package/dist/{createGenericFetchClient-Bnf1QK9W.js.map → createGenericFetchClient-Dg1rgzmG.js.map} +1 -1
  109. package/dist/{createGenericFetchClient-lcozzwk2.cjs → createGenericFetchClient-Dl9cqTvR.cjs} +2 -2
  110. package/dist/{createGenericFetchClient-lcozzwk2.cjs.map → createGenericFetchClient-Dl9cqTvR.cjs.map} +1 -1
  111. package/dist/{createOpenapiFetchClient-C3UmDXpe.cjs → createOpenapiFetchClient-BYqW-9tm.cjs} +2 -2
  112. package/dist/{createOpenapiFetchClient-C3UmDXpe.cjs.map → createOpenapiFetchClient-BYqW-9tm.cjs.map} +1 -1
  113. package/dist/{createOpenapiFetchClient-COaPeeQ0.js → createOpenapiFetchClient-DZUOVupy.js} +2 -2
  114. package/dist/{createOpenapiFetchClient-COaPeeQ0.js.map → createOpenapiFetchClient-DZUOVupy.js.map} +1 -1
  115. package/dist/dataScience/index.cjs +2 -2
  116. package/dist/dataScience/index.d.cts +2 -2
  117. package/dist/dataScience/index.d.ts +2 -2
  118. package/dist/dataScience/index.js +2 -2
  119. package/dist/dataScience/types.d.cts +2 -2
  120. package/dist/dataScience/types.d.ts +2 -2
  121. package/dist/{dataScience-D-hyc4GY.cjs → dataScience-B5QxZnvW.cjs} +5 -5
  122. package/dist/{dataScience-D-hyc4GY.cjs.map → dataScience-B5QxZnvW.cjs.map} +1 -1
  123. package/dist/{dataScience-B_BmnB1m.js → dataScience-OXcwdk1p.js} +5 -5
  124. package/dist/{dataScience-B_BmnB1m.js.map → dataScience-OXcwdk1p.js.map} +1 -1
  125. package/dist/dedupe-Cky1gSUu.js +21 -0
  126. package/dist/dedupe-Cky1gSUu.js.map +1 -0
  127. package/dist/dedupe-OSnnst2u.cjs +26 -0
  128. package/dist/dedupe-OSnnst2u.cjs.map +1 -0
  129. package/dist/developerPortal/index.cjs +1 -1
  130. package/dist/developerPortal/index.d.cts +2 -2
  131. package/dist/developerPortal/index.d.ts +2 -2
  132. package/dist/developerPortal/index.js +1 -1
  133. package/dist/developerPortal/types.d.cts +1 -1
  134. package/dist/developerPortal/types.d.ts +1 -1
  135. package/dist/{developerPortalClient-yHFTkKPb.js → developerPortalClient-B1QZ1rYi.js} +6 -8
  136. package/dist/{developerPortalClient-yHFTkKPb.js.map → developerPortalClient-B1QZ1rYi.js.map} +1 -1
  137. package/dist/{developerPortalClient-CutPqoAa.cjs → developerPortalClient-CLPpBksD.cjs} +6 -8
  138. package/dist/{developerPortalClient-CutPqoAa.cjs.map → developerPortalClient-CLPpBksD.cjs.map} +1 -1
  139. package/dist/domain/permissions/index.cjs +9 -30
  140. package/dist/domain/permissions/index.cjs.map +1 -1
  141. package/dist/domain/permissions/index.d.cts +29 -102
  142. package/dist/domain/permissions/index.d.ts +29 -102
  143. package/dist/domain/permissions/index.js +9 -30
  144. package/dist/domain/permissions/index.js.map +1 -1
  145. package/dist/domain/storageTable/index.d.cts +1 -1
  146. package/dist/domain/storageTable/index.d.ts +1 -1
  147. package/dist/editor/index.cjs +2 -2
  148. package/dist/editor/index.cjs.map +1 -1
  149. package/dist/editor/index.d.cts +2 -2
  150. package/dist/editor/index.d.ts +2 -2
  151. package/dist/editor/index.js +2 -2
  152. package/dist/editor/index.js.map +1 -1
  153. package/dist/editor/types.d.cts +1 -1
  154. package/dist/editor/types.d.ts +1 -1
  155. package/dist/encryption/index.cjs +2 -22
  156. package/dist/encryption/index.cjs.map +1 -1
  157. package/dist/encryption/index.d.cts +1 -1
  158. package/dist/encryption/index.d.ts +1 -1
  159. package/dist/encryption/index.js +2 -22
  160. package/dist/encryption/index.js.map +1 -1
  161. package/dist/encryption/types.d.cts +1 -1
  162. package/dist/encryption/types.d.ts +1 -1
  163. package/dist/import/index.cjs +1 -1
  164. package/dist/import/index.d.cts +3 -3
  165. package/dist/import/index.d.ts +3 -3
  166. package/dist/import/index.js +1 -1
  167. package/dist/{import-7YyyD_U_.cjs → import-CNk89mqy.cjs} +3 -3
  168. package/dist/{import-7YyyD_U_.cjs.map → import-CNk89mqy.cjs.map} +1 -1
  169. package/dist/{import-xliONVib.js → import-DiMQCzLa.js} +3 -3
  170. package/dist/{import-xliONVib.js.map → import-DiMQCzLa.js.map} +1 -1
  171. package/dist/{index-1r_CskjU.d.ts → index--ZpnE3YT.d.cts} +3 -3
  172. package/dist/{index-C77vTm2K.d.ts → index-BDZvaRud.d.ts} +6 -6
  173. package/dist/{index-KuQ79Mnz.d.ts → index-BVhHt5lx.d.cts} +18 -26
  174. package/dist/{index-NC1dXRTD.d.ts → index-BfqkgPGI.d.cts} +7 -13
  175. package/dist/{index-NC1dXRTD.d.cts → index-BfqkgPGI.d.ts} +7 -13
  176. package/dist/{index-V7XKUQm9.d.cts → index-BgR5zcjJ.d.ts} +18 -26
  177. package/dist/{index-GfKzh267.d.ts → index-BkqackZf.d.ts} +369 -297
  178. package/dist/{index-BK-qHT39.d.ts → index-ByRpNVcs.d.cts} +83 -17
  179. package/dist/{index-pXN4LWUX.d.ts → index-C11JSxBY.d.ts} +8 -11
  180. package/dist/{index-GjcJTCbz.d.cts → index-C4TNAA8-.d.cts} +8 -11
  181. package/dist/{index-DBklbaTp.d.cts → index-C8gRRWHL.d.cts} +3 -1
  182. package/dist/{index-DBklbaTp.d.ts → index-C8gRRWHL.d.ts} +3 -1
  183. package/dist/{index-3LUk2rpD.d.ts → index-CPu4Nezo.d.cts} +34 -9
  184. package/dist/{index-BMqLPS6S.d.ts → index-CXcWpZQ2.d.cts} +4 -12
  185. package/dist/{index-BMqLPS6S.d.cts → index-CXcWpZQ2.d.ts} +4 -12
  186. package/dist/{index-Dx52hNLP.d.cts → index-CcMHJcuP.d.cts} +3 -3
  187. package/dist/{index-DVw4Av4b.d.cts → index-Cvbjp3jx.d.cts} +6 -6
  188. package/dist/{index-DppA4k3b.d.cts → index-Cz0MXhzs.d.cts} +5 -5
  189. package/dist/{index-6Xe81qN3.d.ts → index-D-VMgpGc.d.ts} +5 -5
  190. package/dist/{index-DWf6FXOr.d.cts → index-D7-o-oGa.d.ts} +3 -3
  191. package/dist/{index-CWoEnDJ_.d.cts → index-DCRKjihs.d.ts} +83 -17
  192. package/dist/{kaiAgentClient-CHpULyeG.d.cts → index-DNThyEej.d.cts} +14 -5
  193. package/dist/{index-DXSmFkol.d.cts → index-DOAZmWvh.d.cts} +6 -6
  194. package/dist/{index-CHXnJQ9s.d.cts → index-DXYASsPP.d.cts} +369 -297
  195. package/dist/{index-BuegqrS1.d.ts → index-D_-4uQF8.d.ts} +3 -3
  196. package/dist/{index-CW3Pj7DY.d.cts → index-Dazy-meb.d.ts} +34 -9
  197. package/dist/{index-De5qUWhp.d.ts → index-DnQTuc6t.d.ts} +6 -6
  198. package/dist/{kaiAgentClient-B5L4gbQ1.d.ts → index-Qb7X6-ph.d.ts} +14 -5
  199. package/dist/index.cjs +1498 -901
  200. package/dist/index.cjs.map +1 -1
  201. package/dist/index.d.cts +7 -7
  202. package/dist/index.d.ts +7 -7
  203. package/dist/index.js +1497 -902
  204. package/dist/index.js.map +1 -1
  205. package/dist/isLoginPageRedirect-XPwAOKK3.js +14 -0
  206. package/dist/isLoginPageRedirect-XPwAOKK3.js.map +1 -0
  207. package/dist/isLoginPageRedirect-jQHiLrG7.cjs +19 -0
  208. package/dist/isLoginPageRedirect-jQHiLrG7.cjs.map +1 -0
  209. package/dist/{jobStatus-0_Y3Sr4i.cjs → jobStatus-BMlsyXWI.cjs} +19 -45
  210. package/dist/jobStatus-BMlsyXWI.cjs.map +1 -0
  211. package/dist/{jobStatus-PSZJMTiA.js → jobStatus-CfRtsIpv.js} +19 -45
  212. package/dist/jobStatus-CfRtsIpv.js.map +1 -0
  213. package/dist/kaiAgent/index.cjs +1 -1
  214. package/dist/kaiAgent/index.d.cts +3 -2
  215. package/dist/kaiAgent/index.d.ts +3 -2
  216. package/dist/kaiAgent/index.js +1 -1
  217. package/dist/kaiAgent/types.d.cts +2 -2
  218. package/dist/kaiAgent/types.d.ts +2 -2
  219. package/dist/{kaiAgent-CcT2oNip.js → kaiAgent-Dp20HLTh.js} +32 -11
  220. package/dist/kaiAgent-Dp20HLTh.js.map +1 -0
  221. package/dist/{kaiAgent-DaB6UCsh.cjs → kaiAgent-QNoeVKPs.cjs} +32 -11
  222. package/dist/kaiAgent-QNoeVKPs.cjs.map +1 -0
  223. package/dist/kaiMemory-CClSPInt.cjs +289 -0
  224. package/dist/kaiMemory-CClSPInt.cjs.map +1 -0
  225. package/dist/kaiMemory-D0Y_16U4.js +260 -0
  226. package/dist/kaiMemory-D0Y_16U4.js.map +1 -0
  227. package/dist/management/index.cjs +1 -1
  228. package/dist/management/index.d.cts +1 -1
  229. package/dist/management/index.d.ts +1 -1
  230. package/dist/management/index.js +1 -1
  231. package/dist/management/types.d.cts +2 -2
  232. package/dist/management/types.d.ts +2 -2
  233. package/dist/{management-DeZiQSlw.cjs → management-CCY0IYnq.cjs} +59 -24
  234. package/dist/management-CCY0IYnq.cjs.map +1 -0
  235. package/dist/{management-ckdnu1dA.js → management-DvmPiG64.js} +59 -24
  236. package/dist/management-DvmPiG64.js.map +1 -0
  237. package/dist/metastore/index.cjs +1 -1
  238. package/dist/metastore/index.d.cts +1 -1
  239. package/dist/metastore/index.d.ts +1 -1
  240. package/dist/metastore/index.js +1 -1
  241. package/dist/metastore/types.d.cts +2 -2
  242. package/dist/metastore/types.d.ts +2 -2
  243. package/dist/{metastore-B0PolCjQ.js → metastore-BycJxe7A.js} +14 -8
  244. package/dist/metastore-BycJxe7A.js.map +1 -0
  245. package/dist/{metastore-9AGrwjmN.cjs → metastore-XtWciCZT.cjs} +14 -8
  246. package/dist/metastore-XtWciCZT.cjs.map +1 -0
  247. package/dist/microsoftGraph/index.cjs +2 -2
  248. package/dist/microsoftGraph/index.d.cts +2 -2
  249. package/dist/microsoftGraph/index.d.ts +2 -2
  250. package/dist/microsoftGraph/index.js +2 -2
  251. package/dist/microsoftGraph/types.d.cts +1 -1
  252. package/dist/microsoftGraph/types.d.ts +1 -1
  253. package/dist/middleware-CBwrtgQd.js +34 -0
  254. package/dist/middleware-CBwrtgQd.js.map +1 -0
  255. package/dist/middleware-IjYx3d5u.cjs +45 -0
  256. package/dist/middleware-IjYx3d5u.cjs.map +1 -0
  257. package/dist/notifications/index.cjs +4 -4
  258. package/dist/notifications/index.d.cts +2 -2
  259. package/dist/notifications/index.d.ts +2 -2
  260. package/dist/notifications/index.js +4 -4
  261. package/dist/notifications/types.d.cts +1 -1
  262. package/dist/notifications/types.d.ts +1 -1
  263. package/dist/oauth/index.cjs +1 -1
  264. package/dist/oauth/index.d.cts +2 -2
  265. package/dist/oauth/index.d.ts +2 -2
  266. package/dist/oauth/index.js +1 -1
  267. package/dist/oauth/types.d.cts +1 -1
  268. package/dist/oauth/types.d.ts +1 -1
  269. package/dist/{oauth-DNtv4Ihb.cjs → oauth--2p8jkJf.cjs} +5 -5
  270. package/dist/{oauth-DNtv4Ihb.cjs.map → oauth--2p8jkJf.cjs.map} +1 -1
  271. package/dist/{oauth-BnHVf4cB.js → oauth-l5zE39cD.js} +5 -5
  272. package/dist/{oauth-BnHVf4cB.js.map → oauth-l5zE39cD.js.map} +1 -1
  273. package/dist/omnisearch/index.cjs +6 -14
  274. package/dist/omnisearch/index.cjs.map +1 -1
  275. package/dist/omnisearch/index.d.cts +6 -14
  276. package/dist/omnisearch/index.d.ts +6 -14
  277. package/dist/omnisearch/index.js +6 -14
  278. package/dist/omnisearch/index.js.map +1 -1
  279. package/dist/omnisearch/types.d.cts +1 -1
  280. package/dist/omnisearch/types.d.ts +1 -1
  281. package/dist/{project-DCHOxRWd.d.ts → project-B15gStbM.d.ts} +2 -2
  282. package/dist/{project-BRpzv3yE.d.cts → project-cHKuGvqJ.d.cts} +2 -2
  283. package/dist/queryService/index.cjs +1 -1
  284. package/dist/queryService/index.d.cts +1 -1
  285. package/dist/queryService/index.d.ts +1 -1
  286. package/dist/queryService/index.js +1 -1
  287. package/dist/queryService/types.d.cts +1 -1
  288. package/dist/queryService/types.d.ts +1 -1
  289. package/dist/{queryService-j3XZ2mX6.js → queryService-CCOYbRbw.js} +6 -6
  290. package/dist/{queryService-j3XZ2mX6.js.map → queryService-CCOYbRbw.js.map} +1 -1
  291. package/dist/{queryService-BVwD6Vmc.cjs → queryService-CQzclHdL.cjs} +6 -6
  292. package/dist/{queryService-BVwD6Vmc.cjs.map → queryService-CQzclHdL.cjs.map} +1 -1
  293. package/dist/queue/index.cjs +1 -1
  294. package/dist/queue/index.d.cts +3 -3
  295. package/dist/queue/index.d.ts +3 -3
  296. package/dist/queue/index.js +1 -1
  297. package/dist/queue/types.d.cts +1 -1
  298. package/dist/queue/types.d.ts +1 -1
  299. package/dist/{queue-Dagl0sdP.js → queue-Cowbg6bR.js} +8 -11
  300. package/dist/queue-Cowbg6bR.js.map +1 -0
  301. package/dist/{queue-e3rMWbmK.cjs → queue-UG_BWKIC.cjs} +8 -11
  302. package/dist/queue-UG_BWKIC.cjs.map +1 -0
  303. package/dist/scheduler/index.cjs +4 -4
  304. package/dist/scheduler/index.d.cts +2 -2
  305. package/dist/scheduler/index.d.ts +2 -2
  306. package/dist/scheduler/index.js +4 -4
  307. package/dist/scheduler/types.d.cts +1 -1
  308. package/dist/scheduler/types.d.ts +1 -1
  309. package/dist/sdk/configurations/index.cjs +1 -1
  310. package/dist/sdk/configurations/index.d.cts +11 -11
  311. package/dist/sdk/configurations/index.d.ts +11 -11
  312. package/dist/sdk/configurations/index.js +1 -1
  313. package/dist/sdk/developerPortal/index.cjs +10 -18
  314. package/dist/sdk/developerPortal/index.cjs.map +1 -1
  315. package/dist/sdk/developerPortal/index.d.cts +7 -15
  316. package/dist/sdk/developerPortal/index.d.ts +7 -15
  317. package/dist/sdk/developerPortal/index.js +7 -15
  318. package/dist/sdk/developerPortal/index.js.map +1 -1
  319. package/dist/sdk/kaiMemory/index.cjs +7 -0
  320. package/dist/sdk/kaiMemory/index.d.cts +41 -0
  321. package/dist/sdk/kaiMemory/index.d.ts +41 -0
  322. package/dist/sdk/kaiMemory/index.js +2 -0
  323. package/dist/sdk/kaiMemory/types.cjs +0 -0
  324. package/dist/sdk/kaiMemory/types.d.cts +2 -0
  325. package/dist/sdk/kaiMemory/types.d.ts +2 -0
  326. package/dist/sdk/kaiMemory/types.js +1 -0
  327. package/dist/sdk/queryService/index.cjs +2 -2
  328. package/dist/sdk/queryService/index.d.cts +1 -1
  329. package/dist/sdk/queryService/index.d.ts +1 -1
  330. package/dist/sdk/queryService/index.js +2 -2
  331. package/dist/sdk/semanticLayer/index.cjs +1 -1
  332. package/dist/sdk/semanticLayer/index.d.cts +16 -40
  333. package/dist/sdk/semanticLayer/index.d.ts +16 -40
  334. package/dist/sdk/semanticLayer/index.js +1 -1
  335. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  336. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  337. package/dist/sdk/storage/index.cjs +0 -5
  338. package/dist/sdk/storage/index.cjs.map +1 -1
  339. package/dist/sdk/storage/index.d.cts +2 -2
  340. package/dist/sdk/storage/index.d.ts +2 -2
  341. package/dist/sdk/storage/index.js +1 -5
  342. package/dist/sdk/storage/index.js.map +1 -1
  343. package/dist/sdk/tag/index.cjs +1 -1
  344. package/dist/sdk/tag/index.d.cts +3 -3
  345. package/dist/sdk/tag/index.d.ts +3 -3
  346. package/dist/sdk/tag/index.js +1 -1
  347. package/dist/sdk/tag/types.d.cts +1 -1
  348. package/dist/sdk/tag/types.d.ts +1 -1
  349. package/dist/sdk/vault/index.cjs +1 -1
  350. package/dist/sdk/vault/index.d.cts +1 -1
  351. package/dist/sdk/vault/index.d.ts +1 -1
  352. package/dist/sdk/vault/index.js +1 -1
  353. package/dist/{semanticLayer-9uTaU7UT.cjs → semanticLayer-CKDVkU56.cjs} +62 -183
  354. package/dist/semanticLayer-CKDVkU56.cjs.map +1 -0
  355. package/dist/{semanticLayer-6_gtFxDu.js → semanticLayer-pYy082Ju.js} +62 -183
  356. package/dist/semanticLayer-pYy082Ju.js.map +1 -0
  357. package/dist/status/index.cjs +1 -1
  358. package/dist/status/index.d.cts +1 -1
  359. package/dist/status/index.d.ts +1 -1
  360. package/dist/status/index.js +1 -1
  361. package/dist/storage/index.cjs +5 -5
  362. package/dist/storage/index.d.cts +2 -2
  363. package/dist/storage/index.d.ts +2 -2
  364. package/dist/storage/index.js +5 -5
  365. package/dist/storage/types.d.cts +2 -2
  366. package/dist/storage/types.d.ts +2 -2
  367. package/dist/{storage-Ob1LUIDq.js → storage-CZQHZcXG.js} +109 -302
  368. package/dist/storage-CZQHZcXG.js.map +1 -0
  369. package/dist/{storage-HFUdEy7P.cjs → storage-JinL1y1s.cjs} +109 -302
  370. package/dist/storage-JinL1y1s.cjs.map +1 -0
  371. package/dist/stream/index.cjs +3 -3
  372. package/dist/stream/index.d.cts +2 -2
  373. package/dist/stream/index.d.ts +2 -2
  374. package/dist/stream/index.js +3 -3
  375. package/dist/stream/types.d.cts +1 -1
  376. package/dist/stream/types.d.ts +1 -1
  377. package/dist/syncActions/index.cjs +1 -1
  378. package/dist/syncActions/index.d.cts +1 -1
  379. package/dist/syncActions/index.d.ts +1 -1
  380. package/dist/syncActions/index.js +1 -1
  381. package/dist/syncActions/types.d.cts +2 -2
  382. package/dist/syncActions/types.d.ts +2 -2
  383. package/dist/{syncActions-B3NS5a0g.js → syncActions-BmmoqZO_.js} +130 -111
  384. package/dist/syncActions-BmmoqZO_.js.map +1 -0
  385. package/dist/{syncActions-D2DhY6pP.cjs → syncActions-CtcLGQiy.cjs} +130 -111
  386. package/dist/syncActions-CtcLGQiy.cjs.map +1 -0
  387. package/dist/{tag-CsoOZWB_.cjs → tag-DHS_soa7.cjs} +2 -2
  388. package/dist/{tag-CsoOZWB_.cjs.map → tag-DHS_soa7.cjs.map} +1 -1
  389. package/dist/{tag-DCsoewjL.js → tag-hh-1nhNr.js} +2 -2
  390. package/dist/{tag-DCsoewjL.js.map → tag-hh-1nhNr.js.map} +1 -1
  391. package/dist/telemetry/index.cjs +7 -11
  392. package/dist/telemetry/index.cjs.map +1 -1
  393. package/dist/telemetry/index.d.cts +5 -9
  394. package/dist/telemetry/index.d.ts +5 -9
  395. package/dist/telemetry/index.js +7 -11
  396. package/dist/telemetry/index.js.map +1 -1
  397. package/dist/telemetry/types.d.cts +1 -1
  398. package/dist/telemetry/types.d.ts +1 -1
  399. package/dist/{types-DqxIx9Pi.d.cts → types-6kuMW4JW.d.cts} +2 -2
  400. package/dist/{types-Ct0YPy2w.d.ts → types-B2w2TtSA.d.ts} +3 -3
  401. package/dist/{types-M46WuBSm.d.cts → types-B61aCifg.d.cts} +2 -2
  402. package/dist/{types-COL1kVEB.d.cts → types-B8N_k79M.d.cts} +2 -2
  403. package/dist/{types-Jw10xuOW.d.cts → types-BIECJYun.d.ts} +171 -44
  404. package/dist/{types-DZk3XHiN.d.cts → types-BLNB882w.d.cts} +3 -3
  405. package/dist/{types-BEe50G2r.d.cts → types-BPy5Ozee.d.cts} +2 -2
  406. package/dist/{types-gi4Eay19.d.ts → types-BS4jwuMi.d.ts} +7 -15
  407. package/dist/{types-BrYkBQo4.d.ts → types-BTK7Bv3n.d.cts} +171 -44
  408. package/dist/{types-DYzJ6K2e.d.ts → types-BYM9Ptz5.d.ts} +93 -43
  409. package/dist/{types-D6UmMa6E.d.ts → types-BZDV8DZk.d.ts} +3 -3
  410. package/dist/{types-Cz83RiVu.d.cts → types-B_iLJlp4.d.ts} +255 -12
  411. package/dist/{types-CmF3pR2n.d.cts → types-BiMahEK8.d.cts} +91 -237
  412. package/dist/{types-BH5LLeJy.d.ts → types-Bl03Cg2n.d.cts} +255 -12
  413. package/dist/{types-bGQb4Jtl.d.cts → types-ByLH46Dt.d.cts} +13 -8
  414. package/dist/{types-g3vU7hcg.d.cts → types-Bydx6ga_.d.cts} +2 -2
  415. package/dist/{types-CW6lCqrC.d.cts → types-CFeZCQ9p.d.cts} +93 -43
  416. package/dist/{types-B95uNQ9o.d.ts → types-CKmTZSPG.d.ts} +91 -237
  417. package/dist/{types-D_j2Uq5X.d.cts → types-CMzQSHAQ.d.cts} +3 -3
  418. package/dist/{types-N3EChotg.d.cts → types-CP_LBmw3.d.cts} +2 -2
  419. package/dist/{types-zZBxJ0P-.d.ts → types-CWyXTMwy.d.ts} +2 -2
  420. package/dist/{types-CPB-eF82.d.ts → types-CZJlLCbA.d.ts} +2 -2
  421. package/dist/{types-l9o4gFsI.d.ts → types-CZXPu3gn.d.ts} +2 -2
  422. package/dist/{types-BztF4HeB.d.ts → types-CaOtNjSZ.d.ts} +6 -13
  423. package/dist/{types-BTWIPEiU.d.ts → types-CfwqVkEA.d.ts} +2 -2
  424. package/dist/types-Cg14ncdV.d.ts +63 -0
  425. package/dist/{types-BsxLGDoC.d.cts → types-CoJVrRAD.d.ts} +2 -2
  426. package/dist/{types-CKiW3n6v.d.ts → types-D3wcs4tp.d.ts} +2 -2
  427. package/dist/{types-DOyNe7oe.d.cts → types-DDOa07rU.d.cts} +7 -15
  428. package/dist/{types-BW2BXUB4.d.cts → types-DE9hgr7i.d.cts} +2 -2
  429. package/dist/{types-BOqD3Hqy.d.cts → types-DEzW1CfI.d.cts} +3 -3
  430. package/dist/{types-OaD-cbbl.d.ts → types-DIiOMV-t.d.ts} +3 -3
  431. package/dist/{types-B-P4vQe0.d.cts → types-DKc1gmd9.d.ts} +857 -131
  432. package/dist/{types-BrPlv-NS.d.ts → types-DRCMBt89.d.ts} +3 -3
  433. package/dist/{types-BQvv4RaI.d.cts → types-DUMal2E-.d.cts} +5 -8
  434. package/dist/types-DWiLcrxt.d.cts +63 -0
  435. package/dist/{types-DNxOHnZI.d.cts → types-Dd31Lw4S.d.cts} +2 -2
  436. package/dist/{types-Dmu-8g4O.d.ts → types-DekYAlA-.d.ts} +3 -3
  437. package/dist/{types-B2U9cFcx.d.ts → types-DgJeO9Nd.d.ts} +2 -2
  438. package/dist/{types-nrviNdzZ.d.ts → types-DicSaNwq.d.ts} +2 -2
  439. package/dist/{types-Crhy0c9m.d.cts → types-DinIJ1D_.d.cts} +40 -11
  440. package/dist/{types-DhDNS-5B.d.ts → types-DlQw6FCi.d.ts} +13 -8
  441. package/dist/{types-_RhBCj4_.d.cts → types-DoZtE9tz.d.cts} +3 -3
  442. package/dist/{types-Bxhh2SJr.d.ts → types-DrvKfXXd.d.cts} +2 -2
  443. package/dist/{types-DPl8pZsY.d.ts → types-Dtuvhm3K.d.cts} +857 -131
  444. package/dist/{types-CcrvrAJX.d.ts → types-DwVSj-Da.d.ts} +5 -8
  445. package/dist/{types-C2vefB4D.d.ts → types-FwRmjsNN.d.ts} +10 -34
  446. package/dist/{types-C0_2KZ-A.d.ts → types-RbrfiY8T.d.ts} +2 -2
  447. package/dist/{types-DfvdbRPL.d.ts → types-WZBztugL.d.ts} +2 -2
  448. package/dist/{types-52irAt99.d.cts → types-YHUEArkR.d.cts} +2 -2
  449. package/dist/{types-fX4gbxfV.d.cts → types-bc-4z_gc.d.cts} +10 -34
  450. package/dist/{types-3eUgOA7I.d.cts → types-ePSqbXRr.d.cts} +6 -13
  451. package/dist/{types-DrqKICcK.d.ts → types-n4PTnLii.d.ts} +40 -11
  452. package/dist/{types-DXskkNp8.d.cts → types-pvQzbgNE.d.cts} +3 -3
  453. package/dist/{types-DajzGOKB.d.ts → types-q-1r_9d1.d.ts} +2 -2
  454. package/dist/{types-D8Rrz51O.d.cts → types-tKkeLa2B.d.cts} +2 -2
  455. package/dist/{validateConnectionStatus-828HV8WL.js → validateConnectionStatus-BEGu8wXT.js} +6 -10
  456. package/dist/validateConnectionStatus-BEGu8wXT.js.map +1 -0
  457. package/dist/{validateConnectionStatus-CvBKyeDO.cjs → validateConnectionStatus-BEYkQpu9.cjs} +6 -10
  458. package/dist/validateConnectionStatus-BEYkQpu9.cjs.map +1 -0
  459. package/dist/vault/index.cjs +4 -4
  460. package/dist/vault/index.d.cts +1 -1
  461. package/dist/vault/index.d.ts +1 -1
  462. package/dist/vault/index.js +4 -4
  463. package/dist/vault/types.d.cts +1 -1
  464. package/dist/vault/types.d.ts +1 -1
  465. package/package.json +32 -4
  466. package/surface/apps.md +3 -3
  467. package/surface/auth.md +13 -6
  468. package/surface/chat.md +6 -6
  469. package/surface/kaiAgent.md +9 -8
  470. package/surface/management.md +14 -5
  471. package/surface/metastore.md +2 -2
  472. package/surface/queue.md +3 -3
  473. package/surface/sdk.md +13 -3
  474. package/surface/storage.md +6 -6
  475. package/surface/syncActions.md +9 -0
  476. package/dist/ValidationError-BekhphAq.js +0 -48
  477. package/dist/ValidationError-BekhphAq.js.map +0 -1
  478. package/dist/ValidationError-CLVJCCwH.cjs.map +0 -1
  479. package/dist/authClient-8yU1last.cjs.map +0 -1
  480. package/dist/authClient-BTo4Afm6.js.map +0 -1
  481. package/dist/concurrent-CH9fbNr3.js.map +0 -1
  482. package/dist/concurrent-tbiIa0UL.cjs.map +0 -1
  483. package/dist/configurations-BVvcimzo.js.map +0 -1
  484. package/dist/configurations-CyFF9Dtu.cjs.map +0 -1
  485. package/dist/configurations-VtNE0nrT.js.map +0 -1
  486. package/dist/configurations-zkNjr73Q.cjs.map +0 -1
  487. package/dist/createFetchClient-BlgPbjFj.cjs.map +0 -1
  488. package/dist/createFetchClient-C-cadpBx.js.map +0 -1
  489. package/dist/credential-CAulvfZ-.cjs +0 -47
  490. package/dist/credential-CAulvfZ-.cjs.map +0 -1
  491. package/dist/credential-DWXbo4IX.js +0 -36
  492. package/dist/credential-DWXbo4IX.js.map +0 -1
  493. package/dist/dedupe-CiskLkGR.cjs +0 -30
  494. package/dist/dedupe-CiskLkGR.cjs.map +0 -1
  495. package/dist/dedupe-DYIHgZoG.js +0 -25
  496. package/dist/dedupe-DYIHgZoG.js.map +0 -1
  497. package/dist/isLoginPageRedirect-Cm6Pn8Pj.cjs +0 -25
  498. package/dist/isLoginPageRedirect-Cm6Pn8Pj.cjs.map +0 -1
  499. package/dist/isLoginPageRedirect-hyPqyWNX.js +0 -20
  500. package/dist/isLoginPageRedirect-hyPqyWNX.js.map +0 -1
  501. package/dist/jobStatus-0_Y3Sr4i.cjs.map +0 -1
  502. package/dist/jobStatus-PSZJMTiA.js.map +0 -1
  503. package/dist/kaiAgent-CcT2oNip.js.map +0 -1
  504. package/dist/kaiAgent-DaB6UCsh.cjs.map +0 -1
  505. package/dist/management-DeZiQSlw.cjs.map +0 -1
  506. package/dist/management-ckdnu1dA.js.map +0 -1
  507. package/dist/metastore-9AGrwjmN.cjs.map +0 -1
  508. package/dist/metastore-B0PolCjQ.js.map +0 -1
  509. package/dist/queue-Dagl0sdP.js.map +0 -1
  510. package/dist/queue-e3rMWbmK.cjs.map +0 -1
  511. package/dist/semanticLayer-6_gtFxDu.js.map +0 -1
  512. package/dist/semanticLayer-9uTaU7UT.cjs.map +0 -1
  513. package/dist/storage-HFUdEy7P.cjs.map +0 -1
  514. package/dist/storage-Ob1LUIDq.js.map +0 -1
  515. package/dist/syncActions-B3NS5a0g.js.map +0 -1
  516. package/dist/syncActions-D2DhY6pP.cjs.map +0 -1
  517. package/dist/validateConnectionStatus-828HV8WL.js.map +0 -1
  518. package/dist/validateConnectionStatus-CvBKyeDO.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"developerPortalClient-yHFTkKPb.js","names":[],"sources":["../src/clients/developerPortal/admin/admin.ts","../src/clients/developerPortal/apps/apps.ts","../src/clients/developerPortal/tokens.ts","../src/clients/developerPortal/auth/auth.ts","../src/clients/developerPortal/vendors/vendors.ts","../src/clients/developerPortal/developerPortalClient.ts"],"sourcesContent":["import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n AdminPaginationQuery,\n ApproveVendorInput,\n CreateVendorAsAdminInput,\n GetChangesQuery,\n PaginationQuery,\n RejectAppInput,\n UpdateAppAsAdminInput,\n UpdateVendorAsAdminInput,\n} from '../types';\n\n/** Keboola staff only. Every method 403s for a non-admin token; the UI gates on `custom:isAdmin`. */\nexport const createAdmin = (client: DeveloperPortalFetchClient) => {\n const getStacks = async (signal?: AbortSignal) => {\n const { data } = await client.get('/admin/stacks', {}, { signal });\n return data;\n };\n\n const getChanges = async (query: GetChangesQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/changes', { query }, { signal });\n return data;\n };\n\n const getApps = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps', { query }, { signal });\n return data;\n };\n\n const getApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps/{id}', { path: { id } }, { signal });\n return data;\n };\n\n const updateApp = async (id: string, body: UpdateAppAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.patch('/admin/apps/{id}', { path: { id }, body }, { signal });\n return data;\n };\n\n const publishApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/apps/{id}/publish', { path: { id } }, { signal });\n return data;\n };\n\n const rejectApp = async (id: string, body: RejectAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/admin/apps/{id}/reject',\n { path: { id }, body },\n { signal },\n );\n return data;\n };\n\n const getUsers = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/users', { query }, { signal });\n return data;\n };\n\n const deleteUser = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}', { path: { username } }, { signal });\n };\n\n /** Clears the user's MFA enrolment so they can re-enrol — the account-recovery path. */\n const resetUserMfa = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/mfa', { path: { username } }, { signal });\n };\n\n const addUserToVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.post(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const removeUserFromVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.delete(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const grantUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.post('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const revokeUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const getVendors = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/vendors', { query }, { signal });\n return data;\n };\n\n const createVendor = async (body: CreateVendorAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (\n vendor: string,\n body: UpdateVendorAsAdminInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/admin/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const deleteVendor = async (vendor: string, signal?: AbortSignal) => {\n await client.delete('/admin/vendors/{vendor}', { path: { vendor } }, { signal });\n };\n\n /** Swaps a pending `_v`-prefixed id for the permanent one carried in the body. */\n const approveVendor = async (vendor: string, body: ApproveVendorInput, signal?: AbortSignal) => {\n await client.post('/admin/vendors/{vendor}/approve', { path: { vendor }, body }, { signal });\n };\n\n return {\n getStacks,\n getChanges,\n getApps,\n getApp,\n updateApp,\n publishApp,\n rejectApp,\n getUsers,\n deleteUser,\n resetUserMfa,\n addUserToVendor,\n removeUserFromVendor,\n grantUserAdmin,\n revokeUserAdmin,\n getVendors,\n createVendor,\n updateVendor,\n deleteVendor,\n approveVendor,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateAppInput,\n DeprecateAppInput,\n GetAppsQuery,\n PaginationQuery,\n UpdateAppInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /apps` and `GET /apps/{app}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createApps = ({ client, publicClient }: Deps) => {\n /** The public catalog: scoped server-side to published components. */\n const getPublishedApps = async (query: GetAppsQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps', { query }, { signal });\n return data;\n };\n\n const getPublishedApp = async (app: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps/{app}', { path: { app } }, { signal });\n return data;\n };\n\n const getApps = async (vendor: string, query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const getApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const createApp = async (vendor: string, body: CreateAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const updateApp = async (\n vendor: string,\n app: string,\n body: UpdateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const deleteApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n await client.delete('/vendors/{vendor}/apps/{app}', { path: { vendor, app } }, { signal });\n };\n\n const requestAppPublishing = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/publish',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const deprecateApp = async (\n vendor: string,\n app: string,\n body: DeprecateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/deprecate',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const getAppVersions = async (\n vendor: string,\n app: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions',\n { path: { vendor, app }, query },\n { signal },\n );\n return data;\n };\n\n const getAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions/{version}',\n { path: { vendor, app, version } },\n { signal },\n );\n return data;\n };\n\n const rollbackAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n await client.post(\n '/vendors/{vendor}/apps/{app}/versions/{version}/rollback',\n { path: { vendor, app, version } },\n { signal },\n );\n };\n\n const getAppRepository = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/repository',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n /** Requests a presigned S3 upload link; the upload itself is {@link uploadAppIcon}. */\n const createAppIconUploadLink = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/icon',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n return {\n getPublishedApps,\n getPublishedApp,\n getApps,\n getApp,\n createApp,\n updateApp,\n deleteApp,\n requestAppPublishing,\n deprecateApp,\n getAppVersions,\n getAppVersion,\n rollbackAppVersion,\n getAppRepository,\n createAppIconUploadLink,\n };\n};\n\n/**\n * Uploads the icon to the presigned URL from `createAppIconUploadLink`. Deliberately a bare `fetch`:\n * the URL carries its own signature in the query string, and sending our `Authorization` header to\n * S3 makes it reject the request.\n */\nexport const uploadAppIcon = async (\n uploadUrl: string,\n png: Blob,\n signal?: AbortSignal,\n): Promise<void> => {\n const response = await fetch(uploadUrl, {\n method: 'PUT',\n body: png,\n headers: { 'Content-Type': 'image/png' },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Icon upload failed: ${response.status} ${response.statusText}`);\n }\n};\n","import { HttpHeader } from '../../fetchClient';\n\n/**\n * The Cognito token trio apps-api issues. `token` is the id token: stamped on almost every call, and\n * the header on both MFA calls. `refreshToken` authenticates `GET /auth/token`. `accessToken`\n * authenticates `POST /auth/logout` as a header, and both `POST /auth/mfa` and `/auth/mfa/confirm`\n * in the **body** — which is why those two stay off the refresh-and-replay path.\n */\nexport type DeveloperPortalTokens = {\n token: string;\n accessToken: string;\n refreshToken: string;\n};\n\n/** Raw token, no `Bearer` prefix — see the spec's `bearerAuth` scheme (`type: apiKey`). */\nexport const authHeader = (token: string): Record<string, string> => ({\n [HttpHeader.AUTHORIZATION]: token,\n});\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport { authHeader } from '../tokens';\nimport type {\n ConfirmAccountInput,\n LoginChallenge,\n LoginInput,\n LoginResult,\n ResetPasswordConfirmInput,\n SignUpInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** The spec's `security: []` operations, plus the four that bring their own token. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const isMfaChallengeResponse = (result: LoginResult): result is LoginChallenge =>\n !('token' in result);\n\nexport const createAuth = ({ client, publicClient }: Deps) => {\n const login = async (body: LoginInput, signal?: AbortSignal) => {\n const { data } = await publicClient.post('/auth/login', { body }, { signal });\n return data;\n };\n\n const signUp = async (body: SignUpInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/signup', { body }, { signal });\n };\n\n const confirmAccount = async (body: ConfirmAccountInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm', { body }, { signal });\n };\n\n /** Confirms via the emailed link's path segments, for a consumer echoing that link. */\n const confirmAccountByCode = async (email: string, code: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm/{email}/{code}', { path: { email, code } }, { signal });\n };\n\n /**\n * Rotates the trio, authenticated with the **refresh** token, on the auth-free client so a\n * rotation triggered by the auth middleware cannot recurse into it. The response carries no new\n * refresh token, so the caller carries the one it has forward.\n */\n const refreshTokens = async (refreshToken: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get(\n '/auth/token',\n {},\n { headers: authHeader(refreshToken), signal },\n );\n return data;\n };\n\n /** Authenticated with the **access** token. Clear local state regardless of the outcome. */\n const logout = async (accessToken: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/logout', {}, { headers: authHeader(accessToken), signal });\n };\n\n const getProfile = async (signal?: AbortSignal) => {\n const { data } = await client.get('/auth/profile', {}, { signal });\n return data;\n };\n\n const requestPasswordReset = async (email: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/forgot/{email}', { path: { email } }, { signal });\n };\n\n const confirmPasswordReset = async (\n email: string,\n body: ResetPasswordConfirmInput,\n signal?: AbortSignal,\n ) => {\n await publicClient.post('/auth/forgot/{email}/confirm', { path: { email }, body }, { signal });\n };\n\n // `setupMfa` and `confirmMfa` each take two of the three tokens: the auth token in the header, the\n // access token in the body. Both sit on the auth-free client, which keeps them out of the\n // middleware's refresh-and-replay: restamping a header cannot fix a stale token in a body.\n const setupMfa = async (\n { idToken, accessToken }: { idToken: string; accessToken: string },\n signal?: AbortSignal,\n ) => {\n const { data } = await publicClient.post(\n '/auth/mfa',\n { body: { accessToken } },\n { headers: authHeader(idToken), signal },\n );\n return data;\n };\n\n const confirmMfa = async (\n { idToken, accessToken, code }: { idToken: string; accessToken: string; code: string },\n signal?: AbortSignal,\n ) => {\n await publicClient.post(\n '/auth/mfa/confirm',\n { body: { accessToken, code } },\n { headers: authHeader(idToken), signal },\n );\n };\n\n return {\n login,\n signUp,\n confirmAccount,\n confirmAccountByCode,\n refreshTokens,\n logout,\n getProfile,\n requestPasswordReset,\n confirmPasswordReset,\n setupMfa,\n confirmMfa,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateServiceAccountInput,\n CreateVendorInput,\n GetVendorUsersQuery,\n PaginationQuery,\n UpdateVendorInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /vendors` and `GET /vendors/{vendor}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createVendors = ({ client, publicClient }: Deps) => {\n const getVendors = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors', { query }, { signal });\n return data;\n };\n\n const getVendor = async (vendor: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors/{vendor}', { path: { vendor } }, { signal });\n return data;\n };\n\n /** Self-service registration. The vendor is pending, under a temporary `_v`-prefixed id. */\n const createVendor = async (body: CreateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.post('/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (vendor: string, body: UpdateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.patch(\n '/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const getVendorUsers = async (\n vendor: string,\n query: GetVendorUsersQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n /** Requests membership of a vendor for the signed-in user. */\n const requestVendorMembership = async (vendor: string, signal?: AbortSignal) => {\n await client.post('/vendors/{vendor}/users', { path: { vendor } }, { signal });\n };\n\n const approveVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const removeVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.delete(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const getVendorUserRequests = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/user-requests',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const sendVendorInvitation = async (vendor: string, email: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/invitations/{email}',\n { path: { vendor, email } },\n { signal },\n );\n };\n\n /** `security: []` — the invitee follows the emailed link before they have a session. */\n const acceptVendorInvitation = async (\n vendor: string,\n email: string,\n code: string,\n signal?: AbortSignal,\n ) => {\n await publicClient.get(\n '/vendors/{vendor}/invitations/{email}/{code}',\n { path: { vendor, email, code } },\n { signal },\n );\n };\n\n /** `service=1` filters the member list; there is no distinct endpoint. */\n const getServiceAccounts = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query: { ...query, service: 1 } },\n { signal },\n );\n return data;\n };\n\n /** The returned `password` is shown once and is not retrievable afterwards. */\n const createServiceAccount = async (\n vendor: string,\n body: CreateServiceAccountInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/credentials',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n return {\n getVendors,\n getVendor,\n createVendor,\n updateVendor,\n getVendorUsers,\n requestVendorMembership,\n approveVendorUser,\n removeVendorUser,\n getVendorUserRequests,\n sendVendorInvitation,\n acceptVendorInvitation,\n getServiceAccounts,\n createServiceAccount,\n };\n};\n","import { createOpenapiFetchClient, type MiddlewareFn } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { createAdmin } from './admin/admin';\nimport { createApps } from './apps/apps';\nimport { createAuth } from './auth/auth';\nimport { createVendors } from './vendors/vendors';\n\nexport type DeveloperPortalFetchClient = ReturnType<typeof createOpenapiFetchClient<paths>>;\n\nexport type DeveloperPortalClientInitOptions = Omit<ClientInitOptions, 'auth' | 'middlewares'> & {\n middlewares?: MiddlewareFn[];\n /**\n * Stamps the id token. A middleware rather than the `auth: AuthStrategy` other clients take, because\n * apps-api's token rotates and a header baked in at construction would go stale. Supplied by\n * `createDeveloperPortalSdk`; omit it for the spec's `security: []` operations.\n */\n authMiddleware?: MiddlewareFn;\n};\n\n/**\n * The Developer Portal (apps-api) client. Paths and types are generated from\n * `https://apps-api.keboola.com/docs/openapi.yaml` — see `redocly.yaml` and `pnpm gen:types`.\n *\n * Two fetch clients because the spec splits its operations: `security: []` ones must go out\n * unauthenticated, and four authenticate with the access or refresh token instead of the id token.\n */\nexport const createDeveloperPortalClient = ({\n baseUrl,\n middlewares = [],\n authMiddleware,\n}: DeveloperPortalClientInitOptions) => {\n const publicClient = createOpenapiFetchClient<paths>({ baseUrl, middlewares });\n const client = authMiddleware\n ? createOpenapiFetchClient<paths>({ baseUrl, middlewares: [authMiddleware, ...middlewares] })\n : publicClient;\n\n /** `GET /` — the spec's service index. */\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await publicClient.get('/', {}, { signal });\n return data;\n };\n\n return {\n healthCheck,\n auth: createAuth({ client, publicClient }),\n vendors: createVendors({ client, publicClient }),\n apps: createApps({ client, publicClient }),\n admin: createAdmin(client),\n };\n};\n\nexport type DeveloperPortalClient = ReturnType<typeof createDeveloperPortalClient>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"developerPortalClient-B1QZ1rYi.js","names":[],"sources":["../src/clients/developerPortal/admin/admin.ts","../src/clients/developerPortal/apps/apps.ts","../src/clients/developerPortal/tokens.ts","../src/clients/developerPortal/auth/auth.ts","../src/clients/developerPortal/vendors/vendors.ts","../src/clients/developerPortal/developerPortalClient.ts"],"sourcesContent":["import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n AdminPaginationQuery,\n ApproveVendorInput,\n CreateVendorAsAdminInput,\n GetChangesQuery,\n PaginationQuery,\n RejectAppInput,\n UpdateAppAsAdminInput,\n UpdateVendorAsAdminInput,\n} from '../types';\n\n/** Keboola staff only. Every method 403s for a non-admin token; the UI gates on `custom:isAdmin`. */\nexport const createAdmin = (client: DeveloperPortalFetchClient) => {\n const getStacks = async (signal?: AbortSignal) => {\n const { data } = await client.get('/admin/stacks', {}, { signal });\n return data;\n };\n\n const getChanges = async (query: GetChangesQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/changes', { query }, { signal });\n return data;\n };\n\n const getApps = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps', { query }, { signal });\n return data;\n };\n\n const getApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps/{id}', { path: { id } }, { signal });\n return data;\n };\n\n const updateApp = async (id: string, body: UpdateAppAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.patch('/admin/apps/{id}', { path: { id }, body }, { signal });\n return data;\n };\n\n const publishApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/apps/{id}/publish', { path: { id } }, { signal });\n return data;\n };\n\n const rejectApp = async (id: string, body: RejectAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/admin/apps/{id}/reject',\n { path: { id }, body },\n { signal },\n );\n return data;\n };\n\n const getUsers = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/users', { query }, { signal });\n return data;\n };\n\n const deleteUser = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}', { path: { username } }, { signal });\n };\n\n /** Clears the user's MFA enrolment so they can re-enrol — the account-recovery path. */\n const resetUserMfa = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/mfa', { path: { username } }, { signal });\n };\n\n const addUserToVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.post(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const removeUserFromVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.delete(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const grantUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.post('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const revokeUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const getVendors = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/vendors', { query }, { signal });\n return data;\n };\n\n const createVendor = async (body: CreateVendorAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (\n vendor: string,\n body: UpdateVendorAsAdminInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/admin/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const deleteVendor = async (vendor: string, signal?: AbortSignal) => {\n await client.delete('/admin/vendors/{vendor}', { path: { vendor } }, { signal });\n };\n\n /** Swaps a pending `_v`-prefixed id for the permanent one carried in the body. */\n const approveVendor = async (vendor: string, body: ApproveVendorInput, signal?: AbortSignal) => {\n await client.post('/admin/vendors/{vendor}/approve', { path: { vendor }, body }, { signal });\n };\n\n return {\n getStacks,\n getChanges,\n getApps,\n getApp,\n updateApp,\n publishApp,\n rejectApp,\n getUsers,\n deleteUser,\n resetUserMfa,\n addUserToVendor,\n removeUserFromVendor,\n grantUserAdmin,\n revokeUserAdmin,\n getVendors,\n createVendor,\n updateVendor,\n deleteVendor,\n approveVendor,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateAppInput,\n DeprecateAppInput,\n GetAppsQuery,\n PaginationQuery,\n UpdateAppInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /apps` and `GET /apps/{app}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createApps = ({ client, publicClient }: Deps) => {\n /** The public catalog: scoped server-side to published components. */\n const getPublishedApps = async (query: GetAppsQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps', { query }, { signal });\n return data;\n };\n\n const getPublishedApp = async (app: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps/{app}', { path: { app } }, { signal });\n return data;\n };\n\n const getApps = async (vendor: string, query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const getApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const createApp = async (vendor: string, body: CreateAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const updateApp = async (\n vendor: string,\n app: string,\n body: UpdateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const deleteApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n await client.delete('/vendors/{vendor}/apps/{app}', { path: { vendor, app } }, { signal });\n };\n\n const requestAppPublishing = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/publish',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const deprecateApp = async (\n vendor: string,\n app: string,\n body: DeprecateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/deprecate',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const getAppVersions = async (\n vendor: string,\n app: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions',\n { path: { vendor, app }, query },\n { signal },\n );\n return data;\n };\n\n const getAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions/{version}',\n { path: { vendor, app, version } },\n { signal },\n );\n return data;\n };\n\n const rollbackAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n await client.post(\n '/vendors/{vendor}/apps/{app}/versions/{version}/rollback',\n { path: { vendor, app, version } },\n { signal },\n );\n };\n\n const getAppRepository = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/repository',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n /** Requests a presigned S3 upload link; the upload itself is {@link uploadAppIcon}. */\n const createAppIconUploadLink = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/icon',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n return {\n getPublishedApps,\n getPublishedApp,\n getApps,\n getApp,\n createApp,\n updateApp,\n deleteApp,\n requestAppPublishing,\n deprecateApp,\n getAppVersions,\n getAppVersion,\n rollbackAppVersion,\n getAppRepository,\n createAppIconUploadLink,\n };\n};\n\n/**\n * Uploads the icon to the presigned URL from `createAppIconUploadLink`. Deliberately a bare `fetch`:\n * the URL carries its own signature in the query string, and sending our `Authorization` header to\n * S3 makes it reject the request.\n */\nexport const uploadAppIcon = async (\n uploadUrl: string,\n png: Blob,\n signal?: AbortSignal,\n): Promise<void> => {\n const response = await fetch(uploadUrl, {\n method: 'PUT',\n body: png,\n headers: { 'Content-Type': 'image/png' },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Icon upload failed: ${response.status} ${response.statusText}`);\n }\n};\n","import { HttpHeader } from '../../fetchClient';\n\n/**\n * The Cognito token trio apps-api issues. `token` is the id token: stamped on almost every call, and\n * the header on both MFA calls. `refreshToken` authenticates `GET /auth/token`. `accessToken`\n * authenticates `POST /auth/logout` as a header, and both `POST /auth/mfa` and `/auth/mfa/confirm`\n * in the **body** — which is why those two stay off the refresh-and-replay path.\n */\nexport type DeveloperPortalTokens = {\n token: string;\n accessToken: string;\n refreshToken: string;\n};\n\n/** Raw token, no `Bearer` prefix — see the spec's `bearerAuth` scheme (`type: apiKey`). */\nexport const authHeader = (token: string): Record<string, string> => ({\n [HttpHeader.AUTHORIZATION]: token,\n});\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport { authHeader } from '../tokens';\nimport type {\n ConfirmAccountInput,\n LoginChallenge,\n LoginInput,\n LoginResult,\n ResetPasswordConfirmInput,\n SignUpInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** The spec's `security: []` operations, plus the four that bring their own token. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const isMfaChallengeResponse = (result: LoginResult): result is LoginChallenge =>\n !('token' in result);\n\nexport const createAuth = ({ client, publicClient }: Deps) => {\n const login = async (body: LoginInput, signal?: AbortSignal) => {\n const { data } = await publicClient.post('/auth/login', { body }, { signal });\n return data;\n };\n\n const signUp = async (body: SignUpInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/signup', { body }, { signal });\n };\n\n const confirmAccount = async (body: ConfirmAccountInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm', { body }, { signal });\n };\n\n /** Confirms via the emailed link's path segments, for a consumer echoing that link. */\n const confirmAccountByCode = async (email: string, code: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm/{email}/{code}', { path: { email, code } }, { signal });\n };\n\n /**\n * Rotates the trio, authenticated with the **refresh** token, on the auth-free client so a\n * rotation triggered by the auth middleware cannot recurse into it. The response carries no new\n * refresh token, so the caller carries the one it has forward.\n */\n const refreshTokens = async (refreshToken: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get(\n '/auth/token',\n {},\n { headers: authHeader(refreshToken), signal },\n );\n return data;\n };\n\n /** Authenticated with the **access** token. Clear local state regardless of the outcome. */\n const logout = async (accessToken: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/logout', {}, { headers: authHeader(accessToken), signal });\n };\n\n const getProfile = async (signal?: AbortSignal) => {\n const { data } = await client.get('/auth/profile', {}, { signal });\n return data;\n };\n\n const requestPasswordReset = async (email: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/forgot/{email}', { path: { email } }, { signal });\n };\n\n const confirmPasswordReset = async (\n email: string,\n body: ResetPasswordConfirmInput,\n signal?: AbortSignal,\n ) => {\n await publicClient.post('/auth/forgot/{email}/confirm', { path: { email }, body }, { signal });\n };\n\n // `setupMfa` and `confirmMfa` each take two of the three tokens: the auth token in the header, the\n // access token in the body. Both sit on the auth-free client, which keeps them out of the\n // middleware's refresh-and-replay: restamping a header cannot fix a stale token in a body.\n const setupMfa = async (\n { idToken, accessToken }: { idToken: string; accessToken: string },\n signal?: AbortSignal,\n ) => {\n const { data } = await publicClient.post(\n '/auth/mfa',\n { body: { accessToken } },\n { headers: authHeader(idToken), signal },\n );\n return data;\n };\n\n const confirmMfa = async (\n { idToken, accessToken, code }: { idToken: string; accessToken: string; code: string },\n signal?: AbortSignal,\n ) => {\n await publicClient.post(\n '/auth/mfa/confirm',\n { body: { accessToken, code } },\n { headers: authHeader(idToken), signal },\n );\n };\n\n return {\n login,\n signUp,\n confirmAccount,\n confirmAccountByCode,\n refreshTokens,\n logout,\n getProfile,\n requestPasswordReset,\n confirmPasswordReset,\n setupMfa,\n confirmMfa,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateServiceAccountInput,\n CreateVendorInput,\n GetVendorUsersQuery,\n PaginationQuery,\n UpdateVendorInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /vendors` and `GET /vendors/{vendor}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createVendors = ({ client, publicClient }: Deps) => {\n const getVendors = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors', { query }, { signal });\n return data;\n };\n\n const getVendor = async (vendor: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors/{vendor}', { path: { vendor } }, { signal });\n return data;\n };\n\n /** Self-service registration. The vendor is pending, under a temporary `_v`-prefixed id. */\n const createVendor = async (body: CreateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.post('/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (vendor: string, body: UpdateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.patch(\n '/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const getVendorUsers = async (\n vendor: string,\n query: GetVendorUsersQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n /** Requests membership of a vendor for the signed-in user. */\n const requestVendorMembership = async (vendor: string, signal?: AbortSignal) => {\n await client.post('/vendors/{vendor}/users', { path: { vendor } }, { signal });\n };\n\n const approveVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const removeVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.delete(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const getVendorUserRequests = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/user-requests',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const sendVendorInvitation = async (vendor: string, email: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/invitations/{email}',\n { path: { vendor, email } },\n { signal },\n );\n };\n\n /** `security: []` — the invitee follows the emailed link before they have a session. */\n const acceptVendorInvitation = async (\n vendor: string,\n email: string,\n code: string,\n signal?: AbortSignal,\n ) => {\n await publicClient.get(\n '/vendors/{vendor}/invitations/{email}/{code}',\n { path: { vendor, email, code } },\n { signal },\n );\n };\n\n /** `service=1` filters the member list; there is no distinct endpoint. */\n const getServiceAccounts = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query: { ...query, service: 1 } },\n { signal },\n );\n return data;\n };\n\n /** The returned `password` is shown once and is not retrievable afterwards. */\n const createServiceAccount = async (\n vendor: string,\n body: CreateServiceAccountInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/credentials',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n return {\n getVendors,\n getVendor,\n createVendor,\n updateVendor,\n getVendorUsers,\n requestVendorMembership,\n approveVendorUser,\n removeVendorUser,\n getVendorUserRequests,\n sendVendorInvitation,\n acceptVendorInvitation,\n getServiceAccounts,\n createServiceAccount,\n };\n};\n","import { createOpenapiFetchClient, type MiddlewareFn } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { createAdmin } from './admin/admin';\nimport { createApps } from './apps/apps';\nimport { createAuth } from './auth/auth';\nimport { createVendors } from './vendors/vendors';\n\nexport type DeveloperPortalFetchClient = ReturnType<typeof createOpenapiFetchClient<paths>>;\n\nexport type DeveloperPortalClientInitOptions = Omit<ClientInitOptions, 'auth' | 'middlewares'> & {\n middlewares?: MiddlewareFn[];\n /**\n * Stamps the id token per request (it rotates). Omit for the spec's `security: []` operations.\n */\n authMiddleware?: MiddlewareFn;\n};\n\n/**\n * The Developer Portal (apps-api) client; types generated via `redocly.yaml` / `pnpm gen:types`.\n *\n * - Two fetch clients: `security: []` operations go out unauthenticated, and four use the access or\n * refresh token instead of the id token.\n */\nexport const createDeveloperPortalClient = ({\n baseUrl,\n middlewares = [],\n authMiddleware,\n}: DeveloperPortalClientInitOptions) => {\n const publicClient = createOpenapiFetchClient<paths>({ baseUrl, middlewares });\n const client = authMiddleware\n ? createOpenapiFetchClient<paths>({ baseUrl, middlewares: [authMiddleware, ...middlewares] })\n : publicClient;\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await publicClient.get('/', {}, { signal });\n return data;\n };\n\n return {\n healthCheck,\n auth: createAuth({ client, publicClient }),\n vendors: createVendors({ client, publicClient }),\n apps: createApps({ client, publicClient }),\n admin: createAdmin(client),\n };\n};\n\nexport type DeveloperPortalClient = ReturnType<typeof createDeveloperPortalClient>;\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- const require_createFetchClient = require("./createFetchClient-BlgPbjFj.cjs");
2
- const require_createOpenapiFetchClient = require("./createOpenapiFetchClient-C3UmDXpe.cjs");
1
+ const require_createFetchClient = require("./createFetchClient-Cwp8max9.cjs");
2
+ const require_createOpenapiFetchClient = require("./createOpenapiFetchClient-BYqW-9tm.cjs");
3
3
  //#region src/clients/developerPortal/admin/admin.ts
4
4
  /** Keboola staff only. Every method 403s for a non-admin token; the UI gates on `custom:isAdmin`. */
5
5
  const createAdmin = (client) => {
@@ -442,11 +442,10 @@ const createVendors = ({ client, publicClient }) => {
442
442
  //#endregion
443
443
  //#region src/clients/developerPortal/developerPortalClient.ts
444
444
  /**
445
- * The Developer Portal (apps-api) client. Paths and types are generated from
446
- * `https://apps-api.keboola.com/docs/openapi.yaml` — see `redocly.yaml` and `pnpm gen:types`.
445
+ * The Developer Portal (apps-api) client; types generated via `redocly.yaml` / `pnpm gen:types`.
447
446
  *
448
- * Two fetch clients because the spec splits its operations: `security: []` ones must go out
449
- * unauthenticated, and four authenticate with the access or refresh token instead of the id token.
447
+ * - Two fetch clients: `security: []` operations go out unauthenticated, and four use the access or
448
+ * refresh token instead of the id token.
450
449
  */
451
450
  const createDeveloperPortalClient = ({ baseUrl, middlewares = [], authMiddleware }) => {
452
451
  const publicClient = require_createOpenapiFetchClient.createOpenapiFetchClient({
@@ -457,7 +456,6 @@ const createDeveloperPortalClient = ({ baseUrl, middlewares = [], authMiddleware
457
456
  baseUrl,
458
457
  middlewares: [authMiddleware, ...middlewares]
459
458
  }) : publicClient;
460
- /** `GET /` — the spec's service index. */
461
459
  const healthCheck = async (signal) => {
462
460
  const { data } = await publicClient.get("/", {}, { signal });
463
461
  return data;
@@ -505,4 +503,4 @@ Object.defineProperty(exports, "uploadAppIcon", {
505
503
  }
506
504
  });
507
505
 
508
- //# sourceMappingURL=developerPortalClient-CutPqoAa.cjs.map
506
+ //# sourceMappingURL=developerPortalClient-CLPpBksD.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"developerPortalClient-CutPqoAa.cjs","names":["HttpHeader","createOpenapiFetchClient"],"sources":["../src/clients/developerPortal/admin/admin.ts","../src/clients/developerPortal/apps/apps.ts","../src/clients/developerPortal/tokens.ts","../src/clients/developerPortal/auth/auth.ts","../src/clients/developerPortal/vendors/vendors.ts","../src/clients/developerPortal/developerPortalClient.ts"],"sourcesContent":["import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n AdminPaginationQuery,\n ApproveVendorInput,\n CreateVendorAsAdminInput,\n GetChangesQuery,\n PaginationQuery,\n RejectAppInput,\n UpdateAppAsAdminInput,\n UpdateVendorAsAdminInput,\n} from '../types';\n\n/** Keboola staff only. Every method 403s for a non-admin token; the UI gates on `custom:isAdmin`. */\nexport const createAdmin = (client: DeveloperPortalFetchClient) => {\n const getStacks = async (signal?: AbortSignal) => {\n const { data } = await client.get('/admin/stacks', {}, { signal });\n return data;\n };\n\n const getChanges = async (query: GetChangesQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/changes', { query }, { signal });\n return data;\n };\n\n const getApps = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps', { query }, { signal });\n return data;\n };\n\n const getApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps/{id}', { path: { id } }, { signal });\n return data;\n };\n\n const updateApp = async (id: string, body: UpdateAppAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.patch('/admin/apps/{id}', { path: { id }, body }, { signal });\n return data;\n };\n\n const publishApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/apps/{id}/publish', { path: { id } }, { signal });\n return data;\n };\n\n const rejectApp = async (id: string, body: RejectAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/admin/apps/{id}/reject',\n { path: { id }, body },\n { signal },\n );\n return data;\n };\n\n const getUsers = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/users', { query }, { signal });\n return data;\n };\n\n const deleteUser = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}', { path: { username } }, { signal });\n };\n\n /** Clears the user's MFA enrolment so they can re-enrol — the account-recovery path. */\n const resetUserMfa = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/mfa', { path: { username } }, { signal });\n };\n\n const addUserToVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.post(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const removeUserFromVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.delete(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const grantUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.post('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const revokeUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const getVendors = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/vendors', { query }, { signal });\n return data;\n };\n\n const createVendor = async (body: CreateVendorAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (\n vendor: string,\n body: UpdateVendorAsAdminInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/admin/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const deleteVendor = async (vendor: string, signal?: AbortSignal) => {\n await client.delete('/admin/vendors/{vendor}', { path: { vendor } }, { signal });\n };\n\n /** Swaps a pending `_v`-prefixed id for the permanent one carried in the body. */\n const approveVendor = async (vendor: string, body: ApproveVendorInput, signal?: AbortSignal) => {\n await client.post('/admin/vendors/{vendor}/approve', { path: { vendor }, body }, { signal });\n };\n\n return {\n getStacks,\n getChanges,\n getApps,\n getApp,\n updateApp,\n publishApp,\n rejectApp,\n getUsers,\n deleteUser,\n resetUserMfa,\n addUserToVendor,\n removeUserFromVendor,\n grantUserAdmin,\n revokeUserAdmin,\n getVendors,\n createVendor,\n updateVendor,\n deleteVendor,\n approveVendor,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateAppInput,\n DeprecateAppInput,\n GetAppsQuery,\n PaginationQuery,\n UpdateAppInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /apps` and `GET /apps/{app}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createApps = ({ client, publicClient }: Deps) => {\n /** The public catalog: scoped server-side to published components. */\n const getPublishedApps = async (query: GetAppsQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps', { query }, { signal });\n return data;\n };\n\n const getPublishedApp = async (app: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps/{app}', { path: { app } }, { signal });\n return data;\n };\n\n const getApps = async (vendor: string, query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const getApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const createApp = async (vendor: string, body: CreateAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const updateApp = async (\n vendor: string,\n app: string,\n body: UpdateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const deleteApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n await client.delete('/vendors/{vendor}/apps/{app}', { path: { vendor, app } }, { signal });\n };\n\n const requestAppPublishing = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/publish',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const deprecateApp = async (\n vendor: string,\n app: string,\n body: DeprecateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/deprecate',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const getAppVersions = async (\n vendor: string,\n app: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions',\n { path: { vendor, app }, query },\n { signal },\n );\n return data;\n };\n\n const getAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions/{version}',\n { path: { vendor, app, version } },\n { signal },\n );\n return data;\n };\n\n const rollbackAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n await client.post(\n '/vendors/{vendor}/apps/{app}/versions/{version}/rollback',\n { path: { vendor, app, version } },\n { signal },\n );\n };\n\n const getAppRepository = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/repository',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n /** Requests a presigned S3 upload link; the upload itself is {@link uploadAppIcon}. */\n const createAppIconUploadLink = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/icon',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n return {\n getPublishedApps,\n getPublishedApp,\n getApps,\n getApp,\n createApp,\n updateApp,\n deleteApp,\n requestAppPublishing,\n deprecateApp,\n getAppVersions,\n getAppVersion,\n rollbackAppVersion,\n getAppRepository,\n createAppIconUploadLink,\n };\n};\n\n/**\n * Uploads the icon to the presigned URL from `createAppIconUploadLink`. Deliberately a bare `fetch`:\n * the URL carries its own signature in the query string, and sending our `Authorization` header to\n * S3 makes it reject the request.\n */\nexport const uploadAppIcon = async (\n uploadUrl: string,\n png: Blob,\n signal?: AbortSignal,\n): Promise<void> => {\n const response = await fetch(uploadUrl, {\n method: 'PUT',\n body: png,\n headers: { 'Content-Type': 'image/png' },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Icon upload failed: ${response.status} ${response.statusText}`);\n }\n};\n","import { HttpHeader } from '../../fetchClient';\n\n/**\n * The Cognito token trio apps-api issues. `token` is the id token: stamped on almost every call, and\n * the header on both MFA calls. `refreshToken` authenticates `GET /auth/token`. `accessToken`\n * authenticates `POST /auth/logout` as a header, and both `POST /auth/mfa` and `/auth/mfa/confirm`\n * in the **body** — which is why those two stay off the refresh-and-replay path.\n */\nexport type DeveloperPortalTokens = {\n token: string;\n accessToken: string;\n refreshToken: string;\n};\n\n/** Raw token, no `Bearer` prefix — see the spec's `bearerAuth` scheme (`type: apiKey`). */\nexport const authHeader = (token: string): Record<string, string> => ({\n [HttpHeader.AUTHORIZATION]: token,\n});\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport { authHeader } from '../tokens';\nimport type {\n ConfirmAccountInput,\n LoginChallenge,\n LoginInput,\n LoginResult,\n ResetPasswordConfirmInput,\n SignUpInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** The spec's `security: []` operations, plus the four that bring their own token. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const isMfaChallengeResponse = (result: LoginResult): result is LoginChallenge =>\n !('token' in result);\n\nexport const createAuth = ({ client, publicClient }: Deps) => {\n const login = async (body: LoginInput, signal?: AbortSignal) => {\n const { data } = await publicClient.post('/auth/login', { body }, { signal });\n return data;\n };\n\n const signUp = async (body: SignUpInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/signup', { body }, { signal });\n };\n\n const confirmAccount = async (body: ConfirmAccountInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm', { body }, { signal });\n };\n\n /** Confirms via the emailed link's path segments, for a consumer echoing that link. */\n const confirmAccountByCode = async (email: string, code: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm/{email}/{code}', { path: { email, code } }, { signal });\n };\n\n /**\n * Rotates the trio, authenticated with the **refresh** token, on the auth-free client so a\n * rotation triggered by the auth middleware cannot recurse into it. The response carries no new\n * refresh token, so the caller carries the one it has forward.\n */\n const refreshTokens = async (refreshToken: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get(\n '/auth/token',\n {},\n { headers: authHeader(refreshToken), signal },\n );\n return data;\n };\n\n /** Authenticated with the **access** token. Clear local state regardless of the outcome. */\n const logout = async (accessToken: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/logout', {}, { headers: authHeader(accessToken), signal });\n };\n\n const getProfile = async (signal?: AbortSignal) => {\n const { data } = await client.get('/auth/profile', {}, { signal });\n return data;\n };\n\n const requestPasswordReset = async (email: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/forgot/{email}', { path: { email } }, { signal });\n };\n\n const confirmPasswordReset = async (\n email: string,\n body: ResetPasswordConfirmInput,\n signal?: AbortSignal,\n ) => {\n await publicClient.post('/auth/forgot/{email}/confirm', { path: { email }, body }, { signal });\n };\n\n // `setupMfa` and `confirmMfa` each take two of the three tokens: the auth token in the header, the\n // access token in the body. Both sit on the auth-free client, which keeps them out of the\n // middleware's refresh-and-replay: restamping a header cannot fix a stale token in a body.\n const setupMfa = async (\n { idToken, accessToken }: { idToken: string; accessToken: string },\n signal?: AbortSignal,\n ) => {\n const { data } = await publicClient.post(\n '/auth/mfa',\n { body: { accessToken } },\n { headers: authHeader(idToken), signal },\n );\n return data;\n };\n\n const confirmMfa = async (\n { idToken, accessToken, code }: { idToken: string; accessToken: string; code: string },\n signal?: AbortSignal,\n ) => {\n await publicClient.post(\n '/auth/mfa/confirm',\n { body: { accessToken, code } },\n { headers: authHeader(idToken), signal },\n );\n };\n\n return {\n login,\n signUp,\n confirmAccount,\n confirmAccountByCode,\n refreshTokens,\n logout,\n getProfile,\n requestPasswordReset,\n confirmPasswordReset,\n setupMfa,\n confirmMfa,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateServiceAccountInput,\n CreateVendorInput,\n GetVendorUsersQuery,\n PaginationQuery,\n UpdateVendorInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /vendors` and `GET /vendors/{vendor}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createVendors = ({ client, publicClient }: Deps) => {\n const getVendors = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors', { query }, { signal });\n return data;\n };\n\n const getVendor = async (vendor: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors/{vendor}', { path: { vendor } }, { signal });\n return data;\n };\n\n /** Self-service registration. The vendor is pending, under a temporary `_v`-prefixed id. */\n const createVendor = async (body: CreateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.post('/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (vendor: string, body: UpdateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.patch(\n '/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const getVendorUsers = async (\n vendor: string,\n query: GetVendorUsersQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n /** Requests membership of a vendor for the signed-in user. */\n const requestVendorMembership = async (vendor: string, signal?: AbortSignal) => {\n await client.post('/vendors/{vendor}/users', { path: { vendor } }, { signal });\n };\n\n const approveVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const removeVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.delete(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const getVendorUserRequests = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/user-requests',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const sendVendorInvitation = async (vendor: string, email: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/invitations/{email}',\n { path: { vendor, email } },\n { signal },\n );\n };\n\n /** `security: []` — the invitee follows the emailed link before they have a session. */\n const acceptVendorInvitation = async (\n vendor: string,\n email: string,\n code: string,\n signal?: AbortSignal,\n ) => {\n await publicClient.get(\n '/vendors/{vendor}/invitations/{email}/{code}',\n { path: { vendor, email, code } },\n { signal },\n );\n };\n\n /** `service=1` filters the member list; there is no distinct endpoint. */\n const getServiceAccounts = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query: { ...query, service: 1 } },\n { signal },\n );\n return data;\n };\n\n /** The returned `password` is shown once and is not retrievable afterwards. */\n const createServiceAccount = async (\n vendor: string,\n body: CreateServiceAccountInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/credentials',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n return {\n getVendors,\n getVendor,\n createVendor,\n updateVendor,\n getVendorUsers,\n requestVendorMembership,\n approveVendorUser,\n removeVendorUser,\n getVendorUserRequests,\n sendVendorInvitation,\n acceptVendorInvitation,\n getServiceAccounts,\n createServiceAccount,\n };\n};\n","import { createOpenapiFetchClient, type MiddlewareFn } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { createAdmin } from './admin/admin';\nimport { createApps } from './apps/apps';\nimport { createAuth } from './auth/auth';\nimport { createVendors } from './vendors/vendors';\n\nexport type DeveloperPortalFetchClient = ReturnType<typeof createOpenapiFetchClient<paths>>;\n\nexport type DeveloperPortalClientInitOptions = Omit<ClientInitOptions, 'auth' | 'middlewares'> & {\n middlewares?: MiddlewareFn[];\n /**\n * Stamps the id token. A middleware rather than the `auth: AuthStrategy` other clients take, because\n * apps-api's token rotates and a header baked in at construction would go stale. Supplied by\n * `createDeveloperPortalSdk`; omit it for the spec's `security: []` operations.\n */\n authMiddleware?: MiddlewareFn;\n};\n\n/**\n * The Developer Portal (apps-api) client. Paths and types are generated from\n * `https://apps-api.keboola.com/docs/openapi.yaml` — see `redocly.yaml` and `pnpm gen:types`.\n *\n * Two fetch clients because the spec splits its operations: `security: []` ones must go out\n * unauthenticated, and four authenticate with the access or refresh token instead of the id token.\n */\nexport const createDeveloperPortalClient = ({\n baseUrl,\n middlewares = [],\n authMiddleware,\n}: DeveloperPortalClientInitOptions) => {\n const publicClient = createOpenapiFetchClient<paths>({ baseUrl, middlewares });\n const client = authMiddleware\n ? createOpenapiFetchClient<paths>({ baseUrl, middlewares: [authMiddleware, ...middlewares] })\n : publicClient;\n\n /** `GET /` — the spec's service index. */\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await publicClient.get('/', {}, { signal });\n return data;\n };\n\n return {\n healthCheck,\n auth: createAuth({ client, publicClient }),\n vendors: createVendors({ client, publicClient }),\n apps: createApps({ client, publicClient }),\n admin: createAdmin(client),\n };\n};\n\nexport type DeveloperPortalClient = ReturnType<typeof createDeveloperPortalClient>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"developerPortalClient-CLPpBksD.cjs","names":["HttpHeader","createOpenapiFetchClient"],"sources":["../src/clients/developerPortal/admin/admin.ts","../src/clients/developerPortal/apps/apps.ts","../src/clients/developerPortal/tokens.ts","../src/clients/developerPortal/auth/auth.ts","../src/clients/developerPortal/vendors/vendors.ts","../src/clients/developerPortal/developerPortalClient.ts"],"sourcesContent":["import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n AdminPaginationQuery,\n ApproveVendorInput,\n CreateVendorAsAdminInput,\n GetChangesQuery,\n PaginationQuery,\n RejectAppInput,\n UpdateAppAsAdminInput,\n UpdateVendorAsAdminInput,\n} from '../types';\n\n/** Keboola staff only. Every method 403s for a non-admin token; the UI gates on `custom:isAdmin`. */\nexport const createAdmin = (client: DeveloperPortalFetchClient) => {\n const getStacks = async (signal?: AbortSignal) => {\n const { data } = await client.get('/admin/stacks', {}, { signal });\n return data;\n };\n\n const getChanges = async (query: GetChangesQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/changes', { query }, { signal });\n return data;\n };\n\n const getApps = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps', { query }, { signal });\n return data;\n };\n\n const getApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/apps/{id}', { path: { id } }, { signal });\n return data;\n };\n\n const updateApp = async (id: string, body: UpdateAppAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.patch('/admin/apps/{id}', { path: { id }, body }, { signal });\n return data;\n };\n\n const publishApp = async (id: string, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/apps/{id}/publish', { path: { id } }, { signal });\n return data;\n };\n\n const rejectApp = async (id: string, body: RejectAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/admin/apps/{id}/reject',\n { path: { id }, body },\n { signal },\n );\n return data;\n };\n\n const getUsers = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/users', { query }, { signal });\n return data;\n };\n\n const deleteUser = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}', { path: { username } }, { signal });\n };\n\n /** Clears the user's MFA enrolment so they can re-enrol — the account-recovery path. */\n const resetUserMfa = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/mfa', { path: { username } }, { signal });\n };\n\n const addUserToVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.post(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const removeUserFromVendor = async (username: string, vendor: string, signal?: AbortSignal) => {\n await client.delete(\n '/admin/users/{username}/vendors/{vendor}',\n { path: { username, vendor } },\n { signal },\n );\n };\n\n const grantUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.post('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const revokeUserAdmin = async (username: string, signal?: AbortSignal) => {\n await client.delete('/admin/users/{username}/admin', { path: { username } }, { signal });\n };\n\n const getVendors = async (query: AdminPaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/admin/vendors', { query }, { signal });\n return data;\n };\n\n const createVendor = async (body: CreateVendorAsAdminInput, signal?: AbortSignal) => {\n const { data } = await client.post('/admin/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (\n vendor: string,\n body: UpdateVendorAsAdminInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/admin/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const deleteVendor = async (vendor: string, signal?: AbortSignal) => {\n await client.delete('/admin/vendors/{vendor}', { path: { vendor } }, { signal });\n };\n\n /** Swaps a pending `_v`-prefixed id for the permanent one carried in the body. */\n const approveVendor = async (vendor: string, body: ApproveVendorInput, signal?: AbortSignal) => {\n await client.post('/admin/vendors/{vendor}/approve', { path: { vendor }, body }, { signal });\n };\n\n return {\n getStacks,\n getChanges,\n getApps,\n getApp,\n updateApp,\n publishApp,\n rejectApp,\n getUsers,\n deleteUser,\n resetUserMfa,\n addUserToVendor,\n removeUserFromVendor,\n grantUserAdmin,\n revokeUserAdmin,\n getVendors,\n createVendor,\n updateVendor,\n deleteVendor,\n approveVendor,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateAppInput,\n DeprecateAppInput,\n GetAppsQuery,\n PaginationQuery,\n UpdateAppInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /apps` and `GET /apps/{app}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createApps = ({ client, publicClient }: Deps) => {\n /** The public catalog: scoped server-side to published components. */\n const getPublishedApps = async (query: GetAppsQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps', { query }, { signal });\n return data;\n };\n\n const getPublishedApp = async (app: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/apps/{app}', { path: { app } }, { signal });\n return data;\n };\n\n const getApps = async (vendor: string, query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const getApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const createApp = async (vendor: string, body: CreateAppInput, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const updateApp = async (\n vendor: string,\n app: string,\n body: UpdateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/vendors/{vendor}/apps/{app}',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const deleteApp = async (vendor: string, app: string, signal?: AbortSignal) => {\n await client.delete('/vendors/{vendor}/apps/{app}', { path: { vendor, app } }, { signal });\n };\n\n const requestAppPublishing = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/publish',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n const deprecateApp = async (\n vendor: string,\n app: string,\n body: DeprecateAppInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/deprecate',\n { path: { vendor, app }, body },\n { signal },\n );\n return data;\n };\n\n const getAppVersions = async (\n vendor: string,\n app: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions',\n { path: { vendor, app }, query },\n { signal },\n );\n return data;\n };\n\n const getAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/versions/{version}',\n { path: { vendor, app, version } },\n { signal },\n );\n return data;\n };\n\n const rollbackAppVersion = async (\n vendor: string,\n app: string,\n version: string,\n signal?: AbortSignal,\n ) => {\n await client.post(\n '/vendors/{vendor}/apps/{app}/versions/{version}/rollback',\n { path: { vendor, app, version } },\n { signal },\n );\n };\n\n const getAppRepository = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/vendors/{vendor}/apps/{app}/repository',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n /** Requests a presigned S3 upload link; the upload itself is {@link uploadAppIcon}. */\n const createAppIconUploadLink = async (vendor: string, app: string, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/vendors/{vendor}/apps/{app}/icon',\n { path: { vendor, app } },\n { signal },\n );\n return data;\n };\n\n return {\n getPublishedApps,\n getPublishedApp,\n getApps,\n getApp,\n createApp,\n updateApp,\n deleteApp,\n requestAppPublishing,\n deprecateApp,\n getAppVersions,\n getAppVersion,\n rollbackAppVersion,\n getAppRepository,\n createAppIconUploadLink,\n };\n};\n\n/**\n * Uploads the icon to the presigned URL from `createAppIconUploadLink`. Deliberately a bare `fetch`:\n * the URL carries its own signature in the query string, and sending our `Authorization` header to\n * S3 makes it reject the request.\n */\nexport const uploadAppIcon = async (\n uploadUrl: string,\n png: Blob,\n signal?: AbortSignal,\n): Promise<void> => {\n const response = await fetch(uploadUrl, {\n method: 'PUT',\n body: png,\n headers: { 'Content-Type': 'image/png' },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Icon upload failed: ${response.status} ${response.statusText}`);\n }\n};\n","import { HttpHeader } from '../../fetchClient';\n\n/**\n * The Cognito token trio apps-api issues. `token` is the id token: stamped on almost every call, and\n * the header on both MFA calls. `refreshToken` authenticates `GET /auth/token`. `accessToken`\n * authenticates `POST /auth/logout` as a header, and both `POST /auth/mfa` and `/auth/mfa/confirm`\n * in the **body** — which is why those two stay off the refresh-and-replay path.\n */\nexport type DeveloperPortalTokens = {\n token: string;\n accessToken: string;\n refreshToken: string;\n};\n\n/** Raw token, no `Bearer` prefix — see the spec's `bearerAuth` scheme (`type: apiKey`). */\nexport const authHeader = (token: string): Record<string, string> => ({\n [HttpHeader.AUTHORIZATION]: token,\n});\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport { authHeader } from '../tokens';\nimport type {\n ConfirmAccountInput,\n LoginChallenge,\n LoginInput,\n LoginResult,\n ResetPasswordConfirmInput,\n SignUpInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** The spec's `security: []` operations, plus the four that bring their own token. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const isMfaChallengeResponse = (result: LoginResult): result is LoginChallenge =>\n !('token' in result);\n\nexport const createAuth = ({ client, publicClient }: Deps) => {\n const login = async (body: LoginInput, signal?: AbortSignal) => {\n const { data } = await publicClient.post('/auth/login', { body }, { signal });\n return data;\n };\n\n const signUp = async (body: SignUpInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/signup', { body }, { signal });\n };\n\n const confirmAccount = async (body: ConfirmAccountInput, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm', { body }, { signal });\n };\n\n /** Confirms via the emailed link's path segments, for a consumer echoing that link. */\n const confirmAccountByCode = async (email: string, code: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/confirm/{email}/{code}', { path: { email, code } }, { signal });\n };\n\n /**\n * Rotates the trio, authenticated with the **refresh** token, on the auth-free client so a\n * rotation triggered by the auth middleware cannot recurse into it. The response carries no new\n * refresh token, so the caller carries the one it has forward.\n */\n const refreshTokens = async (refreshToken: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get(\n '/auth/token',\n {},\n { headers: authHeader(refreshToken), signal },\n );\n return data;\n };\n\n /** Authenticated with the **access** token. Clear local state regardless of the outcome. */\n const logout = async (accessToken: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/logout', {}, { headers: authHeader(accessToken), signal });\n };\n\n const getProfile = async (signal?: AbortSignal) => {\n const { data } = await client.get('/auth/profile', {}, { signal });\n return data;\n };\n\n const requestPasswordReset = async (email: string, signal?: AbortSignal) => {\n await publicClient.post('/auth/forgot/{email}', { path: { email } }, { signal });\n };\n\n const confirmPasswordReset = async (\n email: string,\n body: ResetPasswordConfirmInput,\n signal?: AbortSignal,\n ) => {\n await publicClient.post('/auth/forgot/{email}/confirm', { path: { email }, body }, { signal });\n };\n\n // `setupMfa` and `confirmMfa` each take two of the three tokens: the auth token in the header, the\n // access token in the body. Both sit on the auth-free client, which keeps them out of the\n // middleware's refresh-and-replay: restamping a header cannot fix a stale token in a body.\n const setupMfa = async (\n { idToken, accessToken }: { idToken: string; accessToken: string },\n signal?: AbortSignal,\n ) => {\n const { data } = await publicClient.post(\n '/auth/mfa',\n { body: { accessToken } },\n { headers: authHeader(idToken), signal },\n );\n return data;\n };\n\n const confirmMfa = async (\n { idToken, accessToken, code }: { idToken: string; accessToken: string; code: string },\n signal?: AbortSignal,\n ) => {\n await publicClient.post(\n '/auth/mfa/confirm',\n { body: { accessToken, code } },\n { headers: authHeader(idToken), signal },\n );\n };\n\n return {\n login,\n signUp,\n confirmAccount,\n confirmAccountByCode,\n refreshTokens,\n logout,\n getProfile,\n requestPasswordReset,\n confirmPasswordReset,\n setupMfa,\n confirmMfa,\n };\n};\n","import type { DeveloperPortalFetchClient } from '../developerPortalClient';\nimport type {\n CreateServiceAccountInput,\n CreateVendorInput,\n GetVendorUsersQuery,\n PaginationQuery,\n UpdateVendorInput,\n} from '../types';\n\ntype Deps = {\n client: DeveloperPortalFetchClient;\n /** `GET /vendors` and `GET /vendors/{vendor}` are `security: []` in the spec. */\n publicClient: DeveloperPortalFetchClient;\n};\n\nexport const createVendors = ({ client, publicClient }: Deps) => {\n const getVendors = async (query: PaginationQuery = {}, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors', { query }, { signal });\n return data;\n };\n\n const getVendor = async (vendor: string, signal?: AbortSignal) => {\n const { data } = await publicClient.get('/vendors/{vendor}', { path: { vendor } }, { signal });\n return data;\n };\n\n /** Self-service registration. The vendor is pending, under a temporary `_v`-prefixed id. */\n const createVendor = async (body: CreateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.post('/vendors', { body }, { signal });\n return data;\n };\n\n const updateVendor = async (vendor: string, body: UpdateVendorInput, signal?: AbortSignal) => {\n const { data } = await client.patch(\n '/vendors/{vendor}',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n const getVendorUsers = async (\n vendor: string,\n query: GetVendorUsersQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n /** Requests membership of a vendor for the signed-in user. */\n const requestVendorMembership = async (vendor: string, signal?: AbortSignal) => {\n await client.post('/vendors/{vendor}/users', { path: { vendor } }, { signal });\n };\n\n const approveVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const removeVendorUser = async (vendor: string, username: string, signal?: AbortSignal) => {\n await client.delete(\n '/vendors/{vendor}/users/{username}',\n { path: { vendor, username } },\n { signal },\n );\n };\n\n const getVendorUserRequests = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/user-requests',\n { path: { vendor }, query },\n { signal },\n );\n return data;\n };\n\n const sendVendorInvitation = async (vendor: string, email: string, signal?: AbortSignal) => {\n await client.post(\n '/vendors/{vendor}/invitations/{email}',\n { path: { vendor, email } },\n { signal },\n );\n };\n\n /** `security: []` — the invitee follows the emailed link before they have a session. */\n const acceptVendorInvitation = async (\n vendor: string,\n email: string,\n code: string,\n signal?: AbortSignal,\n ) => {\n await publicClient.get(\n '/vendors/{vendor}/invitations/{email}/{code}',\n { path: { vendor, email, code } },\n { signal },\n );\n };\n\n /** `service=1` filters the member list; there is no distinct endpoint. */\n const getServiceAccounts = async (\n vendor: string,\n query: PaginationQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/vendors/{vendor}/users',\n { path: { vendor }, query: { ...query, service: 1 } },\n { signal },\n );\n return data;\n };\n\n /** The returned `password` is shown once and is not retrievable afterwards. */\n const createServiceAccount = async (\n vendor: string,\n body: CreateServiceAccountInput,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/vendors/{vendor}/credentials',\n { path: { vendor }, body },\n { signal },\n );\n return data;\n };\n\n return {\n getVendors,\n getVendor,\n createVendor,\n updateVendor,\n getVendorUsers,\n requestVendorMembership,\n approveVendorUser,\n removeVendorUser,\n getVendorUserRequests,\n sendVendorInvitation,\n acceptVendorInvitation,\n getServiceAccounts,\n createServiceAccount,\n };\n};\n","import { createOpenapiFetchClient, type MiddlewareFn } from '../../fetchClient';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { createAdmin } from './admin/admin';\nimport { createApps } from './apps/apps';\nimport { createAuth } from './auth/auth';\nimport { createVendors } from './vendors/vendors';\n\nexport type DeveloperPortalFetchClient = ReturnType<typeof createOpenapiFetchClient<paths>>;\n\nexport type DeveloperPortalClientInitOptions = Omit<ClientInitOptions, 'auth' | 'middlewares'> & {\n middlewares?: MiddlewareFn[];\n /**\n * Stamps the id token per request (it rotates). Omit for the spec's `security: []` operations.\n */\n authMiddleware?: MiddlewareFn;\n};\n\n/**\n * The Developer Portal (apps-api) client; types generated via `redocly.yaml` / `pnpm gen:types`.\n *\n * - Two fetch clients: `security: []` operations go out unauthenticated, and four use the access or\n * refresh token instead of the id token.\n */\nexport const createDeveloperPortalClient = ({\n baseUrl,\n middlewares = [],\n authMiddleware,\n}: DeveloperPortalClientInitOptions) => {\n const publicClient = createOpenapiFetchClient<paths>({ baseUrl, middlewares });\n const client = authMiddleware\n ? createOpenapiFetchClient<paths>({ baseUrl, middlewares: [authMiddleware, ...middlewares] })\n : publicClient;\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await publicClient.get('/', {}, { signal });\n return data;\n };\n\n return {\n healthCheck,\n auth: createAuth({ client, publicClient }),\n vendors: createVendors({ client, publicClient }),\n apps: createApps({ client, publicClient }),\n admin: createAdmin(client),\n };\n};\n\nexport type DeveloperPortalClient = ReturnType<typeof createDeveloperPortalClient>;\n"],"mappings":"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"}
@@ -1,29 +1,18 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_project = require("../../project-BvFi19K_.cjs");
3
- const require_configurations = require("../../configurations-CyFF9Dtu.cjs");
3
+ const require_configurations = require("../../configurations-BTRHVSRq.cjs");
4
4
  //#region src/domain/permissions/organization.ts
5
5
  /**
6
- * The raw signal: is this token's admin a member of the organization owning
7
- * the project?
6
+ * Whether this token's admin is a member of the organization owning the project.
8
7
  *
9
- * A limited (non-master) token never is — it carries no `admin` block at all
10
- * despite the hand-authored type declaring it required (AI-3593), hence the
11
- * optional chain and the `isMasterToken` requirement. Prefer
12
- * `isOrganizationAdmin` for authorization decisions; this bare signal exists
13
- * because a few kbc-ui call sites use it with no role conjunction (e.g.
14
- * `privileges.ts`'s `canManageUsers`/`canUnlinkBucket`), and porting those must
15
- * not change behaviour.
8
+ * - A limited token has no `admin` block despite the type saying required.
9
+ * - Prefer `isOrganizationAdmin` for authorization decisions.
16
10
  */
17
11
  const isOrganizationMember = (token) => token.isMasterToken && (token.admin?.isOrganizationMember ?? false);
18
12
  /**
19
- * May this token administer organization-owned settings on this project?
13
+ * `isOrganizationMember` AND `admin`/`share`.
20
14
  *
21
- * `isOrganizationMember` AND `admin`/`share`. The conjunction — not the bare
22
- * flag — is the shape kbc-ui already uses wherever org authority gates a
23
- * project-level *write* (e.g. `privileges.ts`'s `canChangeUserRole` for the
24
- * SHARE target). Keeping the conjunction means an org member holding a
25
- * `readOnly` or `guest` token on this particular project still cannot write,
26
- * matching every existing write-shaped call site.
15
+ * - An org member with a `readOnly` or `guest` role on this project still cannot write.
27
16
  */
28
17
  const isOrganizationAdmin = (token) => isOrganizationMember(token) && require_configurations.isAdminOrShare(token);
29
18
  const assertCanAdministerOrganization = (token) => {
@@ -33,20 +22,10 @@ const assertCanAdministerOrganization = (token) => {
33
22
  });
34
23
  };
35
24
  /**
36
- * Whether this token may write Kai's **spend caps** — the project cap, the
37
- * default per-user limit, and per-user overrides (AI-3738).
25
+ * Whether this token may write Kai's spend caps: project cap, default and per-user limits.
38
26
  *
39
- * Strictly stricter than `canWriteKaiSettings` (`./admin`), and deliberately a
40
- * distinct predicate rather than a widening of it. `canWriteKaiSettings` is
41
- * `admin`/`share` — the authority to rewrite shared project *config* (a
42
- * prompt-injection surface). Spend caps commit the organization's money across
43
- * every project it owns, so per AI-3738 they are organization-admin only: a
44
- * project admin sees which caps apply and cannot change them. A project whose
45
- * own admin could raise its own cap has no cap.
46
- *
47
- * Lives here rather than beside `canWriteKaiSettings` in `admin.ts` because its
48
- * rule is org-scoped and `admin.ts` is documented as depending purely on the
49
- * project role string.
27
+ * - Org-admin only, stricter than `canWriteKaiSettings`: caps commit the org's money.
28
+ * - A project whose own admin could raise its cap has no cap.
50
29
  */
51
30
  const canWriteKaiSpendCaps = (token) => isOrganizationAdmin(token);
52
31
  const assertCanWriteKaiSpendCaps = (token) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["isAdminOrShare","PermissionDeniedError"],"sources":["../../../src/domain/permissions/organization.ts"],"sourcesContent":["/**\n * @module domain/permissions/organization\n *\n * Organization-scope predicates. Token-only, like `admin.ts`, but these read\n * `StorageToken.admin.isOrganizationMember` rather than the project role\n * string — the two answer different questions and neither implies the other.\n *\n * The upstream field is named `isOrganizationMember`, but in Keboola\n * organization membership *is* organization administration — an org member\n * administers every project the organization owns. kbc-ui already reads it\n * under that meaning (e.g. `BranchProtectionTab.tsx`, `ActivateChatContent.tsx`\n * both assign it to a local `isOrgAdmin`), so `isOrganizationAdmin` below is a\n * rename of the existing reading, not a new semantic.\n *\n * `isOrganizationAdmin` and `canWriteKaiSpendCaps` each have an `assertCan*`\n * pair (`assertCanAdministerOrganization`, `assertCanWriteKaiSpendCaps`)\n * throwing `PermissionDeniedError` with a stable kebab-case `action`, per the\n * conventions in `packages/api-client/AGENTS.md`. `isOrganizationMember` is a\n * raw signal only — nothing asserts on bare membership.\n */\nimport type { StorageToken } from '../../clients/storage/tokens/types';\n\nimport { isAdminOrShare } from './admin';\nimport { PermissionDeniedError } from './errors';\n\n/**\n * The raw signal: is this token's admin a member of the organization owning\n * the project?\n *\n * A limited (non-master) token never is — it carries no `admin` block at all\n * despite the hand-authored type declaring it required (AI-3593), hence the\n * optional chain and the `isMasterToken` requirement. Prefer\n * `isOrganizationAdmin` for authorization decisions; this bare signal exists\n * because a few kbc-ui call sites use it with no role conjunction (e.g.\n * `privileges.ts`'s `canManageUsers`/`canUnlinkBucket`), and porting those must\n * not change behaviour.\n */\nexport const isOrganizationMember = (token: StorageToken): boolean =>\n token.isMasterToken && (token.admin?.isOrganizationMember ?? false);\n\n/**\n * May this token administer organization-owned settings on this project?\n *\n * `isOrganizationMember` AND `admin`/`share`. The conjunction — not the bare\n * flag — is the shape kbc-ui already uses wherever org authority gates a\n * project-level *write* (e.g. `privileges.ts`'s `canChangeUserRole` for the\n * SHARE target). Keeping the conjunction means an org member holding a\n * `readOnly` or `guest` token on this particular project still cannot write,\n * matching every existing write-shaped call site.\n */\nexport const isOrganizationAdmin = (token: StorageToken): boolean =>\n isOrganizationMember(token) && isAdminOrShare(token);\n\nexport const assertCanAdministerOrganization = (token: StorageToken): void => {\n if (!isOrganizationAdmin(token)) {\n throw new PermissionDeniedError({\n action: 'administer-organization',\n reason: token.isMasterToken\n ? `role '${token.admin?.role ?? 'none'}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not administer organization settings`\n : 'a limited (non-master) token may not administer organization settings',\n });\n }\n};\n\n/**\n * Whether this token may write Kai's **spend caps** — the project cap, the\n * default per-user limit, and per-user overrides (AI-3738).\n *\n * Strictly stricter than `canWriteKaiSettings` (`./admin`), and deliberately a\n * distinct predicate rather than a widening of it. `canWriteKaiSettings` is\n * `admin`/`share` — the authority to rewrite shared project *config* (a\n * prompt-injection surface). Spend caps commit the organization's money across\n * every project it owns, so per AI-3738 they are organization-admin only: a\n * project admin sees which caps apply and cannot change them. A project whose\n * own admin could raise its own cap has no cap.\n *\n * Lives here rather than beside `canWriteKaiSettings` in `admin.ts` because its\n * rule is org-scoped and `admin.ts` is documented as depending purely on the\n * project role string.\n */\nexport const canWriteKaiSpendCaps = (token: StorageToken): boolean => isOrganizationAdmin(token);\n\nexport const assertCanWriteKaiSpendCaps = (token: StorageToken): void => {\n if (!canWriteKaiSpendCaps(token)) {\n throw new PermissionDeniedError({\n action: 'write-kai-spend-caps',\n reason: token.isMasterToken\n ? `role '${token.admin?.role ?? 'none'}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not change Kai spend caps`\n : 'a limited (non-master) token may not change Kai spend caps',\n });\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAqCA,MAAa,wBAAwB,UACnC,MAAM,kBAAkB,MAAM,OAAO,wBAAwB;;;;;;;;;;;AAY/D,MAAa,uBAAuB,UAClC,qBAAqB,KAAK,KAAKA,uBAAAA,eAAe,KAAK;AAErD,MAAa,mCAAmC,UAA8B;CAC5E,IAAI,CAAC,oBAAoB,KAAK,GAC5B,MAAM,IAAIC,uBAAAA,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,MAAM,gBACV,SAAS,MAAM,OAAO,QAAQ,OAAO,8BAA8B,MAAM,OAAO,wBAAwB,MAAM,6CAC9G;CACN,CAAC;AAEL;;;;;;;;;;;;;;;;;AAkBA,MAAa,wBAAwB,UAAiC,oBAAoB,KAAK;AAE/F,MAAa,8BAA8B,UAA8B;CACvE,IAAI,CAAC,qBAAqB,KAAK,GAC7B,MAAM,IAAIA,uBAAAA,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,MAAM,gBACV,SAAS,MAAM,OAAO,QAAQ,OAAO,8BAA8B,MAAM,OAAO,wBAAwB,MAAM,kCAC9G;CACN,CAAC;AAEL"}
1
+ {"version":3,"file":"index.cjs","names":["isAdminOrShare","PermissionDeniedError"],"sources":["../../../src/domain/permissions/organization.ts"],"sourcesContent":["/**\n * @module domain/permissions/organization\n *\n * Organization-scope predicates, read from `admin.isOrganizationMember`, not the project role.\n * - In Keboola, org membership is org administration of every project the org owns.\n * - `isOrganizationMember` is a raw signal; nothing asserts on bare membership.\n */\nimport type { StorageToken } from '../../clients/storage/tokens/types';\n\nimport { isAdminOrShare } from './admin';\nimport { PermissionDeniedError } from './errors';\n\n/**\n * Whether this token's admin is a member of the organization owning the project.\n *\n * - A limited token has no `admin` block despite the type saying required.\n * - Prefer `isOrganizationAdmin` for authorization decisions.\n */\nexport const isOrganizationMember = (token: StorageToken): boolean =>\n token.isMasterToken && (token.admin?.isOrganizationMember ?? false);\n\n/**\n * `isOrganizationMember` AND `admin`/`share`.\n *\n * - An org member with a `readOnly` or `guest` role on this project still cannot write.\n */\nexport const isOrganizationAdmin = (token: StorageToken): boolean =>\n isOrganizationMember(token) && isAdminOrShare(token);\n\nexport const assertCanAdministerOrganization = (token: StorageToken): void => {\n if (!isOrganizationAdmin(token)) {\n throw new PermissionDeniedError({\n action: 'administer-organization',\n reason: token.isMasterToken\n ? `role '${token.admin?.role ?? 'none'}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not administer organization settings`\n : 'a limited (non-master) token may not administer organization settings',\n });\n }\n};\n\n/**\n * Whether this token may write Kai's spend caps: project cap, default and per-user limits.\n *\n * - Org-admin only, stricter than `canWriteKaiSettings`: caps commit the org's money.\n * - A project whose own admin could raise its cap has no cap.\n */\nexport const canWriteKaiSpendCaps = (token: StorageToken): boolean => isOrganizationAdmin(token);\n\nexport const assertCanWriteKaiSpendCaps = (token: StorageToken): void => {\n if (!canWriteKaiSpendCaps(token)) {\n throw new PermissionDeniedError({\n action: 'write-kai-spend-caps',\n reason: token.isMasterToken\n ? `role '${token.admin?.role ?? 'none'}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not change Kai spend caps`\n : 'a limited (non-master) token may not change Kai spend caps',\n });\n }\n};\n"],"mappings":";;;;;;;;;;AAkBA,MAAa,wBAAwB,UACnC,MAAM,kBAAkB,MAAM,OAAO,wBAAwB;;;;;;AAO/D,MAAa,uBAAuB,UAClC,qBAAqB,KAAK,KAAKA,uBAAAA,eAAe,KAAK;AAErD,MAAa,mCAAmC,UAA8B;CAC5E,IAAI,CAAC,oBAAoB,KAAK,GAC5B,MAAM,IAAIC,uBAAAA,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,MAAM,gBACV,SAAS,MAAM,OAAO,QAAQ,OAAO,8BAA8B,MAAM,OAAO,wBAAwB,MAAM,6CAC9G;CACN,CAAC;AAEL;;;;;;;AAQA,MAAa,wBAAwB,UAAiC,oBAAoB,KAAK;AAE/F,MAAa,8BAA8B,UAA8B;CACvE,IAAI,CAAC,qBAAqB,KAAK,GAC7B,MAAM,IAAIA,uBAAAA,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,MAAM,gBACV,SAAS,MAAM,OAAO,QAAQ,OAAO,8BAA8B,MAAM,OAAO,wBAAwB,MAAM,kCAC9G;CACN,CAAC;AAEL"}