@keboola/api-client 45.0.0 → 47.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.
- package/AGENTS.md +86 -21
- package/API-SURFACE.md +49 -29
- package/CHANGELOG.md +69 -0
- package/README.md +47 -37
- package/dist/ManagementSessionMintError-4Pkn5Oob.js +36 -0
- package/dist/ManagementSessionMintError-4Pkn5Oob.js.map +1 -0
- package/dist/ManagementSessionMintError-Cu9beG7j.cjs +47 -0
- package/dist/ManagementSessionMintError-Cu9beG7j.cjs.map +1 -0
- package/dist/QueryJobError-ZZZ043Nm.js +22 -0
- package/dist/QueryJobError-ZZZ043Nm.js.map +1 -0
- package/dist/{QueryJobTimeoutError-CVNPdCWX.cjs → QueryJobError-irGiP5zh.cjs} +1 -29
- package/dist/QueryJobError-irGiP5zh.cjs.map +1 -0
- package/dist/QueueJobError-6qSEizWo.cjs +30 -0
- package/dist/QueueJobError-6qSEizWo.cjs.map +1 -0
- package/dist/QueueJobError-8bThS_Mc.js +19 -0
- package/dist/QueueJobError-8bThS_Mc.js.map +1 -0
- package/dist/adminRoles-B40yBcmq.js.map +1 -1
- package/dist/adminRoles-CO7J5qAy.cjs.map +1 -1
- package/dist/{adminRoles-C696kD_U.d.cts → adminRoles-CvdIUkiC.d.ts} +4 -2
- package/dist/{adminRoles-C696kD_U.d.ts → adminRoles-DGM8SuuF.d.cts} +4 -2
- package/dist/ai/index.cjs +2 -2
- package/dist/ai/index.d.cts +2 -2
- package/dist/ai/index.d.ts +2 -2
- package/dist/ai/index.js +2 -2
- package/dist/ai/types.d.cts +1 -1
- package/dist/ai/types.d.ts +1 -1
- package/dist/{appLogs-BG9ueGxA.cjs → appLogs-Cix2KWra.cjs} +2 -2
- package/dist/{appLogs-BG9ueGxA.cjs.map → appLogs-Cix2KWra.cjs.map} +1 -1
- package/dist/{appLogs-C9YlJ2g8.d.cts → appLogs-Cxhm2Rkn.d.cts} +2 -2
- package/dist/{appLogs-CEKz68bE.js → appLogs-KslK7qHr.js} +2 -2
- package/dist/{appLogs-CEKz68bE.js.map → appLogs-KslK7qHr.js.map} +1 -1
- package/dist/{appLogs-BS6ViVGR.d.ts → appLogs-xW0-JQXg.d.ts} +2 -2
- package/dist/apps/index.cjs +3 -3
- package/dist/apps/index.d.cts +3 -3
- package/dist/apps/index.d.ts +3 -3
- package/dist/apps/index.js +3 -3
- package/dist/apps/types.d.cts +2 -2
- package/dist/apps/types.d.ts +2 -2
- package/dist/assets/index.cjs +1 -1
- package/dist/assets/index.d.cts +1 -1
- package/dist/assets/index.d.ts +1 -1
- package/dist/assets/index.js +1 -1
- package/dist/auth/index.cjs +1 -1
- package/dist/auth/index.d.cts +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/types.d.cts +2 -2
- package/dist/auth/types.d.ts +2 -2
- package/dist/{auth-C6cHWIWx.js → auth-4coY1uwo.js} +2 -2
- package/dist/{auth-C6cHWIWx.js.map → auth-4coY1uwo.js.map} +1 -1
- package/dist/{auth-C9o_0bft.cjs → auth-C8Pjl0Mu.cjs} +2 -2
- package/dist/{auth-C9o_0bft.cjs.map → auth-C8Pjl0Mu.cjs.map} +1 -1
- package/dist/{authClient-CACOwVt0.js → authClient-2e8ZmzSP.js} +71 -7
- package/dist/authClient-2e8ZmzSP.js.map +1 -0
- package/dist/{authClient-CBVAT3v9.d.cts → authClient-Bso5UaXS.d.ts} +45 -33
- package/dist/{authClient-DZcAR-eW.cjs → authClient-DfkKlc-2.cjs} +82 -6
- package/dist/authClient-DfkKlc-2.cjs.map +1 -0
- package/dist/{authClient-CRumc934.d.ts → authClient-aud2dUZd.d.cts} +45 -33
- package/dist/billing/index.cjs +2 -2
- package/dist/billing/index.d.cts +1 -1
- package/dist/billing/index.d.ts +1 -1
- package/dist/billing/index.js +2 -2
- package/dist/billing/types.d.cts +1 -1
- package/dist/billing/types.d.ts +1 -1
- package/dist/chat/index.cjs +3 -3
- package/dist/chat/index.d.cts +2 -2
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/index.js +3 -3
- package/dist/chat/types.d.cts +1 -1
- package/dist/chat/types.d.ts +1 -1
- package/dist/{collect-97WhfEpt.js → collectByOffset-2XzJqmvr.js} +6 -6
- package/dist/collectByOffset-2XzJqmvr.js.map +1 -0
- package/dist/{collect-B5TCNiT1.cjs → collectByOffset-DQsqtmJg.cjs} +7 -7
- package/dist/collectByOffset-DQsqtmJg.cjs.map +1 -0
- package/dist/componentsMcp/index.cjs +3 -0
- package/dist/componentsMcp/index.d.cts +2 -0
- package/dist/componentsMcp/index.d.ts +2 -0
- package/dist/componentsMcp/index.js +2 -0
- package/dist/componentsMcp/types.cjs +0 -0
- package/dist/componentsMcp/types.d.cts +2 -0
- package/dist/componentsMcp/types.d.ts +2 -0
- package/dist/componentsMcp/types.js +1 -0
- package/dist/componentsMcp-CHobIsuU.js +57 -0
- package/dist/componentsMcp-CHobIsuU.js.map +1 -0
- package/dist/componentsMcp-pG-PcQrg.cjs +62 -0
- package/dist/componentsMcp-pG-PcQrg.cjs.map +1 -0
- package/dist/configurations-BTRHVSRq.cjs.map +1 -1
- package/dist/configurations-Chg_JwJ1.js.map +1 -1
- package/dist/constants/index.cjs +1 -1
- package/dist/constants/index.d.cts +2 -3
- package/dist/constants/index.d.ts +2 -3
- package/dist/constants/index.js +1 -1
- package/dist/{constants-Cifrqsls.js → constants-CA4UN2Xv.js} +11 -10
- package/dist/constants-CA4UN2Xv.js.map +1 -0
- package/dist/{constants-BDGRQqij.cjs → constants-a0jswUeK.cjs} +10 -9
- package/dist/constants-a0jswUeK.cjs.map +1 -0
- package/dist/{createFetchClient-DITkTV2k.js → createFetchClient-CkHdS_IG.js} +5 -5
- package/dist/createFetchClient-CkHdS_IG.js.map +1 -0
- package/dist/{createFetchClient-ClWD4ua3.cjs → createFetchClient-lZ_93Yrb.cjs} +5 -5
- package/dist/createFetchClient-lZ_93Yrb.cjs.map +1 -0
- package/dist/{createGenericFetchClient-KqiJhw8G.js → createGenericFetchClient-CQdNcPC3.js} +2 -2
- package/dist/{createGenericFetchClient-KqiJhw8G.js.map → createGenericFetchClient-CQdNcPC3.js.map} +1 -1
- package/dist/{createGenericFetchClient-B81Iezpb.cjs → createGenericFetchClient-MOx97wi-.cjs} +2 -2
- package/dist/{createGenericFetchClient-B81Iezpb.cjs.map → createGenericFetchClient-MOx97wi-.cjs.map} +1 -1
- package/dist/{createOpenapiFetchClient-CioTX11-.cjs → createOpenapiFetchClient-DHYo_k3t.cjs} +2 -2
- package/dist/{createOpenapiFetchClient-CioTX11-.cjs.map → createOpenapiFetchClient-DHYo_k3t.cjs.map} +1 -1
- package/dist/{createOpenapiFetchClient-wq8iGLZM.js → createOpenapiFetchClient-DXiMv9WL.js} +2 -2
- package/dist/{createOpenapiFetchClient-wq8iGLZM.js.map → createOpenapiFetchClient-DXiMv9WL.js.map} +1 -1
- package/dist/dataScience/index.cjs +2 -2
- package/dist/dataScience/index.d.cts +2 -2
- package/dist/dataScience/index.d.ts +2 -2
- package/dist/dataScience/index.js +2 -2
- package/dist/dataScience/types.d.cts +2 -2
- package/dist/dataScience/types.d.ts +2 -2
- package/dist/{dataScience-BwHmDoQb.js → dataScience-AwPMeGfz.js} +5 -5
- package/dist/{dataScience-BwHmDoQb.js.map → dataScience-AwPMeGfz.js.map} +1 -1
- package/dist/{dataScience-Hhoqoql_.cjs → dataScience-BjS1p8WO.cjs} +5 -5
- package/dist/{dataScience-Hhoqoql_.cjs.map → dataScience-BjS1p8WO.cjs.map} +1 -1
- package/dist/developerPortal/index.cjs +1 -1
- package/dist/developerPortal/index.d.cts +2 -2
- package/dist/developerPortal/index.d.ts +2 -2
- package/dist/developerPortal/index.js +1 -1
- package/dist/developerPortal/types.d.cts +1 -1
- package/dist/developerPortal/types.d.ts +1 -1
- package/dist/{developerPortalClient-loKq7X_U.js → developerPortalClient-Bb2suezr.js} +13 -5
- package/dist/{developerPortalClient-loKq7X_U.js.map → developerPortalClient-Bb2suezr.js.map} +1 -1
- package/dist/{developerPortalClient-COm7wJxS.cjs → developerPortalClient-DUerKw-7.cjs} +13 -5
- package/dist/{developerPortalClient-COm7wJxS.cjs.map → developerPortalClient-DUerKw-7.cjs.map} +1 -1
- package/dist/domain/permissions/index.cjs +1 -1
- package/dist/domain/permissions/index.d.cts +1 -2
- package/dist/domain/permissions/index.d.ts +1 -2
- package/dist/domain/permissions/index.js +1 -1
- package/dist/editor/index.cjs +2 -2
- package/dist/editor/index.d.cts +2 -2
- package/dist/editor/index.d.ts +2 -2
- package/dist/editor/index.js +2 -2
- package/dist/editor/types.d.cts +1 -1
- package/dist/editor/types.d.ts +1 -1
- package/dist/encryption/index.cjs +1 -1
- package/dist/encryption/index.d.cts +1 -1
- package/dist/encryption/index.d.ts +1 -1
- package/dist/encryption/index.js +1 -1
- package/dist/encryption/types.d.cts +1 -1
- package/dist/encryption/types.d.ts +1 -1
- package/dist/import/index.cjs +1 -1
- package/dist/import/index.d.cts +3 -3
- package/dist/import/index.d.ts +3 -3
- package/dist/import/index.js +1 -1
- package/dist/{import-B5DcJGMI.cjs → import-BahNYv91.cjs} +3 -3
- package/dist/{import-B5DcJGMI.cjs.map → import-BahNYv91.cjs.map} +1 -1
- package/dist/{import-JlH_QaDd.js → import-FWy_wQZ1.js} +3 -3
- package/dist/{import-JlH_QaDd.js.map → import-FWy_wQZ1.js.map} +1 -1
- package/dist/{index-DeQDdut6.d.ts → index-8ZjY7YD8.d.cts} +34 -2
- package/dist/{index-CA6QxbhZ.d.ts → index-BGEuaZqI.d.cts} +238 -252
- package/dist/{index-R-w0Zncz.d.ts → index-BIP0PoMW.d.ts} +4 -4
- package/dist/index-B_MzjCeE.d.ts +46 -0
- package/dist/{index-CGCXR_6Q.d.ts → index-BeOd45XE.d.ts} +4 -4
- package/dist/{index-DeQDdut6.d.cts → index-BnPmXDVP.d.ts} +34 -2
- package/dist/{index-Cvkrjh--.d.cts → index-C2OAOK0s.d.ts} +30 -4
- package/dist/{index-Bl2EloC0.d.ts → index-CAWy1qjR.d.ts} +22482 -17133
- package/dist/{index-CGFGd3tF.d.cts → index-CkwZ5x7E.d.cts} +22482 -17133
- package/dist/{index-D9UsQOuT.d.cts → index-DTysQ_yn.d.cts} +5 -5
- package/dist/{index-CX8GAP2g.d.ts → index-DUB0BwQv.d.cts} +30 -4
- package/dist/{index-zyxZVJnd.d.ts → index-DloFSSj3.d.ts} +3 -3
- package/dist/{index-DtuwWYDR.d.ts → index-Dp-a2DdI.d.ts} +4 -4
- package/dist/{index-BHWTa4YN.d.cts → index-Ds0tViQS.d.cts} +3 -3
- package/dist/{index-BCgmwncs.d.ts → index-HSkjm3QW.d.ts} +5 -5
- package/dist/index-URgNfi5L.d.cts +46 -0
- package/dist/{index-04pgr-EO.d.cts → index-XG5cO-4H.d.cts} +4 -4
- package/dist/{types-BhEx9iRx.d.ts → index-XaPb6unB.d.cts} +4813 -1757
- package/dist/{index-DINB7vsV.d.cts → index-ZYvgoqgW.d.cts} +4 -4
- package/dist/{index-DkvrbR2i.d.cts → index-_Va9wynk.d.ts} +238 -252
- package/dist/{types-sV9OaqTI.d.cts → index-r6YSe8B-.d.ts} +4813 -1757
- package/dist/{index-BKOFRmTB.d.cts → index-x_kS_5x_.d.cts} +4 -4
- package/dist/index.cjs +171 -163
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +100 -97
- package/dist/index.js.map +1 -1
- package/dist/{isLoginPageRedirect-CsyRa3_v.js → isLoginPageRedirect-B4QKSiSa.js} +2 -2
- package/dist/{isLoginPageRedirect-CsyRa3_v.js.map → isLoginPageRedirect-B4QKSiSa.js.map} +1 -1
- package/dist/{isLoginPageRedirect-iNbwl3iz.cjs → isLoginPageRedirect-r0Opgc1n.cjs} +2 -2
- package/dist/{isLoginPageRedirect-iNbwl3iz.cjs.map → isLoginPageRedirect-r0Opgc1n.cjs.map} +1 -1
- package/dist/kaiAgent/index.cjs +1 -1
- package/dist/kaiAgent/index.d.cts +2 -2
- package/dist/kaiAgent/index.d.ts +2 -2
- package/dist/kaiAgent/index.js +1 -1
- package/dist/kaiAgent/types.d.cts +1 -1
- package/dist/kaiAgent/types.d.ts +1 -1
- package/dist/{kaiAgent-BhcUsBDk.cjs → kaiAgent-BmfUG8bB.cjs} +5 -5
- package/dist/{kaiAgent-BhcUsBDk.cjs.map → kaiAgent-BmfUG8bB.cjs.map} +1 -1
- package/dist/{kaiAgent-CUeT53-K.js → kaiAgent-CBPbMwBh.js} +5 -5
- package/dist/{kaiAgent-CUeT53-K.js.map → kaiAgent-CBPbMwBh.js.map} +1 -1
- package/dist/{kaiMemory-DaOh0zVn.js → kaiMemory-C9di17bd.js} +2 -2
- package/dist/{kaiMemory-DaOh0zVn.js.map → kaiMemory-C9di17bd.js.map} +1 -1
- package/dist/{kaiMemory-Cf81ghNd.cjs → kaiMemory-Qch09f-m.cjs} +2 -2
- package/dist/{kaiMemory-Cf81ghNd.cjs.map → kaiMemory-Qch09f-m.cjs.map} +1 -1
- package/dist/management/index.cjs +2 -1
- package/dist/management/index.d.cts +2 -2
- package/dist/management/index.d.ts +2 -2
- package/dist/management/index.js +2 -2
- package/dist/management/types.d.cts +2 -2
- package/dist/management/types.d.ts +2 -2
- package/dist/{management-C5lf9nsU.cjs → management-BUGPJ1Bu.cjs} +46 -10
- package/dist/management-BUGPJ1Bu.cjs.map +1 -0
- package/dist/{management-WAtKH6Tu.js → management-DAg2obYt.js} +39 -9
- package/dist/management-DAg2obYt.js.map +1 -0
- package/dist/metastore/index.cjs +1 -1
- package/dist/metastore/index.d.cts +1 -1
- package/dist/metastore/index.d.ts +1 -1
- package/dist/metastore/index.js +1 -1
- package/dist/metastore/types.d.cts +1 -1
- package/dist/metastore/types.d.ts +1 -1
- package/dist/{metastore-YPHUK3jJ.cjs → metastore-BXHg33ku.cjs} +4 -4
- package/dist/{metastore-YPHUK3jJ.cjs.map → metastore-BXHg33ku.cjs.map} +1 -1
- package/dist/{metastore-D0C6uaPX.js → metastore-Ywq08DBz.js} +4 -4
- package/dist/{metastore-D0C6uaPX.js.map → metastore-Ywq08DBz.js.map} +1 -1
- package/dist/microsoftGraph/index.cjs +2 -2
- package/dist/microsoftGraph/index.d.cts +3 -3
- package/dist/microsoftGraph/index.d.ts +3 -3
- package/dist/microsoftGraph/index.js +2 -2
- package/dist/microsoftGraph/types.d.cts +2 -2
- package/dist/microsoftGraph/types.d.ts +2 -2
- package/dist/{middleware-DmR6OhTY.js → middleware-CWaLMlG1.js} +2 -2
- package/dist/{middleware-DmR6OhTY.js.map → middleware-CWaLMlG1.js.map} +1 -1
- package/dist/{middleware-D_p5TctO.cjs → middleware-DU_5pFDW.cjs} +2 -2
- package/dist/{middleware-D_p5TctO.cjs.map → middleware-DU_5pFDW.cjs.map} +1 -1
- package/dist/notifications/index.cjs +3 -3
- package/dist/notifications/index.d.cts +2 -2
- package/dist/notifications/index.d.ts +2 -2
- package/dist/notifications/index.js +3 -3
- package/dist/notifications/types.d.cts +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/oauth/index.cjs +1 -1
- package/dist/oauth/index.d.cts +6 -2
- package/dist/oauth/index.d.ts +6 -2
- package/dist/oauth/index.js +1 -1
- package/dist/oauth/types.d.cts +2 -2
- package/dist/oauth/types.d.ts +2 -2
- package/dist/{oauth-DyUwTqHJ.cjs → oauth-DKZPuUlt.cjs} +17 -6
- package/dist/{oauth-DyUwTqHJ.cjs.map → oauth-DKZPuUlt.cjs.map} +1 -1
- package/dist/{oauth-Ck_Fe14o.js → oauth-GXmZ9agP.js} +17 -6
- package/dist/{oauth-Ck_Fe14o.js.map → oauth-GXmZ9agP.js.map} +1 -1
- package/dist/omnisearch/index.cjs +2 -2
- package/dist/omnisearch/index.d.cts +2 -2
- package/dist/omnisearch/index.d.ts +2 -2
- package/dist/omnisearch/index.js +2 -2
- package/dist/omnisearch/types.d.cts +1 -1
- package/dist/omnisearch/types.d.ts +1 -1
- package/dist/project-BMmfPhXg.d.ts +74 -0
- package/dist/{project-DWwZv66D.js → project-BXLFrWJ6.js} +7 -1
- package/dist/project-BXLFrWJ6.js.map +1 -0
- package/dist/{project-BvFi19K_.cjs → project-CpgplgCr.cjs} +7 -1
- package/dist/project-CpgplgCr.cjs.map +1 -0
- package/dist/project-dxCJbFay.d.cts +74 -0
- package/dist/queryService/index.cjs +1 -1
- package/dist/queryService/index.d.cts +1 -1
- package/dist/queryService/index.d.ts +1 -1
- package/dist/queryService/index.js +1 -1
- package/dist/queryService/types.d.cts +2 -2
- package/dist/queryService/types.d.ts +2 -2
- package/dist/{queryService-Blfz59Ms.js → queryService-C-pZha5p.js} +36 -27
- package/dist/queryService-C-pZha5p.js.map +1 -0
- package/dist/{queryService-RlNYw7LG.cjs → queryService-CzK53q94.cjs} +36 -27
- package/dist/queryService-CzK53q94.cjs.map +1 -0
- package/dist/queue/index.cjs +1 -1
- package/dist/queue/index.d.cts +75 -7
- package/dist/queue/index.d.ts +75 -7
- package/dist/queue/index.js +1 -1
- package/dist/queue/types.d.cts +1 -1
- package/dist/queue/types.d.ts +1 -1
- package/dist/{queue-BrgRdtOr.cjs → queue-BJvDWriM.cjs} +35 -25
- package/dist/queue-BJvDWriM.cjs.map +1 -0
- package/dist/{queue-CNvR-M23.js → queue-D6-x4OGF.js} +35 -25
- package/dist/queue-D6-x4OGF.js.map +1 -0
- package/dist/scheduler/index.cjs +3 -3
- package/dist/scheduler/index.d.cts +2 -2
- package/dist/scheduler/index.d.ts +2 -2
- package/dist/scheduler/index.js +3 -3
- package/dist/scheduler/types.d.cts +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/{schema-DJa9WBjR.d.cts → schema-BUyMwQnM.d.cts} +7 -1
- package/dist/{schema-DJa9WBjR.d.ts → schema-BUyMwQnM.d.ts} +7 -1
- package/dist/sdk/configurations/index.d.cts +2 -4
- package/dist/sdk/configurations/index.d.ts +2 -4
- package/dist/sdk/developerPortal/index.cjs +3 -3
- package/dist/sdk/developerPortal/index.d.cts +29 -3
- package/dist/sdk/developerPortal/index.d.ts +29 -3
- package/dist/sdk/developerPortal/index.js +3 -3
- package/dist/sdk/kaiMemory/index.cjs +1 -1
- package/dist/sdk/kaiMemory/index.d.cts +1 -1
- package/dist/sdk/kaiMemory/index.d.ts +1 -1
- package/dist/sdk/kaiMemory/index.js +1 -1
- package/dist/sdk/kaiMemory/types.d.cts +1 -1
- package/dist/sdk/kaiMemory/types.d.ts +1 -1
- package/dist/sdk/queryService/index.cjs +34 -55
- package/dist/sdk/queryService/index.cjs.map +1 -1
- package/dist/sdk/queryService/index.d.cts +2 -2
- package/dist/sdk/queryService/index.d.ts +2 -2
- package/dist/sdk/queryService/index.js +34 -55
- package/dist/sdk/queryService/index.js.map +1 -1
- package/dist/sdk/semanticLayer/index.d.cts +1 -1
- package/dist/sdk/semanticLayer/index.d.ts +1 -1
- package/dist/sdk/semanticLayer/types.d.cts +1 -1
- package/dist/sdk/semanticLayer/types.d.ts +1 -1
- package/dist/sdk/storage/index.cjs +0 -119
- package/dist/sdk/storage/index.cjs.map +1 -1
- package/dist/sdk/storage/index.d.cts +103 -2
- package/dist/sdk/storage/index.d.ts +103 -2
- package/dist/sdk/storage/index.js +1 -119
- package/dist/sdk/storage/index.js.map +1 -1
- package/dist/sdk/tag/index.d.cts +2 -2
- package/dist/sdk/tag/index.d.ts +2 -2
- package/dist/sdk/tag/types.d.cts +1 -1
- package/dist/sdk/tag/types.d.ts +1 -1
- package/dist/sdk/vault/index.d.cts +1 -1
- package/dist/sdk/vault/index.d.ts +1 -1
- package/dist/status/index.cjs +1 -1
- package/dist/status/index.d.cts +1 -1
- package/dist/status/index.d.ts +1 -1
- package/dist/status/index.js +1 -1
- package/dist/storage/index.cjs +15 -10
- package/dist/storage/index.d.cts +3 -3
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.js +7 -6
- package/dist/storage/types.d.cts +6 -5
- package/dist/storage/types.d.ts +6 -5
- package/dist/{storage-RkNaOFJ-.js → storage-DyR7hDdv.js} +347 -168
- package/dist/storage-DyR7hDdv.js.map +1 -0
- package/dist/{storage-76Sf_z_H.cjs → storage-yovv11k6.cjs} +366 -169
- package/dist/storage-yovv11k6.cjs.map +1 -0
- package/dist/stream/index.cjs +3 -3
- package/dist/stream/index.d.cts +2 -2
- package/dist/stream/index.d.ts +2 -2
- package/dist/stream/index.js +3 -3
- package/dist/stream/types.d.cts +1 -1
- package/dist/stream/types.d.ts +1 -1
- package/dist/syncActions/index.cjs +1 -1
- package/dist/syncActions/index.d.cts +2 -2
- package/dist/syncActions/index.d.ts +2 -2
- package/dist/syncActions/index.js +1 -1
- package/dist/syncActions/types.d.cts +1 -1
- package/dist/syncActions/types.d.ts +1 -1
- package/dist/{syncActions-DlNPhZY4.cjs → syncActions-C1rE4R3f.cjs} +5 -5
- package/dist/{syncActions-DlNPhZY4.cjs.map → syncActions-C1rE4R3f.cjs.map} +1 -1
- package/dist/{syncActions-BvFUa9xV.js → syncActions-DM8vP7p3.js} +5 -5
- package/dist/{syncActions-BvFUa9xV.js.map → syncActions-DM8vP7p3.js.map} +1 -1
- package/dist/telemetry/index.cjs +3 -6
- package/dist/telemetry/index.cjs.map +1 -1
- package/dist/telemetry/index.d.cts +2 -5
- package/dist/telemetry/index.d.ts +2 -5
- package/dist/telemetry/index.js +3 -6
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/types.d.cts +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/{jobStatus-BJdbZ72V.js → transientRetries-B4iusp69.js} +79 -37
- package/dist/transientRetries-B4iusp69.js.map +1 -0
- package/dist/{jobStatus-B0E-MZ9I.cjs → transientRetries-DdJfH9QK.cjs} +82 -40
- package/dist/transientRetries-DdJfH9QK.cjs.map +1 -0
- package/dist/{types-tgU8XvPs.d.cts → types--qQPfxWt.d.cts} +2 -2
- package/dist/types-4CjbcUdD.d.cts +1536 -0
- package/dist/{types-DaMmgW-O.d.ts → types-4HmtNuJf.d.ts} +2 -2
- package/dist/types-4bSZLxq3.d.cts +1973 -0
- package/dist/{types-BaSlU0uo.d.ts → types-7DBpH7Rf.d.ts} +2 -2
- package/dist/types-B2ZLjagf.d.ts +1536 -0
- package/dist/{types-DgPt4LY_.d.cts → types-B6ozaDkl.d.cts} +192 -78
- package/dist/{types-YHUEArkR.d.cts → types-BBbzWczQ.d.cts} +2 -2
- package/dist/{types-CgBzm1YR.d.cts → types-BG0oWq8u.d.cts} +2 -2
- package/dist/types-BIDKSQdc.d.ts +1973 -0
- package/dist/{types-ByLH46Dt.d.cts → types-BKIcow3B.d.cts} +2 -2
- package/dist/{types-CfwqVkEA.d.ts → types-BNPvFLgC.d.ts} +2 -2
- package/dist/{types-DlQw6FCi.d.ts → types-BXgINefw.d.ts} +2 -2
- package/dist/{types-CalDJHCX.d.cts → types-BZBU3mwz.d.cts} +3 -3
- package/dist/{types-Bydx6ga_.d.cts → types-B_1plf0y.d.cts} +2 -2
- package/dist/{types-Ccd9O6ca.d.cts → types-B_3zoXA1.d.cts} +3 -3
- package/dist/{types-BBUZ9EHs.d.ts → types-BcQ3j8xK.d.ts} +8 -2
- package/dist/{types-B8N_k79M.d.cts → types-BdF6NDvo.d.cts} +2 -2
- package/dist/{types-CABWhTa9.d.ts → types-BiBBKcin.d.ts} +3 -3
- package/dist/{types-DVt0qlzI.d.cts → types-BiTn_JVW.d.cts} +736 -289
- package/dist/{types-CN6huo55.d.ts → types-BjEiUOL6.d.ts} +192 -78
- package/dist/{types-z82gSTx8.d.ts → types-BoH7NFCh.d.ts} +3 -3
- package/dist/{types-CcYxlqtB.d.cts → types-BwsE-pFo.d.cts} +2 -2
- package/dist/{types-DrvKfXXd.d.cts → types-Bx0TSdwF.d.cts} +2 -2
- package/dist/{types-DazRtukc.d.ts → types-C2JMisvL.d.ts} +736 -289
- package/dist/{types-DVZpKGBJ.d.ts → types-C2j6Jsie.d.ts} +3 -3
- package/dist/{types-BZDV8DZk.d.ts → types-C3IQu1gV.d.ts} +11 -6
- package/dist/{types-WZBztugL.d.ts → types-C7t_6FLh.d.ts} +2 -2
- package/dist/{types-Fs4a3mVs.d.ts → types-CBrNIgEy.d.ts} +64 -5
- package/dist/{types-CZJlLCbA.d.ts → types-CEw2IzWk.d.ts} +2 -2
- package/dist/{types-DdsYv2WG.d.cts → types-CMKIdreQ.d.cts} +3 -3
- package/dist/{types-AYX7VtS6.d.ts → types-COQOzyac.d.ts} +212 -2
- package/dist/{types-BiEh5c_t.d.cts → types-CZCPdPqv.d.cts} +132 -5
- package/dist/{types-B2w2TtSA.d.ts → types-Cw9UISvM.d.ts} +2 -2
- package/dist/{types-D9axmt5o.d.cts → types-D51g4h9w.d.cts} +8 -2
- package/dist/{types-CBPKpLTf.d.cts → types-D8w9lyb8.d.cts} +212 -2
- package/dist/{types-Dd31Lw4S.d.cts → types-DBJ8c3hN.d.cts} +2 -2
- package/dist/{types-DzV6LaZq.d.ts → types-DHlXKVEM.d.ts} +132 -5
- package/dist/{types-c_bsDkV6.d.cts → types-DPDq8C4q.d.cts} +16 -4
- package/dist/{types-D3wcs4tp.d.ts → types-DWJVbskE.d.ts} +2 -2
- package/dist/{types-CAp1VexS.d.ts → types-Dg8a7m7f.d.ts} +16 -4
- package/dist/{types-CoJVrRAD.d.ts → types-DgIzXY-Y.d.ts} +2 -2
- package/dist/{types-pvQzbgNE.d.cts → types-L50Y6ATu.d.cts} +11 -6
- package/dist/{types-DoZtE9tz.d.cts → types-OkQWmonU.d.cts} +2 -2
- package/dist/{types-BPy5Ozee.d.cts → types-TRJiPqJr.d.cts} +2 -2
- package/dist/{types-B-5ya_L5.d.ts → types-ij6BpTzR.d.ts} +2 -2
- package/dist/{types-DicSaNwq.d.ts → types-ituiCs8g.d.ts} +2 -2
- package/dist/{types-CGm2fQKK.d.cts → types-kbyIaA7p.d.cts} +64 -5
- package/dist/{validateConnectionStatus-DR-0h35y.cjs → validateConnectionStatus-BalWEyRk.cjs} +3 -3
- package/dist/{validateConnectionStatus-DR-0h35y.cjs.map → validateConnectionStatus-BalWEyRk.cjs.map} +1 -1
- package/dist/{validateConnectionStatus-CdTV3gsP.js → validateConnectionStatus-DyrYpn0G.js} +3 -3
- package/dist/{validateConnectionStatus-CdTV3gsP.js.map → validateConnectionStatus-DyrYpn0G.js.map} +1 -1
- package/dist/vault/index.cjs +6 -6
- package/dist/vault/index.cjs.map +1 -1
- package/dist/vault/index.d.cts +1 -1
- package/dist/vault/index.d.ts +1 -1
- package/dist/vault/index.js +6 -6
- package/dist/vault/index.js.map +1 -1
- package/dist/vault/types.d.cts +1 -1
- package/dist/vault/types.d.ts +1 -1
- package/package.json +27 -1
- package/surface/apps.md +5 -5
- package/surface/auth.md +21 -19
- package/surface/chat.md +2 -2
- package/surface/componentsMcp.md +9 -0
- package/surface/dataScience.md +2 -2
- package/surface/kaiAgent.md +2 -2
- package/surface/management.md +43 -41
- package/surface/oauth.md +1 -0
- package/surface/queryService.md +4 -4
- package/surface/queue.md +2 -2
- package/surface/sdk.md +0 -24
- package/surface/storage.md +101 -71
- package/dist/ManagementClientAuthError-BcPYxAWZ.js +0 -16
- package/dist/ManagementClientAuthError-BcPYxAWZ.js.map +0 -1
- package/dist/ManagementClientAuthError-DHuykEPF.cjs +0 -21
- package/dist/ManagementClientAuthError-DHuykEPF.cjs.map +0 -1
- package/dist/QueryJobTimeoutError-C7JbNGOM.js +0 -38
- package/dist/QueryJobTimeoutError-C7JbNGOM.js.map +0 -1
- package/dist/QueryJobTimeoutError-CVNPdCWX.cjs.map +0 -1
- package/dist/authClient-CACOwVt0.js.map +0 -1
- package/dist/authClient-DZcAR-eW.cjs.map +0 -1
- package/dist/collect-97WhfEpt.js.map +0 -1
- package/dist/collect-B5TCNiT1.cjs.map +0 -1
- package/dist/constants-BDGRQqij.cjs.map +0 -1
- package/dist/constants-Cifrqsls.js.map +0 -1
- package/dist/createFetchClient-ClWD4ua3.cjs.map +0 -1
- package/dist/createFetchClient-DITkTV2k.js.map +0 -1
- package/dist/index-BVhHt5lx.d.cts +0 -241
- package/dist/index-Bf8dr2KQ.d.ts +0 -16
- package/dist/index-BgR5zcjJ.d.ts +0 -241
- package/dist/index-CWPi7lBF.d.ts +0 -77
- package/dist/index-Dd40ojPr.d.cts +0 -77
- package/dist/index-DkCXaYsn.d.cts +0 -16
- package/dist/jobStatus-B0E-MZ9I.cjs.map +0 -1
- package/dist/jobStatus-BJdbZ72V.js.map +0 -1
- package/dist/management-C5lf9nsU.cjs.map +0 -1
- package/dist/management-WAtKH6Tu.js.map +0 -1
- package/dist/project-B8wtlstY.d.cts +0 -18
- package/dist/project-BCc3mpAy.d.ts +0 -18
- package/dist/project-BvFi19K_.cjs.map +0 -1
- package/dist/project-DWwZv66D.js.map +0 -1
- package/dist/queryService-Blfz59Ms.js.map +0 -1
- package/dist/queryService-RlNYw7LG.cjs.map +0 -1
- package/dist/queue-BrgRdtOr.cjs.map +0 -1
- package/dist/queue-CNvR-M23.js.map +0 -1
- package/dist/serviceIds-DRcoTnSd.d.cts +0 -32
- package/dist/serviceIds-DRcoTnSd.d.ts +0 -32
- package/dist/storage-76Sf_z_H.cjs.map +0 -1
- package/dist/storage-RkNaOFJ-.js.map +0 -1
- package/dist/types-9SEE4icc.d.ts +0 -1298
- package/dist/types-BhOUS9j1.d.cts +0 -749
- package/dist/types-BjR8Yodc.d.cts +0 -1298
- package/dist/types-CLHaZv9f.d.cts +0 -1868
- package/dist/types-CaOtNjSZ.d.ts +0 -957
- package/dist/types-D1A4mAG0.d.cts +0 -66
- package/dist/types-D8pGSkRe.d.ts +0 -1868
- package/dist/types-DxN2siRW.d.ts +0 -66
- package/dist/types-ePSqbXRr.d.cts +0 -957
- package/dist/types-gcAb6olM.d.ts +0 -749
package/AGENTS.md
CHANGED
|
@@ -157,8 +157,8 @@ Three things follow from that, worth knowing before you hold one:
|
|
|
157
157
|
the sign-in stands. **The refresh is the only oracle** — the server refusing the refresh token is
|
|
158
158
|
the one unambiguous report of a dead credential, and that is where the sign-out happens
|
|
159
159
|
(`rotateOnce` in `credentials.ts`). A cookie credential's refresh is the same oracle: the server
|
|
160
|
-
refusing its session signs it out.
|
|
161
|
-
|
|
160
|
+
refusing its session signs it out. `onExpired` on `createKeboola` reports that sign-out, once per
|
|
161
|
+
sign-in and never for one the caller made, so an app can leave the document.
|
|
162
162
|
- **Memoised per project** — `getApi(7) === getApi(7)`, which is what React `key`s and hook deps
|
|
163
163
|
need. A sign-out drops everything built for that stack's projects, so a reopened project is built
|
|
164
164
|
from scratch rather than from what the previous sign-in left behind.
|
|
@@ -206,14 +206,15 @@ Every credential change (login, project switch, token rotation, sign-out) is wri
|
|
|
206
206
|
fixed key, and what it holds is the whole table rather than a single session: `current` — the scoped
|
|
207
207
|
stack and project — plus a `stacks` array, each entry carrying its own credential and the projects
|
|
208
208
|
open under it. Only the durable part of a credential is written: a token credential's rotating
|
|
209
|
-
refresh token,
|
|
210
|
-
|
|
209
|
+
refresh token, and a cookie one's session id, which renews nothing without the HttpOnly session
|
|
210
|
+
cookie the browser keeps. An access token or user identity is never written.
|
|
211
211
|
|
|
212
|
-
**Token or cookie is
|
|
213
|
-
|
|
214
|
-
`token.refreshWithSession
|
|
215
|
-
origin, so localhost and previews
|
|
216
|
-
|
|
212
|
+
**Token or cookie is the login's choice, and the credential carries it.** A browser-mode login
|
|
213
|
+
(`login.withPassword({ …, browserMode: true })`) answers with no refresh token; stored as a `cookie`
|
|
214
|
+
credential it renews through `token.refreshWithSession`, so the refresh token never reaches JS. That
|
|
215
|
+
works only from the stack's own origin, so localhost and previews log in in API mode and hold a
|
|
216
|
+
`token` credential. One client takes either kind, renews each by its own grant, and restores a
|
|
217
|
+
persisted grant of either kind.
|
|
217
218
|
|
|
218
219
|
**A stack is always active**, so `session.stack.getActive()` never returns `null` and the active
|
|
219
220
|
stack cannot be closed. Call `resume()` once on startup: persistence starts only after it settles,
|
|
@@ -609,6 +610,54 @@ const createWidget = async ({ widgetId, branchId, ...body }: CreateWidgetInput)
|
|
|
609
610
|
|
|
610
611
|
Name them `<Verb><Entity>Path` / `…Query` / `…Body` / `…Input`, with `…SchemaBody` / `…SchemaQuery` reserved for the raw spec-derived alias when a tightened sibling shares the name. Because `Input` is built from the spec's `Path`, path parameters keep the spec's own names (`configurationId`, not a local `configId`) — that keeps a call site diffable against the endpoint it hits.
|
|
611
612
|
|
|
613
|
+
### A query parameter that changes the result type (`include`, `exclude`)
|
|
614
|
+
|
|
615
|
+
Some reads let the caller pick what comes back: `include=metadata,columns` adds keys to each item, `exclude=componentDetails` swaps a field for a thinner shape. The spec types the parameter as `string` and every conditional key as optional, so a derived return says "maybe" about all of them. Type the method from the literal it is called with instead — `getBuckets({ branchId, include: ['metadata'] })` resolves with `metadata` required, `getBuckets({ branchId })` leaves it optional. Three helpers in `fetchClient/types.ts` carry it; each endpoint declares in its `types.ts` what its values mean:
|
|
616
|
+
|
|
617
|
+
```ts
|
|
618
|
+
// buckets/types.ts
|
|
619
|
+
/** What each `include` value adds to a listed bucket (see `IncludeMap`). */
|
|
620
|
+
export type BucketIncludes = {
|
|
621
|
+
attributes: 'attributes';
|
|
622
|
+
metadata: 'metadata';
|
|
623
|
+
linkedBuckets: []; // adds `linkedBy` only to a bucket something links to, so it stays optional
|
|
624
|
+
};
|
|
625
|
+
|
|
626
|
+
export type BucketInclude = keyof BucketIncludes;
|
|
627
|
+
|
|
628
|
+
export type GetBucketsQuery<I extends readonly BucketInclude[] = BucketInclude[]> =
|
|
629
|
+
OpenapiIncludeQueryType<paths['/v2/storage/branch/{branchId}/buckets']['get'], I>;
|
|
630
|
+
export type GetBucketsInput<I extends readonly BucketInclude[] = BucketInclude[]> = GetBucketsPath &
|
|
631
|
+
GetBucketsQuery<I>;
|
|
632
|
+
export type BucketWith<I extends readonly BucketInclude[]> = WithIncludes<
|
|
633
|
+
Bucket,
|
|
634
|
+
BucketIncludes,
|
|
635
|
+
I
|
|
636
|
+
>;
|
|
637
|
+
|
|
638
|
+
// buckets/buckets.ts
|
|
639
|
+
const getBuckets = async <const I extends readonly BucketInclude[] = []>(
|
|
640
|
+
{ branchId, ...query }: GetBucketsInput<I>,
|
|
641
|
+
signal?: AbortSignal,
|
|
642
|
+
) => {
|
|
643
|
+
const { data } = await openApiClient.get(
|
|
644
|
+
'/v2/storage/branch/{branchId}/buckets',
|
|
645
|
+
{ path: { branchId }, query: query as GetBucketsSchemaQuery },
|
|
646
|
+
{ signal, queryArrayFormat: 'comma' },
|
|
647
|
+
);
|
|
648
|
+
|
|
649
|
+
return data as unknown as BucketWith<I>[];
|
|
650
|
+
};
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
- **`OpenapiIncludeQueryType<Op, I>` is the query.** It is the operation's own query with `include` swapped for the tuple, so paging and filters stay spec-derived and the key name cannot drift. Tighten a wrong sibling param on top of it (`Omit<…, 'isDeleted'> & { isDeleted?: boolean }`), never by retyping the whole query.
|
|
654
|
+
- **The map is the contract, and it is checked.** `WithIncludes` constrains the map to `IncludeMap<T>`: every value must be a dotted path that exists on `T` (three segments deep, array hops implicit), so a typo is a type error at the `With…` alias. `[]` marks a value that only sometimes adds a key, so it stays optional. Verify each value against Connection's action, not the spec's description.
|
|
655
|
+
- **`const I`, default `[]`.** `const` keeps the tuple literal. `[]` means "nothing sent", so with no `include` every conditional key stays optional. A widened `BucketInclude[]` from a variable is not a tuple, and `WithIncludes` then returns the base type. Server-side defaults (a list that answers `name,description` with no `include`) are not modelled.
|
|
656
|
+
- **Both casts are required.** The spec's query has `include?: string`, so the tuple goes out as `query as Get…SchemaQuery`. The return needs `as unknown as …With<I>[]`: a type with keys made required or removed does not overlap the spec's all-optional shape, so a single `as` is refused. A detail read that joins `include` itself (`include?.join(',')`, `getBucket`) sends a plain string and needs no query cast. Together with the spec-defect bridge above, these are the sanctioned uses of `as` in this package.
|
|
657
|
+
- **`exclude` reshapes, so it is a patch map.** `WithExcludes<T, Map, E>` takes `ExcludeMap<T>`: each value is a patch over `T` where a key replaces that field's type and `never` removes it. `StackInfoExcludes` maps `componentDetails` to `{ components: StackComponent[] }` and `components` to `{ components: never }`; `undefined` returns `T`. The query is `OpenapiExcludeQueryType<Op, E>`, the method takes the same `const E` generic and the same cast.
|
|
658
|
+
- **Never** a `getXWithY` sibling method, a hand-typed `include?: 'foo'[]` without a map, or a conditional key made required on the base type.
|
|
659
|
+
- **Where a `*.types.test.ts` already asserts on such a method, use an instantiation expression**, never a call (the root rules forbid new type-only tests): `expectTypeOf(storage.getStackInfo<'componentDetails'>).returns.resolves.toEqualTypeOf<…>()`. A call fires a real request, which MSW rejects as an unhandled error.
|
|
660
|
+
|
|
612
661
|
### A method that returns a job ends in `Async`
|
|
613
662
|
|
|
614
663
|
If the resolved value is a `Job` — the request only _enqueues_ the work — the method name **must** end in `Async`: `deleteBucketAsync`, `importAsync`, `createSnapshotAsync`. Never `*Job` (that names the return type, not what the call does) and never a bare verb, which reads like the work is finished when the promise resolves.
|
|
@@ -624,26 +673,42 @@ const getBucket = async (…): Promise<BucketDetail> => { … }; //
|
|
|
624
673
|
|
|
625
674
|
One shape needs a judgement call: an endpoint that answers _either_ the resource or a job depending on a parameter (`createAliasTable` → `Table | CreateAliasJob`). Prefer splitting it into a sync method and an `*Async` sibling; where that isn't worth it, leave the bare name and say so in a comment, because a caller that must branch on the response can't be told anything useful by the name alone.
|
|
626
675
|
|
|
627
|
-
### A method that
|
|
676
|
+
### A method that hands back the poller for its job ends in `Poller`
|
|
628
677
|
|
|
629
|
-
The sibling of an `*Async` method that
|
|
678
|
+
The sibling of an `*Async` method that hands back the poller for the enqueued job ends in `Poller`: `createTablePoller`, `importPoller`, `unshareBucketPoller`. It lives on the client, next to the `*Async` it mirrors.
|
|
630
679
|
|
|
631
|
-
| What the call does | Name shape | Example
|
|
632
|
-
| ------------------------------------------------ | ---------- |
|
|
633
|
-
| returns the finished resource in one request | bare verb | `getBucket`, `deleteBucket`
|
|
634
|
-
| enqueues the work and hands back a `Job` to poll | `*Async` | `createTableAsync`
|
|
635
|
-
|
|
|
680
|
+
| What the call does | Name shape | Example |
|
|
681
|
+
| ------------------------------------------------ | ---------- | ---------------------------- |
|
|
682
|
+
| returns the finished resource in one request | bare verb | `getBucket`, `deleteBucket` |
|
|
683
|
+
| enqueues the work and hands back a `Job` to poll | `*Async` | `createTableAsync` |
|
|
684
|
+
| hands back the poller for the enqueue | `*Poller` | `createTablePoller` |
|
|
685
|
+
| runs a batch to completion and reports it | `*AndWait` | `purgeConfigurationsAndWait` |
|
|
636
686
|
|
|
637
687
|
- **Never a bare verb.** `buckets.deleteBucket` is a real single-request endpoint sitting next to `deleteBucketAsync`, so a bare name would mean "one request" on one resource and "poll loop" on the next.
|
|
638
|
-
- **Never `
|
|
688
|
+
- **Never `AndWait` for a poller.** The method waits for nothing; the poller it returns does, once started. `AndWait` is for a method that itself awaits the work and resolves what it reports, like the chunked batch purge and restore.
|
|
639
689
|
- **Never a `{ wait: true }` option.** Both branches return `Job` — the same TS type — so nothing discriminates work that is merely enqueued from work that is done, and the name is the only signal a call site gets.
|
|
640
|
-
- **Never `AndPoll`.** That names the transport, not the contract. A route that later grows long-poll or SSE turns every `AndPoll` into a lie.
|
|
641
690
|
|
|
642
|
-
It is a suffix, not a prefix, because a suffix means "same endpoint, different completion contract" — the variant shares its sibling's prefix and so sorts beside it in autocomplete, where
|
|
691
|
+
It is a suffix, not a prefix, because a suffix means "same endpoint, different completion contract" — the variant shares its sibling's prefix and so sorts beside it in autocomplete, where Azure's `beginCreateTable` would sort nowhere near `createTableAsync`.
|
|
692
|
+
|
|
693
|
+
**A `*Poller` returns the job's `Poller`**, handed the enqueue as `init`, so the handle exists before any request is sent. It is lazy: nothing runs until `start()` or `wait()`. `start()` resolves the `PollResult`; `wait()` resolves the succeeded job or throws, the poll's failure, a refused enqueue or the job's `StorageJobError`; `subscribe` and `stop` let a caller watch or cancel the wait. `start()` still resolves a job that ended `error`, for a caller that reads partial results off it.
|
|
694
|
+
|
|
695
|
+
### A paginated collection has a page method and a `getAll*` sibling
|
|
643
696
|
|
|
644
|
-
|
|
697
|
+
Connection's newer collections are cursor-paginated: a `data` / `meta` / `links` envelope,
|
|
698
|
+
`page[limit]` / `page[after]` and `filter[...]` query objects, `links.next` null on the last page
|
|
699
|
+
(connection's `docs/guidelines/.../paginated-collections.md`; `/manage/deleted-projects`,
|
|
700
|
+
`/v1/auth/me/*`). Older ones are offset-paginated (`limit` / `offset`). Both get the same two
|
|
701
|
+
methods:
|
|
645
702
|
|
|
646
|
-
**
|
|
703
|
+
- **The page method is the bare plural** (`getProjects(query, signal)`) and returns the envelope
|
|
704
|
+
untouched. A consumer that renders one page at a time pages with it, reading the next cursor
|
|
705
|
+
off `links.next` with `nextCursorOf` — never rebuilding it from the last row, since the encoding
|
|
706
|
+
is the server's.
|
|
707
|
+
- **The all-pages sibling is `getAll<Noun>(signal)`** (`auth.me.getAllProjects`), built on
|
|
708
|
+
`collectByCursor` or `collectByOffset` from `utils/async`. It owns the page size as a client
|
|
709
|
+
constant set to the server's maximum, and exists only where a consumer needs the whole
|
|
710
|
+
collection. An app never walks pages itself; the walk, the cursor parsing and the page limit
|
|
711
|
+
live here.
|
|
647
712
|
|
|
648
713
|
## Extending the SDK (endpoint not in the client yet)
|
|
649
714
|
|
package/API-SURFACE.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Every namespace and method reachable from a ready `KeboolaApi` — the `api` half of a keboola client (`createKeboola(...).api` / `createLegacyKeboola(...).api`, or `useApiClient()`). Generated from the TypeScript type checker — see `scripts/gen-surface.mjs`.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
26 top-level namespaces, 725 methods. This index lists method **names** only — full signatures live per namespace under [`surface/`](./surface). Open `surface/<namespace>.md` for the one you need.
|
|
8
8
|
|
|
9
9
|
## [`api.ai`](./surface/ai.md)
|
|
10
10
|
|
|
@@ -60,6 +60,8 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
60
60
|
- `manageTokens.getAll`
|
|
61
61
|
- `manageTokens.revoke`
|
|
62
62
|
- `me.get`
|
|
63
|
+
- `me.getAllOrganizations`
|
|
64
|
+
- `me.getAllProjects`
|
|
63
65
|
- `me.getMaintainers`
|
|
64
66
|
- `me.getOrganizations`
|
|
65
67
|
- `me.getProjects`
|
|
@@ -116,6 +118,12 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
116
118
|
- `updateAgentSettings`
|
|
117
119
|
- `updateUserAgentSettings`
|
|
118
120
|
|
|
121
|
+
## [`api.componentsMcp`](./surface/componentsMcp.md)
|
|
122
|
+
|
|
123
|
+
- `getConnectors`
|
|
124
|
+
- `healthCheck`
|
|
125
|
+
- `setConnectorCredentials`
|
|
126
|
+
|
|
119
127
|
## [`api.context`](./surface/context.md)
|
|
120
128
|
|
|
121
129
|
- `defaultBranch.getType`
|
|
@@ -355,9 +363,11 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
355
363
|
- `snowflakePartnerConnect.check`
|
|
356
364
|
- `snowflakePartnerConnect.unlock`
|
|
357
365
|
- `storageBackends.activateStorageBackend`
|
|
366
|
+
- `storageBackends.createBigqueryServerSideStorageBackend`
|
|
358
367
|
- `storageBackends.createBigqueryStorageBackend`
|
|
359
368
|
- `storageBackends.createSnowflakeStorageBackend`
|
|
360
369
|
- `storageBackends.deleteStorageBackend`
|
|
370
|
+
- `storageBackends.getPolicyTagEnablementGuide`
|
|
361
371
|
- `storageBackends.getStorageBackend`
|
|
362
372
|
- `storageBackends.getStorageBackendMaintainers`
|
|
363
373
|
- `storageBackends.getStorageBackendProjects`
|
|
@@ -424,6 +434,7 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
424
434
|
- `deleteCredential`
|
|
425
435
|
- `getCredential`
|
|
426
436
|
- `getCredentials`
|
|
437
|
+
- `getOrganizationConnections`
|
|
427
438
|
- `healthCheck`
|
|
428
439
|
|
|
429
440
|
## [`api.omnisearch`](./surface/omnisearch.md)
|
|
@@ -497,27 +508,6 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
497
508
|
- `semanticLayer.updateModel`
|
|
498
509
|
- `semanticLayer.updateObject`
|
|
499
510
|
- `semanticLayer.withdrawScopeElevationRequest`
|
|
500
|
-
- `storage.addTableColumn`
|
|
501
|
-
- `storage.createBucketListing`
|
|
502
|
-
- `storage.createSnapshot`
|
|
503
|
-
- `storage.createTable`
|
|
504
|
-
- `storage.createTableDefinition`
|
|
505
|
-
- `storage.createTablePrimaryKey`
|
|
506
|
-
- `storage.deleteBucketListing`
|
|
507
|
-
- `storage.deleteTableColumn`
|
|
508
|
-
- `storage.exportToFile`
|
|
509
|
-
- `storage.forceUnlinkBucket`
|
|
510
|
-
- `storage.importFromFile`
|
|
511
|
-
- `storage.pullTable`
|
|
512
|
-
- `storage.refreshExternalBucket`
|
|
513
|
-
- `storage.registerBucket`
|
|
514
|
-
- `storage.removeTablePrimaryKey`
|
|
515
|
-
- `storage.shareBucketToOrganization`
|
|
516
|
-
- `storage.shareBucketToOrganizationProject`
|
|
517
|
-
- `storage.shareBucketToProjects`
|
|
518
|
-
- `storage.shareBucketToUsers`
|
|
519
|
-
- `storage.unshareBucket`
|
|
520
|
-
- `storage.updateBucketListing`
|
|
521
511
|
- `tag.assignTags`
|
|
522
512
|
- `tag.createAndAssignTag`
|
|
523
513
|
- `tag.createTag`
|
|
@@ -536,11 +526,11 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
536
526
|
|
|
537
527
|
## [`api.storage`](./surface/storage.md)
|
|
538
528
|
|
|
539
|
-
- `branches.createDevBranchAndWait`
|
|
540
529
|
- `branches.createDevBranchAsync`
|
|
541
|
-
- `branches.
|
|
530
|
+
- `branches.createDevBranchPoller`
|
|
542
531
|
- `branches.deleteDevBranchAsync`
|
|
543
532
|
- `branches.deleteDevBranchMetadata`
|
|
533
|
+
- `branches.deleteDevBranchPoller`
|
|
544
534
|
- `branches.getDevBranchMetadata`
|
|
545
535
|
- `branches.getDevBranches`
|
|
546
536
|
- `branches.saveDevBranchMetadata`
|
|
@@ -549,24 +539,38 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
549
539
|
- `bucketExternal.deleteScheduledTask`
|
|
550
540
|
- `bucketExternal.getBucketRegistrationGuide`
|
|
551
541
|
- `bucketExternal.refreshExternalBucketAsync`
|
|
542
|
+
- `bucketExternal.refreshExternalBucketPoller`
|
|
552
543
|
- `bucketExternal.registerBucketAsync`
|
|
544
|
+
- `bucketExternal.registerBucketPoller`
|
|
553
545
|
- `bucketListings.createListingAsync`
|
|
546
|
+
- `bucketListings.createListingPoller`
|
|
554
547
|
- `bucketListings.deleteListingAsync`
|
|
548
|
+
- `bucketListings.deleteListingPoller`
|
|
555
549
|
- `bucketListings.getListing`
|
|
550
|
+
- `bucketListings.getListingSubscriptions`
|
|
556
551
|
- `bucketListings.getListings`
|
|
557
552
|
- `bucketListings.updateListingAsync`
|
|
553
|
+
- `bucketListings.updateListingPoller`
|
|
558
554
|
- `bucketSharing.forceUnlinkBucketAsync`
|
|
555
|
+
- `bucketSharing.forceUnlinkBucketPoller`
|
|
559
556
|
- `bucketSharing.linkBucketAsync`
|
|
557
|
+
- `bucketSharing.linkBucketPoller`
|
|
560
558
|
- `bucketSharing.shareBucketToOrganizationAsync`
|
|
559
|
+
- `bucketSharing.shareBucketToOrganizationPoller`
|
|
561
560
|
- `bucketSharing.shareBucketToOrganizationProjectAsync`
|
|
561
|
+
- `bucketSharing.shareBucketToOrganizationProjectPoller`
|
|
562
562
|
- `bucketSharing.shareBucketToProjectsAsync`
|
|
563
|
+
- `bucketSharing.shareBucketToProjectsPoller`
|
|
563
564
|
- `bucketSharing.shareBucketToUsersAsync`
|
|
565
|
+
- `bucketSharing.shareBucketToUsersPoller`
|
|
564
566
|
- `bucketSharing.sharedBuckets`
|
|
565
567
|
- `bucketSharing.unshareBucketAsync`
|
|
568
|
+
- `bucketSharing.unshareBucketPoller`
|
|
566
569
|
- `buckets.createBucket`
|
|
567
570
|
- `buckets.deleteBucket`
|
|
568
571
|
- `buckets.deleteBucketAsync`
|
|
569
572
|
- `buckets.deleteBucketMetadata`
|
|
573
|
+
- `buckets.deleteBucketPoller`
|
|
570
574
|
- `buckets.getBucket`
|
|
571
575
|
- `buckets.getBucketOwner`
|
|
572
576
|
- `buckets.getBuckets`
|
|
@@ -574,10 +578,14 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
574
578
|
- `buckets.updateBucket`
|
|
575
579
|
- `buckets.updateBucketOwner`
|
|
576
580
|
- `columns.addTableColumnAsync`
|
|
581
|
+
- `columns.addTableColumnPoller`
|
|
577
582
|
- `columns.createTablePrimaryKeyAsync`
|
|
583
|
+
- `columns.createTablePrimaryKeyPoller`
|
|
578
584
|
- `columns.deleteColumnMetadata`
|
|
579
585
|
- `columns.deleteTableColumnAsync`
|
|
586
|
+
- `columns.deleteTableColumnPoller`
|
|
580
587
|
- `columns.removeTablePrimaryKeyAsync`
|
|
588
|
+
- `columns.removeTablePrimaryKeyPoller`
|
|
581
589
|
- `columns.saveColumnMetadata`
|
|
582
590
|
- `components.getComponent`
|
|
583
591
|
- `components.getComponents`
|
|
@@ -600,7 +608,8 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
600
608
|
- `configurationVersions.rollbackConfigurationRowToVersion`
|
|
601
609
|
- `configurationVersions.rollbackConfigurationToVersion`
|
|
602
610
|
- `configurationWorkspaces.createConfigurationWorkspace`
|
|
603
|
-
- `configurationWorkspaces.
|
|
611
|
+
- `configurationWorkspaces.createConfigurationWorkspaceAsync`
|
|
612
|
+
- `configurationWorkspaces.createConfigurationWorkspacePoller`
|
|
604
613
|
- `configurationWorkspaces.getConfigurationWorkspaces`
|
|
605
614
|
- `configurations.createConfiguration`
|
|
606
615
|
- `configurations.deleteConfiguration`
|
|
@@ -640,9 +649,9 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
640
649
|
- `mergeRequests.createMergeRequest`
|
|
641
650
|
- `mergeRequests.getMergeRequest`
|
|
642
651
|
- `mergeRequests.getMergeRequestConflicts`
|
|
643
|
-
- `mergeRequests.getMergeRequestWithActivityLog`
|
|
644
652
|
- `mergeRequests.getMergeRequests`
|
|
645
|
-
- `mergeRequests.
|
|
653
|
+
- `mergeRequests.mergeMergeRequestAsync`
|
|
654
|
+
- `mergeRequests.mergeMergeRequestPoller`
|
|
646
655
|
- `mergeRequests.requestChangesMergeRequest`
|
|
647
656
|
- `mergeRequests.requestReview`
|
|
648
657
|
- `mergeRequests.updateMergeRequest`
|
|
@@ -650,28 +659,37 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
650
659
|
- `search.globalSearch`
|
|
651
660
|
- `search.searchTables`
|
|
652
661
|
- `snapshots.createSnapshotAsync`
|
|
662
|
+
- `snapshots.createSnapshotPoller`
|
|
653
663
|
- `snapshots.deleteSnapshotAsync`
|
|
664
|
+
- `snapshots.deleteSnapshotPoller`
|
|
654
665
|
- `snapshots.getSnapshot`
|
|
655
666
|
- `snapshots.getTableSnapshots`
|
|
656
667
|
- `stats.getRunIdStats`
|
|
657
668
|
- `tables.createAliasTable`
|
|
658
669
|
- `tables.createTableAsync`
|
|
659
670
|
- `tables.createTableDefinitionAsync`
|
|
671
|
+
- `tables.createTableDefinitionPoller`
|
|
672
|
+
- `tables.createTablePoller`
|
|
660
673
|
- `tables.deleteTable`
|
|
661
674
|
- `tables.deleteTableMetadata`
|
|
662
|
-
- `tables.
|
|
675
|
+
- `tables.deleteTableRowsAsync`
|
|
676
|
+
- `tables.deleteTableRowsPoller`
|
|
663
677
|
- `tables.deleteTables`
|
|
664
678
|
- `tables.exportAsync`
|
|
679
|
+
- `tables.exportPoller`
|
|
665
680
|
- `tables.getDataPreview`
|
|
666
681
|
- `tables.getTable`
|
|
667
682
|
- `tables.getTables`
|
|
668
683
|
- `tables.importAsync`
|
|
684
|
+
- `tables.importPoller`
|
|
669
685
|
- `tables.pullTableAsync`
|
|
686
|
+
- `tables.pullTablePoller`
|
|
670
687
|
- `tables.removeAliasTableFilter`
|
|
671
688
|
- `tables.saveTableMetadata`
|
|
672
689
|
- `tables.setAliasTableFilter`
|
|
673
690
|
- `tables.updateTable`
|
|
674
|
-
- `tables.
|
|
691
|
+
- `tables.updateTableDefinitionAsync`
|
|
692
|
+
- `tables.updateTableDefinitionPoller`
|
|
675
693
|
- `tokens.createToken`
|
|
676
694
|
- `tokens.deleteToken`
|
|
677
695
|
- `tokens.getTokenEvents`
|
|
@@ -687,6 +705,8 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
|
|
|
687
705
|
- `workspaces.deleteWorkspace`
|
|
688
706
|
- `workspaces.deleteWorkspaceAsync`
|
|
689
707
|
- `workspaces.deleteWorkspaceObjectsAsync`
|
|
708
|
+
- `workspaces.deleteWorkspaceObjectsPoller`
|
|
709
|
+
- `workspaces.deleteWorkspacePoller`
|
|
690
710
|
- `workspaces.deleteWorkspaces`
|
|
691
711
|
- `workspaces.getWorkspace`
|
|
692
712
|
- `workspaces.getWorkspaceObjects`
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,74 @@
|
|
|
1
1
|
# @keboola/api-client
|
|
2
2
|
|
|
3
|
+
## 47.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- `collectByCursor` walks a cursor-paginated collection (`data` / `meta` / `links` envelope) to the end by following `links.next`; `nextCursorOf` reads the `page[after]` cursor off such a link. `auth.me.getAllOrganizations` and `auth.me.getAllProjects` use it to return the caller's full collections behind the `/v1/auth/me` previews.
|
|
8
|
+
- **Breaking:** `collect` is renamed `collectByOffset`. Replace the import; the options and behaviour are unchanged.
|
|
9
|
+
|
|
10
|
+
- - **Breaking:** the `static` credential kind is removed. A bearer session holds a `token` or a `cookie` credential, both of which renew; a persisted session carries only the grant that restores it, never an access token.
|
|
11
|
+
- A persisted credential of a kind the build does not know restores that stack signed out instead of discarding the whole stored session.
|
|
12
|
+
- **Breaking:** `BearerCredentialEntry` is renamed `CredentialEntry` and `CredentialMode` is renamed `CredentialType`; a bearer is the only kind there is, and the type is the credential's own `type`.
|
|
13
|
+
|
|
14
|
+
- The bearer client renews whichever rotating credential it holds: a `token` credential by its refresh token, a `cookie` credential by its session id. One client signs in with either kind, and a persisted grant of either kind is restored through its own channel.
|
|
15
|
+
- **Breaking:** `KeboolaOptions.credentials` is removed; there is no client-wide credential mode. Drop the option.
|
|
16
|
+
- **Breaking:** `session.auth.adoptInjected` is removed; call `session.auth.replace` with the injected credential.
|
|
17
|
+
- **Breaking:** `KeboolaErrorType.CredentialKindMismatch` is removed; nothing throws it.
|
|
18
|
+
|
|
19
|
+
- Every storage method that enqueues a job has an `*Poller` twin that waits for it, in the shape `branches.createDevBranchPoller` already had: it takes the same input plus `StorageJobPollOptions` and returns the job's `Poller`, lazy until `start()` or `wait()`: `start()` resolves the `PollResult`, `wait()` the succeeded job (throws the poll's failure when the wait did not finish, a refused enqueue included, and `StorageJobError` when the job ended `error`), `subscribe` watches it, `stop` cancels it. A client `poller` takes one options object, `{ init, interval, … }`, where `init` is the job or the enqueue that yields it. The `branches` pair returns the same. `storage.poller` stays, as the one wait on a job the `*Poller` methods are built on, the same way `queue.poller` and `queryService.poller` are. `tableSnapshotDelete` and `devBranchMerge` join `JobOperation`, and the `aliasCreate` job's `results` is the alias `Table`, as the backend returns it.
|
|
20
|
+
- **Breaking:** `createStorageSdk` and `sdk.storage` are removed; they only wrapped the poller. Each method maps onto a client `*Poller` (`sdk.storage.createTableDefinition` → `storage.tables.createTableDefinitionPoller`, `sdk.storage.importFromFile` → `storage.tables.importPoller`, `sdk.storage.exportToFile` → `storage.tables.exportPoller`, `sdk.storage.createBucketListing` → `storage.bucketListings.createListingPoller`, and so on). Where the SDK threw, `.wait()` the `*Poller`.
|
|
21
|
+
- **Breaking:** the job-enqueueing methods without the `Async` suffix are renamed: `tables.deleteTableRows` → `tables.deleteTableRowsAsync`, `tables.updateTableDefinition` → `tables.updateTableDefinitionAsync`, `configurationWorkspaces.createConfigurationWorkspaceJob` → `configurationWorkspaces.createConfigurationWorkspaceAsync`, `mergeRequests.mergeMergeRequest` → `mergeRequests.mergeMergeRequestAsync`.
|
|
22
|
+
- **Breaking:** `createQueryServiceSdk().waitForJob` and `QueryJobTimeoutError` are removed. `queryService.poller` is the one wait on a query job; `executeQuery` is built on it, takes the poller's `QueryJobPollOptions` (`timeout` replaces `maxWaitTime`, with the same 5-minute default; the 500 ms interval stays) and throws the poll's failure when the wait did not finish.
|
|
23
|
+
- `queue.poller` and `queryService.poller` wait the same way, throwing `QueueJobError` / `QueryJobError` for a job that ended failed. A poller's `wait(onFailure)` now hands the mapper the error as its second argument.
|
|
24
|
+
- **Breaking:** `poller` and `poll` require `pollKey`, a key or a function of `init`, so every poll is named in the registry; `pollFn` and `until` no longer receive the key, `pollFn` reads `init`.
|
|
25
|
+
- **Breaking:** `poll()` is removed; `poller(options).start()` resolves the `PollResult` it did, `poller(options).wait()` what its `unwrap` did.
|
|
26
|
+
- `queue.poller` and `queryService.poller` retry a transient status read, a 5xx, 429 or network failure, up to five times in a row, as `storage.poller` does.
|
|
27
|
+
|
|
28
|
+
- Storage client types derive from Connection's OpenAPI spec (regenerated storage, management, oauth and kaiAgent schemas). Hand-rolled shapes remain only where the spec has a gap, each tracked on DMD-1942.
|
|
29
|
+
- **Breaking:** token, trigger and snapshot ids are numbers; callers pass `Number(id)`. `saveColumnMetadata` and `deleteColumnMetadata` take the spec's `id` (a string) instead of `columnId`.
|
|
30
|
+
- **Breaking:** `getMergeRequest({ id, include })` replaces `getMergeRequest(id)` and `getMergeRequestWithActivityLog(id)`; `getRunIdStats({ runId })`, `deleteScheduledTask({ taskId })` and the snapshot methods take the spec's parameter names (`id`, `snapshotId`).
|
|
31
|
+
- **Breaking:** `AdminRole` is the spec's enum and `admin.role` is nullable; `Workspace.name` is nullable and `deactivateAt` is always present.
|
|
32
|
+
- `include` / `exclude` query parameters type the result they are called with (`OpenapiIncludeQueryType`, `OpenapiExcludeQueryType`, `WithIncludes`, `WithExcludes`); buckets, tables, components, shared buckets, configuration versions, merge requests, search and stack info use them.
|
|
33
|
+
- api-fixtures bodies follow the regenerated types.
|
|
34
|
+
|
|
35
|
+
### Minor Changes
|
|
36
|
+
|
|
37
|
+
- Adds the `componentsMcp` service client (`api.componentsMcp`, `@keboola/api-client/componentsMcp`), resolved from the stack's `components-mcp` service index entry: `getConnectors` and `setConnectorCredentials` for Kai's connector credential form. Storage-token strategy only: the service does not accept `Authorization` yet.
|
|
38
|
+
|
|
39
|
+
- Adds `oauth.getOrganizationConnections()` (`GET /organization-credentials/connections`): the GitHub connections (`accountLogin`, `host`) of the project's organization, readable with any project member's Storage token. Exports the `OrganizationConnection` type from `@keboola/api-client/oauth/types`.
|
|
40
|
+
|
|
41
|
+
- Adds `onExpired` to `KeboolaOptions`: called once per sign-in when a live credential's refresh is refused and the stack signs out, never for a `signOut()` the caller made or a stored session a restore found dead. An app wires its leave-the-document reaction there instead of subscribing to the session table.
|
|
42
|
+
|
|
43
|
+
- `Workspace` carries `deleteAt`, the ISO 8601 timestamp when retention deletes a deactivated workspace (`null` or absent otherwise).
|
|
44
|
+
|
|
45
|
+
- Storage `bucketListings`: add `getListingSubscriptions({ branchId, bucketId })`, the consumers currently subscribing to a bucket exposure. It returns `null` when the bucket has no exposure. The method is declared by hand on the generic client until the route reaches the generated schema. The storage client also exports `StorageGenericFetchClient`.
|
|
46
|
+
|
|
47
|
+
- `management.storageBackends.getPolicyTagEnablementGuide` fetches the BigQuery policy-tag enablement guide (`GET /manage/storage-backend/{id}/policy-tags/enablement-guide`) as Markdown or Terraform. `resourceScopes` and `probeTags` go out as `resourceScopes[]` / `probeTags[]`. `StorageBackend` gains an optional `policyTagsEnabled`.
|
|
48
|
+
|
|
49
|
+
- Management `storageBackends`: the result of `createBigqueryStorageBackend` is exported as `StorageBackendBigquery`.
|
|
50
|
+
|
|
51
|
+
- Management `storageBackends`: `createBigqueryServerSideStorageBackend` (`POST /manage/storage-backend/bigquery/server-side`) with its `CreateBigqueryServerSideStorageBackendBody`; the BigQuery create/update results are typed `StorageBackendBigquery`, which gains an optional `isEnabled`.
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- The Developer Portal client sends `@` and `+` in a path parameter unencoded, so inviting a developer, accepting an invitation and the email-keyed auth calls pass apps-api's email validation. apps-api does not decode path parameters, so `%40` failed with `Parameter email in uri must be valid email address`. The other clients keep `encodeURIComponent`.
|
|
56
|
+
|
|
57
|
+
## 46.0.0
|
|
58
|
+
|
|
59
|
+
### Major Changes
|
|
60
|
+
|
|
61
|
+
- Regenerate the omnisearch, developerPortal, vault, dataScience, apps, kaiAgent, storage, management, auth, oauth and microsoftGraph OpenAPI types against the live services
|
|
62
|
+
- **Breaking:** `auth.me.getOrganizations`, `getProjects` and `getMaintainers` return a cursor page `{ data, meta, links }` instead of `{ count, items, limit, offset, hasMore }`, and take `{ page: { after, limit }, filter: { … } }` instead of `limit` / `offset` / top-level filters (`q` is now `filter.name`).
|
|
63
|
+
- `storage.tokens.createToken` resolves `token` as a required `string`.
|
|
64
|
+
|
|
65
|
+
### Minor Changes
|
|
66
|
+
|
|
67
|
+
- The admin behind a Manage token, as a domain object.
|
|
68
|
+
- `createAdminAccount({ managementToken })` mirrors `createProject`: `isSuperAdmin`, `hasAdminFeature`, `hasAnyAdminFeature`, the raw `user` and the token.
|
|
69
|
+
- A token with no admin behind it, or `null` for no token at all, yields an account where every helper answers `false`.
|
|
70
|
+
- `ManagementSessionMintError` (a `ManagementClientAuthError`) when the legacy client could not mint a session token from the login cookie, with `isManagementSessionMintError`. A bearer client never raises it.
|
|
71
|
+
|
|
3
72
|
## 45.0.0
|
|
4
73
|
|
|
5
74
|
### Major Changes
|
package/README.md
CHANGED
|
@@ -176,6 +176,7 @@ src/
|
|
|
176
176
|
oauth/ # OAuth credentials
|
|
177
177
|
chat/ # Kai Assistant chat
|
|
178
178
|
kaiAgent/ # Kai Agent (agentic assistant)
|
|
179
|
+
componentsMcp/ # Components MCP connector vault
|
|
179
180
|
ai/ # AI describe/explain/suggest
|
|
180
181
|
queue/ # Job Queue
|
|
181
182
|
queryService/ # SQL query service
|
|
@@ -211,23 +212,24 @@ src/
|
|
|
211
212
|
On the `api` object returned by `createKeboola()` / `createLegacyKeboola()` — once the session reaches `ready` — the following clients are available.
|
|
212
213
|
Clients backed by OpenAPI specs are marked with (OpenAPI); the rest use the generic fetch client.
|
|
213
214
|
|
|
214
|
-
| Accessor
|
|
215
|
-
|
|
|
216
|
-
| `api.storage`
|
|
217
|
-
| `api.management`
|
|
218
|
-
| `api.vault`
|
|
219
|
-
| `api.oauth`
|
|
220
|
-
| `api.dataScience`
|
|
221
|
-
| `api.editor`
|
|
222
|
-
| `api.encryption`
|
|
223
|
-
| `api.chat`
|
|
224
|
-
| `api.kaiAgent`
|
|
225
|
-
| `api.
|
|
226
|
-
| `api.
|
|
227
|
-
| `api.
|
|
228
|
-
| `api.
|
|
229
|
-
| `api.
|
|
230
|
-
| `api.
|
|
215
|
+
| Accessor | Service | Key methods |
|
|
216
|
+
| ------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
217
|
+
| `api.storage` | Storage API | `buckets.*`, `tables.*`, `files.*`, `branches.*`, `workspaces.*`, `mergeRequests.*`, `jobs.*`, `components.*`, `configurations.*`, `configurationRows.*`, `configurationWorkspaces.*`, `tokens.*`, `getStackInfo()` |
|
|
218
|
+
| `api.management` | Management API | `projects.*`, `features.*`, `users.*` |
|
|
219
|
+
| `api.vault` | Vault (OpenAPI) | `getVariables()`, `createVariable()`, `deleteVariable()`, `getVariablesByBranchId()`, `getProjectWideVariables()` |
|
|
220
|
+
| `api.oauth` | OAuth | `getCredentials()`, `getCredential()`, `createCredential()`, `deleteCredential()` |
|
|
221
|
+
| `api.dataScience` | Data Science (OpenAPI) | `getApps()`, `getApp()`, `createApp()`, `patchApp()`, `deleteApp()`, `getAppRuns()`, `getAppRun()`, `getAppLogsTail()`, `getAppLogsDownload()`, `getRuntimes()`, `getSandbox()` |
|
|
222
|
+
| `api.editor` | SQL Editor (OpenAPI) | `createSession()`, `getSession()`, `getSessions()`, `getSessionSchema()`, `createQueryJob()`, `tablePreview()`, `tableDefinition()`, `load()`, `unload()` |
|
|
223
|
+
| `api.encryption` | Encryption | `encrypt()`, `encryptSecrets()` |
|
|
224
|
+
| `api.chat` | Kai Assistant (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `getVotes()`, `submitVote()`, `getUsage()`, `getSuggestions()`, `getAgentSettings()`, `getToolsList()` |
|
|
225
|
+
| `api.kaiAgent` | Kai Agent (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `approveToolCall()`, `submitToolOutput()`, `getSuggestions()`, `getAgentSettings()` |
|
|
226
|
+
| `api.componentsMcp` | Components MCP (OpenAPI) | `getConnectors()`, `setConnectorCredentials()` |
|
|
227
|
+
| `api.ai` | AI Service (OpenAPI) | `describeConfiguration()`, `describeConfigurationVersion()`, `describeConfigurationMerge()`, `explainError()`, `suggestComponent()`, `feedback()` |
|
|
228
|
+
| `api.queue` | Job Queue (OpenAPI) | `getJob()`, `searchJobs()` |
|
|
229
|
+
| `api.queryService` | Query Service (OpenAPI) | `createQueryJob()`, `cancelQueryJob()`, `getQueryJob()`, `getQueryResults()`, `getQueryHistory()`, `exportResults()` |
|
|
230
|
+
| `api.syncActions` | Sync Actions (OpenAPI) | `sendSyncAction()` + one namespace per component; see [`surface/syncActions.md`](./surface/syncActions.md) |
|
|
231
|
+
| `api.telemetry` | Telemetry | `provisioning.*` |
|
|
232
|
+
| `api.import` | Import (OpenAPI) | `uploadFile()`, `writeTable()` |
|
|
231
233
|
|
|
232
234
|
Additional accessors on the ready client:
|
|
233
235
|
|
|
@@ -361,37 +363,44 @@ const ordered = await series({
|
|
|
361
363
|
});
|
|
362
364
|
```
|
|
363
365
|
|
|
364
|
-
###
|
|
366
|
+
### poller
|
|
365
367
|
|
|
366
368
|
A poll **returns** how it ended — `done`, `timedOut`, `exhausted`, `aborted`, `errored` — so nothing is
|
|
367
|
-
thrown at a caller that wants to branch. `
|
|
368
|
-
resolves the value or throws.
|
|
369
|
+
thrown at a caller that wants to branch. `wait()` is the shortcut for the caller that doesn't: it
|
|
370
|
+
resolves the succeeded value or throws.
|
|
369
371
|
|
|
370
372
|
```typescript
|
|
371
|
-
import {
|
|
373
|
+
import { poller } from '@keboola/api-client';
|
|
372
374
|
|
|
373
|
-
// `pollKey`
|
|
374
|
-
//
|
|
375
|
+
// `pollKey` names the poll, in the shape of a TanStack query key; dev tools show a running poll by it.
|
|
376
|
+
// `init` is what the poll starts from, handed to `pollFn`: a value, or a request for it (an enqueue),
|
|
377
|
+
// which runs on `start()` before the first attempt.
|
|
375
378
|
// `backoff` names the curve by the field it starts from: `interval` for `constant`, `initialInterval`
|
|
376
379
|
// for `linear` and `exponential`. Add `jitter: 'full' | 'equal'` to spread a herd of polls apart.
|
|
377
|
-
const
|
|
378
|
-
pollKey: ['queue.job', {
|
|
379
|
-
|
|
380
|
+
const handle = poller({
|
|
381
|
+
pollKey: ({ id }) => ['queue.job', { id }] as const,
|
|
382
|
+
init: { id: jobId },
|
|
383
|
+
pollFn: ({ init, signal }) => api.queue.getJob(init.id, signal),
|
|
380
384
|
until: ({ data }) => data.status === 'success' || data.status === 'error',
|
|
385
|
+
failed: (job) => (job.status === 'error' ? new Error(job.result?.message) : undefined),
|
|
381
386
|
backoff: { type: 'exponential', initialInterval: 1000, factor: 2, maxInterval: 30_000 },
|
|
382
387
|
maxAttempts: 30,
|
|
383
388
|
timeout: 5 * 60_000,
|
|
384
389
|
});
|
|
385
390
|
|
|
391
|
+
// Nothing runs until one of these. `start()` resolves how the poll ended; `wait()` resolves the
|
|
392
|
+
// value, or throws: the poll's failure, or what `failed` reads off a value that ended badly.
|
|
393
|
+
const result = await handle.start();
|
|
386
394
|
if (result.state === 'done') console.log(result.data.status);
|
|
387
395
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
396
|
+
const job = await handle.wait();
|
|
397
|
+
|
|
398
|
+
// `subscribe()` watches the attempts as they happen, `stop()` ends the poll from outside.
|
|
391
399
|
```
|
|
392
400
|
|
|
393
|
-
|
|
394
|
-
`
|
|
401
|
+
The job clients wrap this: `api.storage.poller({ init: job })`, `api.queue.poller({ init: job })` and
|
|
402
|
+
`api.queryService.poller({ init: job })`, and every `*Poller` method hands back the handle for the
|
|
403
|
+
job it enqueues, `api.storage.tables.createTablePoller(input).wait()`.
|
|
395
404
|
|
|
396
405
|
### keboolaUID
|
|
397
406
|
|
|
@@ -459,13 +468,14 @@ Internal guide for adding new service clients to this package.
|
|
|
459
468
|
|
|
460
469
|
### Method naming conventions
|
|
461
470
|
|
|
462
|
-
A method's name states what the call does, so a call site can tell whether the work is finished once the promise settles. Clients expose the endpoint methods plus — where the endpoint enqueues a job — a
|
|
471
|
+
A method's name states what the call does, so a call site can tell whether the work is finished once the promise settles. Clients expose the endpoint methods plus — where the endpoint enqueues a job — a `*Poller` twin that hands back the poller for the job.
|
|
463
472
|
|
|
464
|
-
| What the call does | Name shape | Example
|
|
465
|
-
| ------------------------------------------------ | ---------- |
|
|
466
|
-
| returns the finished resource in one request | bare verb | `buckets.getBucket()`
|
|
467
|
-
| enqueues the work and hands back a `Job` to poll | `*Async` | `tables.createTableAsync()`
|
|
468
|
-
|
|
|
473
|
+
| What the call does | Name shape | Example |
|
|
474
|
+
| ------------------------------------------------ | ---------- | --------------------------------------------- |
|
|
475
|
+
| returns the finished resource in one request | bare verb | `buckets.getBucket()` |
|
|
476
|
+
| enqueues the work and hands back a `Job` to poll | `*Async` | `tables.createTableAsync()` |
|
|
477
|
+
| hands back the poller for the enqueue | `*Poller` | `tables.createTablePoller()` |
|
|
478
|
+
| runs a batch to completion and reports it | `*AndWait` | `configurations.purgeConfigurationsAndWait()` |
|
|
469
479
|
|
|
470
480
|
The suffix is a suffix on purpose: a wait-variant shares its sibling's prefix, so the two sort together in autocomplete.
|
|
471
481
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { p as ApiError } from "./createFetchClient-CkHdS_IG.js";
|
|
2
|
+
//#region src/errors/ManagementClientAuthError.ts
|
|
3
|
+
var ManagementClientAuthError = class extends ApiError {
|
|
4
|
+
title;
|
|
5
|
+
message;
|
|
6
|
+
constructor(title, message, res) {
|
|
7
|
+
super(res);
|
|
8
|
+
this.name = "ManagementClientAuthError";
|
|
9
|
+
this.title = title;
|
|
10
|
+
this.message = message;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/errors/ManagementSessionMintError.ts
|
|
15
|
+
/**
|
|
16
|
+
* The Manage client has no credential of its own and could not mint a session token from the
|
|
17
|
+
* login cookie.
|
|
18
|
+
*
|
|
19
|
+
* - Only the legacy (SAPI) entry point mints; a bearer client never raises it.
|
|
20
|
+
* - The login page in place of the token: the session expired, or there is no cookie (off the
|
|
21
|
+
* stack host).
|
|
22
|
+
*/
|
|
23
|
+
var ManagementSessionMintError = class extends ManagementClientAuthError {
|
|
24
|
+
constructor({ title, message, response, request, data }) {
|
|
25
|
+
super(title, message, {
|
|
26
|
+
response,
|
|
27
|
+
request,
|
|
28
|
+
data
|
|
29
|
+
});
|
|
30
|
+
this.name = "ManagementSessionMintError";
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
export { ManagementClientAuthError as n, ManagementSessionMintError as t };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=ManagementSessionMintError-4Pkn5Oob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManagementSessionMintError-4Pkn5Oob.js","names":[],"sources":["../src/errors/ManagementClientAuthError.ts","../src/errors/ManagementSessionMintError.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\nexport class ManagementClientAuthError extends ApiError {\n title: string;\n message: string;\n constructor(title: string, message: string, res: ApiResponse) {\n super(res);\n this.name = 'ManagementClientAuthError';\n this.title = title;\n this.message = message;\n }\n}\n","import { ManagementClientAuthError } from './ManagementClientAuthError';\n\n/**\n * The Manage client has no credential of its own and could not mint a session token from the\n * login cookie.\n *\n * - Only the legacy (SAPI) entry point mints; a bearer client never raises it.\n * - The login page in place of the token: the session expired, or there is no cookie (off the\n * stack host).\n */\nexport class ManagementSessionMintError extends ManagementClientAuthError {\n constructor({ title, message, response, request, data }: ManagementClientAuthError) {\n super(title, message, { response, request, data });\n this.name = 'ManagementSessionMintError';\n }\n}\n"],"mappings":";;AAIA,IAAa,4BAAb,cAA+C,SAAS;CACtD;CACA;CACA,YAAY,OAAe,SAAiB,KAAkB;EAC5D,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;CACjB;AACF;;;;;;;;;;;ACHA,IAAa,6BAAb,cAAgD,0BAA0B;CACxE,YAAY,EAAE,OAAO,SAAS,UAAU,SAAS,QAAmC;EAClF,MAAM,OAAO,SAAS;GAAE;GAAU;GAAS;EAAK,CAAC;EACjD,KAAK,OAAO;CACd;AACF"}
|