@keboola/api-client 0.1.0 → 1.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 (132) hide show
  1. package/README.md +18 -1
  2. package/dist/ai/index.cjs +7 -1
  3. package/dist/ai/index.cjs.map +1 -1
  4. package/dist/ai/index.js +7 -1
  5. package/dist/ai/index.js.map +1 -1
  6. package/dist/assets/index.cjs +7 -1
  7. package/dist/assets/index.cjs.map +1 -1
  8. package/dist/assets/index.js +7 -1
  9. package/dist/assets/index.js.map +1 -1
  10. package/dist/chat/index.cjs +3 -1
  11. package/dist/chat/index.cjs.map +1 -1
  12. package/dist/chat/index.js +3 -1
  13. package/dist/chat/index.js.map +1 -1
  14. package/dist/constants/index.cjs +145 -0
  15. package/dist/constants/index.cjs.map +1 -0
  16. package/dist/constants/index.d.cts +28 -0
  17. package/dist/constants/index.d.ts +28 -0
  18. package/dist/constants/index.js +142 -0
  19. package/dist/constants/index.js.map +1 -0
  20. package/dist/dataScience/index.cjs +7 -2
  21. package/dist/dataScience/index.cjs.map +1 -1
  22. package/dist/dataScience/index.js +7 -2
  23. package/dist/dataScience/index.js.map +1 -1
  24. package/dist/domain/permissions/index.cjs +13 -0
  25. package/dist/domain/permissions/index.cjs.map +1 -0
  26. package/dist/domain/permissions/index.d.cts +5 -0
  27. package/dist/domain/permissions/index.d.ts +5 -0
  28. package/dist/domain/permissions/index.js +11 -0
  29. package/dist/domain/permissions/index.js.map +1 -0
  30. package/dist/editor/index.cjs +7 -10
  31. package/dist/editor/index.cjs.map +1 -1
  32. package/dist/editor/index.d.cts +11 -19
  33. package/dist/editor/index.d.ts +11 -19
  34. package/dist/editor/index.js +7 -10
  35. package/dist/editor/index.js.map +1 -1
  36. package/dist/editor/types.d.cts +1 -1
  37. package/dist/editor/types.d.ts +1 -1
  38. package/dist/encryption/index.cjs +7 -1
  39. package/dist/encryption/index.cjs.map +1 -1
  40. package/dist/encryption/index.js +7 -1
  41. package/dist/encryption/index.js.map +1 -1
  42. package/dist/import/index.cjs +7 -1
  43. package/dist/import/index.cjs.map +1 -1
  44. package/dist/import/index.js +7 -1
  45. package/dist/import/index.js.map +1 -1
  46. package/dist/index.cjs +143 -40
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.cts +976 -204
  49. package/dist/index.d.ts +976 -204
  50. package/dist/index.js +143 -40
  51. package/dist/index.js.map +1 -1
  52. package/dist/management/index.cjs +40 -23
  53. package/dist/management/index.cjs.map +1 -1
  54. package/dist/management/index.d.cts +59 -23
  55. package/dist/management/index.d.ts +59 -23
  56. package/dist/management/index.js +40 -23
  57. package/dist/management/index.js.map +1 -1
  58. package/dist/management/types.d.cts +2 -2
  59. package/dist/management/types.d.ts +2 -2
  60. package/dist/metastore/index.cjs +7 -1
  61. package/dist/metastore/index.cjs.map +1 -1
  62. package/dist/metastore/index.js +7 -1
  63. package/dist/metastore/index.js.map +1 -1
  64. package/dist/oauth/index.cjs +234 -0
  65. package/dist/oauth/index.cjs.map +1 -0
  66. package/dist/oauth/index.d.cts +12 -0
  67. package/dist/oauth/index.d.ts +12 -0
  68. package/dist/oauth/index.js +228 -0
  69. package/dist/oauth/index.js.map +1 -0
  70. package/dist/oauth/types.cjs +4 -0
  71. package/dist/oauth/types.cjs.map +1 -0
  72. package/dist/oauth/types.d.cts +34 -0
  73. package/dist/oauth/types.d.ts +34 -0
  74. package/dist/oauth/types.js +3 -0
  75. package/dist/oauth/types.js.map +1 -0
  76. package/dist/queryService/index.cjs +7 -1
  77. package/dist/queryService/index.cjs.map +1 -1
  78. package/dist/queryService/index.js +7 -1
  79. package/dist/queryService/index.js.map +1 -1
  80. package/dist/queue/index.cjs +7 -1
  81. package/dist/queue/index.cjs.map +1 -1
  82. package/dist/queue/index.js +7 -1
  83. package/dist/queue/index.js.map +1 -1
  84. package/dist/sdk/configurations/index.cjs +14 -0
  85. package/dist/sdk/configurations/index.cjs.map +1 -0
  86. package/dist/sdk/configurations/index.d.cts +24 -0
  87. package/dist/sdk/configurations/index.d.ts +24 -0
  88. package/dist/sdk/configurations/index.js +11 -0
  89. package/dist/sdk/configurations/index.js.map +1 -0
  90. package/dist/sdk/storage/index.cjs +159 -0
  91. package/dist/sdk/storage/index.cjs.map +1 -1
  92. package/dist/sdk/storage/index.d.cts +118 -13
  93. package/dist/sdk/storage/index.d.ts +118 -13
  94. package/dist/sdk/storage/index.js +149 -1
  95. package/dist/sdk/storage/index.js.map +1 -1
  96. package/dist/status/index.cjs +7 -1
  97. package/dist/status/index.cjs.map +1 -1
  98. package/dist/status/index.js +7 -1
  99. package/dist/status/index.js.map +1 -1
  100. package/dist/storage/index.cjs +19 -8
  101. package/dist/storage/index.cjs.map +1 -1
  102. package/dist/storage/index.d.cts +1 -1
  103. package/dist/storage/index.d.ts +1 -1
  104. package/dist/storage/index.js +19 -8
  105. package/dist/storage/index.js.map +1 -1
  106. package/dist/storage/types.d.cts +2921 -1309
  107. package/dist/storage/types.d.ts +2921 -1309
  108. package/dist/{storageClient-YVWer22Y.d.ts → storageClient-C8LDO4gr.d.ts} +14 -0
  109. package/dist/{storageClient-DPLh_p0V.d.cts → storageClient-D05fdGHW.d.cts} +14 -0
  110. package/dist/storageSdk-CX03lGn-.d.ts +18 -0
  111. package/dist/storageSdk-DZV4nB3o.d.cts +18 -0
  112. package/dist/syncActions/index.cjs +7 -1
  113. package/dist/syncActions/index.cjs.map +1 -1
  114. package/dist/syncActions/index.js +7 -1
  115. package/dist/syncActions/index.js.map +1 -1
  116. package/dist/telemetry/index.cjs +7 -1
  117. package/dist/telemetry/index.cjs.map +1 -1
  118. package/dist/telemetry/index.js +7 -1
  119. package/dist/telemetry/index.js.map +1 -1
  120. package/dist/{types-B7k8S4ki.d.ts → types-B--u7l2H.d.ts} +33 -118
  121. package/dist/{types-BeShtGlc.d.cts → types-BTcT8Q0T.d.cts} +15 -1
  122. package/dist/{types-BeShtGlc.d.ts → types-BTcT8Q0T.d.ts} +15 -1
  123. package/dist/{types-BNQK_jR_.d.cts → types-C0Owx2P7.d.cts} +33 -118
  124. package/dist/vault/index.cjs +3 -1
  125. package/dist/vault/index.cjs.map +1 -1
  126. package/dist/vault/index.js +3 -1
  127. package/dist/vault/index.js.map +1 -1
  128. package/dist/verify/index.cjs +3 -1
  129. package/dist/verify/index.cjs.map +1 -1
  130. package/dist/verify/index.js +3 -1
  131. package/dist/verify/index.js.map +1 -1
  132. package/package.json +71 -5
