@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.js CHANGED
@@ -45,6 +45,25 @@ var ServiceUnavailableError = class _ServiceUnavailableError extends Error {
45
45
  Object.setPrototypeOf(this, _ServiceUnavailableError.prototype);
46
46
  }
47
47
  };
48
+
49
+ // src/constants.ts
50
+ var KeboolaHttpHeader = {
51
+ STORAGE_API_TOKEN: "X-StorageApi-Token",
52
+ MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
53
+ STORAGE_API_URL: "x-storageapi-url"
54
+ };
55
+ var HttpStatus = {
56
+ NO_CONTENT: 204,
57
+ BAD_REQUEST: 400,
58
+ UNPROCESSABLE_ENTITY: 422,
59
+ INTERNAL_SERVER_ERROR: 500,
60
+ BAD_GATEWAY: 502,
61
+ SERVICE_UNAVAILABLE: 503,
62
+ GATEWAY_TIMEOUT: 504
63
+ };
64
+ var ENCRYPTED_VALUE_PREFIX = "KBC::";
65
+
66
+ // src/fetchClient/createFetchClient/utils.ts
48
67
  var HttpHeader = {
49
68
  CONTENT_TYPE: "content-type",
50
69
  CONTENT_DISPOSITION: "content-disposition"
@@ -64,7 +83,7 @@ function removeUndefined(obj) {
64
83
  return objCopy;
65
84
  }
66
85
  var parseData = async (response) => {
67
- if (response.status === 204) return null;
86
+ if (response.status === HttpStatus.NO_CONTENT) return null;
68
87
  const contentType = response.headers.get(HttpHeader.CONTENT_TYPE);
69
88
  if (contentType && contentType == HttpContentType.JSON) {
70
89
  return response.json();
@@ -284,14 +303,6 @@ var createAssetsClient = ({ baseUrl, middlewares }) => {
284
303
  getPublishedChangelogPosts
285
304
  };
286
305
  };
287
-
288
- // src/constants.ts
289
- var KeboolaHttpHeader = {
290
- STORAGE_API_TOKEN: "X-StorageApi-Token",
291
- MANAGEMENT_API_TOKEN: "X-Kbc-Manageapitoken",
292
- STORAGE_API_URL: "x-storageapi-url"
293
- };
294
- var ENCRYPTED_VALUE_PREFIX = "KBC::";
295
306
  var SUGGESTION_CATEGORIES = ["error", "maintenance", "documentation"];
296
307
  var suggestionCategorySchema = z.enum(SUGGESTION_CATEGORIES);
297
308
  var suggestionSchema = z.object({
@@ -692,7 +703,7 @@ var createDataScienceClient = ({ baseUrl, middlewares }) => {
692
703
  nextLogTimestamp
693
704
  };
694
705
  } catch (error) {
695
- if (isApiError(error) && error.response.status === 400 && TailError.safeParse(error.data).data?.context?.code === "apps.appNotRunning") {
706
+ if (isApiError(error) && error.response.status === HttpStatus.BAD_REQUEST && TailError.safeParse(error.data).data?.context?.code === "apps.appNotRunning") {
696
707
  return { entries: [], nextLogTimestamp: null };
697
708
  }
698
709
  throw error;
@@ -835,14 +846,6 @@ var createEditorClient = ({ baseUrl, middlewares }) => {
835
846
  });
836
847
  return data;
837
848
  };
838
- const getWorkspacePassword = async (id, signal) => {
839
- const { data } = await client.get(
840
- `/sql/sessions/{id}/workspace-password`,
841
- { path: { id } },
842
- { signal }
843
- );
844
- return data;
845
- };
846
849
  const resetWorkspacePassword = async (id) => {
847
850
  const { data } = await client.post(`/sql/sessions/{id}/reset-password`, {
848
851
  path: { id }
@@ -867,7 +870,6 @@ var createEditorClient = ({ baseUrl, middlewares }) => {
867
870
  tableDefinition,
868
871
  load,
869
872
  unload,
870
- getWorkspacePassword,
871
873
  resetWorkspacePassword,
872
874
  getSessionCredentials
873
875
  };
@@ -996,6 +998,10 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
996
998
  const submitToolOutput = async (chatId, body) => {
997
999
  await client.post("/api/chat/{id}/ui-tool-result", { path: { id: chatId }, body });
998
1000
  };
1001
+ const stopChat = async (chatId) => {
1002
+ const { data } = await client.post("/api/chat/{id}/stop", { path: { id: chatId } });
1003
+ return data;
1004
+ };
999
1005
  const getSuggestions = async (request, signal) => {
1000
1006
  const { data } = await genericClient.post(
1001
1007
  "/api/suggestions",
@@ -1075,6 +1081,7 @@ var createKaiAgentClient = ({ baseUrl, middlewares }) => {
1075
1081
  getUsage,
1076
1082
  approveToolCall,
1077
1083
  submitToolOutput,
1084
+ stopChat,
1078
1085
  getSuggestions,
1079
1086
  getAgentSettings,
1080
1087
  updateAgentSettings,
@@ -1108,6 +1115,7 @@ var createVerifyClient = () => {
1108
1115
  };
1109
1116
 
1110
1117
  // src/clients/management/authMiddleware.ts
1118
+ var TOKEN_CACHE_TTL_MS = 6e4;
1111
1119
  var isManagementClientAuthError = (error) => error instanceof ManagementClientAuthError;
1112
1120
  var createAuth = (baseUrl) => {
1113
1121
  const fetchClient = createGenericFetchClient({ baseUrl });
@@ -1153,18 +1161,34 @@ var createAuthMiddleware = ({
1153
1161
  const auth = createAuth(baseUrl);
1154
1162
  const verify = createVerifyClient();
1155
1163
  let token = accessToken;
1164
+ let tokenValidUntil = 0;
1165
+ let inflightAuth = null;
1156
1166
  const isDevelopment = process.env.NODE_ENV === "development";
1157
- return (next) => async (request) => {
1158
- if (!!token) {
1167
+ const ensureValidToken = async () => {
1168
+ if (token && Date.now() < tokenValidUntil) return token;
1169
+ if (token) {
1159
1170
  const tokenInfo = await verify.managementApiToken(baseUrl, token);
1160
1171
  const isTokenValid = !tokenInfo.isDisabled && !tokenInfo.isExpired;
1161
- if (!isTokenValid) {
1162
- token = isDevelopment ? await auth.createCurrentUserSessionToken(token) : await auth.createAdminAccountSessionToken();
1172
+ if (isTokenValid) {
1173
+ tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
1174
+ return token;
1163
1175
  }
1164
- } else {
1165
- token = await auth.createAdminAccountSessionToken();
1176
+ token = isDevelopment ? await auth.createCurrentUserSessionToken(token) : await auth.createAdminAccountSessionToken();
1177
+ tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
1178
+ return token;
1166
1179
  }
1167
- request.request.headers.set(KeboolaHttpHeader.MANAGEMENT_API_TOKEN, token);
1180
+ token = await auth.createAdminAccountSessionToken();
1181
+ tokenValidUntil = Date.now() + TOKEN_CACHE_TTL_MS;
1182
+ return token;
1183
+ };
1184
+ return (next) => async (request) => {
1185
+ if (!inflightAuth) {
1186
+ inflightAuth = ensureValidToken().finally(() => {
1187
+ inflightAuth = null;
1188
+ });
1189
+ }
1190
+ const validToken = await inflightAuth;
1191
+ request.request.headers.set(KeboolaHttpHeader.MANAGEMENT_API_TOKEN, validToken);
1168
1192
  return next(request);
1169
1193
  };
1170
1194
  };
@@ -1368,14 +1392,6 @@ var createMaintainers = (client) => {
1368
1392
  path: { id: maintainerId, invitationId }
1369
1393
  });
1370
1394
  };
1371
- const getMaintainerOrganizations = async (maintainerId, signal) => {
1372
- const { data } = await client.get(
1373
- "/manage/maintainers/{id}/organizations",
1374
- { path: { id: maintainerId } },
1375
- { signal }
1376
- );
1377
- return data;
1378
- };
1379
1395
  const createMaintainerOrganization = async ({
1380
1396
  maintainerId,
1381
1397
  ...body
@@ -1425,7 +1441,6 @@ var createMaintainers = (client) => {
1425
1441
  getMaintainerInvitation,
1426
1442
  createMaintainerInvitation,
1427
1443
  deleteMaintainerInvitation,
1428
- getMaintainerOrganizations,
1429
1444
  createMaintainerOrganization,
1430
1445
  getMaintainerMetadata,
1431
1446
  setMaintainerMetadata,
@@ -1747,13 +1762,18 @@ var createManagementClient = ({
1747
1762
  baseUrl,
1748
1763
  middlewares
1749
1764
  });
1765
+ const verifyToken = async (signal) => {
1766
+ const { data } = await openApiClient.get("/manage/tokens/verify", {}, { signal });
1767
+ return data;
1768
+ };
1750
1769
  return {
1751
1770
  currentUser: createCurrentUser(openApiClient),
1752
1771
  features: createFeatures(client),
1753
1772
  maintainers: createMaintainers(openApiClient),
1754
1773
  organizations: createOrganizations(openApiClient),
1755
1774
  projects: createProjects(client),
1756
- users: createUsers(client)
1775
+ users: createUsers(client),
1776
+ verifyToken
1757
1777
  };
1758
1778
  };
1759
1779
 
@@ -1933,6 +1953,72 @@ var createMetastoreClient = ({ baseUrl, middlewares }) => {
1933
1953
  };
1934
1954
  };
1935
1955
 
1956
+ // src/clients/oauth/oauthClient.ts
1957
+ var createOauthClient = ({ baseUrl, middlewares }) => {
1958
+ const client = createGenericFetchClient({ baseUrl, middlewares });
1959
+ const getCredentials = async (query, signal) => {
1960
+ const { data } = await client.get(
1961
+ "/credentials",
1962
+ { query },
1963
+ { signal }
1964
+ );
1965
+ return data;
1966
+ };
1967
+ const getCredential = async (componentId, id, signal) => {
1968
+ const { data } = await client.get(
1969
+ "/credentials/{componentId}/{id}",
1970
+ { path: { componentId, id } },
1971
+ { signal }
1972
+ );
1973
+ return data;
1974
+ };
1975
+ const _createCredentials = async (componentId, body, signal) => {
1976
+ const { data } = await client.post(
1977
+ "/credentials/{componentId}",
1978
+ { path: { componentId }, body },
1979
+ { signal }
1980
+ );
1981
+ return data;
1982
+ };
1983
+ const _createLegacyCredentials = async (componentId, { data: credentialsData, ...rest }, signal) => {
1984
+ const { data } = await client.post(
1985
+ "/credentials/{componentId}",
1986
+ {
1987
+ path: { componentId },
1988
+ body: {
1989
+ ...rest,
1990
+ "#data": JSON.stringify(credentialsData)
1991
+ }
1992
+ },
1993
+ { signal }
1994
+ );
1995
+ return data;
1996
+ };
1997
+ const createCredential = async (componentId, body, signal) => {
1998
+ try {
1999
+ return await _createCredentials(componentId, body, signal);
2000
+ } catch (error) {
2001
+ if (isApiError(error) && error.response.status === HttpStatus.UNPROCESSABLE_ENTITY) {
2002
+ return _createLegacyCredentials(componentId, body, signal);
2003
+ }
2004
+ throw error;
2005
+ }
2006
+ };
2007
+ const deleteCredential = async (componentId, id, signal) => {
2008
+ await client.delete(
2009
+ "/credentials/{componentId}/{id}",
2010
+ { path: { componentId, id } },
2011
+ { signal }
2012
+ );
2013
+ };
2014
+ return {
2015
+ getCredentials,
2016
+ getCredential,
2017
+ createCredential,
2018
+ deleteCredential
2019
+ };
2020
+ };
2021
+
1936
2022
  // src/clients/queryService/queryServiceClient.ts
1937
2023
  var createQueryServiceClient = ({ baseUrl, middlewares }) => {
1938
2024
  const client = createOpenapiFetchClient({
@@ -2088,7 +2174,6 @@ var createMergeRequests = (client) => {
2088
2174
  const getMergeRequestWithActivityLog = async (id, signal) => {
2089
2175
  const { data } = await client.get(
2090
2176
  "/v2/storage/merge-request/{id}",
2091
- // @ts-expect-error backend accepts `?include=activityLog`; OpenAPI schema regen pending (connection#7250).
2092
2177
  { path: { id }, query: { include: "activityLog" } },
2093
2178
  { signal }
2094
2179
  );
@@ -2120,11 +2205,18 @@ var createMergeRequests = (client) => {
2120
2205
  const requestChangesMergeRequest = async (id, reason) => {
2121
2206
  const { data } = await client.put("/v2/storage/merge-request/{id}/request-changes", {
2122
2207
  path: { id },
2123
- // @ts-expect-error backend accepts optional `{ reason }` body; OpenAPI schema regen pending (connection#7250).
2124
2208
  body: reason ? { reason } : void 0
2125
2209
  });
2126
2210
  return data;
2127
2211
  };
2212
+ const getMergeRequestConflicts = async (id, signal) => {
2213
+ const { data } = await client.get(
2214
+ "/v2/storage/merge-request/{id}/conflicts",
2215
+ { path: { id } },
2216
+ { signal }
2217
+ );
2218
+ return data;
2219
+ };
2128
2220
  return {
2129
2221
  getMergeRequests,
2130
2222
  getMergeRequest,
@@ -2133,7 +2225,8 @@ var createMergeRequests = (client) => {
2133
2225
  updateMergeRequest,
2134
2226
  requestReview,
2135
2227
  approveMergeRequest,
2136
- requestChangesMergeRequest
2228
+ requestChangesMergeRequest,
2229
+ getMergeRequestConflicts
2137
2230
  };
2138
2231
  };
2139
2232
 
@@ -3648,6 +3741,11 @@ var createClients = async ({
3648
3741
  baseUrl: serviceBaseUrl,
3649
3742
  middlewares: commonMiddlewares
3650
3743
  })
3744
+ },
3745
+ {
3746
+ serviceId: "oauth",
3747
+ clientName: "oauth",
3748
+ clientFn: (serviceBaseUrl) => createOauthClient({ baseUrl: serviceBaseUrl, middlewares: commonMiddlewares })
3651
3749
  }
3652
3750
  ]
3653
3751
  });
@@ -3817,7 +3915,12 @@ var createLoggingMiddleware = (options = {}) => {
3817
3915
 
3818
3916
  // src/middlewares/retryMiddleware.ts
3819
3917
  var DEFAULT_MAX_RETRIES = 5;
3820
- var DEFAULT_RETRYABLE_STATUSES = [500, 502, 503, 504];
3918
+ var DEFAULT_RETRYABLE_STATUSES = [
3919
+ HttpStatus.INTERNAL_SERVER_ERROR,
3920
+ HttpStatus.BAD_GATEWAY,
3921
+ HttpStatus.SERVICE_UNAVAILABLE,
3922
+ HttpStatus.GATEWAY_TIMEOUT
3923
+ ];
3821
3924
  var DEFAULT_BACKOFF_FACTOR = 0.3;
3822
3925
  var defaultShouldRetry = (error) => error instanceof ApiError && DEFAULT_RETRYABLE_STATUSES.includes(error.response.status);
3823
3926
  var createRetryMiddleware = (options) => {