package/dist/index.cjs CHANGED
@@ -71,6 +71,25 @@ var ServiceUnavailableError = class _ServiceUnavailableError extends Error {
71
71
  Object.setPrototypeOf(this, _ServiceUnavailableError.prototype);
72
72
  }
73
73
  };
74
+
75
+ // src/constants.ts
76
+ var KeboolaHttpHeader = {
77
+ STORAGE_API_TOKEN: "X-StorageApi-Token",
78
+ MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
79
+ STORAGE_API_URL: "x-storageapi-url"
80
+ };
81
+ var HttpStatus = {
82
+ NO_CONTENT: 204,
83
+ BAD_REQUEST: 400,
84
+ UNPROCESSABLE_ENTITY: 422,
85
+ INTERNAL_SERVER_ERROR: 500,
86
+ BAD_GATEWAY: 502,
87
+ SERVICE_UNAVAILABLE: 503,
88
+ GATEWAY_TIMEOUT: 504
89
+ };
90
+ var ENCRYPTED_VALUE_PREFIX = "KBC::";
91
+
92
+ // src/fetchClient/createFetchClient/utils.ts
74
93
  var HttpHeader = {
75
94
  CONTENT_TYPE: "content-type",
76
95
  CONTENT_DISPOSITION: "content-disposition"
@@ -90,7 +109,7 @@ function removeUndefined(obj) {
90
109
  return objCopy;
91
110
  }
92
111
  var parseData = async (response) => {
93
- if (response.status === 204) return null;
112
+ if (response.status === HttpStatus.NO_CONTENT) return null;
94
113
  const contentType = response.headers.get(HttpHeader.CONTENT_TYPE);
95
114
  if (contentType && contentType == HttpContentType.JSON) {
96
115
  return response.json();
@@ -310,14 +329,6 @@ var createAssetsClient = ({ baseUrl, middlewares }) => {
310
329
  getPublishedChangelogPosts
311
330
  };
312
331
  };
313
-
314
- // src/constants.ts
315
- var KeboolaHttpHeader = {
316
- STORAGE_API_TOKEN: "X-StorageApi-Token",
317
- MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
318
- STORAGE_API_URL: "x-storageapi-url"
319
- };
320
- var ENCRYPTED_VALUE_PREFIX = "KBC::";
321
332
  var SUGGESTION_CATEGORIES = ["error", "maintenance", "documentation"];
322
333
  var suggestionCategorySchema = z5.z.enum(SUGGESTION_CATEGORIES);
323
334
  var suggestionSchema = z5.z.object({
@@ -718,7 +729,7 @@ var createDataScienceClient = ({ baseUrl, middlewares }) => {
718
729
  nextLogTimestamp
719
730
  };
720
731
  } catch (error) {
721
- if (isApiError(error) && error.response.status === 400 && TailError.safeParse(error.data).data?.context?.code === "apps.appNotRunning") {
732
+ if (isApiError(error) && error.response.status === HttpStatus.BAD_REQUEST && TailError.safeParse(error.data).data?.context?.code === "apps.appNotRunning") {
722
733
  return { entries: [], nextLogTimestamp: null };
723
734
  }
724
735
  throw error;
@@ -861,14 +872,6 @@ var createEditorClient = ({ baseUrl, middlewares }) => {
861
872
  });
862
873
  return data;
863
874
  };
864
- const getWorkspacePassword = async (id, signal) => {
865
- const { data } = await client.get(
866
- `/sql/sessions/{id}/workspace-password`,
867
- { path: { id } },
868
- { signal }
869
- );
870
- return data;
871
- };
872
875
  const resetWorkspacePassword = async (id) => {
873
876
  const { data } = await client.post(`/sql/sessions/{id}/reset-password`, {
874
877
  path: { id }
@@ -893,7 +896,6 @@ var createEditorClient = ({ baseUrl, middlewares }) => {
893
896
  tableDefinition,
894
897
  load,
895
898
  unload,
896
- getWorkspacePassword,
897
899
  resetWorkspacePassword,
898
900
  getSessionCredentials
899
901
  };
@@ -1022,6 +1024,10 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
1022
1024
  const submitToolOutput = async (chatId, body) => {
1023
1025
  await client.post("/api/chat/{id}/ui-tool-result", { path: { id: chatId }, body });
1024
1026
  };
1027
+ const stopChat = async (chatId) => {
1028
+ const { data } = await client.post("/api/chat/{id}/stop", { path: { id: chatId } });
1029
+ return data;
1030
+ };
1025
1031
  const getSuggestions = async (request, signal) => {
1026
1032
  const { data } = await genericClient.post(
1027
1033
  "/api/suggestions",
@@ -1101,6 +1107,7 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
1101
1107
  getUsage,
1102
1108
  approveToolCall,
1103
1109
  submitToolOutput,
1110
+ stopChat,
1104
1111
  getSuggestions,
1105
1112
  getAgentSettings,
1106
1113
  updateAgentSettings,
@@ -1134,6 +1141,7 @@ var createVerifyClient = () => {
1134
1141
  };
1135
1142
 
1136
1143
  // src/clients/management/authMiddleware.ts
1144
+ var TOKEN_CACHE_TTL_MS = 6e4;
1137
1145
  var isManagementClientAuthError = (error) => error instanceof ManagementClientAuthError;
1138
1146
  var createAuth = (baseUrl) => {
1139
1147
  const fetchClient = createGenericFetchClient({ baseUrl });
@@ -1179,18 +1187,34 @@ var createAuthMiddleware = ({
1179
1187
  const auth = createAuth(baseUrl);
1180
1188
  const verify = createVerifyClient();
1181
1189
  let token = accessToken;
1190
+ let tokenValidUntil = 0;
1191
+ let inflightAuth = null;
1182
1192
  const isDevelopment = process.env.NODE_ENV === "development";
1183
- return (next) => async (request) => {
1184
- if (!!token) {
1193
+ const ensureValidToken = async () => {
1194
+ if (token && Date.now() < tokenValidUntil) return token;
1195
+ if (token) {
1185
1196
  const tokenInfo = await verify.managementApiToken(baseUrl, token);
1186
1197
  const isTokenValid = !tokenInfo.isDisabled && !tokenInfo.isExpired;
1187
- if (!isTokenValid) {
1188
- token = isDevelopment ? await auth.createCurrentUserSessionToken(token) : await auth.createAdminAccountSessionToken();
1198
+ if (isTokenValid) {
1199
+ tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
1200
+ return token;
1189
1201
  }
1190
- } else {
1191
- token = await auth.createAdminAccountSessionToken();
1202
+ token = isDevelopment ? await auth.createCurrentUserSessionToken(token) : await auth.createAdminAccountSessionToken();
1203
+ tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
1204
+ return token;
1192
1205
  }
1193
- request.request.headers.set(KeboolaHttpHeader.MANAGEMENT_API_TOKEN, token);
1206
+ token = await auth.createAdminAccountSessionToken();
1207
+ tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
1208
+ return token;
1209
+ };
1210
+ return (next) => async (request) => {
1211
+ if (!inflightAuth) {
1212
+ inflightAuth = ensureValidToken().finally(() => {
1213
+ inflightAuth = null;
1214
+ });
1215
+ }
1216
+ const validToken = await inflightAuth;
1217
+ request.request.headers.set(KeboolaHttpHeader.MANAGEMENT_API_TOKEN, validToken);
1194
1218
  return next(request);
1195
1219
  };
1196
1220
  };
@@ -1394,14 +1418,6 @@ var createMaintainers = (client) => {
1394
1418
  path: { id: maintainerId, invitationId }
1395
1419
  });
1396
1420
  };
1397
- const getMaintainerOrganizations = async (maintainerId, signal) => {
1398
- const { data } = await client.get(
1399
- "/manage/maintainers/{id}/organizations",
1400
- { path: { id: maintainerId } },
1401
- { signal }
1402
- );
1403
- return data;
1404
- };
1405
1421
  const createMaintainerOrganization = async ({
1406
1422
  maintainerId,
1407
1423
  ...body
@@ -1451,7 +1467,6 @@ var createMaintainers = (client) => {
1451
1467
  getMaintainerInvitation,
1452
1468
  createMaintainerInvitation,
1453
1469
  deleteMaintainerInvitation,
1454
- getMaintainerOrganizations,
1455
1470
  createMaintainerOrganization,
1456
1471
  getMaintainerMetadata,
1457
1472
  setMaintainerMetadata,
@@ -1773,13 +1788,18 @@ var createManagementClient = ({
1773
1788
  baseUrl,
1774
1789
  middlewares
1775
1790
  });
1791
+ const verifyToken = async (signal) => {
1792
+ const { data } = await openApiClient.get("/manage/tokens/verify", {}, { signal });
1793
+ return data;
1794
+ };
1776
1795
  return {
1777
1796
  currentUser: createCurrentUser(openApiClient),
1778
1797
  features: createFeatures(client),
1779
1798
  maintainers: createMaintainers(openApiClient),
1780
1799
  organizations: createOrganizations(openApiClient),
1781
1800
  projects: createProjects(client),
1782
- users: createUsers(client)
1801
+ users: createUsers(client),
1802
+ verifyToken
1783
1803
  };
1784
1804
  };
1785
1805
 
@@ -1959,6 +1979,72 @@ var createMetastoreClient = ({ baseUrl, middlewares }) => {
1959
1979
  };
1960
1980
  };
1961
1981
 
1982
+ // src/clients/oauth/oauthClient.ts
1983
+ var createOauthClient = ({ baseUrl, middlewares }) => {
1984
+ const client = createGenericFetchClient({ baseUrl, middlewares });
1985
+ const getCredentials = async (query, signal) => {
1986
+ const { data } = await client.get(
1987
+ "/credentials",
1988
+ { query },
1989
+ { signal }
1990
+ );
1991
+ return data;
1992
+ };
1993
+ const getCredential = async (componentId, id, signal) => {
1994
+ const { data } = await client.get(
1995
+ "/credentials/{componentId}/{id}",
1996
+ { path: { componentId, id } },
1997
+ { signal }
1998
+ );
1999
+ return data;
2000
+ };
2001
+ const _createCredentials = async (componentId, body, signal) => {
2002
+ const { data } = await client.post(
2003
+ "/credentials/{componentId}",
2004
+ { path: { componentId }, body },
2005
+ { signal }
2006
+ );
2007
+ return data;
2008
+ };
2009
+ const _createLegacyCredentials = async (componentId, { data: credentialsData, ...rest }, signal) => {
2010
+ const { data } = await client.post(
2011
+ "/credentials/{componentId}",
2012
+ {
2013
+ path: { componentId },
2014
+ body: {
2015
+ ...rest,
2016
+ "#data": JSON.stringify(credentialsData)
2017
+ }
2018
+ },
2019
+ { signal }
2020
+ );
2021
+ return data;
2022
+ };
2023
+ const createCredential = async (componentId, body, signal) => {
2024
+ try {
2025
+ return await _createCredentials(componentId, body, signal);
2026
+ } catch (error) {
2027
+ if (isApiError(error) && error.response.status === HttpStatus.UNPROCESSABLE_ENTITY) {
2028
+ return _createLegacyCredentials(componentId, body, signal);
2029
+ }
2030
+ throw error;
2031
+ }
2032
+ };
2033
+ const deleteCredential = async (componentId, id, signal) => {
2034
+ await client.delete(
2035
+ "/credentials/{componentId}/{id}",
2036
+ { path: { componentId, id } },
2037
+ { signal }
2038
+ );
2039
+ };
2040
+ return {
2041
+ getCredentials,
2042
+ getCredential,
2043
+ createCredential,
2044
+ deleteCredential
2045
+ };
2046
+ };
2047
+
1962
2048
  // src/clients/queryService/queryServiceClient.ts
1963
2049
  var createQueryServiceClient = ({ baseUrl, middlewares }) => {
1964
2050
  const client = createOpenapiFetchClient({
@@ -2114,7 +2200,6 @@ var createMergeRequests = (client) => {
2114
2200
  const getMergeRequestWithActivityLog = async (id, signal) => {
2115
2201
  const { data } = await client.get(
2116
2202
  "/v2/storage/merge-request/{id}",
2117
- // @ts-expect-error backend accepts `?include=activityLog`; OpenAPI schema regen pending (connection#7250).
2118
2203
  { path: { id }, query: { include: "activityLog" } },
2119
2204
  { signal }
2120
2205
  );
@@ -2146,11 +2231,18 @@ var createMergeRequests = (client) => {
2146
2231
  const requestChangesMergeRequest = async (id, reason) => {
2147
2232
  const { data } = await client.put("/v2/storage/merge-request/{id}/request-changes", {
2148
2233
  path: { id },
2149
- // @ts-expect-error backend accepts optional `{ reason }` body; OpenAPI schema regen pending (connection#7250).
2150
2234
  body: reason ? { reason } : void 0
2151
2235
  });
2152
2236
  return data;
2153
2237
  };
2238
+ const getMergeRequestConflicts = async (id, signal) => {
2239
+ const { data } = await client.get(
2240
+ "/v2/storage/merge-request/{id}/conflicts",
2241
+ { path: { id } },
2242
+ { signal }
2243
+ );
2244
+ return data;
2245
+ };
2154
2246
  return {
2155
2247
  getMergeRequests,
2156
2248
  getMergeRequest,
@@ -2159,7 +2251,8 @@ var createMergeRequests = (client) => {
2159
2251
  updateMergeRequest,
2160
2252
  requestReview,
2161
2253
  approveMergeRequest,
2162
- requestChangesMergeRequest
2254
+ requestChangesMergeRequest,
2255
+ getMergeRequestConflicts
2163
2256
  };
2164
2257
  };
2165
2258
 
@@ -3674,6 +3767,11 @@ var createClients = async ({
3674
3767
  baseUrl: serviceBaseUrl,
3675
3768
  middlewares: commonMiddlewares
3676
3769
  })
3770
+ },
3771
+ {
3772
+ serviceId: "oauth",
3773
+ clientName: "oauth",
3774
+ clientFn: (serviceBaseUrl) => createOauthClient({ baseUrl: serviceBaseUrl, middlewares: commonMiddlewares })
3677
3775
  }
3678
3776
  ]
3679
3777
  });
@@ -3843,7 +3941,12 @@ var createLoggingMiddleware = (options = {}) => {
3843
3941
 
3844
3942
  // src/middlewares/retryMiddleware.ts
3845
3943
  var DEFAULT_MAX_RETRIES = 5;
3846
- var DEFAULT_RETRYABLE_STATUSES = [500, 502, 503, 504];
3944
+ var DEFAULT_RETRYABLE_STATUSES = [
3945
+ HttpStatus.INTERNAL_SERVER_ERROR,
3946
+ HttpStatus.BAD_GATEWAY,
3947
+ HttpStatus.SERVICE_UNAVAILABLE,
3948
+ HttpStatus.GATEWAY_TIMEOUT
3949
+ ];
3847
3950
  var DEFAULT_BACKOFF_FACTOR = 0.3;
3848
3951
  var defaultShouldRetry = (error) => error instanceof ApiError && DEFAULT_RETRYABLE_STATUSES.includes(error.response.status);
3849
3952
  var createRetryMiddleware = (options) => {