From f114424bd05a7ed2266dc470c9bb9ceed99e9ef6 Mon Sep 17 00:00:00 2001
From: "hotdata-automation[bot]"
<267177015+hotdata-automation[bot]@users.noreply.github.com>
Date: Wed, 18 Mar 2026 19:12:24 +0000
Subject: [PATCH] chore: regenerate client from OpenAPI spec
---
.gitignore | 8 +-
.npmignore | 1 +
.openapi-generator-ignore | 23 +
.openapi-generator/FILES | 217 +++++++
.openapi-generator/VERSION | 1 +
README.md | 257 ++++++++
docs/ApiErrorDetail.md | 37 ++
docs/ApiErrorResponse.md | 35 ++
docs/BooleanProfileDetail.md | 37 ++
docs/CategoricalProfileDetail.md | 35 ++
docs/CategoryValueInfo.md | 37 ++
docs/ColumnInfo.md | 39 ++
docs/ColumnProfileDetail.md | 52 ++
docs/ColumnProfileDetailOneOf.md | 36 ++
docs/ColumnProfileDetailOneOf1.md | 40 ++
docs/ColumnProfileDetailOneOf2.md | 40 ++
docs/ColumnProfileDetailOneOf3.md | 38 ++
docs/ColumnProfileDetailOneOf4.md | 38 ++
docs/ColumnProfileInfo.md | 45 ++
docs/ColumnTypeSpec.md | 43 ++
docs/ConnectionHealthResponse.md | 41 ++
docs/ConnectionInfo.md | 39 ++
docs/ConnectionRefreshResult.md | 47 ++
docs/ConnectionSchemaError.md | 37 ++
docs/ConnectionTypeDetail.md | 40 ++
docs/ConnectionTypeSummary.md | 36 ++
docs/ConnectionTypesApi.md | 145 +++++
docs/ConnectionsApi.md | 596 +++++++++++++++++++
docs/CreateConnectionRequest.md | 43 ++
docs/CreateConnectionResponse.md | 45 ++
docs/CreateDatasetRequest.md | 39 ++
docs/CreateDatasetResponse.md | 43 ++
docs/CreateIndexRequest.md | 45 ++
docs/CreateSavedQueryRequest.md | 41 ++
docs/CreateSecretRequest.md | 37 ++
docs/CreateSecretResponse.md | 39 ++
docs/CreateWorkspaceRequest.md | 36 ++
docs/CreateWorkspaceResponse.md | 36 ++
docs/DatasetSource.md | 53 ++
docs/DatasetSummary.md | 47 ++
docs/DatasetVersionSummary.md | 41 ++
docs/DatasetsApi.md | 449 ++++++++++++++
docs/DiscoveryStatus.md | 33 +
docs/ExecuteSavedQueryRequest.md | 35 ++
docs/GetConnectionResponse.md | 43 ++
docs/GetDatasetResponse.md | 53 ++
docs/GetResultResponse.md | 47 ++
docs/GetSecretResponse.md | 39 ++
docs/IndexInfoResponse.md | 51 ++
docs/IndexStatus.md | 33 +
docs/IndexesApi.md | 254 ++++++++
docs/InformationSchemaApi.md | 96 +++
docs/InformationSchemaResponse.md | 43 ++
docs/InlineData.md | 39 ++
docs/InlineDatasetSource.md | 35 ++
docs/ListConnectionTypesResponse.md | 34 ++
docs/ListConnectionsResponse.md | 35 ++
docs/ListDatasetVersionsResponse.md | 45 ++
docs/ListDatasetsResponse.md | 43 ++
docs/ListIndexesResponse.md | 35 ++
docs/ListQueryRunsResponse.md | 43 ++
docs/ListResultsResponse.md | 43 ++
docs/ListSavedQueriesResponse.md | 43 ++
docs/ListSavedQueryVersionsResponse.md | 45 ++
docs/ListSecretsResponse.md | 35 ++
docs/ListUploadsResponse.md | 35 ++
docs/ListWorkspacesResponse.md | 36 ++
docs/ModelError.md | 34 ++
docs/NumericProfileDetail.md | 39 ++
docs/QueryApi.md | 82 +++
docs/QueryRequest.md | 35 ++
docs/QueryResponse.md | 49 ++
docs/QueryRunInfo.md | 63 ++
docs/QueryRunsApi.md | 81 +++
docs/RefreshApi.md | 82 +++
docs/RefreshDatasetResponse.md | 41 ++
docs/RefreshRequest.md | 45 ++
docs/RefreshResponse.md | 71 +++
docs/RefreshWarning.md | 39 ++
docs/ResultInfo.md | 41 ++
docs/ResultsApi.md | 154 +++++
docs/SavedQueriesApi.md | 526 ++++++++++++++++
docs/SavedQueryDatasetSource.md | 37 ++
docs/SavedQueryDetail.md | 69 +++
docs/SavedQuerySummary.md | 47 ++
docs/SavedQueryVersionInfo.md | 59 ++
docs/SchemaRefreshResult.md | 45 ++
docs/SecretMetadataResponse.md | 39 ++
docs/SecretsApi.md | 363 +++++++++++
docs/SqlQueryDatasetSource.md | 39 ++
docs/TableInfo.md | 45 ++
docs/TableProfileResponse.md | 45 ++
docs/TableRefreshError.md | 39 ++
docs/TableRefreshResult.md | 45 ++
docs/TemporalProfileDetail.md | 37 ++
docs/TextProfileDetail.md | 39 ++
docs/UpdateDatasetRequest.md | 39 ++
docs/UpdateDatasetResponse.md | 45 ++
docs/UpdateSavedQueryRequest.md | 45 ++
docs/UpdateSecretRequest.md | 35 ++
docs/UpdateSecretResponse.md | 37 ++
docs/UploadDatasetSource.md | 39 ++
docs/UploadInfo.md | 43 ++
docs/UploadResponse.md | 43 ++
docs/UploadsApi.md | 151 +++++
docs/UrlDatasetSource.md | 39 ++
docs/WorkspaceDetail.md | 40 ++
docs/WorkspaceListItem.md | 44 ++
docs/WorkspacesApi.md | 160 +++++
openapitools.json | 7 +
package.json | 23 +-
src/apis/ConnectionTypesApi.ts | 142 +++++
src/apis/ConnectionsApi.ts | 543 +++++++++++++++++
src/apis/DatasetsApi.ts | 418 +++++++++++++
src/apis/IndexesApi.ts | 289 +++++++++
src/apis/InformationSchemaApi.ts | 113 ++++
src/apis/QueryApi.ts | 97 +++
src/apis/QueryRunsApi.ts | 88 +++
src/apis/RefreshApi.ts | 97 +++
src/apis/ResultsApi.ts | 153 +++++
src/apis/SavedQueriesApi.ts | 483 +++++++++++++++
src/apis/SecretsApi.ts | 339 +++++++++++
src/apis/UploadsApi.ts | 150 +++++
src/apis/WorkspacesApi.ts | 152 +++++
src/apis/index.ts | 15 +
src/client.ts | 33 -
src/index.ts | 7 +-
src/models/ApiErrorDetail.ts | 75 +++
src/models/ApiErrorResponse.ts | 74 +++
src/models/BooleanProfileDetail.ts | 75 +++
src/models/CategoricalProfileDetail.ts | 83 +++
src/models/CategoryValueInfo.ts | 74 +++
src/models/ColumnInfo.ts | 84 +++
src/models/ColumnProfileDetail.ts | 115 ++++
src/models/ColumnProfileDetailOneOf.ts | 93 +++
src/models/ColumnProfileDetailOneOf1.ts | 103 ++++
src/models/ColumnProfileDetailOneOf2.ts | 103 ++++
src/models/ColumnProfileDetailOneOf3.ts | 94 +++
src/models/ColumnProfileDetailOneOf4.ts | 94 +++
src/models/ColumnProfileInfo.ts | 118 ++++
src/models/ColumnTypeSpec.ts | 101 ++++
src/models/ConnectionHealthResponse.ts | 92 +++
src/models/ConnectionInfo.ts | 84 +++
src/models/ConnectionRefreshResult.ts | 134 +++++
src/models/ConnectionSchemaError.ts | 75 +++
src/models/ConnectionTypeDetail.ts | 91 +++
src/models/ConnectionTypeSummary.ts | 75 +++
src/models/CreateConnectionRequest.ts | 104 ++++
src/models/CreateConnectionResponse.ts | 120 ++++
src/models/CreateDatasetRequest.ts | 91 +++
src/models/CreateDatasetResponse.ts | 102 ++++
src/models/CreateIndexRequest.ts | 107 ++++
src/models/CreateSavedQueryRequest.ts | 91 +++
src/models/CreateSecretRequest.ts | 75 +++
src/models/CreateSecretResponse.ts | 84 +++
src/models/CreateWorkspaceRequest.ts | 74 +++
src/models/CreateWorkspaceResponse.ts | 83 +++
src/models/DatasetSource.ts | 115 ++++
src/models/DatasetSummary.ts | 119 ++++
src/models/DatasetVersionSummary.ts | 93 +++
src/models/DiscoveryStatus.ts | 54 ++
src/models/ExecuteSavedQueryRequest.ts | 65 ++
src/models/GetConnectionResponse.ts | 102 ++++
src/models/GetDatasetResponse.ts | 154 +++++
src/models/GetResultResponse.ts | 116 ++++
src/models/GetSecretResponse.ts | 84 +++
src/models/IndexInfoResponse.ts | 147 +++++
src/models/IndexStatus.ts | 53 ++
src/models/InformationSchemaResponse.ts | 109 ++++
src/models/InlineData.ts | 84 +++
src/models/InlineDatasetSource.ts | 74 +++
src/models/ListConnectionTypesResponse.ts | 74 +++
src/models/ListConnectionsResponse.ts | 74 +++
src/models/ListDatasetVersionsResponse.ts | 119 ++++
src/models/ListDatasetsResponse.ts | 110 ++++
src/models/ListIndexesResponse.ts | 74 +++
src/models/ListQueryRunsResponse.ts | 109 ++++
src/models/ListResultsResponse.ts | 110 ++++
src/models/ListSavedQueriesResponse.ts | 110 ++++
src/models/ListSavedQueryVersionsResponse.ts | 119 ++++
src/models/ListSecretsResponse.ts | 74 +++
src/models/ListUploadsResponse.ts | 74 +++
src/models/ListWorkspacesResponse.ts | 83 +++
src/models/ModelError.ts | 66 ++
src/models/NumericProfileDetail.ts | 84 +++
src/models/QueryRequest.ts | 66 ++
src/models/QueryResponse.ts | 141 +++++
src/models/QueryRunInfo.ts | 183 ++++++
src/models/RefreshDatasetResponse.ts | 93 +++
src/models/RefreshRequest.ts | 114 ++++
src/models/RefreshResponse.ts | 102 ++++
src/models/RefreshWarning.ts | 84 +++
src/models/ResultInfo.ts | 92 +++
src/models/SavedQueryDatasetSource.ts | 74 +++
src/models/SavedQueryDetail.ts | 210 +++++++
src/models/SavedQuerySummary.ts | 120 ++++
src/models/SavedQueryVersionInfo.ts | 165 +++++
src/models/SchemaRefreshResult.ts | 118 ++++
src/models/SecretMetadataResponse.ts | 84 +++
src/models/SqlQueryDatasetSource.ts | 82 +++
src/models/TableInfo.ts | 117 ++++
src/models/TableProfileResponse.ts | 119 ++++
src/models/TableRefreshError.ts | 84 +++
src/models/TableRefreshResult.ts | 118 ++++
src/models/TemporalProfileDetail.ts | 75 +++
src/models/TextProfileDetail.ts | 84 +++
src/models/UpdateDatasetRequest.ts | 82 +++
src/models/UpdateDatasetResponse.ts | 110 ++++
src/models/UpdateSavedQueryRequest.ts | 105 ++++
src/models/UpdateSecretRequest.ts | 66 ++
src/models/UpdateSecretResponse.ts | 75 +++
src/models/UploadDatasetSource.ts | 83 +++
src/models/UploadInfo.ts | 101 ++++
src/models/UploadResponse.ts | 101 ++++
src/models/UrlDatasetSource.ts | 82 +++
src/models/WorkspaceDetail.ts | 93 +++
src/models/WorkspaceListItem.ts | 111 ++++
src/models/index.ts | 92 +++
src/runtime.ts | 432 ++++++++++++++
tsconfig.esm.json | 7 +
tsconfig.json | 18 +-
221 files changed, 19790 insertions(+), 56 deletions(-)
create mode 100644 .npmignore
create mode 100644 .openapi-generator-ignore
create mode 100644 .openapi-generator/FILES
create mode 100644 .openapi-generator/VERSION
create mode 100644 README.md
create mode 100644 docs/ApiErrorDetail.md
create mode 100644 docs/ApiErrorResponse.md
create mode 100644 docs/BooleanProfileDetail.md
create mode 100644 docs/CategoricalProfileDetail.md
create mode 100644 docs/CategoryValueInfo.md
create mode 100644 docs/ColumnInfo.md
create mode 100644 docs/ColumnProfileDetail.md
create mode 100644 docs/ColumnProfileDetailOneOf.md
create mode 100644 docs/ColumnProfileDetailOneOf1.md
create mode 100644 docs/ColumnProfileDetailOneOf2.md
create mode 100644 docs/ColumnProfileDetailOneOf3.md
create mode 100644 docs/ColumnProfileDetailOneOf4.md
create mode 100644 docs/ColumnProfileInfo.md
create mode 100644 docs/ColumnTypeSpec.md
create mode 100644 docs/ConnectionHealthResponse.md
create mode 100644 docs/ConnectionInfo.md
create mode 100644 docs/ConnectionRefreshResult.md
create mode 100644 docs/ConnectionSchemaError.md
create mode 100644 docs/ConnectionTypeDetail.md
create mode 100644 docs/ConnectionTypeSummary.md
create mode 100644 docs/ConnectionTypesApi.md
create mode 100644 docs/ConnectionsApi.md
create mode 100644 docs/CreateConnectionRequest.md
create mode 100644 docs/CreateConnectionResponse.md
create mode 100644 docs/CreateDatasetRequest.md
create mode 100644 docs/CreateDatasetResponse.md
create mode 100644 docs/CreateIndexRequest.md
create mode 100644 docs/CreateSavedQueryRequest.md
create mode 100644 docs/CreateSecretRequest.md
create mode 100644 docs/CreateSecretResponse.md
create mode 100644 docs/CreateWorkspaceRequest.md
create mode 100644 docs/CreateWorkspaceResponse.md
create mode 100644 docs/DatasetSource.md
create mode 100644 docs/DatasetSummary.md
create mode 100644 docs/DatasetVersionSummary.md
create mode 100644 docs/DatasetsApi.md
create mode 100644 docs/DiscoveryStatus.md
create mode 100644 docs/ExecuteSavedQueryRequest.md
create mode 100644 docs/GetConnectionResponse.md
create mode 100644 docs/GetDatasetResponse.md
create mode 100644 docs/GetResultResponse.md
create mode 100644 docs/GetSecretResponse.md
create mode 100644 docs/IndexInfoResponse.md
create mode 100644 docs/IndexStatus.md
create mode 100644 docs/IndexesApi.md
create mode 100644 docs/InformationSchemaApi.md
create mode 100644 docs/InformationSchemaResponse.md
create mode 100644 docs/InlineData.md
create mode 100644 docs/InlineDatasetSource.md
create mode 100644 docs/ListConnectionTypesResponse.md
create mode 100644 docs/ListConnectionsResponse.md
create mode 100644 docs/ListDatasetVersionsResponse.md
create mode 100644 docs/ListDatasetsResponse.md
create mode 100644 docs/ListIndexesResponse.md
create mode 100644 docs/ListQueryRunsResponse.md
create mode 100644 docs/ListResultsResponse.md
create mode 100644 docs/ListSavedQueriesResponse.md
create mode 100644 docs/ListSavedQueryVersionsResponse.md
create mode 100644 docs/ListSecretsResponse.md
create mode 100644 docs/ListUploadsResponse.md
create mode 100644 docs/ListWorkspacesResponse.md
create mode 100644 docs/ModelError.md
create mode 100644 docs/NumericProfileDetail.md
create mode 100644 docs/QueryApi.md
create mode 100644 docs/QueryRequest.md
create mode 100644 docs/QueryResponse.md
create mode 100644 docs/QueryRunInfo.md
create mode 100644 docs/QueryRunsApi.md
create mode 100644 docs/RefreshApi.md
create mode 100644 docs/RefreshDatasetResponse.md
create mode 100644 docs/RefreshRequest.md
create mode 100644 docs/RefreshResponse.md
create mode 100644 docs/RefreshWarning.md
create mode 100644 docs/ResultInfo.md
create mode 100644 docs/ResultsApi.md
create mode 100644 docs/SavedQueriesApi.md
create mode 100644 docs/SavedQueryDatasetSource.md
create mode 100644 docs/SavedQueryDetail.md
create mode 100644 docs/SavedQuerySummary.md
create mode 100644 docs/SavedQueryVersionInfo.md
create mode 100644 docs/SchemaRefreshResult.md
create mode 100644 docs/SecretMetadataResponse.md
create mode 100644 docs/SecretsApi.md
create mode 100644 docs/SqlQueryDatasetSource.md
create mode 100644 docs/TableInfo.md
create mode 100644 docs/TableProfileResponse.md
create mode 100644 docs/TableRefreshError.md
create mode 100644 docs/TableRefreshResult.md
create mode 100644 docs/TemporalProfileDetail.md
create mode 100644 docs/TextProfileDetail.md
create mode 100644 docs/UpdateDatasetRequest.md
create mode 100644 docs/UpdateDatasetResponse.md
create mode 100644 docs/UpdateSavedQueryRequest.md
create mode 100644 docs/UpdateSecretRequest.md
create mode 100644 docs/UpdateSecretResponse.md
create mode 100644 docs/UploadDatasetSource.md
create mode 100644 docs/UploadInfo.md
create mode 100644 docs/UploadResponse.md
create mode 100644 docs/UploadsApi.md
create mode 100644 docs/UrlDatasetSource.md
create mode 100644 docs/WorkspaceDetail.md
create mode 100644 docs/WorkspaceListItem.md
create mode 100644 docs/WorkspacesApi.md
create mode 100644 openapitools.json
create mode 100644 src/apis/ConnectionTypesApi.ts
create mode 100644 src/apis/ConnectionsApi.ts
create mode 100644 src/apis/DatasetsApi.ts
create mode 100644 src/apis/IndexesApi.ts
create mode 100644 src/apis/InformationSchemaApi.ts
create mode 100644 src/apis/QueryApi.ts
create mode 100644 src/apis/QueryRunsApi.ts
create mode 100644 src/apis/RefreshApi.ts
create mode 100644 src/apis/ResultsApi.ts
create mode 100644 src/apis/SavedQueriesApi.ts
create mode 100644 src/apis/SecretsApi.ts
create mode 100644 src/apis/UploadsApi.ts
create mode 100644 src/apis/WorkspacesApi.ts
create mode 100644 src/apis/index.ts
delete mode 100644 src/client.ts
create mode 100644 src/models/ApiErrorDetail.ts
create mode 100644 src/models/ApiErrorResponse.ts
create mode 100644 src/models/BooleanProfileDetail.ts
create mode 100644 src/models/CategoricalProfileDetail.ts
create mode 100644 src/models/CategoryValueInfo.ts
create mode 100644 src/models/ColumnInfo.ts
create mode 100644 src/models/ColumnProfileDetail.ts
create mode 100644 src/models/ColumnProfileDetailOneOf.ts
create mode 100644 src/models/ColumnProfileDetailOneOf1.ts
create mode 100644 src/models/ColumnProfileDetailOneOf2.ts
create mode 100644 src/models/ColumnProfileDetailOneOf3.ts
create mode 100644 src/models/ColumnProfileDetailOneOf4.ts
create mode 100644 src/models/ColumnProfileInfo.ts
create mode 100644 src/models/ColumnTypeSpec.ts
create mode 100644 src/models/ConnectionHealthResponse.ts
create mode 100644 src/models/ConnectionInfo.ts
create mode 100644 src/models/ConnectionRefreshResult.ts
create mode 100644 src/models/ConnectionSchemaError.ts
create mode 100644 src/models/ConnectionTypeDetail.ts
create mode 100644 src/models/ConnectionTypeSummary.ts
create mode 100644 src/models/CreateConnectionRequest.ts
create mode 100644 src/models/CreateConnectionResponse.ts
create mode 100644 src/models/CreateDatasetRequest.ts
create mode 100644 src/models/CreateDatasetResponse.ts
create mode 100644 src/models/CreateIndexRequest.ts
create mode 100644 src/models/CreateSavedQueryRequest.ts
create mode 100644 src/models/CreateSecretRequest.ts
create mode 100644 src/models/CreateSecretResponse.ts
create mode 100644 src/models/CreateWorkspaceRequest.ts
create mode 100644 src/models/CreateWorkspaceResponse.ts
create mode 100644 src/models/DatasetSource.ts
create mode 100644 src/models/DatasetSummary.ts
create mode 100644 src/models/DatasetVersionSummary.ts
create mode 100644 src/models/DiscoveryStatus.ts
create mode 100644 src/models/ExecuteSavedQueryRequest.ts
create mode 100644 src/models/GetConnectionResponse.ts
create mode 100644 src/models/GetDatasetResponse.ts
create mode 100644 src/models/GetResultResponse.ts
create mode 100644 src/models/GetSecretResponse.ts
create mode 100644 src/models/IndexInfoResponse.ts
create mode 100644 src/models/IndexStatus.ts
create mode 100644 src/models/InformationSchemaResponse.ts
create mode 100644 src/models/InlineData.ts
create mode 100644 src/models/InlineDatasetSource.ts
create mode 100644 src/models/ListConnectionTypesResponse.ts
create mode 100644 src/models/ListConnectionsResponse.ts
create mode 100644 src/models/ListDatasetVersionsResponse.ts
create mode 100644 src/models/ListDatasetsResponse.ts
create mode 100644 src/models/ListIndexesResponse.ts
create mode 100644 src/models/ListQueryRunsResponse.ts
create mode 100644 src/models/ListResultsResponse.ts
create mode 100644 src/models/ListSavedQueriesResponse.ts
create mode 100644 src/models/ListSavedQueryVersionsResponse.ts
create mode 100644 src/models/ListSecretsResponse.ts
create mode 100644 src/models/ListUploadsResponse.ts
create mode 100644 src/models/ListWorkspacesResponse.ts
create mode 100644 src/models/ModelError.ts
create mode 100644 src/models/NumericProfileDetail.ts
create mode 100644 src/models/QueryRequest.ts
create mode 100644 src/models/QueryResponse.ts
create mode 100644 src/models/QueryRunInfo.ts
create mode 100644 src/models/RefreshDatasetResponse.ts
create mode 100644 src/models/RefreshRequest.ts
create mode 100644 src/models/RefreshResponse.ts
create mode 100644 src/models/RefreshWarning.ts
create mode 100644 src/models/ResultInfo.ts
create mode 100644 src/models/SavedQueryDatasetSource.ts
create mode 100644 src/models/SavedQueryDetail.ts
create mode 100644 src/models/SavedQuerySummary.ts
create mode 100644 src/models/SavedQueryVersionInfo.ts
create mode 100644 src/models/SchemaRefreshResult.ts
create mode 100644 src/models/SecretMetadataResponse.ts
create mode 100644 src/models/SqlQueryDatasetSource.ts
create mode 100644 src/models/TableInfo.ts
create mode 100644 src/models/TableProfileResponse.ts
create mode 100644 src/models/TableRefreshError.ts
create mode 100644 src/models/TableRefreshResult.ts
create mode 100644 src/models/TemporalProfileDetail.ts
create mode 100644 src/models/TextProfileDetail.ts
create mode 100644 src/models/UpdateDatasetRequest.ts
create mode 100644 src/models/UpdateDatasetResponse.ts
create mode 100644 src/models/UpdateSavedQueryRequest.ts
create mode 100644 src/models/UpdateSecretRequest.ts
create mode 100644 src/models/UpdateSecretResponse.ts
create mode 100644 src/models/UploadDatasetSource.ts
create mode 100644 src/models/UploadInfo.ts
create mode 100644 src/models/UploadResponse.ts
create mode 100644 src/models/UrlDatasetSource.ts
create mode 100644 src/models/WorkspaceDetail.ts
create mode 100644 src/models/WorkspaceListItem.ts
create mode 100644 src/models/index.ts
create mode 100644 src/runtime.ts
create mode 100644 tsconfig.esm.json
diff --git a/.gitignore b/.gitignore
index 53c4997..149b576 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-node_modules/
-dist/
-.env
-*.tsbuildinfo
+wwwroot/*.js
+node_modules
+typings
+dist
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000..42061c0
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1 @@
+README.md
\ No newline at end of file
diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
new file mode 100644
index 0000000..595ffa8
--- /dev/null
+++ b/.openapi-generator/FILES
@@ -0,0 +1,217 @@
+.gitignore
+.npmignore
+.openapi-generator-ignore
+README.md
+docs/ApiErrorDetail.md
+docs/ApiErrorResponse.md
+docs/BooleanProfileDetail.md
+docs/CategoricalProfileDetail.md
+docs/CategoryValueInfo.md
+docs/ColumnInfo.md
+docs/ColumnProfileDetail.md
+docs/ColumnProfileDetailOneOf.md
+docs/ColumnProfileDetailOneOf1.md
+docs/ColumnProfileDetailOneOf2.md
+docs/ColumnProfileDetailOneOf3.md
+docs/ColumnProfileDetailOneOf4.md
+docs/ColumnProfileInfo.md
+docs/ColumnTypeSpec.md
+docs/ConnectionHealthResponse.md
+docs/ConnectionInfo.md
+docs/ConnectionRefreshResult.md
+docs/ConnectionSchemaError.md
+docs/ConnectionTypeDetail.md
+docs/ConnectionTypeSummary.md
+docs/ConnectionTypesApi.md
+docs/ConnectionsApi.md
+docs/CreateConnectionRequest.md
+docs/CreateConnectionResponse.md
+docs/CreateDatasetRequest.md
+docs/CreateDatasetResponse.md
+docs/CreateIndexRequest.md
+docs/CreateSavedQueryRequest.md
+docs/CreateSecretRequest.md
+docs/CreateSecretResponse.md
+docs/CreateWorkspaceRequest.md
+docs/CreateWorkspaceResponse.md
+docs/DatasetSource.md
+docs/DatasetSummary.md
+docs/DatasetVersionSummary.md
+docs/DatasetsApi.md
+docs/DiscoveryStatus.md
+docs/ExecuteSavedQueryRequest.md
+docs/GetConnectionResponse.md
+docs/GetDatasetResponse.md
+docs/GetResultResponse.md
+docs/GetSecretResponse.md
+docs/IndexInfoResponse.md
+docs/IndexStatus.md
+docs/IndexesApi.md
+docs/InformationSchemaApi.md
+docs/InformationSchemaResponse.md
+docs/InlineData.md
+docs/InlineDatasetSource.md
+docs/ListConnectionTypesResponse.md
+docs/ListConnectionsResponse.md
+docs/ListDatasetVersionsResponse.md
+docs/ListDatasetsResponse.md
+docs/ListIndexesResponse.md
+docs/ListQueryRunsResponse.md
+docs/ListResultsResponse.md
+docs/ListSavedQueriesResponse.md
+docs/ListSavedQueryVersionsResponse.md
+docs/ListSecretsResponse.md
+docs/ListUploadsResponse.md
+docs/ListWorkspacesResponse.md
+docs/ModelError.md
+docs/NumericProfileDetail.md
+docs/QueryApi.md
+docs/QueryRequest.md
+docs/QueryResponse.md
+docs/QueryRunInfo.md
+docs/QueryRunsApi.md
+docs/RefreshApi.md
+docs/RefreshDatasetResponse.md
+docs/RefreshRequest.md
+docs/RefreshResponse.md
+docs/RefreshWarning.md
+docs/ResultInfo.md
+docs/ResultsApi.md
+docs/SavedQueriesApi.md
+docs/SavedQueryDatasetSource.md
+docs/SavedQueryDetail.md
+docs/SavedQuerySummary.md
+docs/SavedQueryVersionInfo.md
+docs/SchemaRefreshResult.md
+docs/SecretMetadataResponse.md
+docs/SecretsApi.md
+docs/SqlQueryDatasetSource.md
+docs/TableInfo.md
+docs/TableProfileResponse.md
+docs/TableRefreshError.md
+docs/TableRefreshResult.md
+docs/TemporalProfileDetail.md
+docs/TextProfileDetail.md
+docs/UpdateDatasetRequest.md
+docs/UpdateDatasetResponse.md
+docs/UpdateSavedQueryRequest.md
+docs/UpdateSecretRequest.md
+docs/UpdateSecretResponse.md
+docs/UploadDatasetSource.md
+docs/UploadInfo.md
+docs/UploadResponse.md
+docs/UploadsApi.md
+docs/UrlDatasetSource.md
+docs/WorkspaceDetail.md
+docs/WorkspaceListItem.md
+docs/WorkspacesApi.md
+package.json
+src/apis/ConnectionTypesApi.ts
+src/apis/ConnectionsApi.ts
+src/apis/DatasetsApi.ts
+src/apis/IndexesApi.ts
+src/apis/InformationSchemaApi.ts
+src/apis/QueryApi.ts
+src/apis/QueryRunsApi.ts
+src/apis/RefreshApi.ts
+src/apis/ResultsApi.ts
+src/apis/SavedQueriesApi.ts
+src/apis/SecretsApi.ts
+src/apis/UploadsApi.ts
+src/apis/WorkspacesApi.ts
+src/apis/index.ts
+src/index.ts
+src/models/ApiErrorDetail.ts
+src/models/ApiErrorResponse.ts
+src/models/BooleanProfileDetail.ts
+src/models/CategoricalProfileDetail.ts
+src/models/CategoryValueInfo.ts
+src/models/ColumnInfo.ts
+src/models/ColumnProfileDetail.ts
+src/models/ColumnProfileDetailOneOf.ts
+src/models/ColumnProfileDetailOneOf1.ts
+src/models/ColumnProfileDetailOneOf2.ts
+src/models/ColumnProfileDetailOneOf3.ts
+src/models/ColumnProfileDetailOneOf4.ts
+src/models/ColumnProfileInfo.ts
+src/models/ColumnTypeSpec.ts
+src/models/ConnectionHealthResponse.ts
+src/models/ConnectionInfo.ts
+src/models/ConnectionRefreshResult.ts
+src/models/ConnectionSchemaError.ts
+src/models/ConnectionTypeDetail.ts
+src/models/ConnectionTypeSummary.ts
+src/models/CreateConnectionRequest.ts
+src/models/CreateConnectionResponse.ts
+src/models/CreateDatasetRequest.ts
+src/models/CreateDatasetResponse.ts
+src/models/CreateIndexRequest.ts
+src/models/CreateSavedQueryRequest.ts
+src/models/CreateSecretRequest.ts
+src/models/CreateSecretResponse.ts
+src/models/CreateWorkspaceRequest.ts
+src/models/CreateWorkspaceResponse.ts
+src/models/DatasetSource.ts
+src/models/DatasetSummary.ts
+src/models/DatasetVersionSummary.ts
+src/models/DiscoveryStatus.ts
+src/models/ExecuteSavedQueryRequest.ts
+src/models/GetConnectionResponse.ts
+src/models/GetDatasetResponse.ts
+src/models/GetResultResponse.ts
+src/models/GetSecretResponse.ts
+src/models/IndexInfoResponse.ts
+src/models/IndexStatus.ts
+src/models/InformationSchemaResponse.ts
+src/models/InlineData.ts
+src/models/InlineDatasetSource.ts
+src/models/ListConnectionTypesResponse.ts
+src/models/ListConnectionsResponse.ts
+src/models/ListDatasetVersionsResponse.ts
+src/models/ListDatasetsResponse.ts
+src/models/ListIndexesResponse.ts
+src/models/ListQueryRunsResponse.ts
+src/models/ListResultsResponse.ts
+src/models/ListSavedQueriesResponse.ts
+src/models/ListSavedQueryVersionsResponse.ts
+src/models/ListSecretsResponse.ts
+src/models/ListUploadsResponse.ts
+src/models/ListWorkspacesResponse.ts
+src/models/ModelError.ts
+src/models/NumericProfileDetail.ts
+src/models/QueryRequest.ts
+src/models/QueryResponse.ts
+src/models/QueryRunInfo.ts
+src/models/RefreshDatasetResponse.ts
+src/models/RefreshRequest.ts
+src/models/RefreshResponse.ts
+src/models/RefreshWarning.ts
+src/models/ResultInfo.ts
+src/models/SavedQueryDatasetSource.ts
+src/models/SavedQueryDetail.ts
+src/models/SavedQuerySummary.ts
+src/models/SavedQueryVersionInfo.ts
+src/models/SchemaRefreshResult.ts
+src/models/SecretMetadataResponse.ts
+src/models/SqlQueryDatasetSource.ts
+src/models/TableInfo.ts
+src/models/TableProfileResponse.ts
+src/models/TableRefreshError.ts
+src/models/TableRefreshResult.ts
+src/models/TemporalProfileDetail.ts
+src/models/TextProfileDetail.ts
+src/models/UpdateDatasetRequest.ts
+src/models/UpdateDatasetResponse.ts
+src/models/UpdateSavedQueryRequest.ts
+src/models/UpdateSecretRequest.ts
+src/models/UpdateSecretResponse.ts
+src/models/UploadDatasetSource.ts
+src/models/UploadInfo.ts
+src/models/UploadResponse.ts
+src/models/UrlDatasetSource.ts
+src/models/WorkspaceDetail.ts
+src/models/WorkspaceListItem.ts
+src/models/index.ts
+src/runtime.ts
+tsconfig.esm.json
+tsconfig.json
diff --git a/.openapi-generator/VERSION b/.openapi-generator/VERSION
new file mode 100644
index 0000000..2540a3a
--- /dev/null
+++ b/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.20.0
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b8e8481
--- /dev/null
+++ b/README.md
@@ -0,0 +1,257 @@
+# @hotdata/sdk@1.0.0
+
+A TypeScript SDK client for the app.hotdata.dev API.
+
+## Usage
+
+First, install the SDK from npm.
+
+```bash
+npm install @hotdata/sdk --save
+```
+
+Next, try it out.
+
+
+```ts
+import {
+ Configuration,
+ ConnectionTypesApi,
+} from '@hotdata/sdk';
+import type { GetConnectionTypeRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionTypesApi(config);
+
+ const body = {
+ // string | Connection type name (e.g. postgres, mysql, snowflake)
+ name: name_example,
+ } satisfies GetConnectionTypeRequest;
+
+ try {
+ const data = await api.getConnectionType(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+
+## Documentation
+
+### API Endpoints
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Class | Method | HTTP request | Description
+| ----- | ------ | ------------ | -------------
+*ConnectionTypesApi* | [**getConnectionType**](docs/ConnectionTypesApi.md#getconnectiontype) | **GET** /v1/connection-types/{name} | Get connection type details
+*ConnectionTypesApi* | [**listConnectionTypes**](docs/ConnectionTypesApi.md#listconnectiontypes) | **GET** /v1/connection-types | List connection types
+*ConnectionsApi* | [**checkConnectionHealth**](docs/ConnectionsApi.md#checkconnectionhealth) | **GET** /v1/connections/{connection_id}/health | Check connection health
+*ConnectionsApi* | [**createConnection**](docs/ConnectionsApi.md#createconnectionoperation) | **POST** /v1/connections | Create connection
+*ConnectionsApi* | [**deleteConnection**](docs/ConnectionsApi.md#deleteconnection) | **DELETE** /v1/connections/{connection_id} | Delete connection
+*ConnectionsApi* | [**getConnection**](docs/ConnectionsApi.md#getconnection) | **GET** /v1/connections/{connection_id} | Get connection
+*ConnectionsApi* | [**getTableProfile**](docs/ConnectionsApi.md#gettableprofile) | **GET** /v1/connections/{connection_id}/tables/{schema}/{table}/profile | Get table profile
+*ConnectionsApi* | [**listConnections**](docs/ConnectionsApi.md#listconnections) | **GET** /v1/connections | List connections
+*ConnectionsApi* | [**purgeConnectionCache**](docs/ConnectionsApi.md#purgeconnectioncache) | **DELETE** /v1/connections/{connection_id}/cache | Purge connection cache
+*ConnectionsApi* | [**purgeTableCache**](docs/ConnectionsApi.md#purgetablecache) | **DELETE** /v1/connections/{connection_id}/tables/{schema}/{table}/cache | Purge table cache
+*DatasetsApi* | [**createDataset**](docs/DatasetsApi.md#createdatasetoperation) | **POST** /v1/datasets | Create dataset
+*DatasetsApi* | [**deleteDataset**](docs/DatasetsApi.md#deletedataset) | **DELETE** /v1/datasets/{id} | Delete dataset
+*DatasetsApi* | [**getDataset**](docs/DatasetsApi.md#getdataset) | **GET** /v1/datasets/{id} | Get dataset
+*DatasetsApi* | [**listDatasetVersions**](docs/DatasetsApi.md#listdatasetversions) | **GET** /v1/datasets/{id}/versions | List dataset versions
+*DatasetsApi* | [**listDatasets**](docs/DatasetsApi.md#listdatasets) | **GET** /v1/datasets | List datasets
+*DatasetsApi* | [**updateDataset**](docs/DatasetsApi.md#updatedatasetoperation) | **PUT** /v1/datasets/{id} | Update dataset
+*IndexesApi* | [**createIndex**](docs/IndexesApi.md#createindexoperation) | **POST** /v1/connections/{connection_id}/tables/{schema}/{table}/indexes | Create an index on a table
+*IndexesApi* | [**deleteIndex**](docs/IndexesApi.md#deleteindex) | **DELETE** /v1/connections/{connection_id}/tables/{schema}/{table}/indexes/{index_name} | Delete an index
+*IndexesApi* | [**listIndexes**](docs/IndexesApi.md#listindexes) | **GET** /v1/connections/{connection_id}/tables/{schema}/{table}/indexes | List indexes on a table
+*InformationSchemaApi* | [**informationSchema**](docs/InformationSchemaApi.md#informationschema) | **GET** /v1/information_schema | List tables
+*QueryApi* | [**query**](docs/QueryApi.md#queryoperation) | **POST** /v1/query | Execute SQL query
+*QueryRunsApi* | [**listQueryRuns**](docs/QueryRunsApi.md#listqueryruns) | **GET** /v1/query-runs | List query runs
+*RefreshApi* | [**refresh**](docs/RefreshApi.md#refreshoperation) | **POST** /v1/refresh | Refresh connection data
+*ResultsApi* | [**getResult**](docs/ResultsApi.md#getresult) | **GET** /v1/results/{id} | Get result
+*ResultsApi* | [**listResults**](docs/ResultsApi.md#listresults) | **GET** /v1/results | List results
+*SavedQueriesApi* | [**createSavedQuery**](docs/SavedQueriesApi.md#createsavedqueryoperation) | **POST** /v1/queries | Create saved query
+*SavedQueriesApi* | [**deleteSavedQuery**](docs/SavedQueriesApi.md#deletesavedquery) | **DELETE** /v1/queries/{id} | Delete saved query
+*SavedQueriesApi* | [**executeSavedQuery**](docs/SavedQueriesApi.md#executesavedqueryoperation) | **POST** /v1/queries/{id}/execute | Execute saved query
+*SavedQueriesApi* | [**getSavedQuery**](docs/SavedQueriesApi.md#getsavedquery) | **GET** /v1/queries/{id} | Get saved query
+*SavedQueriesApi* | [**listSavedQueries**](docs/SavedQueriesApi.md#listsavedqueries) | **GET** /v1/queries | List saved queries
+*SavedQueriesApi* | [**listSavedQueryVersions**](docs/SavedQueriesApi.md#listsavedqueryversions) | **GET** /v1/queries/{id}/versions | List saved query versions
+*SavedQueriesApi* | [**updateSavedQuery**](docs/SavedQueriesApi.md#updatesavedqueryoperation) | **PUT** /v1/queries/{id} | Update saved query
+*SecretsApi* | [**createSecret**](docs/SecretsApi.md#createsecretoperation) | **POST** /v1/secrets | Create secret
+*SecretsApi* | [**deleteSecret**](docs/SecretsApi.md#deletesecret) | **DELETE** /v1/secrets/{name} | Delete secret
+*SecretsApi* | [**getSecret**](docs/SecretsApi.md#getsecret) | **GET** /v1/secrets/{name} | Get secret
+*SecretsApi* | [**listSecrets**](docs/SecretsApi.md#listsecrets) | **GET** /v1/secrets | List secrets
+*SecretsApi* | [**updateSecret**](docs/SecretsApi.md#updatesecretoperation) | **PUT** /v1/secrets/{name} | Update secret
+*UploadsApi* | [**listUploads**](docs/UploadsApi.md#listuploads) | **GET** /v1/files | List uploads
+*UploadsApi* | [**uploadFile**](docs/UploadsApi.md#uploadfile) | **POST** /v1/files | Upload file
+*WorkspacesApi* | [**createWorkspace**](docs/WorkspacesApi.md#createworkspaceoperation) | **POST** /v1/workspaces | Create a workspace
+*WorkspacesApi* | [**listWorkspaces**](docs/WorkspacesApi.md#listworkspaces) | **GET** /v1/workspaces | List workspaces
+
+
+### Models
+
+- [ApiErrorDetail](docs/ApiErrorDetail.md)
+- [ApiErrorResponse](docs/ApiErrorResponse.md)
+- [BooleanProfileDetail](docs/BooleanProfileDetail.md)
+- [CategoricalProfileDetail](docs/CategoricalProfileDetail.md)
+- [CategoryValueInfo](docs/CategoryValueInfo.md)
+- [ColumnInfo](docs/ColumnInfo.md)
+- [ColumnProfileDetail](docs/ColumnProfileDetail.md)
+- [ColumnProfileDetailOneOf](docs/ColumnProfileDetailOneOf.md)
+- [ColumnProfileDetailOneOf1](docs/ColumnProfileDetailOneOf1.md)
+- [ColumnProfileDetailOneOf2](docs/ColumnProfileDetailOneOf2.md)
+- [ColumnProfileDetailOneOf3](docs/ColumnProfileDetailOneOf3.md)
+- [ColumnProfileDetailOneOf4](docs/ColumnProfileDetailOneOf4.md)
+- [ColumnProfileInfo](docs/ColumnProfileInfo.md)
+- [ColumnTypeSpec](docs/ColumnTypeSpec.md)
+- [ConnectionHealthResponse](docs/ConnectionHealthResponse.md)
+- [ConnectionInfo](docs/ConnectionInfo.md)
+- [ConnectionRefreshResult](docs/ConnectionRefreshResult.md)
+- [ConnectionSchemaError](docs/ConnectionSchemaError.md)
+- [ConnectionTypeDetail](docs/ConnectionTypeDetail.md)
+- [ConnectionTypeSummary](docs/ConnectionTypeSummary.md)
+- [CreateConnectionRequest](docs/CreateConnectionRequest.md)
+- [CreateConnectionResponse](docs/CreateConnectionResponse.md)
+- [CreateDatasetRequest](docs/CreateDatasetRequest.md)
+- [CreateDatasetResponse](docs/CreateDatasetResponse.md)
+- [CreateIndexRequest](docs/CreateIndexRequest.md)
+- [CreateSavedQueryRequest](docs/CreateSavedQueryRequest.md)
+- [CreateSecretRequest](docs/CreateSecretRequest.md)
+- [CreateSecretResponse](docs/CreateSecretResponse.md)
+- [CreateWorkspaceRequest](docs/CreateWorkspaceRequest.md)
+- [CreateWorkspaceResponse](docs/CreateWorkspaceResponse.md)
+- [DatasetSource](docs/DatasetSource.md)
+- [DatasetSummary](docs/DatasetSummary.md)
+- [DatasetVersionSummary](docs/DatasetVersionSummary.md)
+- [DiscoveryStatus](docs/DiscoveryStatus.md)
+- [ExecuteSavedQueryRequest](docs/ExecuteSavedQueryRequest.md)
+- [GetConnectionResponse](docs/GetConnectionResponse.md)
+- [GetDatasetResponse](docs/GetDatasetResponse.md)
+- [GetResultResponse](docs/GetResultResponse.md)
+- [GetSecretResponse](docs/GetSecretResponse.md)
+- [IndexInfoResponse](docs/IndexInfoResponse.md)
+- [IndexStatus](docs/IndexStatus.md)
+- [InformationSchemaResponse](docs/InformationSchemaResponse.md)
+- [InlineData](docs/InlineData.md)
+- [InlineDatasetSource](docs/InlineDatasetSource.md)
+- [ListConnectionTypesResponse](docs/ListConnectionTypesResponse.md)
+- [ListConnectionsResponse](docs/ListConnectionsResponse.md)
+- [ListDatasetVersionsResponse](docs/ListDatasetVersionsResponse.md)
+- [ListDatasetsResponse](docs/ListDatasetsResponse.md)
+- [ListIndexesResponse](docs/ListIndexesResponse.md)
+- [ListQueryRunsResponse](docs/ListQueryRunsResponse.md)
+- [ListResultsResponse](docs/ListResultsResponse.md)
+- [ListSavedQueriesResponse](docs/ListSavedQueriesResponse.md)
+- [ListSavedQueryVersionsResponse](docs/ListSavedQueryVersionsResponse.md)
+- [ListSecretsResponse](docs/ListSecretsResponse.md)
+- [ListUploadsResponse](docs/ListUploadsResponse.md)
+- [ListWorkspacesResponse](docs/ListWorkspacesResponse.md)
+- [ModelError](docs/ModelError.md)
+- [NumericProfileDetail](docs/NumericProfileDetail.md)
+- [QueryRequest](docs/QueryRequest.md)
+- [QueryResponse](docs/QueryResponse.md)
+- [QueryRunInfo](docs/QueryRunInfo.md)
+- [RefreshDatasetResponse](docs/RefreshDatasetResponse.md)
+- [RefreshRequest](docs/RefreshRequest.md)
+- [RefreshResponse](docs/RefreshResponse.md)
+- [RefreshWarning](docs/RefreshWarning.md)
+- [ResultInfo](docs/ResultInfo.md)
+- [SavedQueryDatasetSource](docs/SavedQueryDatasetSource.md)
+- [SavedQueryDetail](docs/SavedQueryDetail.md)
+- [SavedQuerySummary](docs/SavedQuerySummary.md)
+- [SavedQueryVersionInfo](docs/SavedQueryVersionInfo.md)
+- [SchemaRefreshResult](docs/SchemaRefreshResult.md)
+- [SecretMetadataResponse](docs/SecretMetadataResponse.md)
+- [SqlQueryDatasetSource](docs/SqlQueryDatasetSource.md)
+- [TableInfo](docs/TableInfo.md)
+- [TableProfileResponse](docs/TableProfileResponse.md)
+- [TableRefreshError](docs/TableRefreshError.md)
+- [TableRefreshResult](docs/TableRefreshResult.md)
+- [TemporalProfileDetail](docs/TemporalProfileDetail.md)
+- [TextProfileDetail](docs/TextProfileDetail.md)
+- [UpdateDatasetRequest](docs/UpdateDatasetRequest.md)
+- [UpdateDatasetResponse](docs/UpdateDatasetResponse.md)
+- [UpdateSavedQueryRequest](docs/UpdateSavedQueryRequest.md)
+- [UpdateSecretRequest](docs/UpdateSecretRequest.md)
+- [UpdateSecretResponse](docs/UpdateSecretResponse.md)
+- [UploadDatasetSource](docs/UploadDatasetSource.md)
+- [UploadInfo](docs/UploadInfo.md)
+- [UploadResponse](docs/UploadResponse.md)
+- [UrlDatasetSource](docs/UrlDatasetSource.md)
+- [WorkspaceDetail](docs/WorkspaceDetail.md)
+- [WorkspaceListItem](docs/WorkspaceListItem.md)
+
+### Authorization
+
+
+Authentication schemes defined for the API:
+
+#### BearerAuth
+
+
+- **Type**: HTTP Bearer Token authentication
+
+#### WorkspaceId
+
+
+- **Type**: API key
+- **API key parameter name**: `X-Workspace-Id`
+- **Location**: HTTP header
+
+## About
+
+This TypeScript SDK client supports the [Fetch API](https://fetch.spec.whatwg.org/)
+and is automatically generated by the
+[OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: `1.0.0`
+- Package version: `1.0.0`
+- Generator version: `7.20.0`
+- Build package: `org.openapitools.codegen.languages.TypeScriptFetchClientCodegen`
+
+The generated npm module supports the following:
+
+- Environments
+ * Node.js
+ * Webpack
+ * Browserify
+- Language levels
+ * ES5 - you must have a Promises/A+ library installed
+ * ES6
+- Module systems
+ * CommonJS
+ * ES6 module system
+
+
+## Development
+
+### Building
+
+To build the TypeScript source code, you need to have Node.js and npm installed.
+After cloning the repository, navigate to the project directory and run:
+
+```bash
+npm install
+npm run build
+```
+
+### Publishing
+
+Once you've built the package, you can publish it to npm:
+
+```bash
+npm publish
+```
+
+## License
+
+[MIT]()
diff --git a/docs/ApiErrorDetail.md b/docs/ApiErrorDetail.md
new file mode 100644
index 0000000..3e37849
--- /dev/null
+++ b/docs/ApiErrorDetail.md
@@ -0,0 +1,37 @@
+
+# ApiErrorDetail
+
+Error detail within an API error response
+
+## Properties
+
+Name | Type
+------------ | -------------
+`code` | string
+`message` | string
+
+## Example
+
+```typescript
+import type { ApiErrorDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "code": null,
+ "message": null,
+} satisfies ApiErrorDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ApiErrorDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ApiErrorResponse.md b/docs/ApiErrorResponse.md
new file mode 100644
index 0000000..2d52204
--- /dev/null
+++ b/docs/ApiErrorResponse.md
@@ -0,0 +1,35 @@
+
+# ApiErrorResponse
+
+Standard error response body
+
+## Properties
+
+Name | Type
+------------ | -------------
+`error` | [ApiErrorDetail](ApiErrorDetail.md)
+
+## Example
+
+```typescript
+import type { ApiErrorResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "error": null,
+} satisfies ApiErrorResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ApiErrorResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/BooleanProfileDetail.md b/docs/BooleanProfileDetail.md
new file mode 100644
index 0000000..5377cf6
--- /dev/null
+++ b/docs/BooleanProfileDetail.md
@@ -0,0 +1,37 @@
+
+# BooleanProfileDetail
+
+Boolean column.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`falseCount` | number
+`trueCount` | number
+
+## Example
+
+```typescript
+import type { BooleanProfileDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "falseCount": null,
+ "trueCount": null,
+} satisfies BooleanProfileDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as BooleanProfileDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CategoricalProfileDetail.md b/docs/CategoricalProfileDetail.md
new file mode 100644
index 0000000..fff1448
--- /dev/null
+++ b/docs/CategoricalProfileDetail.md
@@ -0,0 +1,35 @@
+
+# CategoricalProfileDetail
+
+Type-specific column profile detail. The `type` discriminator field determines which variant is present. Profile type is chosen based on the column\'s Arrow data type and cardinality: - **categorical**: Text or numeric columns with ≤200 distinct values. Lists each value with its frequency. - **text**: Text columns with >200 distinct values. Reports string length statistics. - **numeric**: Numeric columns with >200 distinct values. Reports min, max, and mean. - **temporal**: Date and timestamp columns. Reports min and max as ISO-8601 strings. - **boolean**: Boolean columns. Reports true and false counts. Low-cardinality column (≤200 distinct values). Values sorted by frequency descending.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`values` | [Array<CategoryValueInfo>](CategoryValueInfo.md)
+
+## Example
+
+```typescript
+import type { CategoricalProfileDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "values": null,
+} satisfies CategoricalProfileDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CategoricalProfileDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CategoryValueInfo.md b/docs/CategoryValueInfo.md
new file mode 100644
index 0000000..ad2cc78
--- /dev/null
+++ b/docs/CategoryValueInfo.md
@@ -0,0 +1,37 @@
+
+# CategoryValueInfo
+
+A distinct value with its frequency count, used in categorical profiles.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`value` | string
+
+## Example
+
+```typescript
+import type { CategoryValueInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "value": null,
+} satisfies CategoryValueInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CategoryValueInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnInfo.md b/docs/ColumnInfo.md
new file mode 100644
index 0000000..d6180a1
--- /dev/null
+++ b/docs/ColumnInfo.md
@@ -0,0 +1,39 @@
+
+# ColumnInfo
+
+Column metadata for API responses
+
+## Properties
+
+Name | Type
+------------ | -------------
+`dataType` | string
+`name` | string
+`nullable` | boolean
+
+## Example
+
+```typescript
+import type { ColumnInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "dataType": null,
+ "name": null,
+ "nullable": null,
+} satisfies ColumnInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnProfileDetail.md b/docs/ColumnProfileDetail.md
new file mode 100644
index 0000000..1f6087c
--- /dev/null
+++ b/docs/ColumnProfileDetail.md
@@ -0,0 +1,52 @@
+
+# ColumnProfileDetail
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`values` | [Array<CategoryValueInfo>](CategoryValueInfo.md)
+`type` | string
+`avgLength` | number
+`maxLength` | number
+`minLength` | number
+`max` | string
+`mean` | number
+`min` | string
+`falseCount` | number
+`trueCount` | number
+
+## Example
+
+```typescript
+import type { ColumnProfileDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "values": null,
+ "type": null,
+ "avgLength": null,
+ "maxLength": null,
+ "minLength": null,
+ "max": null,
+ "mean": null,
+ "min": null,
+ "falseCount": null,
+ "trueCount": null,
+} satisfies ColumnProfileDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnProfileDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnProfileDetailOneOf.md b/docs/ColumnProfileDetailOneOf.md
new file mode 100644
index 0000000..9b7b497
--- /dev/null
+++ b/docs/ColumnProfileDetailOneOf.md
@@ -0,0 +1,36 @@
+
+# ColumnProfileDetailOneOf
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`values` | [Array<CategoryValueInfo>](CategoryValueInfo.md)
+`type` | string
+
+## Example
+
+```typescript
+import type { ColumnProfileDetailOneOf } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "values": null,
+ "type": null,
+} satisfies ColumnProfileDetailOneOf
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnProfileDetailOneOf
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnProfileDetailOneOf1.md b/docs/ColumnProfileDetailOneOf1.md
new file mode 100644
index 0000000..c51b397
--- /dev/null
+++ b/docs/ColumnProfileDetailOneOf1.md
@@ -0,0 +1,40 @@
+
+# ColumnProfileDetailOneOf1
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`avgLength` | number
+`maxLength` | number
+`minLength` | number
+`type` | string
+
+## Example
+
+```typescript
+import type { ColumnProfileDetailOneOf1 } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "avgLength": null,
+ "maxLength": null,
+ "minLength": null,
+ "type": null,
+} satisfies ColumnProfileDetailOneOf1
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnProfileDetailOneOf1
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnProfileDetailOneOf2.md b/docs/ColumnProfileDetailOneOf2.md
new file mode 100644
index 0000000..50989ec
--- /dev/null
+++ b/docs/ColumnProfileDetailOneOf2.md
@@ -0,0 +1,40 @@
+
+# ColumnProfileDetailOneOf2
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`max` | string
+`mean` | number
+`min` | string
+`type` | string
+
+## Example
+
+```typescript
+import type { ColumnProfileDetailOneOf2 } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "max": null,
+ "mean": null,
+ "min": null,
+ "type": null,
+} satisfies ColumnProfileDetailOneOf2
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnProfileDetailOneOf2
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnProfileDetailOneOf3.md b/docs/ColumnProfileDetailOneOf3.md
new file mode 100644
index 0000000..9f08129
--- /dev/null
+++ b/docs/ColumnProfileDetailOneOf3.md
@@ -0,0 +1,38 @@
+
+# ColumnProfileDetailOneOf3
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`max` | string
+`min` | string
+`type` | string
+
+## Example
+
+```typescript
+import type { ColumnProfileDetailOneOf3 } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "max": null,
+ "min": null,
+ "type": null,
+} satisfies ColumnProfileDetailOneOf3
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnProfileDetailOneOf3
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnProfileDetailOneOf4.md b/docs/ColumnProfileDetailOneOf4.md
new file mode 100644
index 0000000..0ba4801
--- /dev/null
+++ b/docs/ColumnProfileDetailOneOf4.md
@@ -0,0 +1,38 @@
+
+# ColumnProfileDetailOneOf4
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`falseCount` | number
+`trueCount` | number
+`type` | string
+
+## Example
+
+```typescript
+import type { ColumnProfileDetailOneOf4 } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "falseCount": null,
+ "trueCount": null,
+ "type": null,
+} satisfies ColumnProfileDetailOneOf4
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnProfileDetailOneOf4
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnProfileInfo.md b/docs/ColumnProfileInfo.md
new file mode 100644
index 0000000..2eb183c
--- /dev/null
+++ b/docs/ColumnProfileInfo.md
@@ -0,0 +1,45 @@
+
+# ColumnProfileInfo
+
+Statistics for a single column.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`cardinality` | number
+`dataType` | string
+`name` | string
+`nullCount` | number
+`nullPercentage` | number
+`profile` | [ColumnProfileDetail](ColumnProfileDetail.md)
+
+## Example
+
+```typescript
+import type { ColumnProfileInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "cardinality": null,
+ "dataType": null,
+ "name": null,
+ "nullCount": null,
+ "nullPercentage": null,
+ "profile": null,
+} satisfies ColumnProfileInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnProfileInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ColumnTypeSpec.md b/docs/ColumnTypeSpec.md
new file mode 100644
index 0000000..cf5b42d
--- /dev/null
+++ b/docs/ColumnTypeSpec.md
@@ -0,0 +1,43 @@
+
+# ColumnTypeSpec
+
+Detailed column type specification with optional properties.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`geometryType` | string
+`precision` | number
+`scale` | number
+`srid` | number
+`type` | string
+
+## Example
+
+```typescript
+import type { ColumnTypeSpec } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "geometryType": null,
+ "precision": null,
+ "scale": null,
+ "srid": null,
+ "type": null,
+} satisfies ColumnTypeSpec
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ColumnTypeSpec
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ConnectionHealthResponse.md b/docs/ConnectionHealthResponse.md
new file mode 100644
index 0000000..de0bb03
--- /dev/null
+++ b/docs/ConnectionHealthResponse.md
@@ -0,0 +1,41 @@
+
+# ConnectionHealthResponse
+
+Response body for GET /connections/{connection_id}/health
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionId` | string
+`error` | string
+`healthy` | boolean
+`latencyMs` | number
+
+## Example
+
+```typescript
+import type { ConnectionHealthResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionId": null,
+ "error": null,
+ "healthy": null,
+ "latencyMs": null,
+} satisfies ConnectionHealthResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ConnectionHealthResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ConnectionInfo.md b/docs/ConnectionInfo.md
new file mode 100644
index 0000000..2f093dd
--- /dev/null
+++ b/docs/ConnectionInfo.md
@@ -0,0 +1,39 @@
+
+# ConnectionInfo
+
+Single connection metadata for API responses
+
+## Properties
+
+Name | Type
+------------ | -------------
+`id` | string
+`name` | string
+`sourceType` | string
+
+## Example
+
+```typescript
+import type { ConnectionInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "id": null,
+ "name": null,
+ "sourceType": null,
+} satisfies ConnectionInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ConnectionInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ConnectionRefreshResult.md b/docs/ConnectionRefreshResult.md
new file mode 100644
index 0000000..603a5d8
--- /dev/null
+++ b/docs/ConnectionRefreshResult.md
@@ -0,0 +1,47 @@
+
+# ConnectionRefreshResult
+
+Response for connection-wide data refresh
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionId` | string
+`durationMs` | number
+`errors` | [Array<TableRefreshError>](TableRefreshError.md)
+`tablesFailed` | number
+`tablesRefreshed` | number
+`totalRows` | number
+`warnings` | [Array<RefreshWarning>](RefreshWarning.md)
+
+## Example
+
+```typescript
+import type { ConnectionRefreshResult } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionId": null,
+ "durationMs": null,
+ "errors": null,
+ "tablesFailed": null,
+ "tablesRefreshed": null,
+ "totalRows": null,
+ "warnings": null,
+} satisfies ConnectionRefreshResult
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ConnectionRefreshResult
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ConnectionSchemaError.md b/docs/ConnectionSchemaError.md
new file mode 100644
index 0000000..1e1c88d
--- /dev/null
+++ b/docs/ConnectionSchemaError.md
@@ -0,0 +1,37 @@
+
+# ConnectionSchemaError
+
+Error details for a failed connection schema refresh
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionId` | string
+`error` | string
+
+## Example
+
+```typescript
+import type { ConnectionSchemaError } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionId": null,
+ "error": null,
+} satisfies ConnectionSchemaError
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ConnectionSchemaError
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ConnectionTypeDetail.md b/docs/ConnectionTypeDetail.md
new file mode 100644
index 0000000..459ef0e
--- /dev/null
+++ b/docs/ConnectionTypeDetail.md
@@ -0,0 +1,40 @@
+
+# ConnectionTypeDetail
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`auth` | any
+`configSchema` | any
+`label` | string
+`name` | string
+
+## Example
+
+```typescript
+import type { ConnectionTypeDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "auth": null,
+ "configSchema": null,
+ "label": null,
+ "name": null,
+} satisfies ConnectionTypeDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ConnectionTypeDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ConnectionTypeSummary.md b/docs/ConnectionTypeSummary.md
new file mode 100644
index 0000000..2b3553a
--- /dev/null
+++ b/docs/ConnectionTypeSummary.md
@@ -0,0 +1,36 @@
+
+# ConnectionTypeSummary
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`label` | string
+`name` | string
+
+## Example
+
+```typescript
+import type { ConnectionTypeSummary } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "label": null,
+ "name": null,
+} satisfies ConnectionTypeSummary
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ConnectionTypeSummary
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ConnectionTypesApi.md b/docs/ConnectionTypesApi.md
new file mode 100644
index 0000000..6f0dc6f
--- /dev/null
+++ b/docs/ConnectionTypesApi.md
@@ -0,0 +1,145 @@
+# ConnectionTypesApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**getConnectionType**](ConnectionTypesApi.md#getconnectiontype) | **GET** /v1/connection-types/{name} | Get connection type details |
+| [**listConnectionTypes**](ConnectionTypesApi.md#listconnectiontypes) | **GET** /v1/connection-types | List connection types |
+
+
+
+## getConnectionType
+
+> ConnectionTypeDetail getConnectionType(name)
+
+Get connection type details
+
+Get configuration schema and authentication requirements for a specific connection type.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionTypesApi,
+} from '@hotdata/sdk';
+import type { GetConnectionTypeRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionTypesApi(config);
+
+ const body = {
+ // string | Connection type name (e.g. postgres, mysql, snowflake)
+ name: name_example,
+ } satisfies GetConnectionTypeRequest;
+
+ try {
+ const data = await api.getConnectionType(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **name** | `string` | Connection type name (e.g. postgres, mysql, snowflake) | [Defaults to `undefined`] |
+
+### Return type
+
+[**ConnectionTypeDetail**](ConnectionTypeDetail.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Connection type details | - |
+| **404** | Unknown connection type | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listConnectionTypes
+
+> ListConnectionTypesResponse listConnectionTypes()
+
+List connection types
+
+List all available connection types, including native sources and FlightDLT services.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionTypesApi,
+} from '@hotdata/sdk';
+import type { ListConnectionTypesRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionTypesApi(config);
+
+ try {
+ const data = await api.listConnectionTypes();
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ListConnectionTypesResponse**](ListConnectionTypesResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Available connection types | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/ConnectionsApi.md b/docs/ConnectionsApi.md
new file mode 100644
index 0000000..7f3d85a
--- /dev/null
+++ b/docs/ConnectionsApi.md
@@ -0,0 +1,596 @@
+# ConnectionsApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**checkConnectionHealth**](ConnectionsApi.md#checkconnectionhealth) | **GET** /v1/connections/{connection_id}/health | Check connection health |
+| [**createConnection**](ConnectionsApi.md#createconnectionoperation) | **POST** /v1/connections | Create connection |
+| [**deleteConnection**](ConnectionsApi.md#deleteconnection) | **DELETE** /v1/connections/{connection_id} | Delete connection |
+| [**getConnection**](ConnectionsApi.md#getconnection) | **GET** /v1/connections/{connection_id} | Get connection |
+| [**getTableProfile**](ConnectionsApi.md#gettableprofile) | **GET** /v1/connections/{connection_id}/tables/{schema}/{table}/profile | Get table profile |
+| [**listConnections**](ConnectionsApi.md#listconnections) | **GET** /v1/connections | List connections |
+| [**purgeConnectionCache**](ConnectionsApi.md#purgeconnectioncache) | **DELETE** /v1/connections/{connection_id}/cache | Purge connection cache |
+| [**purgeTableCache**](ConnectionsApi.md#purgetablecache) | **DELETE** /v1/connections/{connection_id}/tables/{schema}/{table}/cache | Purge table cache |
+
+
+
+## checkConnectionHealth
+
+> ConnectionHealthResponse checkConnectionHealth(connectionId)
+
+Check connection health
+
+Test connectivity to the remote database. Returns health status and latency.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { CheckConnectionHealthRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ const body = {
+ // string | Connection ID
+ connectionId: connectionId_example,
+ } satisfies CheckConnectionHealthRequest;
+
+ try {
+ const data = await api.checkConnectionHealth(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection ID | [Defaults to `undefined`] |
+
+### Return type
+
+[**ConnectionHealthResponse**](ConnectionHealthResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Connection health status | - |
+| **404** | Connection not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## createConnection
+
+> CreateConnectionResponse createConnection(createConnectionRequest)
+
+Create connection
+
+Register a new database connection. Provide the source type and connection config (host, port, database, etc.). Credentials can be supplied inline (password/token fields are auto-converted to secrets) or by referencing an existing secret by name or ID. Schema discovery runs automatically after registration.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { CreateConnectionOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ const body = {
+ // CreateConnectionRequest
+ createConnectionRequest: ...,
+ } satisfies CreateConnectionOperationRequest;
+
+ try {
+ const data = await api.createConnection(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **createConnectionRequest** | [CreateConnectionRequest](CreateConnectionRequest.md) | | |
+
+### Return type
+
+[**CreateConnectionResponse**](CreateConnectionResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Connection created | - |
+| **400** | Invalid request | - |
+| **409** | Connection already exists | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## deleteConnection
+
+> deleteConnection(connectionId)
+
+Delete connection
+
+Delete a connection and its cached data.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { DeleteConnectionRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ const body = {
+ // string | Connection ID
+ connectionId: connectionId_example,
+ } satisfies DeleteConnectionRequest;
+
+ try {
+ const data = await api.deleteConnection(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection ID | [Defaults to `undefined`] |
+
+### Return type
+
+`void` (Empty response body)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | Connection deleted | - |
+| **404** | Connection not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## getConnection
+
+> GetConnectionResponse getConnection(connectionId)
+
+Get connection
+
+Get details for a specific connection, including table and sync counts.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { GetConnectionRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ const body = {
+ // string | Connection ID
+ connectionId: connectionId_example,
+ } satisfies GetConnectionRequest;
+
+ try {
+ const data = await api.getConnection(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection ID | [Defaults to `undefined`] |
+
+### Return type
+
+[**GetConnectionResponse**](GetConnectionResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Connection details | - |
+| **404** | Connection not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## getTableProfile
+
+> TableProfileResponse getTableProfile(connectionId, schema, table)
+
+Get table profile
+
+Get column-level statistics for a synced table. Returns per-column profiles including cardinality, null counts, and type-specific details (distinct values for categorical columns, min/max for temporal/numeric, length stats for text). Profiles are computed at sync time.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { GetTableProfileRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ const body = {
+ // string | Connection ID
+ connectionId: connectionId_example,
+ // string | Schema name
+ schema: schema_example,
+ // string | Table name
+ table: table_example,
+ } satisfies GetTableProfileRequest;
+
+ try {
+ const data = await api.getTableProfile(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection ID | [Defaults to `undefined`] |
+| **schema** | `string` | Schema name | [Defaults to `undefined`] |
+| **table** | `string` | Table name | [Defaults to `undefined`] |
+
+### Return type
+
+[**TableProfileResponse**](TableProfileResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Column profile statistics | - |
+| **404** | Table or profile not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listConnections
+
+> ListConnectionsResponse listConnections()
+
+List connections
+
+List all registered database connections.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { ListConnectionsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ try {
+ const data = await api.listConnections();
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ListConnectionsResponse**](ListConnectionsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of connections | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## purgeConnectionCache
+
+> purgeConnectionCache(connectionId)
+
+Purge connection cache
+
+Purge all cached data for a connection. The next query against these tables will trigger a fresh sync from the remote source.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { PurgeConnectionCacheRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ const body = {
+ // string | Connection ID
+ connectionId: connectionId_example,
+ } satisfies PurgeConnectionCacheRequest;
+
+ try {
+ const data = await api.purgeConnectionCache(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection ID | [Defaults to `undefined`] |
+
+### Return type
+
+`void` (Empty response body)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | Cache purged | - |
+| **404** | Connection not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## purgeTableCache
+
+> purgeTableCache(connectionId, schema, table)
+
+Purge table cache
+
+Purge the cached data for a single table. The next query will trigger a fresh sync.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ConnectionsApi,
+} from '@hotdata/sdk';
+import type { PurgeTableCacheRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ConnectionsApi(config);
+
+ const body = {
+ // string | Connection ID
+ connectionId: connectionId_example,
+ // string | Schema name
+ schema: schema_example,
+ // string | Table name
+ table: table_example,
+ } satisfies PurgeTableCacheRequest;
+
+ try {
+ const data = await api.purgeTableCache(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection ID | [Defaults to `undefined`] |
+| **schema** | `string` | Schema name | [Defaults to `undefined`] |
+| **table** | `string` | Table name | [Defaults to `undefined`] |
+
+### Return type
+
+`void` (Empty response body)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | Table cache purged | - |
+| **404** | Not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/CreateConnectionRequest.md b/docs/CreateConnectionRequest.md
new file mode 100644
index 0000000..6c7bfda
--- /dev/null
+++ b/docs/CreateConnectionRequest.md
@@ -0,0 +1,43 @@
+
+# CreateConnectionRequest
+
+Request body for POST /connections
+
+## Properties
+
+Name | Type
+------------ | -------------
+`config` | { [key: string]: any; }
+`name` | string
+`secretId` | string
+`secretName` | string
+`sourceType` | string
+
+## Example
+
+```typescript
+import type { CreateConnectionRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "config": null,
+ "name": null,
+ "secretId": null,
+ "secretName": null,
+ "sourceType": null,
+} satisfies CreateConnectionRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateConnectionRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateConnectionResponse.md b/docs/CreateConnectionResponse.md
new file mode 100644
index 0000000..e911f12
--- /dev/null
+++ b/docs/CreateConnectionResponse.md
@@ -0,0 +1,45 @@
+
+# CreateConnectionResponse
+
+Response body for POST /connections
+
+## Properties
+
+Name | Type
+------------ | -------------
+`discoveryError` | string
+`discoveryStatus` | [DiscoveryStatus](DiscoveryStatus.md)
+`id` | string
+`name` | string
+`sourceType` | string
+`tablesDiscovered` | number
+
+## Example
+
+```typescript
+import type { CreateConnectionResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "discoveryError": null,
+ "discoveryStatus": null,
+ "id": null,
+ "name": null,
+ "sourceType": null,
+ "tablesDiscovered": null,
+} satisfies CreateConnectionResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateConnectionResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateDatasetRequest.md b/docs/CreateDatasetRequest.md
new file mode 100644
index 0000000..b514c44
--- /dev/null
+++ b/docs/CreateDatasetRequest.md
@@ -0,0 +1,39 @@
+
+# CreateDatasetRequest
+
+Request body for POST /v1/datasets
+
+## Properties
+
+Name | Type
+------------ | -------------
+`label` | string
+`source` | [DatasetSource](DatasetSource.md)
+`tableName` | string
+
+## Example
+
+```typescript
+import type { CreateDatasetRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "label": null,
+ "source": null,
+ "tableName": null,
+} satisfies CreateDatasetRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateDatasetRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateDatasetResponse.md b/docs/CreateDatasetResponse.md
new file mode 100644
index 0000000..391c125
--- /dev/null
+++ b/docs/CreateDatasetResponse.md
@@ -0,0 +1,43 @@
+
+# CreateDatasetResponse
+
+Response body for POST /v1/datasets
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`id` | string
+`label` | string
+`status` | string
+`tableName` | string
+
+## Example
+
+```typescript
+import type { CreateDatasetResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "id": null,
+ "label": null,
+ "status": null,
+ "tableName": null,
+} satisfies CreateDatasetResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateDatasetResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateIndexRequest.md b/docs/CreateIndexRequest.md
new file mode 100644
index 0000000..d7a1932
--- /dev/null
+++ b/docs/CreateIndexRequest.md
@@ -0,0 +1,45 @@
+
+# CreateIndexRequest
+
+Request body for POST .../indexes
+
+## Properties
+
+Name | Type
+------------ | -------------
+`indexName` | string
+`indexType` | string
+`metric` | string
+`sortColumns` | Array<string>
+`textColumns` | Array<string>
+`vectorColumns` | Array<string>
+
+## Example
+
+```typescript
+import type { CreateIndexRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "indexName": null,
+ "indexType": null,
+ "metric": null,
+ "sortColumns": null,
+ "textColumns": null,
+ "vectorColumns": null,
+} satisfies CreateIndexRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateIndexRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateSavedQueryRequest.md b/docs/CreateSavedQueryRequest.md
new file mode 100644
index 0000000..9ea483b
--- /dev/null
+++ b/docs/CreateSavedQueryRequest.md
@@ -0,0 +1,41 @@
+
+# CreateSavedQueryRequest
+
+Request body for POST /v1/queries
+
+## Properties
+
+Name | Type
+------------ | -------------
+`description` | string
+`name` | string
+`sql` | string
+`tags` | Array<string>
+
+## Example
+
+```typescript
+import type { CreateSavedQueryRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "description": null,
+ "name": null,
+ "sql": null,
+ "tags": null,
+} satisfies CreateSavedQueryRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateSavedQueryRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateSecretRequest.md b/docs/CreateSecretRequest.md
new file mode 100644
index 0000000..71edc62
--- /dev/null
+++ b/docs/CreateSecretRequest.md
@@ -0,0 +1,37 @@
+
+# CreateSecretRequest
+
+Request body for POST /secrets
+
+## Properties
+
+Name | Type
+------------ | -------------
+`name` | string
+`value` | string
+
+## Example
+
+```typescript
+import type { CreateSecretRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "name": null,
+ "value": null,
+} satisfies CreateSecretRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateSecretRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateSecretResponse.md b/docs/CreateSecretResponse.md
new file mode 100644
index 0000000..009561f
--- /dev/null
+++ b/docs/CreateSecretResponse.md
@@ -0,0 +1,39 @@
+
+# CreateSecretResponse
+
+Response body for POST /secrets
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`id` | string
+`name` | string
+
+## Example
+
+```typescript
+import type { CreateSecretResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "id": null,
+ "name": null,
+} satisfies CreateSecretResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateSecretResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateWorkspaceRequest.md b/docs/CreateWorkspaceRequest.md
new file mode 100644
index 0000000..4b6f5c8
--- /dev/null
+++ b/docs/CreateWorkspaceRequest.md
@@ -0,0 +1,36 @@
+
+# CreateWorkspaceRequest
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`name` | string
+`organizationPublicId` | string
+
+## Example
+
+```typescript
+import type { CreateWorkspaceRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "name": production-analytics,
+ "organizationPublicId": null,
+} satisfies CreateWorkspaceRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateWorkspaceRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/CreateWorkspaceResponse.md b/docs/CreateWorkspaceResponse.md
new file mode 100644
index 0000000..341fcad
--- /dev/null
+++ b/docs/CreateWorkspaceResponse.md
@@ -0,0 +1,36 @@
+
+# CreateWorkspaceResponse
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`ok` | boolean
+`workspace` | [WorkspaceDetail](WorkspaceDetail.md)
+
+## Example
+
+```typescript
+import type { CreateWorkspaceResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "ok": true,
+ "workspace": null,
+} satisfies CreateWorkspaceResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as CreateWorkspaceResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/DatasetSource.md b/docs/DatasetSource.md
new file mode 100644
index 0000000..41cce2b
--- /dev/null
+++ b/docs/DatasetSource.md
@@ -0,0 +1,53 @@
+
+# DatasetSource
+
+Dataset source specification
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | { [key: string]: string; }
+`format` | string
+`uploadId` | string
+`savedQueryId` | string
+`version` | number
+`description` | string
+`name` | string
+`sql` | string
+`url` | string
+`inline` | [InlineData](InlineData.md)
+
+## Example
+
+```typescript
+import type { DatasetSource } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "format": null,
+ "uploadId": null,
+ "savedQueryId": null,
+ "version": null,
+ "description": null,
+ "name": null,
+ "sql": null,
+ "url": null,
+ "inline": null,
+} satisfies DatasetSource
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as DatasetSource
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/DatasetSummary.md b/docs/DatasetSummary.md
new file mode 100644
index 0000000..6e5b78a
--- /dev/null
+++ b/docs/DatasetSummary.md
@@ -0,0 +1,47 @@
+
+# DatasetSummary
+
+Dataset summary for listing
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`id` | string
+`label` | string
+`latestVersion` | number
+`pinnedVersion` | number
+`tableName` | string
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { DatasetSummary } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "id": null,
+ "label": null,
+ "latestVersion": null,
+ "pinnedVersion": null,
+ "tableName": null,
+ "updatedAt": null,
+} satisfies DatasetSummary
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as DatasetSummary
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/DatasetVersionSummary.md b/docs/DatasetVersionSummary.md
new file mode 100644
index 0000000..cd9ce13
--- /dev/null
+++ b/docs/DatasetVersionSummary.md
@@ -0,0 +1,41 @@
+
+# DatasetVersionSummary
+
+Dataset version summary
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`id` | string
+`sourceType` | string
+`version` | number
+
+## Example
+
+```typescript
+import type { DatasetVersionSummary } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "id": null,
+ "sourceType": null,
+ "version": null,
+} satisfies DatasetVersionSummary
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as DatasetVersionSummary
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/DatasetsApi.md b/docs/DatasetsApi.md
new file mode 100644
index 0000000..7b10f75
--- /dev/null
+++ b/docs/DatasetsApi.md
@@ -0,0 +1,449 @@
+# DatasetsApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**createDataset**](DatasetsApi.md#createdatasetoperation) | **POST** /v1/datasets | Create dataset |
+| [**deleteDataset**](DatasetsApi.md#deletedataset) | **DELETE** /v1/datasets/{id} | Delete dataset |
+| [**getDataset**](DatasetsApi.md#getdataset) | **GET** /v1/datasets/{id} | Get dataset |
+| [**listDatasetVersions**](DatasetsApi.md#listdatasetversions) | **GET** /v1/datasets/{id}/versions | List dataset versions |
+| [**listDatasets**](DatasetsApi.md#listdatasets) | **GET** /v1/datasets | List datasets |
+| [**updateDataset**](DatasetsApi.md#updatedatasetoperation) | **PUT** /v1/datasets/{id} | Update dataset |
+
+
+
+## createDataset
+
+> CreateDatasetResponse createDataset(createDatasetRequest)
+
+Create dataset
+
+Create a new dataset from an uploaded file or inline data. The dataset becomes a queryable table under the `datasets` schema (e.g., `SELECT * FROM datasets.my_table`). Supports CSV, JSON, and Parquet formats. Optionally specify explicit column types.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ DatasetsApi,
+} from '@hotdata/sdk';
+import type { CreateDatasetOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new DatasetsApi(config);
+
+ const body = {
+ // CreateDatasetRequest
+ createDatasetRequest: ...,
+ } satisfies CreateDatasetOperationRequest;
+
+ try {
+ const data = await api.createDataset(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **createDatasetRequest** | [CreateDatasetRequest](CreateDatasetRequest.md) | | |
+
+### Return type
+
+[**CreateDatasetResponse**](CreateDatasetResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Dataset created | - |
+| **400** | Invalid request | - |
+| **409** | Dataset already exists | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## deleteDataset
+
+> deleteDataset(id)
+
+Delete dataset
+
+### Example
+
+```ts
+import {
+ Configuration,
+ DatasetsApi,
+} from '@hotdata/sdk';
+import type { DeleteDatasetRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new DatasetsApi(config);
+
+ const body = {
+ // string | Dataset ID
+ id: id_example,
+ } satisfies DeleteDatasetRequest;
+
+ try {
+ const data = await api.deleteDataset(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Dataset ID | [Defaults to `undefined`] |
+
+### Return type
+
+`void` (Empty response body)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | Dataset deleted | - |
+| **404** | Dataset not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## getDataset
+
+> GetDatasetResponse getDataset(id)
+
+Get dataset
+
+### Example
+
+```ts
+import {
+ Configuration,
+ DatasetsApi,
+} from '@hotdata/sdk';
+import type { GetDatasetRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new DatasetsApi(config);
+
+ const body = {
+ // string | Dataset ID
+ id: id_example,
+ } satisfies GetDatasetRequest;
+
+ try {
+ const data = await api.getDataset(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Dataset ID | [Defaults to `undefined`] |
+
+### Return type
+
+[**GetDatasetResponse**](GetDatasetResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Dataset details | - |
+| **404** | Dataset not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listDatasetVersions
+
+> ListDatasetVersionsResponse listDatasetVersions(id, limit, offset)
+
+List dataset versions
+
+### Example
+
+```ts
+import {
+ Configuration,
+ DatasetsApi,
+} from '@hotdata/sdk';
+import type { ListDatasetVersionsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new DatasetsApi(config);
+
+ const body = {
+ // string | Dataset ID
+ id: id_example,
+ // number | Maximum number of versions (default: 100, max: 1000) (optional)
+ limit: 56,
+ // number | Pagination offset (default: 0) (optional)
+ offset: 56,
+ } satisfies ListDatasetVersionsRequest;
+
+ try {
+ const data = await api.listDatasetVersions(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Dataset ID | [Defaults to `undefined`] |
+| **limit** | `number` | Maximum number of versions (default: 100, max: 1000) | [Optional] [Defaults to `undefined`] |
+| **offset** | `number` | Pagination offset (default: 0) | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListDatasetVersionsResponse**](ListDatasetVersionsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of dataset versions | - |
+| **404** | Dataset not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listDatasets
+
+> ListDatasetsResponse listDatasets(limit, offset)
+
+List datasets
+
+### Example
+
+```ts
+import {
+ Configuration,
+ DatasetsApi,
+} from '@hotdata/sdk';
+import type { ListDatasetsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new DatasetsApi(config);
+
+ const body = {
+ // number | Maximum number of datasets (default: 100, max: 1000) (optional)
+ limit: 56,
+ // number | Pagination offset (default: 0) (optional)
+ offset: 56,
+ } satisfies ListDatasetsRequest;
+
+ try {
+ const data = await api.listDatasets(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **limit** | `number` | Maximum number of datasets (default: 100, max: 1000) | [Optional] [Defaults to `undefined`] |
+| **offset** | `number` | Pagination offset (default: 0) | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListDatasetsResponse**](ListDatasetsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of datasets | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## updateDataset
+
+> UpdateDatasetResponse updateDataset(id, updateDatasetRequest)
+
+Update dataset
+
+### Example
+
+```ts
+import {
+ Configuration,
+ DatasetsApi,
+} from '@hotdata/sdk';
+import type { UpdateDatasetOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new DatasetsApi(config);
+
+ const body = {
+ // string | Dataset ID
+ id: id_example,
+ // UpdateDatasetRequest
+ updateDatasetRequest: ...,
+ } satisfies UpdateDatasetOperationRequest;
+
+ try {
+ const data = await api.updateDataset(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Dataset ID | [Defaults to `undefined`] |
+| **updateDatasetRequest** | [UpdateDatasetRequest](UpdateDatasetRequest.md) | | |
+
+### Return type
+
+[**UpdateDatasetResponse**](UpdateDatasetResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Dataset updated | - |
+| **404** | Dataset not found | - |
+| **409** | Conflict | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/DiscoveryStatus.md b/docs/DiscoveryStatus.md
new file mode 100644
index 0000000..1a4a66e
--- /dev/null
+++ b/docs/DiscoveryStatus.md
@@ -0,0 +1,33 @@
+
+# DiscoveryStatus
+
+Discovery status for connection creation
+
+## Properties
+
+Name | Type
+------------ | -------------
+
+## Example
+
+```typescript
+import type { DiscoveryStatus } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+} satisfies DiscoveryStatus
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as DiscoveryStatus
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ExecuteSavedQueryRequest.md b/docs/ExecuteSavedQueryRequest.md
new file mode 100644
index 0000000..d514967
--- /dev/null
+++ b/docs/ExecuteSavedQueryRequest.md
@@ -0,0 +1,35 @@
+
+# ExecuteSavedQueryRequest
+
+Request body for POST /v1/queries/{id}/execute
+
+## Properties
+
+Name | Type
+------------ | -------------
+`version` | number
+
+## Example
+
+```typescript
+import type { ExecuteSavedQueryRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "version": null,
+} satisfies ExecuteSavedQueryRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ExecuteSavedQueryRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/GetConnectionResponse.md b/docs/GetConnectionResponse.md
new file mode 100644
index 0000000..8fcdd23
--- /dev/null
+++ b/docs/GetConnectionResponse.md
@@ -0,0 +1,43 @@
+
+# GetConnectionResponse
+
+Response body for GET /connections/{connection_id}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`id` | string
+`name` | string
+`sourceType` | string
+`syncedTableCount` | number
+`tableCount` | number
+
+## Example
+
+```typescript
+import type { GetConnectionResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "id": null,
+ "name": null,
+ "sourceType": null,
+ "syncedTableCount": null,
+ "tableCount": null,
+} satisfies GetConnectionResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as GetConnectionResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/GetDatasetResponse.md b/docs/GetDatasetResponse.md
new file mode 100644
index 0000000..a2e0ebe
--- /dev/null
+++ b/docs/GetDatasetResponse.md
@@ -0,0 +1,53 @@
+
+# GetDatasetResponse
+
+Response body for GET /v1/datasets/{id}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | [Array<ColumnInfo>](ColumnInfo.md)
+`createdAt` | Date
+`id` | string
+`label` | string
+`latestVersion` | number
+`pinnedVersion` | number
+`schemaName` | string
+`sourceType` | string
+`tableName` | string
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { GetDatasetResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "createdAt": null,
+ "id": null,
+ "label": null,
+ "latestVersion": null,
+ "pinnedVersion": null,
+ "schemaName": null,
+ "sourceType": null,
+ "tableName": null,
+ "updatedAt": null,
+} satisfies GetDatasetResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as GetDatasetResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/GetResultResponse.md b/docs/GetResultResponse.md
new file mode 100644
index 0000000..3424891
--- /dev/null
+++ b/docs/GetResultResponse.md
@@ -0,0 +1,47 @@
+
+# GetResultResponse
+
+Response body for GET /results/{id} Returns status and optionally the result data
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | Array<string>
+`errorMessage` | string
+`nullable` | Array<boolean>
+`resultId` | string
+`rowCount` | number
+`rows` | Array<Array<any>>
+`status` | string
+
+## Example
+
+```typescript
+import type { GetResultResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "errorMessage": null,
+ "nullable": null,
+ "resultId": null,
+ "rowCount": null,
+ "rows": null,
+ "status": null,
+} satisfies GetResultResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as GetResultResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/GetSecretResponse.md b/docs/GetSecretResponse.md
new file mode 100644
index 0000000..cdfc3ea
--- /dev/null
+++ b/docs/GetSecretResponse.md
@@ -0,0 +1,39 @@
+
+# GetSecretResponse
+
+Response body for GET /secrets/{name}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`name` | string
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { GetSecretResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "name": null,
+ "updatedAt": null,
+} satisfies GetSecretResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as GetSecretResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/IndexInfoResponse.md b/docs/IndexInfoResponse.md
new file mode 100644
index 0000000..ef615ab
--- /dev/null
+++ b/docs/IndexInfoResponse.md
@@ -0,0 +1,51 @@
+
+# IndexInfoResponse
+
+Response for index endpoints.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`indexName` | string
+`indexType` | string
+`metric` | string
+`sortColumns` | Array<string>
+`status` | [IndexStatus](IndexStatus.md)
+`textColumns` | Array<string>
+`updatedAt` | Date
+`vectorColumns` | Array<string>
+
+## Example
+
+```typescript
+import type { IndexInfoResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "indexName": null,
+ "indexType": null,
+ "metric": null,
+ "sortColumns": null,
+ "status": null,
+ "textColumns": null,
+ "updatedAt": null,
+ "vectorColumns": null,
+} satisfies IndexInfoResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as IndexInfoResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/IndexStatus.md b/docs/IndexStatus.md
new file mode 100644
index 0000000..84e88a7
--- /dev/null
+++ b/docs/IndexStatus.md
@@ -0,0 +1,33 @@
+
+# IndexStatus
+
+Index build status exposed to API consumers.
+
+## Properties
+
+Name | Type
+------------ | -------------
+
+## Example
+
+```typescript
+import type { IndexStatus } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+} satisfies IndexStatus
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as IndexStatus
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/IndexesApi.md b/docs/IndexesApi.md
new file mode 100644
index 0000000..3f2d23a
--- /dev/null
+++ b/docs/IndexesApi.md
@@ -0,0 +1,254 @@
+# IndexesApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**createIndex**](IndexesApi.md#createindexoperation) | **POST** /v1/connections/{connection_id}/tables/{schema}/{table}/indexes | Create an index on a table |
+| [**deleteIndex**](IndexesApi.md#deleteindex) | **DELETE** /v1/connections/{connection_id}/tables/{schema}/{table}/indexes/{index_name} | Delete an index |
+| [**listIndexes**](IndexesApi.md#listindexes) | **GET** /v1/connections/{connection_id}/tables/{schema}/{table}/indexes | List indexes on a table |
+
+
+
+## createIndex
+
+> IndexInfoResponse createIndex(connectionId, schema, table, createIndexRequest)
+
+Create an index on a table
+
+Create a sorted or BM25 full-text index on a cached table.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ IndexesApi,
+} from '@hotdata/sdk';
+import type { CreateIndexOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new IndexesApi(config);
+
+ const body = {
+ // string | Connection identifier
+ connectionId: connectionId_example,
+ // string | Schema name
+ schema: schema_example,
+ // string | Table name
+ table: table_example,
+ // CreateIndexRequest
+ createIndexRequest: ...,
+ } satisfies CreateIndexOperationRequest;
+
+ try {
+ const data = await api.createIndex(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection identifier | [Defaults to `undefined`] |
+| **schema** | `string` | Schema name | [Defaults to `undefined`] |
+| **table** | `string` | Table name | [Defaults to `undefined`] |
+| **createIndexRequest** | [CreateIndexRequest](CreateIndexRequest.md) | | |
+
+### Return type
+
+[**IndexInfoResponse**](IndexInfoResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Index created | - |
+| **400** | Invalid request | - |
+| **404** | Table not found | - |
+| **500** | Internal server error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## deleteIndex
+
+> deleteIndex(connectionId, schema, table, indexName)
+
+Delete an index
+
+Delete a specific index from a cached table.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ IndexesApi,
+} from '@hotdata/sdk';
+import type { DeleteIndexRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new IndexesApi(config);
+
+ const body = {
+ // string | Connection identifier
+ connectionId: connectionId_example,
+ // string | Schema name
+ schema: schema_example,
+ // string | Table name
+ table: table_example,
+ // string | Index name
+ indexName: indexName_example,
+ } satisfies DeleteIndexRequest;
+
+ try {
+ const data = await api.deleteIndex(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection identifier | [Defaults to `undefined`] |
+| **schema** | `string` | Schema name | [Defaults to `undefined`] |
+| **table** | `string` | Table name | [Defaults to `undefined`] |
+| **indexName** | `string` | Index name | [Defaults to `undefined`] |
+
+### Return type
+
+`void` (Empty response body)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | Index deleted | - |
+| **404** | Index not found | - |
+| **500** | Internal server error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listIndexes
+
+> ListIndexesResponse listIndexes(connectionId, schema, table)
+
+List indexes on a table
+
+List all indexes created on a cached table.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ IndexesApi,
+} from '@hotdata/sdk';
+import type { ListIndexesRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new IndexesApi(config);
+
+ const body = {
+ // string | Connection identifier
+ connectionId: connectionId_example,
+ // string | Schema name
+ schema: schema_example,
+ // string | Table name
+ table: table_example,
+ } satisfies ListIndexesRequest;
+
+ try {
+ const data = await api.listIndexes(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Connection identifier | [Defaults to `undefined`] |
+| **schema** | `string` | Schema name | [Defaults to `undefined`] |
+| **table** | `string` | Table name | [Defaults to `undefined`] |
+
+### Return type
+
+[**ListIndexesResponse**](ListIndexesResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Indexes listed | - |
+| **500** | Internal server error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/InformationSchemaApi.md b/docs/InformationSchemaApi.md
new file mode 100644
index 0000000..d302711
--- /dev/null
+++ b/docs/InformationSchemaApi.md
@@ -0,0 +1,96 @@
+# InformationSchemaApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**informationSchema**](InformationSchemaApi.md#informationschema) | **GET** /v1/information_schema | List tables |
+
+
+
+## informationSchema
+
+> InformationSchemaResponse informationSchema(connectionId, schema, table, includeColumns, limit, cursor)
+
+List tables
+
+List discovered tables with optional filtering and pagination. Supports wildcard patterns (SQL %) for schema and table name filters. Set include_columns=true to include column definitions (omitted by default).
+
+### Example
+
+```ts
+import {
+ Configuration,
+ InformationSchemaApi,
+} from '@hotdata/sdk';
+import type { InformationSchemaRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new InformationSchemaApi(config);
+
+ const body = {
+ // string | Filter by connection ID (optional)
+ connectionId: connectionId_example,
+ // string | Filter by schema name (supports % wildcards) (optional)
+ schema: schema_example,
+ // string | Filter by table name (supports % wildcards) (optional)
+ table: table_example,
+ // boolean | Include column definitions (default: false) (optional)
+ includeColumns: true,
+ // number | Maximum number of tables per page (optional)
+ limit: 56,
+ // string | Pagination cursor from a previous response (optional)
+ cursor: cursor_example,
+ } satisfies InformationSchemaRequest;
+
+ try {
+ const data = await api.informationSchema(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **connectionId** | `string` | Filter by connection ID | [Optional] [Defaults to `undefined`] |
+| **schema** | `string` | Filter by schema name (supports % wildcards) | [Optional] [Defaults to `undefined`] |
+| **table** | `string` | Filter by table name (supports % wildcards) | [Optional] [Defaults to `undefined`] |
+| **includeColumns** | `boolean` | Include column definitions (default: false) | [Optional] [Defaults to `undefined`] |
+| **limit** | `number` | Maximum number of tables per page | [Optional] [Defaults to `undefined`] |
+| **cursor** | `string` | Pagination cursor from a previous response | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**InformationSchemaResponse**](InformationSchemaResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Table metadata | - |
+| **404** | Connection not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/InformationSchemaResponse.md b/docs/InformationSchemaResponse.md
new file mode 100644
index 0000000..944ad1e
--- /dev/null
+++ b/docs/InformationSchemaResponse.md
@@ -0,0 +1,43 @@
+
+# InformationSchemaResponse
+
+Response body for GET /information_schema
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`hasMore` | boolean
+`limit` | number
+`nextCursor` | string
+`tables` | [Array<TableInfo>](TableInfo.md)
+
+## Example
+
+```typescript
+import type { InformationSchemaResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "hasMore": null,
+ "limit": null,
+ "nextCursor": null,
+ "tables": null,
+} satisfies InformationSchemaResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as InformationSchemaResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/InlineData.md b/docs/InlineData.md
new file mode 100644
index 0000000..253892d
--- /dev/null
+++ b/docs/InlineData.md
@@ -0,0 +1,39 @@
+
+# InlineData
+
+Inline data specification
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | { [key: string]: string; }
+`content` | string
+`format` | string
+
+## Example
+
+```typescript
+import type { InlineData } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "content": null,
+ "format": null,
+} satisfies InlineData
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as InlineData
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/InlineDatasetSource.md b/docs/InlineDatasetSource.md
new file mode 100644
index 0000000..aa6858a
--- /dev/null
+++ b/docs/InlineDatasetSource.md
@@ -0,0 +1,35 @@
+
+# InlineDatasetSource
+
+Create dataset from inline data (small payloads)
+
+## Properties
+
+Name | Type
+------------ | -------------
+`inline` | [InlineData](InlineData.md)
+
+## Example
+
+```typescript
+import type { InlineDatasetSource } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "inline": null,
+} satisfies InlineDatasetSource
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as InlineDatasetSource
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListConnectionTypesResponse.md b/docs/ListConnectionTypesResponse.md
new file mode 100644
index 0000000..e92bb76
--- /dev/null
+++ b/docs/ListConnectionTypesResponse.md
@@ -0,0 +1,34 @@
+
+# ListConnectionTypesResponse
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionTypes` | [Array<ConnectionTypeSummary>](ConnectionTypeSummary.md)
+
+## Example
+
+```typescript
+import type { ListConnectionTypesResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionTypes": null,
+} satisfies ListConnectionTypesResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListConnectionTypesResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListConnectionsResponse.md b/docs/ListConnectionsResponse.md
new file mode 100644
index 0000000..c960791
--- /dev/null
+++ b/docs/ListConnectionsResponse.md
@@ -0,0 +1,35 @@
+
+# ListConnectionsResponse
+
+Response body for GET /connections
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connections` | [Array<ConnectionInfo>](ConnectionInfo.md)
+
+## Example
+
+```typescript
+import type { ListConnectionsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connections": null,
+} satisfies ListConnectionsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListConnectionsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListDatasetVersionsResponse.md b/docs/ListDatasetVersionsResponse.md
new file mode 100644
index 0000000..15ad83b
--- /dev/null
+++ b/docs/ListDatasetVersionsResponse.md
@@ -0,0 +1,45 @@
+
+# ListDatasetVersionsResponse
+
+Response body for GET /v1/datasets/{id}/versions
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`datasetId` | string
+`hasMore` | boolean
+`limit` | number
+`offset` | number
+`versions` | [Array<DatasetVersionSummary>](DatasetVersionSummary.md)
+
+## Example
+
+```typescript
+import type { ListDatasetVersionsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "datasetId": null,
+ "hasMore": null,
+ "limit": null,
+ "offset": null,
+ "versions": null,
+} satisfies ListDatasetVersionsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListDatasetVersionsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListDatasetsResponse.md b/docs/ListDatasetsResponse.md
new file mode 100644
index 0000000..06f5852
--- /dev/null
+++ b/docs/ListDatasetsResponse.md
@@ -0,0 +1,43 @@
+
+# ListDatasetsResponse
+
+Response body for GET /v1/datasets
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`datasets` | [Array<DatasetSummary>](DatasetSummary.md)
+`hasMore` | boolean
+`limit` | number
+`offset` | number
+
+## Example
+
+```typescript
+import type { ListDatasetsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "datasets": null,
+ "hasMore": null,
+ "limit": null,
+ "offset": null,
+} satisfies ListDatasetsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListDatasetsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListIndexesResponse.md b/docs/ListIndexesResponse.md
new file mode 100644
index 0000000..34d3afd
--- /dev/null
+++ b/docs/ListIndexesResponse.md
@@ -0,0 +1,35 @@
+
+# ListIndexesResponse
+
+Response body for GET .../indexes
+
+## Properties
+
+Name | Type
+------------ | -------------
+`indexes` | [Array<IndexInfoResponse>](IndexInfoResponse.md)
+
+## Example
+
+```typescript
+import type { ListIndexesResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "indexes": null,
+} satisfies ListIndexesResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListIndexesResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListQueryRunsResponse.md b/docs/ListQueryRunsResponse.md
new file mode 100644
index 0000000..1a1f0a0
--- /dev/null
+++ b/docs/ListQueryRunsResponse.md
@@ -0,0 +1,43 @@
+
+# ListQueryRunsResponse
+
+Response body for GET /query-runs
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`hasMore` | boolean
+`limit` | number
+`nextCursor` | string
+`queryRuns` | [Array<QueryRunInfo>](QueryRunInfo.md)
+
+## Example
+
+```typescript
+import type { ListQueryRunsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "hasMore": null,
+ "limit": null,
+ "nextCursor": null,
+ "queryRuns": null,
+} satisfies ListQueryRunsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListQueryRunsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListResultsResponse.md b/docs/ListResultsResponse.md
new file mode 100644
index 0000000..72c197d
--- /dev/null
+++ b/docs/ListResultsResponse.md
@@ -0,0 +1,43 @@
+
+# ListResultsResponse
+
+Response body for GET /results
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`hasMore` | boolean
+`limit` | number
+`offset` | number
+`results` | [Array<ResultInfo>](ResultInfo.md)
+
+## Example
+
+```typescript
+import type { ListResultsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "hasMore": null,
+ "limit": null,
+ "offset": null,
+ "results": null,
+} satisfies ListResultsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListResultsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListSavedQueriesResponse.md b/docs/ListSavedQueriesResponse.md
new file mode 100644
index 0000000..1e5ae69
--- /dev/null
+++ b/docs/ListSavedQueriesResponse.md
@@ -0,0 +1,43 @@
+
+# ListSavedQueriesResponse
+
+Response body for GET /v1/queries
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`hasMore` | boolean
+`limit` | number
+`offset` | number
+`queries` | [Array<SavedQuerySummary>](SavedQuerySummary.md)
+
+## Example
+
+```typescript
+import type { ListSavedQueriesResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "hasMore": null,
+ "limit": null,
+ "offset": null,
+ "queries": null,
+} satisfies ListSavedQueriesResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListSavedQueriesResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListSavedQueryVersionsResponse.md b/docs/ListSavedQueryVersionsResponse.md
new file mode 100644
index 0000000..c262b18
--- /dev/null
+++ b/docs/ListSavedQueryVersionsResponse.md
@@ -0,0 +1,45 @@
+
+# ListSavedQueryVersionsResponse
+
+Response body for GET /v1/queries/{id}/versions
+
+## Properties
+
+Name | Type
+------------ | -------------
+`count` | number
+`hasMore` | boolean
+`limit` | number
+`offset` | number
+`savedQueryId` | string
+`versions` | [Array<SavedQueryVersionInfo>](SavedQueryVersionInfo.md)
+
+## Example
+
+```typescript
+import type { ListSavedQueryVersionsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "count": null,
+ "hasMore": null,
+ "limit": null,
+ "offset": null,
+ "savedQueryId": null,
+ "versions": null,
+} satisfies ListSavedQueryVersionsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListSavedQueryVersionsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListSecretsResponse.md b/docs/ListSecretsResponse.md
new file mode 100644
index 0000000..2888a83
--- /dev/null
+++ b/docs/ListSecretsResponse.md
@@ -0,0 +1,35 @@
+
+# ListSecretsResponse
+
+Response body for GET /secrets
+
+## Properties
+
+Name | Type
+------------ | -------------
+`secrets` | [Array<SecretMetadataResponse>](SecretMetadataResponse.md)
+
+## Example
+
+```typescript
+import type { ListSecretsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "secrets": null,
+} satisfies ListSecretsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListSecretsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListUploadsResponse.md b/docs/ListUploadsResponse.md
new file mode 100644
index 0000000..531648b
--- /dev/null
+++ b/docs/ListUploadsResponse.md
@@ -0,0 +1,35 @@
+
+# ListUploadsResponse
+
+Response body for GET /v1/files
+
+## Properties
+
+Name | Type
+------------ | -------------
+`uploads` | [Array<UploadInfo>](UploadInfo.md)
+
+## Example
+
+```typescript
+import type { ListUploadsResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "uploads": null,
+} satisfies ListUploadsResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListUploadsResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ListWorkspacesResponse.md b/docs/ListWorkspacesResponse.md
new file mode 100644
index 0000000..f55c5b6
--- /dev/null
+++ b/docs/ListWorkspacesResponse.md
@@ -0,0 +1,36 @@
+
+# ListWorkspacesResponse
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`ok` | boolean
+`workspaces` | [Array<WorkspaceListItem>](WorkspaceListItem.md)
+
+## Example
+
+```typescript
+import type { ListWorkspacesResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "ok": true,
+ "workspaces": null,
+} satisfies ListWorkspacesResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ListWorkspacesResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ModelError.md b/docs/ModelError.md
new file mode 100644
index 0000000..6346a66
--- /dev/null
+++ b/docs/ModelError.md
@@ -0,0 +1,34 @@
+
+# ModelError
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`error` | string
+
+## Example
+
+```typescript
+import type { ModelError } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "error": missing_authorization,
+} satisfies ModelError
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ModelError
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/NumericProfileDetail.md b/docs/NumericProfileDetail.md
new file mode 100644
index 0000000..917dd8e
--- /dev/null
+++ b/docs/NumericProfileDetail.md
@@ -0,0 +1,39 @@
+
+# NumericProfileDetail
+
+High-cardinality numeric column (>200 distinct values).
+
+## Properties
+
+Name | Type
+------------ | -------------
+`max` | string
+`mean` | number
+`min` | string
+
+## Example
+
+```typescript
+import type { NumericProfileDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "max": null,
+ "mean": null,
+ "min": null,
+} satisfies NumericProfileDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as NumericProfileDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/QueryApi.md b/docs/QueryApi.md
new file mode 100644
index 0000000..fc497bb
--- /dev/null
+++ b/docs/QueryApi.md
@@ -0,0 +1,82 @@
+# QueryApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**query**](QueryApi.md#queryoperation) | **POST** /v1/query | Execute SQL query |
+
+
+
+## query
+
+> QueryResponse query(queryRequest)
+
+Execute SQL query
+
+Execute a SQL query against all registered connections and datasets. Use standard Postgres-compatible SQL to reference tables from any connection using the format `connection_name.schema.table`. Results are returned inline and a `result_id` is provided for later retrieval via the Results API.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ QueryApi,
+} from '@hotdata/sdk';
+import type { QueryOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new QueryApi(config);
+
+ const body = {
+ // QueryRequest
+ queryRequest: ...,
+ } satisfies QueryOperationRequest;
+
+ try {
+ const data = await api.query(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **queryRequest** | [QueryRequest](QueryRequest.md) | | |
+
+### Return type
+
+[**QueryResponse**](QueryResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Query executed successfully | - |
+| **400** | Invalid request | - |
+| **500** | Internal server error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/QueryRequest.md b/docs/QueryRequest.md
new file mode 100644
index 0000000..581317e
--- /dev/null
+++ b/docs/QueryRequest.md
@@ -0,0 +1,35 @@
+
+# QueryRequest
+
+Request body for POST /query
+
+## Properties
+
+Name | Type
+------------ | -------------
+`sql` | string
+
+## Example
+
+```typescript
+import type { QueryRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "sql": null,
+} satisfies QueryRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as QueryRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/QueryResponse.md b/docs/QueryResponse.md
new file mode 100644
index 0000000..c2971a2
--- /dev/null
+++ b/docs/QueryResponse.md
@@ -0,0 +1,49 @@
+
+# QueryResponse
+
+Response body for POST /query Query results are returned immediately along with a `result_id` for later retrieval. The actual persistence to storage happens asynchronously in the background. To check if a result is ready for SQL queries, poll GET /results/{id} and check `status`: - `\"processing\"`: Persistence is still in progress - `\"ready\"`: Result is available for retrieval and SQL queries - `\"failed\"`: Persistence failed (check `error_message` for details)
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | Array<string>
+`executionTimeMs` | number
+`nullable` | Array<boolean>
+`queryRunId` | string
+`resultId` | string
+`rowCount` | number
+`rows` | Array<Array<any>>
+`warning` | string
+
+## Example
+
+```typescript
+import type { QueryResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "executionTimeMs": null,
+ "nullable": null,
+ "queryRunId": null,
+ "resultId": null,
+ "rowCount": null,
+ "rows": null,
+ "warning": null,
+} satisfies QueryResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as QueryResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/QueryRunInfo.md b/docs/QueryRunInfo.md
new file mode 100644
index 0000000..97ff3c2
--- /dev/null
+++ b/docs/QueryRunInfo.md
@@ -0,0 +1,63 @@
+
+# QueryRunInfo
+
+Single query run for listing
+
+## Properties
+
+Name | Type
+------------ | -------------
+`completedAt` | Date
+`createdAt` | Date
+`errorMessage` | string
+`executionTimeMs` | number
+`id` | string
+`resultId` | string
+`rowCount` | number
+`savedQueryId` | string
+`savedQueryVersion` | number
+`snapshotId` | string
+`sqlHash` | string
+`sqlText` | string
+`status` | string
+`traceId` | string
+`warningMessage` | string
+
+## Example
+
+```typescript
+import type { QueryRunInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "completedAt": null,
+ "createdAt": null,
+ "errorMessage": null,
+ "executionTimeMs": null,
+ "id": null,
+ "resultId": null,
+ "rowCount": null,
+ "savedQueryId": null,
+ "savedQueryVersion": null,
+ "snapshotId": null,
+ "sqlHash": null,
+ "sqlText": null,
+ "status": null,
+ "traceId": null,
+ "warningMessage": null,
+} satisfies QueryRunInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as QueryRunInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/QueryRunsApi.md b/docs/QueryRunsApi.md
new file mode 100644
index 0000000..7ce4356
--- /dev/null
+++ b/docs/QueryRunsApi.md
@@ -0,0 +1,81 @@
+# QueryRunsApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**listQueryRuns**](QueryRunsApi.md#listqueryruns) | **GET** /v1/query-runs | List query runs |
+
+
+
+## listQueryRuns
+
+> ListQueryRunsResponse listQueryRuns(limit, cursor)
+
+List query runs
+
+### Example
+
+```ts
+import {
+ Configuration,
+ QueryRunsApi,
+} from '@hotdata/sdk';
+import type { ListQueryRunsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new QueryRunsApi(config);
+
+ const body = {
+ // number | Maximum number of results (optional)
+ limit: 56,
+ // string | Pagination cursor (optional)
+ cursor: cursor_example,
+ } satisfies ListQueryRunsRequest;
+
+ try {
+ const data = await api.listQueryRuns(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **limit** | `number` | Maximum number of results | [Optional] [Defaults to `undefined`] |
+| **cursor** | `string` | Pagination cursor | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListQueryRunsResponse**](ListQueryRunsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of query runs | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/RefreshApi.md b/docs/RefreshApi.md
new file mode 100644
index 0000000..22edbb7
--- /dev/null
+++ b/docs/RefreshApi.md
@@ -0,0 +1,82 @@
+# RefreshApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**refresh**](RefreshApi.md#refreshoperation) | **POST** /v1/refresh | Refresh connection data |
+
+
+
+## refresh
+
+> RefreshResponse refresh(refreshRequest)
+
+Refresh connection data
+
+Refresh schema metadata or table data. The behavior depends on the request fields: - **Schema refresh (all)**: omit all fields — re-discovers tables for every connection. - **Schema refresh (single)**: set `connection_id` — re-discovers tables for one connection. - **Data refresh (single table)**: set `connection_id`, `schema_name`, `table_name`, and `data: true`. - **Data refresh (connection)**: set `connection_id` and `data: true` — refreshes all cached tables. Set `include_uncached: true` to also sync tables that haven\'t been cached yet.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ RefreshApi,
+} from '@hotdata/sdk';
+import type { RefreshOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new RefreshApi(config);
+
+ const body = {
+ // RefreshRequest
+ refreshRequest: ...,
+ } satisfies RefreshOperationRequest;
+
+ try {
+ const data = await api.refresh(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **refreshRequest** | [RefreshRequest](RefreshRequest.md) | | |
+
+### Return type
+
+[**RefreshResponse**](RefreshResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Refresh completed | - |
+| **400** | Invalid request | - |
+| **404** | Connection not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/RefreshDatasetResponse.md b/docs/RefreshDatasetResponse.md
new file mode 100644
index 0000000..460445c
--- /dev/null
+++ b/docs/RefreshDatasetResponse.md
@@ -0,0 +1,41 @@
+
+# RefreshDatasetResponse
+
+Response body for POST /v1/datasets/{id}/refresh
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`id` | string
+`status` | string
+`version` | number
+
+## Example
+
+```typescript
+import type { RefreshDatasetResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "id": null,
+ "status": null,
+ "version": null,
+} satisfies RefreshDatasetResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as RefreshDatasetResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/RefreshRequest.md b/docs/RefreshRequest.md
new file mode 100644
index 0000000..82f0971
--- /dev/null
+++ b/docs/RefreshRequest.md
@@ -0,0 +1,45 @@
+
+# RefreshRequest
+
+Request body for POST /refresh
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionId` | string
+`data` | boolean
+`datasetId` | string
+`includeUncached` | boolean
+`schemaName` | string
+`tableName` | string
+
+## Example
+
+```typescript
+import type { RefreshRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionId": null,
+ "data": null,
+ "datasetId": null,
+ "includeUncached": null,
+ "schemaName": null,
+ "tableName": null,
+} satisfies RefreshRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as RefreshRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/RefreshResponse.md b/docs/RefreshResponse.md
new file mode 100644
index 0000000..5708795
--- /dev/null
+++ b/docs/RefreshResponse.md
@@ -0,0 +1,71 @@
+
+# RefreshResponse
+
+Unified response type for refresh operations
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionsFailed` | number
+`connectionsRefreshed` | number
+`errors` | [Array<TableRefreshError>](TableRefreshError.md)
+`tablesAdded` | number
+`tablesDiscovered` | number
+`tablesModified` | number
+`connectionId` | string
+`durationMs` | number
+`rowsSynced` | number
+`schemaName` | string
+`tableName` | string
+`warnings` | [Array<RefreshWarning>](RefreshWarning.md)
+`tablesFailed` | number
+`tablesRefreshed` | number
+`totalRows` | number
+`createdAt` | Date
+`id` | string
+`status` | string
+`version` | number
+
+## Example
+
+```typescript
+import type { RefreshResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionsFailed": null,
+ "connectionsRefreshed": null,
+ "errors": null,
+ "tablesAdded": null,
+ "tablesDiscovered": null,
+ "tablesModified": null,
+ "connectionId": null,
+ "durationMs": null,
+ "rowsSynced": null,
+ "schemaName": null,
+ "tableName": null,
+ "warnings": null,
+ "tablesFailed": null,
+ "tablesRefreshed": null,
+ "totalRows": null,
+ "createdAt": null,
+ "id": null,
+ "status": null,
+ "version": null,
+} satisfies RefreshResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as RefreshResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/RefreshWarning.md b/docs/RefreshWarning.md
new file mode 100644
index 0000000..0423212
--- /dev/null
+++ b/docs/RefreshWarning.md
@@ -0,0 +1,39 @@
+
+# RefreshWarning
+
+Non-fatal warning that occurred during a refresh operation. Used to report issues like failed deletion scheduling that don\'t prevent the refresh from succeeding.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`message` | string
+`schemaName` | string
+`tableName` | string
+
+## Example
+
+```typescript
+import type { RefreshWarning } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "message": null,
+ "schemaName": null,
+ "tableName": null,
+} satisfies RefreshWarning
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as RefreshWarning
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ResultInfo.md b/docs/ResultInfo.md
new file mode 100644
index 0000000..978cb81
--- /dev/null
+++ b/docs/ResultInfo.md
@@ -0,0 +1,41 @@
+
+# ResultInfo
+
+Summary of a persisted query result for listing
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`errorMessage` | string
+`id` | string
+`status` | string
+
+## Example
+
+```typescript
+import type { ResultInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "errorMessage": null,
+ "id": null,
+ "status": null,
+} satisfies ResultInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as ResultInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/ResultsApi.md b/docs/ResultsApi.md
new file mode 100644
index 0000000..74152b2
--- /dev/null
+++ b/docs/ResultsApi.md
@@ -0,0 +1,154 @@
+# ResultsApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**getResult**](ResultsApi.md#getresult) | **GET** /v1/results/{id} | Get result |
+| [**listResults**](ResultsApi.md#listresults) | **GET** /v1/results | List results |
+
+
+
+## getResult
+
+> GetResultResponse getResult(id)
+
+Get result
+
+Retrieve a persisted query result by ID. If the result is still being processed, only the status is returned. Once ready, the full column and row data is included in the response.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ResultsApi,
+} from '@hotdata/sdk';
+import type { GetResultRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ResultsApi(config);
+
+ const body = {
+ // string | Result ID
+ id: id_example,
+ } satisfies GetResultRequest;
+
+ try {
+ const data = await api.getResult(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Result ID | [Defaults to `undefined`] |
+
+### Return type
+
+[**GetResultResponse**](GetResultResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Result data | - |
+| **404** | Result not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listResults
+
+> ListResultsResponse listResults(limit, offset)
+
+List results
+
+### Example
+
+```ts
+import {
+ Configuration,
+ ResultsApi,
+} from '@hotdata/sdk';
+import type { ListResultsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new ResultsApi(config);
+
+ const body = {
+ // number | Maximum number of results (default: 100, max: 1000) (optional)
+ limit: 56,
+ // number | Pagination offset (default: 0) (optional)
+ offset: 56,
+ } satisfies ListResultsRequest;
+
+ try {
+ const data = await api.listResults(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **limit** | `number` | Maximum number of results (default: 100, max: 1000) | [Optional] [Defaults to `undefined`] |
+| **offset** | `number` | Pagination offset (default: 0) | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListResultsResponse**](ListResultsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of results | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/SavedQueriesApi.md b/docs/SavedQueriesApi.md
new file mode 100644
index 0000000..21c1430
--- /dev/null
+++ b/docs/SavedQueriesApi.md
@@ -0,0 +1,526 @@
+# SavedQueriesApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**createSavedQuery**](SavedQueriesApi.md#createsavedqueryoperation) | **POST** /v1/queries | Create saved query |
+| [**deleteSavedQuery**](SavedQueriesApi.md#deletesavedquery) | **DELETE** /v1/queries/{id} | Delete saved query |
+| [**executeSavedQuery**](SavedQueriesApi.md#executesavedqueryoperation) | **POST** /v1/queries/{id}/execute | Execute saved query |
+| [**getSavedQuery**](SavedQueriesApi.md#getsavedquery) | **GET** /v1/queries/{id} | Get saved query |
+| [**listSavedQueries**](SavedQueriesApi.md#listsavedqueries) | **GET** /v1/queries | List saved queries |
+| [**listSavedQueryVersions**](SavedQueriesApi.md#listsavedqueryversions) | **GET** /v1/queries/{id}/versions | List saved query versions |
+| [**updateSavedQuery**](SavedQueriesApi.md#updatesavedqueryoperation) | **PUT** /v1/queries/{id} | Update saved query |
+
+
+
+## createSavedQuery
+
+> SavedQueryDetail createSavedQuery(createSavedQueryRequest)
+
+Create saved query
+
+Save a named SQL query. The SQL is stored as version 1 and automatically analyzed for classification metadata (category, table count, predicate/join/aggregation flags).
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SavedQueriesApi,
+} from '@hotdata/sdk';
+import type { CreateSavedQueryOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SavedQueriesApi(config);
+
+ const body = {
+ // CreateSavedQueryRequest
+ createSavedQueryRequest: ...,
+ } satisfies CreateSavedQueryOperationRequest;
+
+ try {
+ const data = await api.createSavedQuery(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **createSavedQueryRequest** | [CreateSavedQueryRequest](CreateSavedQueryRequest.md) | | |
+
+### Return type
+
+[**SavedQueryDetail**](SavedQueryDetail.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Saved query created | - |
+| **400** | Invalid request | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## deleteSavedQuery
+
+> deleteSavedQuery(id)
+
+Delete saved query
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SavedQueriesApi,
+} from '@hotdata/sdk';
+import type { DeleteSavedQueryRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SavedQueriesApi(config);
+
+ const body = {
+ // string | Saved query ID
+ id: id_example,
+ } satisfies DeleteSavedQueryRequest;
+
+ try {
+ const data = await api.deleteSavedQuery(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Saved query ID | [Defaults to `undefined`] |
+
+### Return type
+
+`void` (Empty response body)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | Saved query deleted | - |
+| **404** | Saved query not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## executeSavedQuery
+
+> QueryResponse executeSavedQuery(id, executeSavedQueryRequest)
+
+Execute saved query
+
+Execute a saved query. By default runs the latest version. Optionally specify a version number to execute a previous version. Returns the same response format as POST /v1/query.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SavedQueriesApi,
+} from '@hotdata/sdk';
+import type { ExecuteSavedQueryOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SavedQueriesApi(config);
+
+ const body = {
+ // string | Saved query ID
+ id: id_example,
+ // ExecuteSavedQueryRequest | Optional version to execute (optional)
+ executeSavedQueryRequest: ...,
+ } satisfies ExecuteSavedQueryOperationRequest;
+
+ try {
+ const data = await api.executeSavedQuery(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Saved query ID | [Defaults to `undefined`] |
+| **executeSavedQueryRequest** | [ExecuteSavedQueryRequest](ExecuteSavedQueryRequest.md) | Optional version to execute | [Optional] |
+
+### Return type
+
+[**QueryResponse**](QueryResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Query executed | - |
+| **404** | Saved query not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## getSavedQuery
+
+> SavedQueryDetail getSavedQuery(id)
+
+Get saved query
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SavedQueriesApi,
+} from '@hotdata/sdk';
+import type { GetSavedQueryRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SavedQueriesApi(config);
+
+ const body = {
+ // string | Saved query ID
+ id: id_example,
+ } satisfies GetSavedQueryRequest;
+
+ try {
+ const data = await api.getSavedQuery(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Saved query ID | [Defaults to `undefined`] |
+
+### Return type
+
+[**SavedQueryDetail**](SavedQueryDetail.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Saved query details | - |
+| **404** | Saved query not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listSavedQueries
+
+> ListSavedQueriesResponse listSavedQueries(limit, offset)
+
+List saved queries
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SavedQueriesApi,
+} from '@hotdata/sdk';
+import type { ListSavedQueriesRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SavedQueriesApi(config);
+
+ const body = {
+ // number | Maximum number of results (optional)
+ limit: 56,
+ // number | Pagination offset (optional)
+ offset: 56,
+ } satisfies ListSavedQueriesRequest;
+
+ try {
+ const data = await api.listSavedQueries(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **limit** | `number` | Maximum number of results | [Optional] [Defaults to `undefined`] |
+| **offset** | `number` | Pagination offset | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListSavedQueriesResponse**](ListSavedQueriesResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of saved queries | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listSavedQueryVersions
+
+> ListSavedQueryVersionsResponse listSavedQueryVersions(id, limit, offset)
+
+List saved query versions
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SavedQueriesApi,
+} from '@hotdata/sdk';
+import type { ListSavedQueryVersionsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SavedQueriesApi(config);
+
+ const body = {
+ // string | Saved query ID
+ id: id_example,
+ // number | Maximum number of versions (optional)
+ limit: 56,
+ // number | Pagination offset (optional)
+ offset: 56,
+ } satisfies ListSavedQueryVersionsRequest;
+
+ try {
+ const data = await api.listSavedQueryVersions(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Saved query ID | [Defaults to `undefined`] |
+| **limit** | `number` | Maximum number of versions | [Optional] [Defaults to `undefined`] |
+| **offset** | `number` | Pagination offset | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListSavedQueryVersionsResponse**](ListSavedQueryVersionsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of versions | - |
+| **404** | Saved query not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## updateSavedQuery
+
+> SavedQueryDetail updateSavedQuery(id, updateSavedQueryRequest)
+
+Update saved query
+
+Update a saved query. If the SQL changes, a new version is created (previous versions are preserved). Name, tags, description, and classification overrides can also be updated.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SavedQueriesApi,
+} from '@hotdata/sdk';
+import type { UpdateSavedQueryOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SavedQueriesApi(config);
+
+ const body = {
+ // string | Saved query ID
+ id: id_example,
+ // UpdateSavedQueryRequest
+ updateSavedQueryRequest: ...,
+ } satisfies UpdateSavedQueryOperationRequest;
+
+ try {
+ const data = await api.updateSavedQuery(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | `string` | Saved query ID | [Defaults to `undefined`] |
+| **updateSavedQueryRequest** | [UpdateSavedQueryRequest](UpdateSavedQueryRequest.md) | | |
+
+### Return type
+
+[**SavedQueryDetail**](SavedQueryDetail.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Saved query updated | - |
+| **400** | Invalid request | - |
+| **404** | Saved query not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/SavedQueryDatasetSource.md b/docs/SavedQueryDatasetSource.md
new file mode 100644
index 0000000..9a93148
--- /dev/null
+++ b/docs/SavedQueryDatasetSource.md
@@ -0,0 +1,37 @@
+
+# SavedQueryDatasetSource
+
+Create dataset from a saved query result
+
+## Properties
+
+Name | Type
+------------ | -------------
+`savedQueryId` | string
+`version` | number
+
+## Example
+
+```typescript
+import type { SavedQueryDatasetSource } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "savedQueryId": null,
+ "version": null,
+} satisfies SavedQueryDatasetSource
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as SavedQueryDatasetSource
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/SavedQueryDetail.md b/docs/SavedQueryDetail.md
new file mode 100644
index 0000000..8e9d32e
--- /dev/null
+++ b/docs/SavedQueryDetail.md
@@ -0,0 +1,69 @@
+
+# SavedQueryDetail
+
+Saved query detail (includes latest version\'s SQL)
+
+## Properties
+
+Name | Type
+------------ | -------------
+`category` | string
+`createdAt` | Date
+`description` | string
+`hasAggregation` | boolean
+`hasGroupBy` | boolean
+`hasJoin` | boolean
+`hasLimit` | boolean
+`hasOrderBy` | boolean
+`hasPredicate` | boolean
+`id` | string
+`latestVersion` | number
+`name` | string
+`numTables` | number
+`sql` | string
+`sqlHash` | string
+`tableSize` | string
+`tags` | Array<string>
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { SavedQueryDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "category": null,
+ "createdAt": null,
+ "description": null,
+ "hasAggregation": null,
+ "hasGroupBy": null,
+ "hasJoin": null,
+ "hasLimit": null,
+ "hasOrderBy": null,
+ "hasPredicate": null,
+ "id": null,
+ "latestVersion": null,
+ "name": null,
+ "numTables": null,
+ "sql": null,
+ "sqlHash": null,
+ "tableSize": null,
+ "tags": null,
+ "updatedAt": null,
+} satisfies SavedQueryDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as SavedQueryDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/SavedQuerySummary.md b/docs/SavedQuerySummary.md
new file mode 100644
index 0000000..f90c1f3
--- /dev/null
+++ b/docs/SavedQuerySummary.md
@@ -0,0 +1,47 @@
+
+# SavedQuerySummary
+
+Saved query summary for listing
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`description` | string
+`id` | string
+`latestVersion` | number
+`name` | string
+`tags` | Array<string>
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { SavedQuerySummary } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "description": null,
+ "id": null,
+ "latestVersion": null,
+ "name": null,
+ "tags": null,
+ "updatedAt": null,
+} satisfies SavedQuerySummary
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as SavedQuerySummary
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/SavedQueryVersionInfo.md b/docs/SavedQueryVersionInfo.md
new file mode 100644
index 0000000..2c59b84
--- /dev/null
+++ b/docs/SavedQueryVersionInfo.md
@@ -0,0 +1,59 @@
+
+# SavedQueryVersionInfo
+
+Single saved query version
+
+## Properties
+
+Name | Type
+------------ | -------------
+`category` | string
+`createdAt` | Date
+`hasAggregation` | boolean
+`hasGroupBy` | boolean
+`hasJoin` | boolean
+`hasLimit` | boolean
+`hasOrderBy` | boolean
+`hasPredicate` | boolean
+`numTables` | number
+`sql` | string
+`sqlHash` | string
+`tableSize` | string
+`version` | number
+
+## Example
+
+```typescript
+import type { SavedQueryVersionInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "category": null,
+ "createdAt": null,
+ "hasAggregation": null,
+ "hasGroupBy": null,
+ "hasJoin": null,
+ "hasLimit": null,
+ "hasOrderBy": null,
+ "hasPredicate": null,
+ "numTables": null,
+ "sql": null,
+ "sqlHash": null,
+ "tableSize": null,
+ "version": null,
+} satisfies SavedQueryVersionInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as SavedQueryVersionInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/SchemaRefreshResult.md b/docs/SchemaRefreshResult.md
new file mode 100644
index 0000000..767691e
--- /dev/null
+++ b/docs/SchemaRefreshResult.md
@@ -0,0 +1,45 @@
+
+# SchemaRefreshResult
+
+Response for schema refresh operations
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionsFailed` | number
+`connectionsRefreshed` | number
+`errors` | [Array<ConnectionSchemaError>](ConnectionSchemaError.md)
+`tablesAdded` | number
+`tablesDiscovered` | number
+`tablesModified` | number
+
+## Example
+
+```typescript
+import type { SchemaRefreshResult } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionsFailed": null,
+ "connectionsRefreshed": null,
+ "errors": null,
+ "tablesAdded": null,
+ "tablesDiscovered": null,
+ "tablesModified": null,
+} satisfies SchemaRefreshResult
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as SchemaRefreshResult
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/SecretMetadataResponse.md b/docs/SecretMetadataResponse.md
new file mode 100644
index 0000000..24d0f5f
--- /dev/null
+++ b/docs/SecretMetadataResponse.md
@@ -0,0 +1,39 @@
+
+# SecretMetadataResponse
+
+Single secret metadata for API responses
+
+## Properties
+
+Name | Type
+------------ | -------------
+`createdAt` | Date
+`name` | string
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { SecretMetadataResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "createdAt": null,
+ "name": null,
+ "updatedAt": null,
+} satisfies SecretMetadataResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as SecretMetadataResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/SecretsApi.md b/docs/SecretsApi.md
new file mode 100644
index 0000000..baa2f4a
--- /dev/null
+++ b/docs/SecretsApi.md
@@ -0,0 +1,363 @@
+# SecretsApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**createSecret**](SecretsApi.md#createsecretoperation) | **POST** /v1/secrets | Create secret |
+| [**deleteSecret**](SecretsApi.md#deletesecret) | **DELETE** /v1/secrets/{name} | Delete secret |
+| [**getSecret**](SecretsApi.md#getsecret) | **GET** /v1/secrets/{name} | Get secret |
+| [**listSecrets**](SecretsApi.md#listsecrets) | **GET** /v1/secrets | List secrets |
+| [**updateSecret**](SecretsApi.md#updatesecretoperation) | **PUT** /v1/secrets/{name} | Update secret |
+
+
+
+## createSecret
+
+> CreateSecretResponse createSecret(createSecretRequest)
+
+Create secret
+
+Store a new named secret. The value is encrypted at rest and can be referenced by connections for authentication. Secret names must be unique.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SecretsApi,
+} from '@hotdata/sdk';
+import type { CreateSecretOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SecretsApi(config);
+
+ const body = {
+ // CreateSecretRequest
+ createSecretRequest: ...,
+ } satisfies CreateSecretOperationRequest;
+
+ try {
+ const data = await api.createSecret(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **createSecretRequest** | [CreateSecretRequest](CreateSecretRequest.md) | | |
+
+### Return type
+
+[**CreateSecretResponse**](CreateSecretResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Secret created | - |
+| **409** | Secret already exists | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## deleteSecret
+
+> deleteSecret(name)
+
+Delete secret
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SecretsApi,
+} from '@hotdata/sdk';
+import type { DeleteSecretRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SecretsApi(config);
+
+ const body = {
+ // string | Secret name
+ name: name_example,
+ } satisfies DeleteSecretRequest;
+
+ try {
+ const data = await api.deleteSecret(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **name** | `string` | Secret name | [Defaults to `undefined`] |
+
+### Return type
+
+`void` (Empty response body)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **204** | Secret deleted | - |
+| **404** | Secret not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## getSecret
+
+> GetSecretResponse getSecret(name)
+
+Get secret
+
+Get metadata for a secret. The secret value is never returned.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SecretsApi,
+} from '@hotdata/sdk';
+import type { GetSecretRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SecretsApi(config);
+
+ const body = {
+ // string | Secret name
+ name: name_example,
+ } satisfies GetSecretRequest;
+
+ try {
+ const data = await api.getSecret(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **name** | `string` | Secret name | [Defaults to `undefined`] |
+
+### Return type
+
+[**GetSecretResponse**](GetSecretResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Secret metadata | - |
+| **404** | Secret not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listSecrets
+
+> ListSecretsResponse listSecrets()
+
+List secrets
+
+List all stored secrets. Only metadata (name, timestamps) is returned — secret values are never exposed.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SecretsApi,
+} from '@hotdata/sdk';
+import type { ListSecretsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SecretsApi(config);
+
+ try {
+ const data = await api.listSecrets();
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**ListSecretsResponse**](ListSecretsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of secrets | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## updateSecret
+
+> UpdateSecretResponse updateSecret(name, updateSecretRequest)
+
+Update secret
+
+### Example
+
+```ts
+import {
+ Configuration,
+ SecretsApi,
+} from '@hotdata/sdk';
+import type { UpdateSecretOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new SecretsApi(config);
+
+ const body = {
+ // string | Secret name
+ name: name_example,
+ // UpdateSecretRequest
+ updateSecretRequest: ...,
+ } satisfies UpdateSecretOperationRequest;
+
+ try {
+ const data = await api.updateSecret(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **name** | `string` | Secret name | [Defaults to `undefined`] |
+| **updateSecretRequest** | [UpdateSecretRequest](UpdateSecretRequest.md) | | |
+
+### Return type
+
+[**UpdateSecretResponse**](UpdateSecretResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Secret updated | - |
+| **404** | Secret not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/SqlQueryDatasetSource.md b/docs/SqlQueryDatasetSource.md
new file mode 100644
index 0000000..524dcb8
--- /dev/null
+++ b/docs/SqlQueryDatasetSource.md
@@ -0,0 +1,39 @@
+
+# SqlQueryDatasetSource
+
+Create dataset from a SQL query (auto-creates a saved query)
+
+## Properties
+
+Name | Type
+------------ | -------------
+`description` | string
+`name` | string
+`sql` | string
+
+## Example
+
+```typescript
+import type { SqlQueryDatasetSource } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "description": null,
+ "name": null,
+ "sql": null,
+} satisfies SqlQueryDatasetSource
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as SqlQueryDatasetSource
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/TableInfo.md b/docs/TableInfo.md
new file mode 100644
index 0000000..958e4c4
--- /dev/null
+++ b/docs/TableInfo.md
@@ -0,0 +1,45 @@
+
+# TableInfo
+
+Single table metadata
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | [Array<ColumnInfo>](ColumnInfo.md)
+`connection` | string
+`lastSync` | string
+`schema` | string
+`synced` | boolean
+`table` | string
+
+## Example
+
+```typescript
+import type { TableInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "connection": null,
+ "lastSync": null,
+ "schema": null,
+ "synced": null,
+ "table": null,
+} satisfies TableInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as TableInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/TableProfileResponse.md b/docs/TableProfileResponse.md
new file mode 100644
index 0000000..f3e3931
--- /dev/null
+++ b/docs/TableProfileResponse.md
@@ -0,0 +1,45 @@
+
+# TableProfileResponse
+
+Column-level statistics for a synced table. Profiles are computed at sync time and include per-column cardinality, null counts, and type-specific details.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | [Array<ColumnProfileInfo>](ColumnProfileInfo.md)
+`connection` | string
+`rowCount` | number
+`schema` | string
+`syncedAt` | string
+`table` | string
+
+## Example
+
+```typescript
+import type { TableProfileResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "connection": null,
+ "rowCount": null,
+ "schema": null,
+ "syncedAt": null,
+ "table": null,
+} satisfies TableProfileResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as TableProfileResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/TableRefreshError.md b/docs/TableRefreshError.md
new file mode 100644
index 0000000..59273da
--- /dev/null
+++ b/docs/TableRefreshError.md
@@ -0,0 +1,39 @@
+
+# TableRefreshError
+
+Error details for a failed table refresh
+
+## Properties
+
+Name | Type
+------------ | -------------
+`error` | string
+`schemaName` | string
+`tableName` | string
+
+## Example
+
+```typescript
+import type { TableRefreshError } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "error": null,
+ "schemaName": null,
+ "tableName": null,
+} satisfies TableRefreshError
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as TableRefreshError
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/TableRefreshResult.md b/docs/TableRefreshResult.md
new file mode 100644
index 0000000..5c55fde
--- /dev/null
+++ b/docs/TableRefreshResult.md
@@ -0,0 +1,45 @@
+
+# TableRefreshResult
+
+Response for single table data refresh
+
+## Properties
+
+Name | Type
+------------ | -------------
+`connectionId` | string
+`durationMs` | number
+`rowsSynced` | number
+`schemaName` | string
+`tableName` | string
+`warnings` | [Array<RefreshWarning>](RefreshWarning.md)
+
+## Example
+
+```typescript
+import type { TableRefreshResult } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "connectionId": null,
+ "durationMs": null,
+ "rowsSynced": null,
+ "schemaName": null,
+ "tableName": null,
+ "warnings": null,
+} satisfies TableRefreshResult
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as TableRefreshResult
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/TemporalProfileDetail.md b/docs/TemporalProfileDetail.md
new file mode 100644
index 0000000..c287285
--- /dev/null
+++ b/docs/TemporalProfileDetail.md
@@ -0,0 +1,37 @@
+
+# TemporalProfileDetail
+
+Date or timestamp column.
+
+## Properties
+
+Name | Type
+------------ | -------------
+`max` | string
+`min` | string
+
+## Example
+
+```typescript
+import type { TemporalProfileDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "max": null,
+ "min": null,
+} satisfies TemporalProfileDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as TemporalProfileDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/TextProfileDetail.md b/docs/TextProfileDetail.md
new file mode 100644
index 0000000..157d54d
--- /dev/null
+++ b/docs/TextProfileDetail.md
@@ -0,0 +1,39 @@
+
+# TextProfileDetail
+
+High-cardinality text column (>200 distinct values).
+
+## Properties
+
+Name | Type
+------------ | -------------
+`avgLength` | number
+`maxLength` | number
+`minLength` | number
+
+## Example
+
+```typescript
+import type { TextProfileDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "avgLength": null,
+ "maxLength": null,
+ "minLength": null,
+} satisfies TextProfileDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as TextProfileDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UpdateDatasetRequest.md b/docs/UpdateDatasetRequest.md
new file mode 100644
index 0000000..21f43d1
--- /dev/null
+++ b/docs/UpdateDatasetRequest.md
@@ -0,0 +1,39 @@
+
+# UpdateDatasetRequest
+
+Request body for PUT /v1/datasets/{id}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`label` | string
+`pinnedVersion` | number
+`tableName` | string
+
+## Example
+
+```typescript
+import type { UpdateDatasetRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "label": null,
+ "pinnedVersion": null,
+ "tableName": null,
+} satisfies UpdateDatasetRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UpdateDatasetRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UpdateDatasetResponse.md b/docs/UpdateDatasetResponse.md
new file mode 100644
index 0000000..2087adc
--- /dev/null
+++ b/docs/UpdateDatasetResponse.md
@@ -0,0 +1,45 @@
+
+# UpdateDatasetResponse
+
+Response body for PUT /v1/datasets/{id}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`id` | string
+`label` | string
+`latestVersion` | number
+`pinnedVersion` | number
+`tableName` | string
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { UpdateDatasetResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "id": null,
+ "label": null,
+ "latestVersion": null,
+ "pinnedVersion": null,
+ "tableName": null,
+ "updatedAt": null,
+} satisfies UpdateDatasetResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UpdateDatasetResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UpdateSavedQueryRequest.md b/docs/UpdateSavedQueryRequest.md
new file mode 100644
index 0000000..6be3f4a
--- /dev/null
+++ b/docs/UpdateSavedQueryRequest.md
@@ -0,0 +1,45 @@
+
+# UpdateSavedQueryRequest
+
+Request body for PUT /v1/queries/{id}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`categoryOverride` | string
+`description` | string
+`name` | string
+`sql` | string
+`tableSizeOverride` | string
+`tags` | Array<string>
+
+## Example
+
+```typescript
+import type { UpdateSavedQueryRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "categoryOverride": null,
+ "description": null,
+ "name": null,
+ "sql": null,
+ "tableSizeOverride": null,
+ "tags": null,
+} satisfies UpdateSavedQueryRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UpdateSavedQueryRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UpdateSecretRequest.md b/docs/UpdateSecretRequest.md
new file mode 100644
index 0000000..0e5ad53
--- /dev/null
+++ b/docs/UpdateSecretRequest.md
@@ -0,0 +1,35 @@
+
+# UpdateSecretRequest
+
+Request body for PUT /secrets/{name}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`value` | string
+
+## Example
+
+```typescript
+import type { UpdateSecretRequest } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "value": null,
+} satisfies UpdateSecretRequest
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UpdateSecretRequest
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UpdateSecretResponse.md b/docs/UpdateSecretResponse.md
new file mode 100644
index 0000000..2e49831
--- /dev/null
+++ b/docs/UpdateSecretResponse.md
@@ -0,0 +1,37 @@
+
+# UpdateSecretResponse
+
+Response body for PUT /secrets/{name}
+
+## Properties
+
+Name | Type
+------------ | -------------
+`name` | string
+`updatedAt` | Date
+
+## Example
+
+```typescript
+import type { UpdateSecretResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "name": null,
+ "updatedAt": null,
+} satisfies UpdateSecretResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UpdateSecretResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UploadDatasetSource.md b/docs/UploadDatasetSource.md
new file mode 100644
index 0000000..ff596fb
--- /dev/null
+++ b/docs/UploadDatasetSource.md
@@ -0,0 +1,39 @@
+
+# UploadDatasetSource
+
+Create dataset from a previously uploaded file
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | { [key: string]: string; }
+`format` | string
+`uploadId` | string
+
+## Example
+
+```typescript
+import type { UploadDatasetSource } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "format": null,
+ "uploadId": null,
+} satisfies UploadDatasetSource
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UploadDatasetSource
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UploadInfo.md b/docs/UploadInfo.md
new file mode 100644
index 0000000..39c7fe3
--- /dev/null
+++ b/docs/UploadInfo.md
@@ -0,0 +1,43 @@
+
+# UploadInfo
+
+Single upload info for listing
+
+## Properties
+
+Name | Type
+------------ | -------------
+`contentType` | string
+`createdAt` | Date
+`id` | string
+`sizeBytes` | number
+`status` | string
+
+## Example
+
+```typescript
+import type { UploadInfo } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "contentType": null,
+ "createdAt": null,
+ "id": null,
+ "sizeBytes": null,
+ "status": null,
+} satisfies UploadInfo
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UploadInfo
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UploadResponse.md b/docs/UploadResponse.md
new file mode 100644
index 0000000..d1b0db0
--- /dev/null
+++ b/docs/UploadResponse.md
@@ -0,0 +1,43 @@
+
+# UploadResponse
+
+Response body for POST /v1/files
+
+## Properties
+
+Name | Type
+------------ | -------------
+`contentType` | string
+`createdAt` | Date
+`id` | string
+`sizeBytes` | number
+`status` | string
+
+## Example
+
+```typescript
+import type { UploadResponse } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "contentType": null,
+ "createdAt": null,
+ "id": null,
+ "sizeBytes": null,
+ "status": null,
+} satisfies UploadResponse
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UploadResponse
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/UploadsApi.md b/docs/UploadsApi.md
new file mode 100644
index 0000000..4072db2
--- /dev/null
+++ b/docs/UploadsApi.md
@@ -0,0 +1,151 @@
+# UploadsApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**listUploads**](UploadsApi.md#listuploads) | **GET** /v1/files | List uploads |
+| [**uploadFile**](UploadsApi.md#uploadfile) | **POST** /v1/files | Upload file |
+
+
+
+## listUploads
+
+> ListUploadsResponse listUploads(status)
+
+List uploads
+
+### Example
+
+```ts
+import {
+ Configuration,
+ UploadsApi,
+} from '@hotdata/sdk';
+import type { ListUploadsRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new UploadsApi(config);
+
+ const body = {
+ // string | Filter by upload status (optional)
+ status: status_example,
+ } satisfies ListUploadsRequest;
+
+ try {
+ const data = await api.listUploads(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **status** | `string` | Filter by upload status | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListUploadsResponse**](ListUploadsResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | List of uploads | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## uploadFile
+
+> UploadResponse uploadFile(requestBody)
+
+Upload file
+
+Upload a file to be used as a dataset source. Send the raw file bytes as the request body with an appropriate Content-Type header (e.g., `text/csv`, `application/json`, `application/parquet`). The returned upload ID can be passed to POST /v1/datasets to create a queryable table.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ UploadsApi,
+} from '@hotdata/sdk';
+import type { UploadFileRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new UploadsApi(config);
+
+ const body = {
+ // Array
+ requestBody: ...,
+ } satisfies UploadFileRequest;
+
+ try {
+ const data = await api.uploadFile(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **requestBody** | `Array` | | |
+
+### Return type
+
+[**UploadResponse**](UploadResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/octet-stream`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | File uploaded | - |
+| **400** | Invalid request | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/docs/UrlDatasetSource.md b/docs/UrlDatasetSource.md
new file mode 100644
index 0000000..35ec54d
--- /dev/null
+++ b/docs/UrlDatasetSource.md
@@ -0,0 +1,39 @@
+
+# UrlDatasetSource
+
+Create dataset from an external HTTP URL
+
+## Properties
+
+Name | Type
+------------ | -------------
+`columns` | { [key: string]: string; }
+`format` | string
+`url` | string
+
+## Example
+
+```typescript
+import type { UrlDatasetSource } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "columns": null,
+ "format": null,
+ "url": null,
+} satisfies UrlDatasetSource
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as UrlDatasetSource
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/WorkspaceDetail.md b/docs/WorkspaceDetail.md
new file mode 100644
index 0000000..ff3d078
--- /dev/null
+++ b/docs/WorkspaceDetail.md
@@ -0,0 +1,40 @@
+
+# WorkspaceDetail
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`publicId` | string
+`name` | string
+`provisionStatus` | string
+`namespace` | string
+
+## Example
+
+```typescript
+import type { WorkspaceDetail } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "publicId": ws_abc123,
+ "name": production-analytics,
+ "provisionStatus": pending,
+ "namespace": workspace-ws_abc123,
+} satisfies WorkspaceDetail
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as WorkspaceDetail
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/WorkspaceListItem.md b/docs/WorkspaceListItem.md
new file mode 100644
index 0000000..c9d442e
--- /dev/null
+++ b/docs/WorkspaceListItem.md
@@ -0,0 +1,44 @@
+
+# WorkspaceListItem
+
+
+## Properties
+
+Name | Type
+------------ | -------------
+`publicId` | string
+`name` | string
+`active` | boolean
+`favorite` | boolean
+`provisionStatus` | string
+`namespace` | string
+
+## Example
+
+```typescript
+import type { WorkspaceListItem } from '@hotdata/sdk'
+
+// TODO: Update the object below with actual values
+const example = {
+ "publicId": ws_abc123,
+ "name": production-analytics,
+ "active": null,
+ "favorite": null,
+ "provisionStatus": provisioned,
+ "namespace": workspace-ws_abc123,
+} satisfies WorkspaceListItem
+
+console.log(example)
+
+// Convert the instance to a JSON string
+const exampleJSON: string = JSON.stringify(example)
+console.log(exampleJSON)
+
+// Parse the JSON string back to an object
+const exampleParsed = JSON.parse(exampleJSON) as WorkspaceListItem
+console.log(exampleParsed)
+```
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
diff --git a/docs/WorkspacesApi.md b/docs/WorkspacesApi.md
new file mode 100644
index 0000000..08c6cae
--- /dev/null
+++ b/docs/WorkspacesApi.md
@@ -0,0 +1,160 @@
+# WorkspacesApi
+
+All URIs are relative to *https://app.hotdata.dev*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**createWorkspace**](WorkspacesApi.md#createworkspaceoperation) | **POST** /v1/workspaces | Create a workspace |
+| [**listWorkspaces**](WorkspacesApi.md#listworkspaces) | **GET** /v1/workspaces | List workspaces |
+
+
+
+## createWorkspace
+
+> CreateWorkspaceResponse createWorkspace(createWorkspaceRequest)
+
+Create a workspace
+
+Creates a new workspace in the specified organization.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ WorkspacesApi,
+} from '@hotdata/sdk';
+import type { CreateWorkspaceOperationRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new WorkspacesApi(config);
+
+ const body = {
+ // CreateWorkspaceRequest
+ createWorkspaceRequest: ...,
+ } satisfies CreateWorkspaceOperationRequest;
+
+ try {
+ const data = await api.createWorkspace(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **createWorkspaceRequest** | [CreateWorkspaceRequest](CreateWorkspaceRequest.md) | | |
+
+### Return type
+
+[**CreateWorkspaceResponse**](CreateWorkspaceResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: `application/json`
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | Workspace created | - |
+| **400** | Invalid JSON body | - |
+| **401** | Missing or invalid authorization | - |
+| **403** | Forbidden | - |
+| **404** | Organization not found | - |
+| **422** | Validation error (e.g. name required) | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
+
+## listWorkspaces
+
+> ListWorkspacesResponse listWorkspaces(organizationPublicId)
+
+List workspaces
+
+Lists all workspaces in the user\'s organization.
+
+### Example
+
+```ts
+import {
+ Configuration,
+ WorkspacesApi,
+} from '@hotdata/sdk';
+import type { ListWorkspacesRequest } from '@hotdata/sdk';
+
+async function example() {
+ console.log("🚀 Testing @hotdata/sdk SDK...");
+ const config = new Configuration({
+ // Configure HTTP bearer authorization: BearerAuth
+ accessToken: "YOUR BEARER TOKEN",
+ });
+ const api = new WorkspacesApi(config);
+
+ const body = {
+ // string | Filter by organization. Defaults to the user\'s current organization. (optional)
+ organizationPublicId: organizationPublicId_example,
+ } satisfies ListWorkspacesRequest;
+
+ try {
+ const data = await api.listWorkspaces(body);
+ console.log(data);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+// Run the test
+example().catch(console.error);
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **organizationPublicId** | `string` | Filter by organization. Defaults to the user\'s current organization. | [Optional] [Defaults to `undefined`] |
+
+### Return type
+
+[**ListWorkspacesResponse**](ListWorkspacesResponse.md)
+
+### Authorization
+
+[BearerAuth](../README.md#BearerAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: `application/json`
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Successful response | - |
+| **401** | Missing or invalid authorization | - |
+| **403** | Forbidden — not a member of the organization or workspace token used | - |
+| **404** | Organization not found | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
+
diff --git a/openapitools.json b/openapitools.json
new file mode 100644
index 0000000..c121433
--- /dev/null
+++ b/openapitools.json
@@ -0,0 +1,7 @@
+{
+ "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
+ "spaces": 2,
+ "generator-cli": {
+ "version": "7.20.0"
+ }
+}
diff --git a/package.json b/package.json
index 1274070..c0a1ae7 100644
--- a/package.json
+++ b/package.json
@@ -1,16 +1,21 @@
{
"name": "@hotdata/sdk",
- "version": "0.1.0",
- "description": "TypeScript client for the HotData API",
- "type": "module",
- "main": "dist/index.js",
- "types": "dist/index.d.ts",
+ "version": "1.0.0",
+ "description": "OpenAPI client for @hotdata/sdk",
+ "author": "OpenAPI-Generator",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/GIT_USER_ID/GIT_REPO_ID.git"
+ },
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "module": "./dist/esm/index.js",
+ "sideEffects": false,
"scripts": {
- "build": "tsc",
- "prepublishOnly": "npm run build"
+ "build": "tsc && tsc -p tsconfig.esm.json",
+ "prepare": "npm run build"
},
- "license": "MIT",
"devDependencies": {
- "typescript": "^5.7"
+ "typescript": "^4.0 || ^5.0"
}
}
diff --git a/src/apis/ConnectionTypesApi.ts b/src/apis/ConnectionTypesApi.ts
new file mode 100644
index 0000000..8d124f3
--- /dev/null
+++ b/src/apis/ConnectionTypesApi.ts
@@ -0,0 +1,142 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ ConnectionTypeDetail,
+ ListConnectionTypesResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ ConnectionTypeDetailFromJSON,
+ ConnectionTypeDetailToJSON,
+ ListConnectionTypesResponseFromJSON,
+ ListConnectionTypesResponseToJSON,
+} from '../models/index';
+
+export interface GetConnectionTypeRequest {
+ name: string;
+}
+
+/**
+ *
+ */
+export class ConnectionTypesApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for getConnectionType without sending the request
+ */
+ async getConnectionTypeRequestOpts(requestParameters: GetConnectionTypeRequest): Promise {
+ if (requestParameters['name'] == null) {
+ throw new runtime.RequiredError(
+ 'name',
+ 'Required parameter "name" was null or undefined when calling getConnectionType().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connection-types/{name}`;
+ urlPath = urlPath.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters['name'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Get configuration schema and authentication requirements for a specific connection type.
+ * Get connection type details
+ */
+ async getConnectionTypeRaw(requestParameters: GetConnectionTypeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.getConnectionTypeRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ConnectionTypeDetailFromJSON(jsonValue));
+ }
+
+ /**
+ * Get configuration schema and authentication requirements for a specific connection type.
+ * Get connection type details
+ */
+ async getConnectionType(requestParameters: GetConnectionTypeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getConnectionTypeRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listConnectionTypes without sending the request
+ */
+ async listConnectionTypesRequestOpts(): Promise {
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connection-types`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List all available connection types, including native sources and FlightDLT services.
+ * List connection types
+ */
+ async listConnectionTypesRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listConnectionTypesRequestOpts();
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListConnectionTypesResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List all available connection types, including native sources and FlightDLT services.
+ * List connection types
+ */
+ async listConnectionTypes(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listConnectionTypesRaw(initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/ConnectionsApi.ts b/src/apis/ConnectionsApi.ts
new file mode 100644
index 0000000..6b51c6a
--- /dev/null
+++ b/src/apis/ConnectionsApi.ts
@@ -0,0 +1,543 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ ConnectionHealthResponse,
+ CreateConnectionRequest,
+ CreateConnectionResponse,
+ GetConnectionResponse,
+ ListConnectionsResponse,
+ TableProfileResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ ConnectionHealthResponseFromJSON,
+ ConnectionHealthResponseToJSON,
+ CreateConnectionRequestFromJSON,
+ CreateConnectionRequestToJSON,
+ CreateConnectionResponseFromJSON,
+ CreateConnectionResponseToJSON,
+ GetConnectionResponseFromJSON,
+ GetConnectionResponseToJSON,
+ ListConnectionsResponseFromJSON,
+ ListConnectionsResponseToJSON,
+ TableProfileResponseFromJSON,
+ TableProfileResponseToJSON,
+} from '../models/index';
+
+export interface CheckConnectionHealthRequest {
+ connectionId: string;
+}
+
+export interface CreateConnectionOperationRequest {
+ createConnectionRequest: CreateConnectionRequest;
+}
+
+export interface DeleteConnectionRequest {
+ connectionId: string;
+}
+
+export interface GetConnectionRequest {
+ connectionId: string;
+}
+
+export interface GetTableProfileRequest {
+ connectionId: string;
+ schema: string;
+ table: string;
+}
+
+export interface PurgeConnectionCacheRequest {
+ connectionId: string;
+}
+
+export interface PurgeTableCacheRequest {
+ connectionId: string;
+ schema: string;
+ table: string;
+}
+
+/**
+ *
+ */
+export class ConnectionsApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for checkConnectionHealth without sending the request
+ */
+ async checkConnectionHealthRequestOpts(requestParameters: CheckConnectionHealthRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling checkConnectionHealth().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}/health`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Test connectivity to the remote database. Returns health status and latency.
+ * Check connection health
+ */
+ async checkConnectionHealthRaw(requestParameters: CheckConnectionHealthRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.checkConnectionHealthRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ConnectionHealthResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Test connectivity to the remote database. Returns health status and latency.
+ * Check connection health
+ */
+ async checkConnectionHealth(requestParameters: CheckConnectionHealthRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.checkConnectionHealthRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for createConnection without sending the request
+ */
+ async createConnectionRequestOpts(requestParameters: CreateConnectionOperationRequest): Promise {
+ if (requestParameters['createConnectionRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'createConnectionRequest',
+ 'Required parameter "createConnectionRequest" was null or undefined when calling createConnection().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: CreateConnectionRequestToJSON(requestParameters['createConnectionRequest']),
+ };
+ }
+
+ /**
+ * Register a new database connection. Provide the source type and connection config (host, port, database, etc.). Credentials can be supplied inline (password/token fields are auto-converted to secrets) or by referencing an existing secret by name or ID. Schema discovery runs automatically after registration.
+ * Create connection
+ */
+ async createConnectionRaw(requestParameters: CreateConnectionOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.createConnectionRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => CreateConnectionResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Register a new database connection. Provide the source type and connection config (host, port, database, etc.). Credentials can be supplied inline (password/token fields are auto-converted to secrets) or by referencing an existing secret by name or ID. Schema discovery runs automatically after registration.
+ * Create connection
+ */
+ async createConnection(requestParameters: CreateConnectionOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.createConnectionRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for deleteConnection without sending the request
+ */
+ async deleteConnectionRequestOpts(requestParameters: DeleteConnectionRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling deleteConnection().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+
+ return {
+ path: urlPath,
+ method: 'DELETE',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Delete a connection and its cached data.
+ * Delete connection
+ */
+ async deleteConnectionRaw(requestParameters: DeleteConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.deleteConnectionRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.VoidApiResponse(response);
+ }
+
+ /**
+ * Delete a connection and its cached data.
+ * Delete connection
+ */
+ async deleteConnection(requestParameters: DeleteConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ await this.deleteConnectionRaw(requestParameters, initOverrides);
+ }
+
+ /**
+ * Creates request options for getConnection without sending the request
+ */
+ async getConnectionRequestOpts(requestParameters: GetConnectionRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling getConnection().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Get details for a specific connection, including table and sync counts.
+ * Get connection
+ */
+ async getConnectionRaw(requestParameters: GetConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.getConnectionRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => GetConnectionResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Get details for a specific connection, including table and sync counts.
+ * Get connection
+ */
+ async getConnection(requestParameters: GetConnectionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getConnectionRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for getTableProfile without sending the request
+ */
+ async getTableProfileRequestOpts(requestParameters: GetTableProfileRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling getTableProfile().'
+ );
+ }
+
+ if (requestParameters['schema'] == null) {
+ throw new runtime.RequiredError(
+ 'schema',
+ 'Required parameter "schema" was null or undefined when calling getTableProfile().'
+ );
+ }
+
+ if (requestParameters['table'] == null) {
+ throw new runtime.RequiredError(
+ 'table',
+ 'Required parameter "table" was null or undefined when calling getTableProfile().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}/tables/{schema}/{table}/profile`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+ urlPath = urlPath.replace(`{${"schema"}}`, encodeURIComponent(String(requestParameters['schema'])));
+ urlPath = urlPath.replace(`{${"table"}}`, encodeURIComponent(String(requestParameters['table'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Get column-level statistics for a synced table. Returns per-column profiles including cardinality, null counts, and type-specific details (distinct values for categorical columns, min/max for temporal/numeric, length stats for text). Profiles are computed at sync time.
+ * Get table profile
+ */
+ async getTableProfileRaw(requestParameters: GetTableProfileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.getTableProfileRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => TableProfileResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Get column-level statistics for a synced table. Returns per-column profiles including cardinality, null counts, and type-specific details (distinct values for categorical columns, min/max for temporal/numeric, length stats for text). Profiles are computed at sync time.
+ * Get table profile
+ */
+ async getTableProfile(requestParameters: GetTableProfileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getTableProfileRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listConnections without sending the request
+ */
+ async listConnectionsRequestOpts(): Promise {
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List all registered database connections.
+ * List connections
+ */
+ async listConnectionsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listConnectionsRequestOpts();
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListConnectionsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List all registered database connections.
+ * List connections
+ */
+ async listConnections(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listConnectionsRaw(initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for purgeConnectionCache without sending the request
+ */
+ async purgeConnectionCacheRequestOpts(requestParameters: PurgeConnectionCacheRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling purgeConnectionCache().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}/cache`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+
+ return {
+ path: urlPath,
+ method: 'DELETE',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Purge all cached data for a connection. The next query against these tables will trigger a fresh sync from the remote source.
+ * Purge connection cache
+ */
+ async purgeConnectionCacheRaw(requestParameters: PurgeConnectionCacheRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.purgeConnectionCacheRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.VoidApiResponse(response);
+ }
+
+ /**
+ * Purge all cached data for a connection. The next query against these tables will trigger a fresh sync from the remote source.
+ * Purge connection cache
+ */
+ async purgeConnectionCache(requestParameters: PurgeConnectionCacheRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ await this.purgeConnectionCacheRaw(requestParameters, initOverrides);
+ }
+
+ /**
+ * Creates request options for purgeTableCache without sending the request
+ */
+ async purgeTableCacheRequestOpts(requestParameters: PurgeTableCacheRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling purgeTableCache().'
+ );
+ }
+
+ if (requestParameters['schema'] == null) {
+ throw new runtime.RequiredError(
+ 'schema',
+ 'Required parameter "schema" was null or undefined when calling purgeTableCache().'
+ );
+ }
+
+ if (requestParameters['table'] == null) {
+ throw new runtime.RequiredError(
+ 'table',
+ 'Required parameter "table" was null or undefined when calling purgeTableCache().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}/tables/{schema}/{table}/cache`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+ urlPath = urlPath.replace(`{${"schema"}}`, encodeURIComponent(String(requestParameters['schema'])));
+ urlPath = urlPath.replace(`{${"table"}}`, encodeURIComponent(String(requestParameters['table'])));
+
+ return {
+ path: urlPath,
+ method: 'DELETE',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Purge the cached data for a single table. The next query will trigger a fresh sync.
+ * Purge table cache
+ */
+ async purgeTableCacheRaw(requestParameters: PurgeTableCacheRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.purgeTableCacheRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.VoidApiResponse(response);
+ }
+
+ /**
+ * Purge the cached data for a single table. The next query will trigger a fresh sync.
+ * Purge table cache
+ */
+ async purgeTableCache(requestParameters: PurgeTableCacheRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ await this.purgeTableCacheRaw(requestParameters, initOverrides);
+ }
+
+}
diff --git a/src/apis/DatasetsApi.ts b/src/apis/DatasetsApi.ts
new file mode 100644
index 0000000..b4c3b2c
--- /dev/null
+++ b/src/apis/DatasetsApi.ts
@@ -0,0 +1,418 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ CreateDatasetRequest,
+ CreateDatasetResponse,
+ GetDatasetResponse,
+ ListDatasetVersionsResponse,
+ ListDatasetsResponse,
+ UpdateDatasetRequest,
+ UpdateDatasetResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ CreateDatasetRequestFromJSON,
+ CreateDatasetRequestToJSON,
+ CreateDatasetResponseFromJSON,
+ CreateDatasetResponseToJSON,
+ GetDatasetResponseFromJSON,
+ GetDatasetResponseToJSON,
+ ListDatasetVersionsResponseFromJSON,
+ ListDatasetVersionsResponseToJSON,
+ ListDatasetsResponseFromJSON,
+ ListDatasetsResponseToJSON,
+ UpdateDatasetRequestFromJSON,
+ UpdateDatasetRequestToJSON,
+ UpdateDatasetResponseFromJSON,
+ UpdateDatasetResponseToJSON,
+} from '../models/index';
+
+export interface CreateDatasetOperationRequest {
+ createDatasetRequest: CreateDatasetRequest;
+}
+
+export interface DeleteDatasetRequest {
+ id: string;
+}
+
+export interface GetDatasetRequest {
+ id: string;
+}
+
+export interface ListDatasetVersionsRequest {
+ id: string;
+ limit?: number;
+ offset?: number;
+}
+
+export interface ListDatasetsRequest {
+ limit?: number;
+ offset?: number;
+}
+
+export interface UpdateDatasetOperationRequest {
+ id: string;
+ updateDatasetRequest: UpdateDatasetRequest;
+}
+
+/**
+ *
+ */
+export class DatasetsApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for createDataset without sending the request
+ */
+ async createDatasetRequestOpts(requestParameters: CreateDatasetOperationRequest): Promise {
+ if (requestParameters['createDatasetRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'createDatasetRequest',
+ 'Required parameter "createDatasetRequest" was null or undefined when calling createDataset().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/datasets`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: CreateDatasetRequestToJSON(requestParameters['createDatasetRequest']),
+ };
+ }
+
+ /**
+ * Create a new dataset from an uploaded file or inline data. The dataset becomes a queryable table under the `datasets` schema (e.g., `SELECT * FROM datasets.my_table`). Supports CSV, JSON, and Parquet formats. Optionally specify explicit column types.
+ * Create dataset
+ */
+ async createDatasetRaw(requestParameters: CreateDatasetOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.createDatasetRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => CreateDatasetResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Create a new dataset from an uploaded file or inline data. The dataset becomes a queryable table under the `datasets` schema (e.g., `SELECT * FROM datasets.my_table`). Supports CSV, JSON, and Parquet formats. Optionally specify explicit column types.
+ * Create dataset
+ */
+ async createDataset(requestParameters: CreateDatasetOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.createDatasetRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for deleteDataset without sending the request
+ */
+ async deleteDatasetRequestOpts(requestParameters: DeleteDatasetRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling deleteDataset().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/datasets/{id}`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'DELETE',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Delete dataset
+ */
+ async deleteDatasetRaw(requestParameters: DeleteDatasetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.deleteDatasetRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.VoidApiResponse(response);
+ }
+
+ /**
+ * Delete dataset
+ */
+ async deleteDataset(requestParameters: DeleteDatasetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ await this.deleteDatasetRaw(requestParameters, initOverrides);
+ }
+
+ /**
+ * Creates request options for getDataset without sending the request
+ */
+ async getDatasetRequestOpts(requestParameters: GetDatasetRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling getDataset().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/datasets/{id}`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Get dataset
+ */
+ async getDatasetRaw(requestParameters: GetDatasetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.getDatasetRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => GetDatasetResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Get dataset
+ */
+ async getDataset(requestParameters: GetDatasetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getDatasetRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listDatasetVersions without sending the request
+ */
+ async listDatasetVersionsRequestOpts(requestParameters: ListDatasetVersionsRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling listDatasetVersions().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['limit'] != null) {
+ queryParameters['limit'] = requestParameters['limit'];
+ }
+
+ if (requestParameters['offset'] != null) {
+ queryParameters['offset'] = requestParameters['offset'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/datasets/{id}/versions`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List dataset versions
+ */
+ async listDatasetVersionsRaw(requestParameters: ListDatasetVersionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listDatasetVersionsRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListDatasetVersionsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List dataset versions
+ */
+ async listDatasetVersions(requestParameters: ListDatasetVersionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listDatasetVersionsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listDatasets without sending the request
+ */
+ async listDatasetsRequestOpts(requestParameters: ListDatasetsRequest): Promise {
+ const queryParameters: any = {};
+
+ if (requestParameters['limit'] != null) {
+ queryParameters['limit'] = requestParameters['limit'];
+ }
+
+ if (requestParameters['offset'] != null) {
+ queryParameters['offset'] = requestParameters['offset'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/datasets`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List datasets
+ */
+ async listDatasetsRaw(requestParameters: ListDatasetsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listDatasetsRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListDatasetsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List datasets
+ */
+ async listDatasets(requestParameters: ListDatasetsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listDatasetsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for updateDataset without sending the request
+ */
+ async updateDatasetRequestOpts(requestParameters: UpdateDatasetOperationRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling updateDataset().'
+ );
+ }
+
+ if (requestParameters['updateDatasetRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'updateDatasetRequest',
+ 'Required parameter "updateDatasetRequest" was null or undefined when calling updateDataset().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/datasets/{id}`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'PUT',
+ headers: headerParameters,
+ query: queryParameters,
+ body: UpdateDatasetRequestToJSON(requestParameters['updateDatasetRequest']),
+ };
+ }
+
+ /**
+ * Update dataset
+ */
+ async updateDatasetRaw(requestParameters: UpdateDatasetOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.updateDatasetRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => UpdateDatasetResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Update dataset
+ */
+ async updateDataset(requestParameters: UpdateDatasetOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.updateDatasetRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/IndexesApi.ts b/src/apis/IndexesApi.ts
new file mode 100644
index 0000000..9327219
--- /dev/null
+++ b/src/apis/IndexesApi.ts
@@ -0,0 +1,289 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ CreateIndexRequest,
+ IndexInfoResponse,
+ ListIndexesResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ CreateIndexRequestFromJSON,
+ CreateIndexRequestToJSON,
+ IndexInfoResponseFromJSON,
+ IndexInfoResponseToJSON,
+ ListIndexesResponseFromJSON,
+ ListIndexesResponseToJSON,
+} from '../models/index';
+
+export interface CreateIndexOperationRequest {
+ connectionId: string;
+ schema: string;
+ table: string;
+ createIndexRequest: CreateIndexRequest;
+}
+
+export interface DeleteIndexRequest {
+ connectionId: string;
+ schema: string;
+ table: string;
+ indexName: string;
+}
+
+export interface ListIndexesRequest {
+ connectionId: string;
+ schema: string;
+ table: string;
+}
+
+/**
+ *
+ */
+export class IndexesApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for createIndex without sending the request
+ */
+ async createIndexRequestOpts(requestParameters: CreateIndexOperationRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling createIndex().'
+ );
+ }
+
+ if (requestParameters['schema'] == null) {
+ throw new runtime.RequiredError(
+ 'schema',
+ 'Required parameter "schema" was null or undefined when calling createIndex().'
+ );
+ }
+
+ if (requestParameters['table'] == null) {
+ throw new runtime.RequiredError(
+ 'table',
+ 'Required parameter "table" was null or undefined when calling createIndex().'
+ );
+ }
+
+ if (requestParameters['createIndexRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'createIndexRequest',
+ 'Required parameter "createIndexRequest" was null or undefined when calling createIndex().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}/tables/{schema}/{table}/indexes`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+ urlPath = urlPath.replace(`{${"schema"}}`, encodeURIComponent(String(requestParameters['schema'])));
+ urlPath = urlPath.replace(`{${"table"}}`, encodeURIComponent(String(requestParameters['table'])));
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: CreateIndexRequestToJSON(requestParameters['createIndexRequest']),
+ };
+ }
+
+ /**
+ * Create a sorted or BM25 full-text index on a cached table.
+ * Create an index on a table
+ */
+ async createIndexRaw(requestParameters: CreateIndexOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.createIndexRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => IndexInfoResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Create a sorted or BM25 full-text index on a cached table.
+ * Create an index on a table
+ */
+ async createIndex(requestParameters: CreateIndexOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.createIndexRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for deleteIndex without sending the request
+ */
+ async deleteIndexRequestOpts(requestParameters: DeleteIndexRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling deleteIndex().'
+ );
+ }
+
+ if (requestParameters['schema'] == null) {
+ throw new runtime.RequiredError(
+ 'schema',
+ 'Required parameter "schema" was null or undefined when calling deleteIndex().'
+ );
+ }
+
+ if (requestParameters['table'] == null) {
+ throw new runtime.RequiredError(
+ 'table',
+ 'Required parameter "table" was null or undefined when calling deleteIndex().'
+ );
+ }
+
+ if (requestParameters['indexName'] == null) {
+ throw new runtime.RequiredError(
+ 'indexName',
+ 'Required parameter "indexName" was null or undefined when calling deleteIndex().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}/tables/{schema}/{table}/indexes/{index_name}`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+ urlPath = urlPath.replace(`{${"schema"}}`, encodeURIComponent(String(requestParameters['schema'])));
+ urlPath = urlPath.replace(`{${"table"}}`, encodeURIComponent(String(requestParameters['table'])));
+ urlPath = urlPath.replace(`{${"index_name"}}`, encodeURIComponent(String(requestParameters['indexName'])));
+
+ return {
+ path: urlPath,
+ method: 'DELETE',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Delete a specific index from a cached table.
+ * Delete an index
+ */
+ async deleteIndexRaw(requestParameters: DeleteIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.deleteIndexRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.VoidApiResponse(response);
+ }
+
+ /**
+ * Delete a specific index from a cached table.
+ * Delete an index
+ */
+ async deleteIndex(requestParameters: DeleteIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ await this.deleteIndexRaw(requestParameters, initOverrides);
+ }
+
+ /**
+ * Creates request options for listIndexes without sending the request
+ */
+ async listIndexesRequestOpts(requestParameters: ListIndexesRequest): Promise {
+ if (requestParameters['connectionId'] == null) {
+ throw new runtime.RequiredError(
+ 'connectionId',
+ 'Required parameter "connectionId" was null or undefined when calling listIndexes().'
+ );
+ }
+
+ if (requestParameters['schema'] == null) {
+ throw new runtime.RequiredError(
+ 'schema',
+ 'Required parameter "schema" was null or undefined when calling listIndexes().'
+ );
+ }
+
+ if (requestParameters['table'] == null) {
+ throw new runtime.RequiredError(
+ 'table',
+ 'Required parameter "table" was null or undefined when calling listIndexes().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/connections/{connection_id}/tables/{schema}/{table}/indexes`;
+ urlPath = urlPath.replace(`{${"connection_id"}}`, encodeURIComponent(String(requestParameters['connectionId'])));
+ urlPath = urlPath.replace(`{${"schema"}}`, encodeURIComponent(String(requestParameters['schema'])));
+ urlPath = urlPath.replace(`{${"table"}}`, encodeURIComponent(String(requestParameters['table'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List all indexes created on a cached table.
+ * List indexes on a table
+ */
+ async listIndexesRaw(requestParameters: ListIndexesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listIndexesRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListIndexesResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List all indexes created on a cached table.
+ * List indexes on a table
+ */
+ async listIndexes(requestParameters: ListIndexesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listIndexesRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/InformationSchemaApi.ts b/src/apis/InformationSchemaApi.ts
new file mode 100644
index 0000000..5e43756
--- /dev/null
+++ b/src/apis/InformationSchemaApi.ts
@@ -0,0 +1,113 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ InformationSchemaResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ InformationSchemaResponseFromJSON,
+ InformationSchemaResponseToJSON,
+} from '../models/index';
+
+export interface InformationSchemaRequest {
+ connectionId?: string;
+ schema?: string;
+ table?: string;
+ includeColumns?: boolean;
+ limit?: number;
+ cursor?: string;
+}
+
+/**
+ *
+ */
+export class InformationSchemaApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for informationSchema without sending the request
+ */
+ async informationSchemaRequestOpts(requestParameters: InformationSchemaRequest): Promise {
+ const queryParameters: any = {};
+
+ if (requestParameters['connectionId'] != null) {
+ queryParameters['connection_id'] = requestParameters['connectionId'];
+ }
+
+ if (requestParameters['schema'] != null) {
+ queryParameters['schema'] = requestParameters['schema'];
+ }
+
+ if (requestParameters['table'] != null) {
+ queryParameters['table'] = requestParameters['table'];
+ }
+
+ if (requestParameters['includeColumns'] != null) {
+ queryParameters['include_columns'] = requestParameters['includeColumns'];
+ }
+
+ if (requestParameters['limit'] != null) {
+ queryParameters['limit'] = requestParameters['limit'];
+ }
+
+ if (requestParameters['cursor'] != null) {
+ queryParameters['cursor'] = requestParameters['cursor'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/information_schema`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List discovered tables with optional filtering and pagination. Supports wildcard patterns (SQL %) for schema and table name filters. Set include_columns=true to include column definitions (omitted by default).
+ * List tables
+ */
+ async informationSchemaRaw(requestParameters: InformationSchemaRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.informationSchemaRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => InformationSchemaResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List discovered tables with optional filtering and pagination. Supports wildcard patterns (SQL %) for schema and table name filters. Set include_columns=true to include column definitions (omitted by default).
+ * List tables
+ */
+ async informationSchema(requestParameters: InformationSchemaRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.informationSchemaRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/QueryApi.ts b/src/apis/QueryApi.ts
new file mode 100644
index 0000000..d468080
--- /dev/null
+++ b/src/apis/QueryApi.ts
@@ -0,0 +1,97 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ QueryRequest,
+ QueryResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ QueryRequestFromJSON,
+ QueryRequestToJSON,
+ QueryResponseFromJSON,
+ QueryResponseToJSON,
+} from '../models/index';
+
+export interface QueryOperationRequest {
+ queryRequest: QueryRequest;
+}
+
+/**
+ *
+ */
+export class QueryApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for query without sending the request
+ */
+ async queryRequestOpts(requestParameters: QueryOperationRequest): Promise {
+ if (requestParameters['queryRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'queryRequest',
+ 'Required parameter "queryRequest" was null or undefined when calling query().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/query`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: QueryRequestToJSON(requestParameters['queryRequest']),
+ };
+ }
+
+ /**
+ * Execute a SQL query against all registered connections and datasets. Use standard Postgres-compatible SQL to reference tables from any connection using the format `connection_name.schema.table`. Results are returned inline and a `result_id` is provided for later retrieval via the Results API.
+ * Execute SQL query
+ */
+ async queryRaw(requestParameters: QueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.queryRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => QueryResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Execute a SQL query against all registered connections and datasets. Use standard Postgres-compatible SQL to reference tables from any connection using the format `connection_name.schema.table`. Results are returned inline and a `result_id` is provided for later retrieval via the Results API.
+ * Execute SQL query
+ */
+ async query(requestParameters: QueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.queryRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/QueryRunsApi.ts b/src/apis/QueryRunsApi.ts
new file mode 100644
index 0000000..fdcea0f
--- /dev/null
+++ b/src/apis/QueryRunsApi.ts
@@ -0,0 +1,88 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ListQueryRunsResponse,
+} from '../models/index';
+import {
+ ListQueryRunsResponseFromJSON,
+ ListQueryRunsResponseToJSON,
+} from '../models/index';
+
+export interface ListQueryRunsRequest {
+ limit?: number;
+ cursor?: string;
+}
+
+/**
+ *
+ */
+export class QueryRunsApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for listQueryRuns without sending the request
+ */
+ async listQueryRunsRequestOpts(requestParameters: ListQueryRunsRequest): Promise {
+ const queryParameters: any = {};
+
+ if (requestParameters['limit'] != null) {
+ queryParameters['limit'] = requestParameters['limit'];
+ }
+
+ if (requestParameters['cursor'] != null) {
+ queryParameters['cursor'] = requestParameters['cursor'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/query-runs`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List query runs
+ */
+ async listQueryRunsRaw(requestParameters: ListQueryRunsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listQueryRunsRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListQueryRunsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List query runs
+ */
+ async listQueryRuns(requestParameters: ListQueryRunsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listQueryRunsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/RefreshApi.ts b/src/apis/RefreshApi.ts
new file mode 100644
index 0000000..03ad1c5
--- /dev/null
+++ b/src/apis/RefreshApi.ts
@@ -0,0 +1,97 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ RefreshRequest,
+ RefreshResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ RefreshRequestFromJSON,
+ RefreshRequestToJSON,
+ RefreshResponseFromJSON,
+ RefreshResponseToJSON,
+} from '../models/index';
+
+export interface RefreshOperationRequest {
+ refreshRequest: RefreshRequest;
+}
+
+/**
+ *
+ */
+export class RefreshApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for refresh without sending the request
+ */
+ async refreshRequestOpts(requestParameters: RefreshOperationRequest): Promise {
+ if (requestParameters['refreshRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'refreshRequest',
+ 'Required parameter "refreshRequest" was null or undefined when calling refresh().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/refresh`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: RefreshRequestToJSON(requestParameters['refreshRequest']),
+ };
+ }
+
+ /**
+ * Refresh schema metadata or table data. The behavior depends on the request fields: - **Schema refresh (all)**: omit all fields — re-discovers tables for every connection. - **Schema refresh (single)**: set `connection_id` — re-discovers tables for one connection. - **Data refresh (single table)**: set `connection_id`, `schema_name`, `table_name`, and `data: true`. - **Data refresh (connection)**: set `connection_id` and `data: true` — refreshes all cached tables. Set `include_uncached: true` to also sync tables that haven\'t been cached yet.
+ * Refresh connection data
+ */
+ async refreshRaw(requestParameters: RefreshOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.refreshRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => RefreshResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Refresh schema metadata or table data. The behavior depends on the request fields: - **Schema refresh (all)**: omit all fields — re-discovers tables for every connection. - **Schema refresh (single)**: set `connection_id` — re-discovers tables for one connection. - **Data refresh (single table)**: set `connection_id`, `schema_name`, `table_name`, and `data: true`. - **Data refresh (connection)**: set `connection_id` and `data: true` — refreshes all cached tables. Set `include_uncached: true` to also sync tables that haven\'t been cached yet.
+ * Refresh connection data
+ */
+ async refresh(requestParameters: RefreshOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.refreshRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/ResultsApi.ts b/src/apis/ResultsApi.ts
new file mode 100644
index 0000000..7b5c7bc
--- /dev/null
+++ b/src/apis/ResultsApi.ts
@@ -0,0 +1,153 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ GetResultResponse,
+ ListResultsResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ GetResultResponseFromJSON,
+ GetResultResponseToJSON,
+ ListResultsResponseFromJSON,
+ ListResultsResponseToJSON,
+} from '../models/index';
+
+export interface GetResultRequest {
+ id: string;
+}
+
+export interface ListResultsRequest {
+ limit?: number;
+ offset?: number;
+}
+
+/**
+ *
+ */
+export class ResultsApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for getResult without sending the request
+ */
+ async getResultRequestOpts(requestParameters: GetResultRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling getResult().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/results/{id}`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Retrieve a persisted query result by ID. If the result is still being processed, only the status is returned. Once ready, the full column and row data is included in the response.
+ * Get result
+ */
+ async getResultRaw(requestParameters: GetResultRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.getResultRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => GetResultResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Retrieve a persisted query result by ID. If the result is still being processed, only the status is returned. Once ready, the full column and row data is included in the response.
+ * Get result
+ */
+ async getResult(requestParameters: GetResultRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getResultRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listResults without sending the request
+ */
+ async listResultsRequestOpts(requestParameters: ListResultsRequest): Promise {
+ const queryParameters: any = {};
+
+ if (requestParameters['limit'] != null) {
+ queryParameters['limit'] = requestParameters['limit'];
+ }
+
+ if (requestParameters['offset'] != null) {
+ queryParameters['offset'] = requestParameters['offset'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/results`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List results
+ */
+ async listResultsRaw(requestParameters: ListResultsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listResultsRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListResultsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List results
+ */
+ async listResults(requestParameters: ListResultsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listResultsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/SavedQueriesApi.ts b/src/apis/SavedQueriesApi.ts
new file mode 100644
index 0000000..194ac67
--- /dev/null
+++ b/src/apis/SavedQueriesApi.ts
@@ -0,0 +1,483 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ CreateSavedQueryRequest,
+ ExecuteSavedQueryRequest,
+ ListSavedQueriesResponse,
+ ListSavedQueryVersionsResponse,
+ QueryResponse,
+ SavedQueryDetail,
+ UpdateSavedQueryRequest,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ CreateSavedQueryRequestFromJSON,
+ CreateSavedQueryRequestToJSON,
+ ExecuteSavedQueryRequestFromJSON,
+ ExecuteSavedQueryRequestToJSON,
+ ListSavedQueriesResponseFromJSON,
+ ListSavedQueriesResponseToJSON,
+ ListSavedQueryVersionsResponseFromJSON,
+ ListSavedQueryVersionsResponseToJSON,
+ QueryResponseFromJSON,
+ QueryResponseToJSON,
+ SavedQueryDetailFromJSON,
+ SavedQueryDetailToJSON,
+ UpdateSavedQueryRequestFromJSON,
+ UpdateSavedQueryRequestToJSON,
+} from '../models/index';
+
+export interface CreateSavedQueryOperationRequest {
+ createSavedQueryRequest: CreateSavedQueryRequest;
+}
+
+export interface DeleteSavedQueryRequest {
+ id: string;
+}
+
+export interface ExecuteSavedQueryOperationRequest {
+ id: string;
+ executeSavedQueryRequest?: ExecuteSavedQueryRequest | null;
+}
+
+export interface GetSavedQueryRequest {
+ id: string;
+}
+
+export interface ListSavedQueriesRequest {
+ limit?: number;
+ offset?: number;
+}
+
+export interface ListSavedQueryVersionsRequest {
+ id: string;
+ limit?: number;
+ offset?: number;
+}
+
+export interface UpdateSavedQueryOperationRequest {
+ id: string;
+ updateSavedQueryRequest: UpdateSavedQueryRequest;
+}
+
+/**
+ *
+ */
+export class SavedQueriesApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for createSavedQuery without sending the request
+ */
+ async createSavedQueryRequestOpts(requestParameters: CreateSavedQueryOperationRequest): Promise {
+ if (requestParameters['createSavedQueryRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'createSavedQueryRequest',
+ 'Required parameter "createSavedQueryRequest" was null or undefined when calling createSavedQuery().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/queries`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: CreateSavedQueryRequestToJSON(requestParameters['createSavedQueryRequest']),
+ };
+ }
+
+ /**
+ * Save a named SQL query. The SQL is stored as version 1 and automatically analyzed for classification metadata (category, table count, predicate/join/aggregation flags).
+ * Create saved query
+ */
+ async createSavedQueryRaw(requestParameters: CreateSavedQueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.createSavedQueryRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => SavedQueryDetailFromJSON(jsonValue));
+ }
+
+ /**
+ * Save a named SQL query. The SQL is stored as version 1 and automatically analyzed for classification metadata (category, table count, predicate/join/aggregation flags).
+ * Create saved query
+ */
+ async createSavedQuery(requestParameters: CreateSavedQueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.createSavedQueryRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for deleteSavedQuery without sending the request
+ */
+ async deleteSavedQueryRequestOpts(requestParameters: DeleteSavedQueryRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling deleteSavedQuery().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/queries/{id}`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'DELETE',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Delete saved query
+ */
+ async deleteSavedQueryRaw(requestParameters: DeleteSavedQueryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.deleteSavedQueryRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.VoidApiResponse(response);
+ }
+
+ /**
+ * Delete saved query
+ */
+ async deleteSavedQuery(requestParameters: DeleteSavedQueryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ await this.deleteSavedQueryRaw(requestParameters, initOverrides);
+ }
+
+ /**
+ * Creates request options for executeSavedQuery without sending the request
+ */
+ async executeSavedQueryRequestOpts(requestParameters: ExecuteSavedQueryOperationRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling executeSavedQuery().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/queries/{id}/execute`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: ExecuteSavedQueryRequestToJSON(requestParameters['executeSavedQueryRequest']),
+ };
+ }
+
+ /**
+ * Execute a saved query. By default runs the latest version. Optionally specify a version number to execute a previous version. Returns the same response format as POST /v1/query.
+ * Execute saved query
+ */
+ async executeSavedQueryRaw(requestParameters: ExecuteSavedQueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.executeSavedQueryRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => QueryResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Execute a saved query. By default runs the latest version. Optionally specify a version number to execute a previous version. Returns the same response format as POST /v1/query.
+ * Execute saved query
+ */
+ async executeSavedQuery(requestParameters: ExecuteSavedQueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.executeSavedQueryRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for getSavedQuery without sending the request
+ */
+ async getSavedQueryRequestOpts(requestParameters: GetSavedQueryRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling getSavedQuery().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/queries/{id}`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Get saved query
+ */
+ async getSavedQueryRaw(requestParameters: GetSavedQueryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.getSavedQueryRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => SavedQueryDetailFromJSON(jsonValue));
+ }
+
+ /**
+ * Get saved query
+ */
+ async getSavedQuery(requestParameters: GetSavedQueryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getSavedQueryRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listSavedQueries without sending the request
+ */
+ async listSavedQueriesRequestOpts(requestParameters: ListSavedQueriesRequest): Promise {
+ const queryParameters: any = {};
+
+ if (requestParameters['limit'] != null) {
+ queryParameters['limit'] = requestParameters['limit'];
+ }
+
+ if (requestParameters['offset'] != null) {
+ queryParameters['offset'] = requestParameters['offset'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/queries`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List saved queries
+ */
+ async listSavedQueriesRaw(requestParameters: ListSavedQueriesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listSavedQueriesRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListSavedQueriesResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List saved queries
+ */
+ async listSavedQueries(requestParameters: ListSavedQueriesRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listSavedQueriesRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listSavedQueryVersions without sending the request
+ */
+ async listSavedQueryVersionsRequestOpts(requestParameters: ListSavedQueryVersionsRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling listSavedQueryVersions().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ if (requestParameters['limit'] != null) {
+ queryParameters['limit'] = requestParameters['limit'];
+ }
+
+ if (requestParameters['offset'] != null) {
+ queryParameters['offset'] = requestParameters['offset'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/queries/{id}/versions`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List saved query versions
+ */
+ async listSavedQueryVersionsRaw(requestParameters: ListSavedQueryVersionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listSavedQueryVersionsRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListSavedQueryVersionsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List saved query versions
+ */
+ async listSavedQueryVersions(requestParameters: ListSavedQueryVersionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listSavedQueryVersionsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for updateSavedQuery without sending the request
+ */
+ async updateSavedQueryRequestOpts(requestParameters: UpdateSavedQueryOperationRequest): Promise {
+ if (requestParameters['id'] == null) {
+ throw new runtime.RequiredError(
+ 'id',
+ 'Required parameter "id" was null or undefined when calling updateSavedQuery().'
+ );
+ }
+
+ if (requestParameters['updateSavedQueryRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'updateSavedQueryRequest',
+ 'Required parameter "updateSavedQueryRequest" was null or undefined when calling updateSavedQuery().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/queries/{id}`;
+ urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));
+
+ return {
+ path: urlPath,
+ method: 'PUT',
+ headers: headerParameters,
+ query: queryParameters,
+ body: UpdateSavedQueryRequestToJSON(requestParameters['updateSavedQueryRequest']),
+ };
+ }
+
+ /**
+ * Update a saved query. If the SQL changes, a new version is created (previous versions are preserved). Name, tags, description, and classification overrides can also be updated.
+ * Update saved query
+ */
+ async updateSavedQueryRaw(requestParameters: UpdateSavedQueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.updateSavedQueryRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => SavedQueryDetailFromJSON(jsonValue));
+ }
+
+ /**
+ * Update a saved query. If the SQL changes, a new version is created (previous versions are preserved). Name, tags, description, and classification overrides can also be updated.
+ * Update saved query
+ */
+ async updateSavedQuery(requestParameters: UpdateSavedQueryOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.updateSavedQueryRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/SecretsApi.ts b/src/apis/SecretsApi.ts
new file mode 100644
index 0000000..c7ddbca
--- /dev/null
+++ b/src/apis/SecretsApi.ts
@@ -0,0 +1,339 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ CreateSecretRequest,
+ CreateSecretResponse,
+ GetSecretResponse,
+ ListSecretsResponse,
+ UpdateSecretRequest,
+ UpdateSecretResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ CreateSecretRequestFromJSON,
+ CreateSecretRequestToJSON,
+ CreateSecretResponseFromJSON,
+ CreateSecretResponseToJSON,
+ GetSecretResponseFromJSON,
+ GetSecretResponseToJSON,
+ ListSecretsResponseFromJSON,
+ ListSecretsResponseToJSON,
+ UpdateSecretRequestFromJSON,
+ UpdateSecretRequestToJSON,
+ UpdateSecretResponseFromJSON,
+ UpdateSecretResponseToJSON,
+} from '../models/index';
+
+export interface CreateSecretOperationRequest {
+ createSecretRequest: CreateSecretRequest;
+}
+
+export interface DeleteSecretRequest {
+ name: string;
+}
+
+export interface GetSecretRequest {
+ name: string;
+}
+
+export interface UpdateSecretOperationRequest {
+ name: string;
+ updateSecretRequest: UpdateSecretRequest;
+}
+
+/**
+ *
+ */
+export class SecretsApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for createSecret without sending the request
+ */
+ async createSecretRequestOpts(requestParameters: CreateSecretOperationRequest): Promise {
+ if (requestParameters['createSecretRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'createSecretRequest',
+ 'Required parameter "createSecretRequest" was null or undefined when calling createSecret().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/secrets`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: CreateSecretRequestToJSON(requestParameters['createSecretRequest']),
+ };
+ }
+
+ /**
+ * Store a new named secret. The value is encrypted at rest and can be referenced by connections for authentication. Secret names must be unique.
+ * Create secret
+ */
+ async createSecretRaw(requestParameters: CreateSecretOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.createSecretRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => CreateSecretResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Store a new named secret. The value is encrypted at rest and can be referenced by connections for authentication. Secret names must be unique.
+ * Create secret
+ */
+ async createSecret(requestParameters: CreateSecretOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.createSecretRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for deleteSecret without sending the request
+ */
+ async deleteSecretRequestOpts(requestParameters: DeleteSecretRequest): Promise {
+ if (requestParameters['name'] == null) {
+ throw new runtime.RequiredError(
+ 'name',
+ 'Required parameter "name" was null or undefined when calling deleteSecret().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/secrets/{name}`;
+ urlPath = urlPath.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters['name'])));
+
+ return {
+ path: urlPath,
+ method: 'DELETE',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Delete secret
+ */
+ async deleteSecretRaw(requestParameters: DeleteSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.deleteSecretRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.VoidApiResponse(response);
+ }
+
+ /**
+ * Delete secret
+ */
+ async deleteSecret(requestParameters: DeleteSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ await this.deleteSecretRaw(requestParameters, initOverrides);
+ }
+
+ /**
+ * Creates request options for getSecret without sending the request
+ */
+ async getSecretRequestOpts(requestParameters: GetSecretRequest): Promise {
+ if (requestParameters['name'] == null) {
+ throw new runtime.RequiredError(
+ 'name',
+ 'Required parameter "name" was null or undefined when calling getSecret().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/secrets/{name}`;
+ urlPath = urlPath.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters['name'])));
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Get metadata for a secret. The secret value is never returned.
+ * Get secret
+ */
+ async getSecretRaw(requestParameters: GetSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.getSecretRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => GetSecretResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Get metadata for a secret. The secret value is never returned.
+ * Get secret
+ */
+ async getSecret(requestParameters: GetSecretRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.getSecretRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listSecrets without sending the request
+ */
+ async listSecretsRequestOpts(): Promise {
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/secrets`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List all stored secrets. Only metadata (name, timestamps) is returned — secret values are never exposed.
+ * List secrets
+ */
+ async listSecretsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listSecretsRequestOpts();
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListSecretsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List all stored secrets. Only metadata (name, timestamps) is returned — secret values are never exposed.
+ * List secrets
+ */
+ async listSecrets(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listSecretsRaw(initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for updateSecret without sending the request
+ */
+ async updateSecretRequestOpts(requestParameters: UpdateSecretOperationRequest): Promise {
+ if (requestParameters['name'] == null) {
+ throw new runtime.RequiredError(
+ 'name',
+ 'Required parameter "name" was null or undefined when calling updateSecret().'
+ );
+ }
+
+ if (requestParameters['updateSecretRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'updateSecretRequest',
+ 'Required parameter "updateSecretRequest" was null or undefined when calling updateSecret().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/secrets/{name}`;
+ urlPath = urlPath.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters['name'])));
+
+ return {
+ path: urlPath,
+ method: 'PUT',
+ headers: headerParameters,
+ query: queryParameters,
+ body: UpdateSecretRequestToJSON(requestParameters['updateSecretRequest']),
+ };
+ }
+
+ /**
+ * Update secret
+ */
+ async updateSecretRaw(requestParameters: UpdateSecretOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.updateSecretRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => UpdateSecretResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Update secret
+ */
+ async updateSecret(requestParameters: UpdateSecretOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.updateSecretRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/UploadsApi.ts b/src/apis/UploadsApi.ts
new file mode 100644
index 0000000..9703147
--- /dev/null
+++ b/src/apis/UploadsApi.ts
@@ -0,0 +1,150 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ ApiErrorResponse,
+ ListUploadsResponse,
+ UploadResponse,
+} from '../models/index';
+import {
+ ApiErrorResponseFromJSON,
+ ApiErrorResponseToJSON,
+ ListUploadsResponseFromJSON,
+ ListUploadsResponseToJSON,
+ UploadResponseFromJSON,
+ UploadResponseToJSON,
+} from '../models/index';
+
+export interface ListUploadsRequest {
+ status?: string;
+}
+
+export interface UploadFileRequest {
+ requestBody: Array;
+}
+
+/**
+ *
+ */
+export class UploadsApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for listUploads without sending the request
+ */
+ async listUploadsRequestOpts(requestParameters: ListUploadsRequest): Promise {
+ const queryParameters: any = {};
+
+ if (requestParameters['status'] != null) {
+ queryParameters['status'] = requestParameters['status'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/files`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * List uploads
+ */
+ async listUploadsRaw(requestParameters: ListUploadsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listUploadsRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListUploadsResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * List uploads
+ */
+ async listUploads(requestParameters: ListUploadsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listUploadsRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for uploadFile without sending the request
+ */
+ async uploadFileRequestOpts(requestParameters: UploadFileRequest): Promise {
+ if (requestParameters['requestBody'] == null) {
+ throw new runtime.RequiredError(
+ 'requestBody',
+ 'Required parameter "requestBody" was null or undefined when calling uploadFile().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/octet-stream';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/files`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: requestParameters['requestBody'],
+ };
+ }
+
+ /**
+ * Upload a file to be used as a dataset source. Send the raw file bytes as the request body with an appropriate Content-Type header (e.g., `text/csv`, `application/json`, `application/parquet`). The returned upload ID can be passed to POST /v1/datasets to create a queryable table.
+ * Upload file
+ */
+ async uploadFileRaw(requestParameters: UploadFileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.uploadFileRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => UploadResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Upload a file to be used as a dataset source. Send the raw file bytes as the request body with an appropriate Content-Type header (e.g., `text/csv`, `application/json`, `application/parquet`). The returned upload ID can be passed to POST /v1/datasets to create a queryable table.
+ * Upload file
+ */
+ async uploadFile(requestParameters: UploadFileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.uploadFileRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/WorkspacesApi.ts b/src/apis/WorkspacesApi.ts
new file mode 100644
index 0000000..401483e
--- /dev/null
+++ b/src/apis/WorkspacesApi.ts
@@ -0,0 +1,152 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import * as runtime from '../runtime';
+import type {
+ CreateWorkspaceRequest,
+ CreateWorkspaceResponse,
+ ListWorkspacesResponse,
+} from '../models/index';
+import {
+ CreateWorkspaceRequestFromJSON,
+ CreateWorkspaceRequestToJSON,
+ CreateWorkspaceResponseFromJSON,
+ CreateWorkspaceResponseToJSON,
+ ListWorkspacesResponseFromJSON,
+ ListWorkspacesResponseToJSON,
+} from '../models/index';
+
+export interface CreateWorkspaceOperationRequest {
+ createWorkspaceRequest: CreateWorkspaceRequest;
+}
+
+export interface ListWorkspacesRequest {
+ organizationPublicId?: string;
+}
+
+/**
+ *
+ */
+export class WorkspacesApi extends runtime.BaseAPI {
+
+ /**
+ * Creates request options for createWorkspace without sending the request
+ */
+ async createWorkspaceRequestOpts(requestParameters: CreateWorkspaceOperationRequest): Promise {
+ if (requestParameters['createWorkspaceRequest'] == null) {
+ throw new runtime.RequiredError(
+ 'createWorkspaceRequest',
+ 'Required parameter "createWorkspaceRequest" was null or undefined when calling createWorkspace().'
+ );
+ }
+
+ const queryParameters: any = {};
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ headerParameters['Content-Type'] = 'application/json';
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/workspaces`;
+
+ return {
+ path: urlPath,
+ method: 'POST',
+ headers: headerParameters,
+ query: queryParameters,
+ body: CreateWorkspaceRequestToJSON(requestParameters['createWorkspaceRequest']),
+ };
+ }
+
+ /**
+ * Creates a new workspace in the specified organization.
+ * Create a workspace
+ */
+ async createWorkspaceRaw(requestParameters: CreateWorkspaceOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.createWorkspaceRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => CreateWorkspaceResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Creates a new workspace in the specified organization.
+ * Create a workspace
+ */
+ async createWorkspace(requestParameters: CreateWorkspaceOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.createWorkspaceRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+ /**
+ * Creates request options for listWorkspaces without sending the request
+ */
+ async listWorkspacesRequestOpts(requestParameters: ListWorkspacesRequest): Promise {
+ const queryParameters: any = {};
+
+ if (requestParameters['organizationPublicId'] != null) {
+ queryParameters['organization_public_id'] = requestParameters['organizationPublicId'];
+ }
+
+ const headerParameters: runtime.HTTPHeaders = {};
+
+ if (this.configuration && this.configuration.accessToken) {
+ const token = this.configuration.accessToken;
+ const tokenString = await token("BearerAuth", []);
+
+ if (tokenString) {
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
+ }
+ }
+
+ let urlPath = `/v1/workspaces`;
+
+ return {
+ path: urlPath,
+ method: 'GET',
+ headers: headerParameters,
+ query: queryParameters,
+ };
+ }
+
+ /**
+ * Lists all workspaces in the user\'s organization.
+ * List workspaces
+ */
+ async listWorkspacesRaw(requestParameters: ListWorkspacesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> {
+ const requestOptions = await this.listWorkspacesRequestOpts(requestParameters);
+ const response = await this.request(requestOptions, initOverrides);
+
+ return new runtime.JSONApiResponse(response, (jsonValue) => ListWorkspacesResponseFromJSON(jsonValue));
+ }
+
+ /**
+ * Lists all workspaces in the user\'s organization.
+ * List workspaces
+ */
+ async listWorkspaces(requestParameters: ListWorkspacesRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise {
+ const response = await this.listWorkspacesRaw(requestParameters, initOverrides);
+ return await response.value();
+ }
+
+}
diff --git a/src/apis/index.ts b/src/apis/index.ts
new file mode 100644
index 0000000..41b3691
--- /dev/null
+++ b/src/apis/index.ts
@@ -0,0 +1,15 @@
+/* tslint:disable */
+/* eslint-disable */
+export * from './ConnectionTypesApi';
+export * from './ConnectionsApi';
+export * from './DatasetsApi';
+export * from './IndexesApi';
+export * from './InformationSchemaApi';
+export * from './QueryApi';
+export * from './QueryRunsApi';
+export * from './RefreshApi';
+export * from './ResultsApi';
+export * from './SavedQueriesApi';
+export * from './SecretsApi';
+export * from './UploadsApi';
+export * from './WorkspacesApi';
diff --git a/src/client.ts b/src/client.ts
deleted file mode 100644
index 7e03f03..0000000
--- a/src/client.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-// This client is a minimal scaffold. It will be replaced by auto-generated
-// code from the HotData OpenAPI spec via the regenerate workflow.
-
-export interface HotdataClientOptions {
- apiToken: string;
- workspaceId: string;
- baseUrl?: string;
-}
-
-export class HotdataClient {
- private readonly baseUrl: string;
- private readonly headers: Record;
-
- constructor(options: HotdataClientOptions) {
- this.baseUrl = options.baseUrl ?? "https://api.hotdata.dev";
- this.headers = {
- Authorization: `Bearer ${options.apiToken}`,
- "X-Workspace-Id": options.workspaceId,
- "Content-Type": "application/json",
- };
- }
-
- private async request(path: string, init?: RequestInit): Promise {
- return fetch(`${this.baseUrl}${path}`, {
- ...init,
- headers: { ...this.headers, ...init?.headers },
- });
- }
-
- async health(): Promise {
- return this.request("/health");
- }
-}
diff --git a/src/index.ts b/src/index.ts
index b604b63..bebe8bb 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,2 +1,5 @@
-export { HotdataClient } from "./client.js";
-export type { HotdataClientOptions } from "./client.js";
+/* tslint:disable */
+/* eslint-disable */
+export * from './runtime';
+export * from './apis/index';
+export * from './models/index';
diff --git a/src/models/ApiErrorDetail.ts b/src/models/ApiErrorDetail.ts
new file mode 100644
index 0000000..e51cff0
--- /dev/null
+++ b/src/models/ApiErrorDetail.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Error detail within an API error response
+ * @export
+ * @interface ApiErrorDetail
+ */
+export interface ApiErrorDetail {
+ /**
+ *
+ * @type {string}
+ * @memberof ApiErrorDetail
+ */
+ code: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ApiErrorDetail
+ */
+ message: string;
+}
+
+/**
+ * Check if a given object implements the ApiErrorDetail interface.
+ */
+export function instanceOfApiErrorDetail(value: object): value is ApiErrorDetail {
+ if (!('code' in value) || value['code'] === undefined) return false;
+ if (!('message' in value) || value['message'] === undefined) return false;
+ return true;
+}
+
+export function ApiErrorDetailFromJSON(json: any): ApiErrorDetail {
+ return ApiErrorDetailFromJSONTyped(json, false);
+}
+
+export function ApiErrorDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiErrorDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'code': json['code'],
+ 'message': json['message'],
+ };
+}
+
+export function ApiErrorDetailToJSON(json: any): ApiErrorDetail {
+ return ApiErrorDetailToJSONTyped(json, false);
+}
+
+export function ApiErrorDetailToJSONTyped(value?: ApiErrorDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'code': value['code'],
+ 'message': value['message'],
+ };
+}
+
diff --git a/src/models/ApiErrorResponse.ts b/src/models/ApiErrorResponse.ts
new file mode 100644
index 0000000..a1e7030
--- /dev/null
+++ b/src/models/ApiErrorResponse.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ApiErrorDetail } from './ApiErrorDetail';
+import {
+ ApiErrorDetailFromJSON,
+ ApiErrorDetailFromJSONTyped,
+ ApiErrorDetailToJSON,
+ ApiErrorDetailToJSONTyped,
+} from './ApiErrorDetail';
+
+/**
+ * Standard error response body
+ * @export
+ * @interface ApiErrorResponse
+ */
+export interface ApiErrorResponse {
+ /**
+ *
+ * @type {ApiErrorDetail}
+ * @memberof ApiErrorResponse
+ */
+ error: ApiErrorDetail;
+}
+
+/**
+ * Check if a given object implements the ApiErrorResponse interface.
+ */
+export function instanceOfApiErrorResponse(value: object): value is ApiErrorResponse {
+ if (!('error' in value) || value['error'] === undefined) return false;
+ return true;
+}
+
+export function ApiErrorResponseFromJSON(json: any): ApiErrorResponse {
+ return ApiErrorResponseFromJSONTyped(json, false);
+}
+
+export function ApiErrorResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiErrorResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'error': ApiErrorDetailFromJSON(json['error']),
+ };
+}
+
+export function ApiErrorResponseToJSON(json: any): ApiErrorResponse {
+ return ApiErrorResponseToJSONTyped(json, false);
+}
+
+export function ApiErrorResponseToJSONTyped(value?: ApiErrorResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'error': ApiErrorDetailToJSON(value['error']),
+ };
+}
+
diff --git a/src/models/BooleanProfileDetail.ts b/src/models/BooleanProfileDetail.ts
new file mode 100644
index 0000000..de04abd
--- /dev/null
+++ b/src/models/BooleanProfileDetail.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Boolean column.
+ * @export
+ * @interface BooleanProfileDetail
+ */
+export interface BooleanProfileDetail {
+ /**
+ * Number of false values
+ * @type {number}
+ * @memberof BooleanProfileDetail
+ */
+ falseCount: number;
+ /**
+ * Number of true values
+ * @type {number}
+ * @memberof BooleanProfileDetail
+ */
+ trueCount: number;
+}
+
+/**
+ * Check if a given object implements the BooleanProfileDetail interface.
+ */
+export function instanceOfBooleanProfileDetail(value: object): value is BooleanProfileDetail {
+ if (!('falseCount' in value) || value['falseCount'] === undefined) return false;
+ if (!('trueCount' in value) || value['trueCount'] === undefined) return false;
+ return true;
+}
+
+export function BooleanProfileDetailFromJSON(json: any): BooleanProfileDetail {
+ return BooleanProfileDetailFromJSONTyped(json, false);
+}
+
+export function BooleanProfileDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): BooleanProfileDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'falseCount': json['false_count'],
+ 'trueCount': json['true_count'],
+ };
+}
+
+export function BooleanProfileDetailToJSON(json: any): BooleanProfileDetail {
+ return BooleanProfileDetailToJSONTyped(json, false);
+}
+
+export function BooleanProfileDetailToJSONTyped(value?: BooleanProfileDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'false_count': value['falseCount'],
+ 'true_count': value['trueCount'],
+ };
+}
+
diff --git a/src/models/CategoricalProfileDetail.ts b/src/models/CategoricalProfileDetail.ts
new file mode 100644
index 0000000..fccdf55
--- /dev/null
+++ b/src/models/CategoricalProfileDetail.ts
@@ -0,0 +1,83 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { CategoryValueInfo } from './CategoryValueInfo';
+import {
+ CategoryValueInfoFromJSON,
+ CategoryValueInfoFromJSONTyped,
+ CategoryValueInfoToJSON,
+ CategoryValueInfoToJSONTyped,
+} from './CategoryValueInfo';
+
+/**
+ * Type-specific column profile detail. The `type` discriminator field determines which
+ * variant is present. Profile type is chosen based on the column's Arrow data type and
+ * cardinality:
+ *
+ * - **categorical**: Text or numeric columns with ≤200 distinct values. Lists each value with its frequency.
+ * - **text**: Text columns with >200 distinct values. Reports string length statistics.
+ * - **numeric**: Numeric columns with >200 distinct values. Reports min, max, and mean.
+ * - **temporal**: Date and timestamp columns. Reports min and max as ISO-8601 strings.
+ * - **boolean**: Boolean columns. Reports true and false counts.
+ * Low-cardinality column (≤200 distinct values). Values sorted by frequency descending.
+ * @export
+ * @interface CategoricalProfileDetail
+ */
+export interface CategoricalProfileDetail {
+ /**
+ * Distinct values with their counts, ordered by count descending
+ * @type {Array}
+ * @memberof CategoricalProfileDetail
+ */
+ values: Array;
+}
+
+/**
+ * Check if a given object implements the CategoricalProfileDetail interface.
+ */
+export function instanceOfCategoricalProfileDetail(value: object): value is CategoricalProfileDetail {
+ if (!('values' in value) || value['values'] === undefined) return false;
+ return true;
+}
+
+export function CategoricalProfileDetailFromJSON(json: any): CategoricalProfileDetail {
+ return CategoricalProfileDetailFromJSONTyped(json, false);
+}
+
+export function CategoricalProfileDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): CategoricalProfileDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'values': ((json['values'] as Array).map(CategoryValueInfoFromJSON)),
+ };
+}
+
+export function CategoricalProfileDetailToJSON(json: any): CategoricalProfileDetail {
+ return CategoricalProfileDetailToJSONTyped(json, false);
+}
+
+export function CategoricalProfileDetailToJSONTyped(value?: CategoricalProfileDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'values': ((value['values'] as Array).map(CategoryValueInfoToJSON)),
+ };
+}
+
diff --git a/src/models/CategoryValueInfo.ts b/src/models/CategoryValueInfo.ts
new file mode 100644
index 0000000..81114d0
--- /dev/null
+++ b/src/models/CategoryValueInfo.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * A distinct value with its frequency count, used in categorical profiles.
+ * @export
+ * @interface CategoryValueInfo
+ */
+export interface CategoryValueInfo {
+ /**
+ * Number of occurrences
+ * @type {number}
+ * @memberof CategoryValueInfo
+ */
+ count: number;
+ /**
+ * The distinct value (as a string, or null)
+ * @type {string}
+ * @memberof CategoryValueInfo
+ */
+ value?: string | null;
+}
+
+/**
+ * Check if a given object implements the CategoryValueInfo interface.
+ */
+export function instanceOfCategoryValueInfo(value: object): value is CategoryValueInfo {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ return true;
+}
+
+export function CategoryValueInfoFromJSON(json: any): CategoryValueInfo {
+ return CategoryValueInfoFromJSONTyped(json, false);
+}
+
+export function CategoryValueInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): CategoryValueInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'value': json['value'] == null ? undefined : json['value'],
+ };
+}
+
+export function CategoryValueInfoToJSON(json: any): CategoryValueInfo {
+ return CategoryValueInfoToJSONTyped(json, false);
+}
+
+export function CategoryValueInfoToJSONTyped(value?: CategoryValueInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'value': value['value'],
+ };
+}
+
diff --git a/src/models/ColumnInfo.ts b/src/models/ColumnInfo.ts
new file mode 100644
index 0000000..1ac0b45
--- /dev/null
+++ b/src/models/ColumnInfo.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Column metadata for API responses
+ * @export
+ * @interface ColumnInfo
+ */
+export interface ColumnInfo {
+ /**
+ *
+ * @type {string}
+ * @memberof ColumnInfo
+ */
+ dataType: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ColumnInfo
+ */
+ name: string;
+ /**
+ *
+ * @type {boolean}
+ * @memberof ColumnInfo
+ */
+ nullable: boolean;
+}
+
+/**
+ * Check if a given object implements the ColumnInfo interface.
+ */
+export function instanceOfColumnInfo(value: object): value is ColumnInfo {
+ if (!('dataType' in value) || value['dataType'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('nullable' in value) || value['nullable'] === undefined) return false;
+ return true;
+}
+
+export function ColumnInfoFromJSON(json: any): ColumnInfo {
+ return ColumnInfoFromJSONTyped(json, false);
+}
+
+export function ColumnInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'dataType': json['data_type'],
+ 'name': json['name'],
+ 'nullable': json['nullable'],
+ };
+}
+
+export function ColumnInfoToJSON(json: any): ColumnInfo {
+ return ColumnInfoToJSONTyped(json, false);
+}
+
+export function ColumnInfoToJSONTyped(value?: ColumnInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'data_type': value['dataType'],
+ 'name': value['name'],
+ 'nullable': value['nullable'],
+ };
+}
+
diff --git a/src/models/ColumnProfileDetail.ts b/src/models/ColumnProfileDetail.ts
new file mode 100644
index 0000000..a1da505
--- /dev/null
+++ b/src/models/ColumnProfileDetail.ts
@@ -0,0 +1,115 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import type { ColumnProfileDetailOneOf } from './ColumnProfileDetailOneOf';
+import {
+ instanceOfColumnProfileDetailOneOf,
+ ColumnProfileDetailOneOfFromJSON,
+ ColumnProfileDetailOneOfFromJSONTyped,
+ ColumnProfileDetailOneOfToJSON,
+} from './ColumnProfileDetailOneOf';
+import type { ColumnProfileDetailOneOf1 } from './ColumnProfileDetailOneOf1';
+import {
+ instanceOfColumnProfileDetailOneOf1,
+ ColumnProfileDetailOneOf1FromJSON,
+ ColumnProfileDetailOneOf1FromJSONTyped,
+ ColumnProfileDetailOneOf1ToJSON,
+} from './ColumnProfileDetailOneOf1';
+import type { ColumnProfileDetailOneOf2 } from './ColumnProfileDetailOneOf2';
+import {
+ instanceOfColumnProfileDetailOneOf2,
+ ColumnProfileDetailOneOf2FromJSON,
+ ColumnProfileDetailOneOf2FromJSONTyped,
+ ColumnProfileDetailOneOf2ToJSON,
+} from './ColumnProfileDetailOneOf2';
+import type { ColumnProfileDetailOneOf3 } from './ColumnProfileDetailOneOf3';
+import {
+ instanceOfColumnProfileDetailOneOf3,
+ ColumnProfileDetailOneOf3FromJSON,
+ ColumnProfileDetailOneOf3FromJSONTyped,
+ ColumnProfileDetailOneOf3ToJSON,
+} from './ColumnProfileDetailOneOf3';
+import type { ColumnProfileDetailOneOf4 } from './ColumnProfileDetailOneOf4';
+import {
+ instanceOfColumnProfileDetailOneOf4,
+ ColumnProfileDetailOneOf4FromJSON,
+ ColumnProfileDetailOneOf4FromJSONTyped,
+ ColumnProfileDetailOneOf4ToJSON,
+} from './ColumnProfileDetailOneOf4';
+
+/**
+ * @type ColumnProfileDetail
+ *
+ * @export
+ */
+export type ColumnProfileDetail = ColumnProfileDetailOneOf | ColumnProfileDetailOneOf1 | ColumnProfileDetailOneOf2 | ColumnProfileDetailOneOf3 | ColumnProfileDetailOneOf4;
+
+export function ColumnProfileDetailFromJSON(json: any): ColumnProfileDetail {
+ return ColumnProfileDetailFromJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnProfileDetail {
+ if (json == null) {
+ return json;
+ }
+ if (typeof json !== 'object') {
+ return json;
+ }
+ if (instanceOfColumnProfileDetailOneOf(json)) {
+ return ColumnProfileDetailOneOfFromJSONTyped(json, true);
+ }
+ if (instanceOfColumnProfileDetailOneOf1(json)) {
+ return ColumnProfileDetailOneOf1FromJSONTyped(json, true);
+ }
+ if (instanceOfColumnProfileDetailOneOf2(json)) {
+ return ColumnProfileDetailOneOf2FromJSONTyped(json, true);
+ }
+ if (instanceOfColumnProfileDetailOneOf3(json)) {
+ return ColumnProfileDetailOneOf3FromJSONTyped(json, true);
+ }
+ if (instanceOfColumnProfileDetailOneOf4(json)) {
+ return ColumnProfileDetailOneOf4FromJSONTyped(json, true);
+ }
+ return {} as any;
+}
+
+export function ColumnProfileDetailToJSON(json: any): any {
+ return ColumnProfileDetailToJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailToJSONTyped(value?: ColumnProfileDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+ if (typeof value !== 'object') {
+ return value;
+ }
+ if (instanceOfColumnProfileDetailOneOf(value)) {
+ return ColumnProfileDetailOneOfToJSON(value as ColumnProfileDetailOneOf);
+ }
+ if (instanceOfColumnProfileDetailOneOf1(value)) {
+ return ColumnProfileDetailOneOf1ToJSON(value as ColumnProfileDetailOneOf1);
+ }
+ if (instanceOfColumnProfileDetailOneOf2(value)) {
+ return ColumnProfileDetailOneOf2ToJSON(value as ColumnProfileDetailOneOf2);
+ }
+ if (instanceOfColumnProfileDetailOneOf3(value)) {
+ return ColumnProfileDetailOneOf3ToJSON(value as ColumnProfileDetailOneOf3);
+ }
+ if (instanceOfColumnProfileDetailOneOf4(value)) {
+ return ColumnProfileDetailOneOf4ToJSON(value as ColumnProfileDetailOneOf4);
+ }
+ return {};
+}
+
diff --git a/src/models/ColumnProfileDetailOneOf.ts b/src/models/ColumnProfileDetailOneOf.ts
new file mode 100644
index 0000000..7dd0fb8
--- /dev/null
+++ b/src/models/ColumnProfileDetailOneOf.ts
@@ -0,0 +1,93 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { CategoryValueInfo } from './CategoryValueInfo';
+import {
+ CategoryValueInfoFromJSON,
+ CategoryValueInfoFromJSONTyped,
+ CategoryValueInfoToJSON,
+ CategoryValueInfoToJSONTyped,
+} from './CategoryValueInfo';
+
+/**
+ *
+ * @export
+ * @interface ColumnProfileDetailOneOf
+ */
+export interface ColumnProfileDetailOneOf {
+ /**
+ * Distinct values with their counts, ordered by count descending
+ * @type {Array}
+ * @memberof ColumnProfileDetailOneOf
+ */
+ values: Array;
+ /**
+ *
+ * @type {ColumnProfileDetailOneOfTypeEnum}
+ * @memberof ColumnProfileDetailOneOf
+ */
+ type: ColumnProfileDetailOneOfTypeEnum;
+}
+
+
+/**
+ * @export
+ */
+export const ColumnProfileDetailOneOfTypeEnum = {
+ Categorical: 'categorical'
+} as const;
+export type ColumnProfileDetailOneOfTypeEnum = typeof ColumnProfileDetailOneOfTypeEnum[keyof typeof ColumnProfileDetailOneOfTypeEnum];
+
+
+/**
+ * Check if a given object implements the ColumnProfileDetailOneOf interface.
+ */
+export function instanceOfColumnProfileDetailOneOf(value: object): value is ColumnProfileDetailOneOf {
+ if (!('values' in value) || value['values'] === undefined) return false;
+ if (!('type' in value) || value['type'] === undefined) return false;
+ return true;
+}
+
+export function ColumnProfileDetailOneOfFromJSON(json: any): ColumnProfileDetailOneOf {
+ return ColumnProfileDetailOneOfFromJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOfFromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnProfileDetailOneOf {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'values': ((json['values'] as Array).map(CategoryValueInfoFromJSON)),
+ 'type': json['type'],
+ };
+}
+
+export function ColumnProfileDetailOneOfToJSON(json: any): ColumnProfileDetailOneOf {
+ return ColumnProfileDetailOneOfToJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOfToJSONTyped(value?: ColumnProfileDetailOneOf | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'values': ((value['values'] as Array).map(CategoryValueInfoToJSON)),
+ 'type': value['type'],
+ };
+}
+
diff --git a/src/models/ColumnProfileDetailOneOf1.ts b/src/models/ColumnProfileDetailOneOf1.ts
new file mode 100644
index 0000000..aeb25da
--- /dev/null
+++ b/src/models/ColumnProfileDetailOneOf1.ts
@@ -0,0 +1,103 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface ColumnProfileDetailOneOf1
+ */
+export interface ColumnProfileDetailOneOf1 {
+ /**
+ * Average string length
+ * @type {number}
+ * @memberof ColumnProfileDetailOneOf1
+ */
+ avgLength: number;
+ /**
+ * Longest string length in the column
+ * @type {number}
+ * @memberof ColumnProfileDetailOneOf1
+ */
+ maxLength: number;
+ /**
+ * Shortest string length in the column
+ * @type {number}
+ * @memberof ColumnProfileDetailOneOf1
+ */
+ minLength: number;
+ /**
+ *
+ * @type {ColumnProfileDetailOneOf1TypeEnum}
+ * @memberof ColumnProfileDetailOneOf1
+ */
+ type: ColumnProfileDetailOneOf1TypeEnum;
+}
+
+
+/**
+ * @export
+ */
+export const ColumnProfileDetailOneOf1TypeEnum = {
+ Text: 'text'
+} as const;
+export type ColumnProfileDetailOneOf1TypeEnum = typeof ColumnProfileDetailOneOf1TypeEnum[keyof typeof ColumnProfileDetailOneOf1TypeEnum];
+
+
+/**
+ * Check if a given object implements the ColumnProfileDetailOneOf1 interface.
+ */
+export function instanceOfColumnProfileDetailOneOf1(value: object): value is ColumnProfileDetailOneOf1 {
+ if (!('avgLength' in value) || value['avgLength'] === undefined) return false;
+ if (!('maxLength' in value) || value['maxLength'] === undefined) return false;
+ if (!('minLength' in value) || value['minLength'] === undefined) return false;
+ if (!('type' in value) || value['type'] === undefined) return false;
+ return true;
+}
+
+export function ColumnProfileDetailOneOf1FromJSON(json: any): ColumnProfileDetailOneOf1 {
+ return ColumnProfileDetailOneOf1FromJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf1FromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnProfileDetailOneOf1 {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'avgLength': json['avg_length'],
+ 'maxLength': json['max_length'],
+ 'minLength': json['min_length'],
+ 'type': json['type'],
+ };
+}
+
+export function ColumnProfileDetailOneOf1ToJSON(json: any): ColumnProfileDetailOneOf1 {
+ return ColumnProfileDetailOneOf1ToJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf1ToJSONTyped(value?: ColumnProfileDetailOneOf1 | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'avg_length': value['avgLength'],
+ 'max_length': value['maxLength'],
+ 'min_length': value['minLength'],
+ 'type': value['type'],
+ };
+}
+
diff --git a/src/models/ColumnProfileDetailOneOf2.ts b/src/models/ColumnProfileDetailOneOf2.ts
new file mode 100644
index 0000000..7b20414
--- /dev/null
+++ b/src/models/ColumnProfileDetailOneOf2.ts
@@ -0,0 +1,103 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface ColumnProfileDetailOneOf2
+ */
+export interface ColumnProfileDetailOneOf2 {
+ /**
+ * Maximum value (string to preserve precision for large integers and decimals)
+ * @type {string}
+ * @memberof ColumnProfileDetailOneOf2
+ */
+ max: string;
+ /**
+ * Arithmetic mean
+ * @type {number}
+ * @memberof ColumnProfileDetailOneOf2
+ */
+ mean: number;
+ /**
+ * Minimum value (string to preserve precision for large integers and decimals)
+ * @type {string}
+ * @memberof ColumnProfileDetailOneOf2
+ */
+ min: string;
+ /**
+ *
+ * @type {ColumnProfileDetailOneOf2TypeEnum}
+ * @memberof ColumnProfileDetailOneOf2
+ */
+ type: ColumnProfileDetailOneOf2TypeEnum;
+}
+
+
+/**
+ * @export
+ */
+export const ColumnProfileDetailOneOf2TypeEnum = {
+ Numeric: 'numeric'
+} as const;
+export type ColumnProfileDetailOneOf2TypeEnum = typeof ColumnProfileDetailOneOf2TypeEnum[keyof typeof ColumnProfileDetailOneOf2TypeEnum];
+
+
+/**
+ * Check if a given object implements the ColumnProfileDetailOneOf2 interface.
+ */
+export function instanceOfColumnProfileDetailOneOf2(value: object): value is ColumnProfileDetailOneOf2 {
+ if (!('max' in value) || value['max'] === undefined) return false;
+ if (!('mean' in value) || value['mean'] === undefined) return false;
+ if (!('min' in value) || value['min'] === undefined) return false;
+ if (!('type' in value) || value['type'] === undefined) return false;
+ return true;
+}
+
+export function ColumnProfileDetailOneOf2FromJSON(json: any): ColumnProfileDetailOneOf2 {
+ return ColumnProfileDetailOneOf2FromJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf2FromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnProfileDetailOneOf2 {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'max': json['max'],
+ 'mean': json['mean'],
+ 'min': json['min'],
+ 'type': json['type'],
+ };
+}
+
+export function ColumnProfileDetailOneOf2ToJSON(json: any): ColumnProfileDetailOneOf2 {
+ return ColumnProfileDetailOneOf2ToJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf2ToJSONTyped(value?: ColumnProfileDetailOneOf2 | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'max': value['max'],
+ 'mean': value['mean'],
+ 'min': value['min'],
+ 'type': value['type'],
+ };
+}
+
diff --git a/src/models/ColumnProfileDetailOneOf3.ts b/src/models/ColumnProfileDetailOneOf3.ts
new file mode 100644
index 0000000..de503b1
--- /dev/null
+++ b/src/models/ColumnProfileDetailOneOf3.ts
@@ -0,0 +1,94 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface ColumnProfileDetailOneOf3
+ */
+export interface ColumnProfileDetailOneOf3 {
+ /**
+ * Latest value as ISO-8601 string
+ * @type {string}
+ * @memberof ColumnProfileDetailOneOf3
+ */
+ max: string;
+ /**
+ * Earliest value as ISO-8601 string
+ * @type {string}
+ * @memberof ColumnProfileDetailOneOf3
+ */
+ min: string;
+ /**
+ *
+ * @type {ColumnProfileDetailOneOf3TypeEnum}
+ * @memberof ColumnProfileDetailOneOf3
+ */
+ type: ColumnProfileDetailOneOf3TypeEnum;
+}
+
+
+/**
+ * @export
+ */
+export const ColumnProfileDetailOneOf3TypeEnum = {
+ Temporal: 'temporal'
+} as const;
+export type ColumnProfileDetailOneOf3TypeEnum = typeof ColumnProfileDetailOneOf3TypeEnum[keyof typeof ColumnProfileDetailOneOf3TypeEnum];
+
+
+/**
+ * Check if a given object implements the ColumnProfileDetailOneOf3 interface.
+ */
+export function instanceOfColumnProfileDetailOneOf3(value: object): value is ColumnProfileDetailOneOf3 {
+ if (!('max' in value) || value['max'] === undefined) return false;
+ if (!('min' in value) || value['min'] === undefined) return false;
+ if (!('type' in value) || value['type'] === undefined) return false;
+ return true;
+}
+
+export function ColumnProfileDetailOneOf3FromJSON(json: any): ColumnProfileDetailOneOf3 {
+ return ColumnProfileDetailOneOf3FromJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf3FromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnProfileDetailOneOf3 {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'max': json['max'],
+ 'min': json['min'],
+ 'type': json['type'],
+ };
+}
+
+export function ColumnProfileDetailOneOf3ToJSON(json: any): ColumnProfileDetailOneOf3 {
+ return ColumnProfileDetailOneOf3ToJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf3ToJSONTyped(value?: ColumnProfileDetailOneOf3 | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'max': value['max'],
+ 'min': value['min'],
+ 'type': value['type'],
+ };
+}
+
diff --git a/src/models/ColumnProfileDetailOneOf4.ts b/src/models/ColumnProfileDetailOneOf4.ts
new file mode 100644
index 0000000..8577780
--- /dev/null
+++ b/src/models/ColumnProfileDetailOneOf4.ts
@@ -0,0 +1,94 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface ColumnProfileDetailOneOf4
+ */
+export interface ColumnProfileDetailOneOf4 {
+ /**
+ * Number of false values
+ * @type {number}
+ * @memberof ColumnProfileDetailOneOf4
+ */
+ falseCount: number;
+ /**
+ * Number of true values
+ * @type {number}
+ * @memberof ColumnProfileDetailOneOf4
+ */
+ trueCount: number;
+ /**
+ *
+ * @type {ColumnProfileDetailOneOf4TypeEnum}
+ * @memberof ColumnProfileDetailOneOf4
+ */
+ type: ColumnProfileDetailOneOf4TypeEnum;
+}
+
+
+/**
+ * @export
+ */
+export const ColumnProfileDetailOneOf4TypeEnum = {
+ Boolean: 'boolean'
+} as const;
+export type ColumnProfileDetailOneOf4TypeEnum = typeof ColumnProfileDetailOneOf4TypeEnum[keyof typeof ColumnProfileDetailOneOf4TypeEnum];
+
+
+/**
+ * Check if a given object implements the ColumnProfileDetailOneOf4 interface.
+ */
+export function instanceOfColumnProfileDetailOneOf4(value: object): value is ColumnProfileDetailOneOf4 {
+ if (!('falseCount' in value) || value['falseCount'] === undefined) return false;
+ if (!('trueCount' in value) || value['trueCount'] === undefined) return false;
+ if (!('type' in value) || value['type'] === undefined) return false;
+ return true;
+}
+
+export function ColumnProfileDetailOneOf4FromJSON(json: any): ColumnProfileDetailOneOf4 {
+ return ColumnProfileDetailOneOf4FromJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf4FromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnProfileDetailOneOf4 {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'falseCount': json['false_count'],
+ 'trueCount': json['true_count'],
+ 'type': json['type'],
+ };
+}
+
+export function ColumnProfileDetailOneOf4ToJSON(json: any): ColumnProfileDetailOneOf4 {
+ return ColumnProfileDetailOneOf4ToJSONTyped(json, false);
+}
+
+export function ColumnProfileDetailOneOf4ToJSONTyped(value?: ColumnProfileDetailOneOf4 | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'false_count': value['falseCount'],
+ 'true_count': value['trueCount'],
+ 'type': value['type'],
+ };
+}
+
diff --git a/src/models/ColumnProfileInfo.ts b/src/models/ColumnProfileInfo.ts
new file mode 100644
index 0000000..cff9b38
--- /dev/null
+++ b/src/models/ColumnProfileInfo.ts
@@ -0,0 +1,118 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ColumnProfileDetail } from './ColumnProfileDetail';
+import {
+ ColumnProfileDetailFromJSON,
+ ColumnProfileDetailFromJSONTyped,
+ ColumnProfileDetailToJSON,
+ ColumnProfileDetailToJSONTyped,
+} from './ColumnProfileDetail';
+
+/**
+ * Statistics for a single column.
+ * @export
+ * @interface ColumnProfileInfo
+ */
+export interface ColumnProfileInfo {
+ /**
+ * Approximate number of distinct non-null values
+ * @type {number}
+ * @memberof ColumnProfileInfo
+ */
+ cardinality: number;
+ /**
+ * Arrow data type (e.g. "Utf8", "Int32", "Timestamp(Microsecond, Some(\"UTC\"))")
+ * @type {string}
+ * @memberof ColumnProfileInfo
+ */
+ dataType: string;
+ /**
+ * Column name
+ * @type {string}
+ * @memberof ColumnProfileInfo
+ */
+ name: string;
+ /**
+ * Number of null values
+ * @type {number}
+ * @memberof ColumnProfileInfo
+ */
+ nullCount: number;
+ /**
+ * Percentage of null values (0.0 to 100.0)
+ * @type {number}
+ * @memberof ColumnProfileInfo
+ */
+ nullPercentage: number;
+ /**
+ * Type-specific profile detail. Null when the column is all-null or has an unsupported type.
+ * @type {ColumnProfileDetail}
+ * @memberof ColumnProfileInfo
+ */
+ profile?: ColumnProfileDetail | null;
+}
+
+/**
+ * Check if a given object implements the ColumnProfileInfo interface.
+ */
+export function instanceOfColumnProfileInfo(value: object): value is ColumnProfileInfo {
+ if (!('cardinality' in value) || value['cardinality'] === undefined) return false;
+ if (!('dataType' in value) || value['dataType'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('nullCount' in value) || value['nullCount'] === undefined) return false;
+ if (!('nullPercentage' in value) || value['nullPercentage'] === undefined) return false;
+ return true;
+}
+
+export function ColumnProfileInfoFromJSON(json: any): ColumnProfileInfo {
+ return ColumnProfileInfoFromJSONTyped(json, false);
+}
+
+export function ColumnProfileInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnProfileInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'cardinality': json['cardinality'],
+ 'dataType': json['data_type'],
+ 'name': json['name'],
+ 'nullCount': json['null_count'],
+ 'nullPercentage': json['null_percentage'],
+ 'profile': json['profile'] == null ? undefined : ColumnProfileDetailFromJSON(json['profile']),
+ };
+}
+
+export function ColumnProfileInfoToJSON(json: any): ColumnProfileInfo {
+ return ColumnProfileInfoToJSONTyped(json, false);
+}
+
+export function ColumnProfileInfoToJSONTyped(value?: ColumnProfileInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'cardinality': value['cardinality'],
+ 'data_type': value['dataType'],
+ 'name': value['name'],
+ 'null_count': value['nullCount'],
+ 'null_percentage': value['nullPercentage'],
+ 'profile': ColumnProfileDetailToJSON(value['profile']),
+ };
+}
+
diff --git a/src/models/ColumnTypeSpec.ts b/src/models/ColumnTypeSpec.ts
new file mode 100644
index 0000000..9bb88d6
--- /dev/null
+++ b/src/models/ColumnTypeSpec.ts
@@ -0,0 +1,101 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Detailed column type specification with optional properties.
+ * @export
+ * @interface ColumnTypeSpec
+ */
+export interface ColumnTypeSpec {
+ /**
+ * Geometry type for GEOMETRY/GEOGRAPHY columns.
+ * E.g., "Point", "LineString", "Polygon", "MultiPoint", "MultiLineString",
+ * "MultiPolygon", "GeometryCollection", or "Geometry" (any).
+ * @type {string}
+ * @memberof ColumnTypeSpec
+ */
+ geometryType?: string | null;
+ /**
+ * Precision for DECIMAL type (1-38)
+ * @type {number}
+ * @memberof ColumnTypeSpec
+ */
+ precision?: number | null;
+ /**
+ * Scale for DECIMAL type
+ * @type {number}
+ * @memberof ColumnTypeSpec
+ */
+ scale?: number | null;
+ /**
+ * Spatial Reference System Identifier for GEOMETRY/GEOGRAPHY types.
+ * Common values: 4326 (WGS84), 3857 (Web Mercator).
+ * @type {number}
+ * @memberof ColumnTypeSpec
+ */
+ srid?: number | null;
+ /**
+ * The data type name (e.g., "DECIMAL", "TIMESTAMP", "GEOMETRY")
+ * @type {string}
+ * @memberof ColumnTypeSpec
+ */
+ type: string;
+}
+
+/**
+ * Check if a given object implements the ColumnTypeSpec interface.
+ */
+export function instanceOfColumnTypeSpec(value: object): value is ColumnTypeSpec {
+ if (!('type' in value) || value['type'] === undefined) return false;
+ return true;
+}
+
+export function ColumnTypeSpecFromJSON(json: any): ColumnTypeSpec {
+ return ColumnTypeSpecFromJSONTyped(json, false);
+}
+
+export function ColumnTypeSpecFromJSONTyped(json: any, ignoreDiscriminator: boolean): ColumnTypeSpec {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'geometryType': json['geometry_type'] == null ? undefined : json['geometry_type'],
+ 'precision': json['precision'] == null ? undefined : json['precision'],
+ 'scale': json['scale'] == null ? undefined : json['scale'],
+ 'srid': json['srid'] == null ? undefined : json['srid'],
+ 'type': json['type'],
+ };
+}
+
+export function ColumnTypeSpecToJSON(json: any): ColumnTypeSpec {
+ return ColumnTypeSpecToJSONTyped(json, false);
+}
+
+export function ColumnTypeSpecToJSONTyped(value?: ColumnTypeSpec | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'geometry_type': value['geometryType'],
+ 'precision': value['precision'],
+ 'scale': value['scale'],
+ 'srid': value['srid'],
+ 'type': value['type'],
+ };
+}
+
diff --git a/src/models/ConnectionHealthResponse.ts b/src/models/ConnectionHealthResponse.ts
new file mode 100644
index 0000000..ddab68c
--- /dev/null
+++ b/src/models/ConnectionHealthResponse.ts
@@ -0,0 +1,92 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for GET /connections/{connection_id}/health
+ * @export
+ * @interface ConnectionHealthResponse
+ */
+export interface ConnectionHealthResponse {
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionHealthResponse
+ */
+ connectionId: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionHealthResponse
+ */
+ error?: string | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof ConnectionHealthResponse
+ */
+ healthy: boolean;
+ /**
+ *
+ * @type {number}
+ * @memberof ConnectionHealthResponse
+ */
+ latencyMs: number;
+}
+
+/**
+ * Check if a given object implements the ConnectionHealthResponse interface.
+ */
+export function instanceOfConnectionHealthResponse(value: object): value is ConnectionHealthResponse {
+ if (!('connectionId' in value) || value['connectionId'] === undefined) return false;
+ if (!('healthy' in value) || value['healthy'] === undefined) return false;
+ if (!('latencyMs' in value) || value['latencyMs'] === undefined) return false;
+ return true;
+}
+
+export function ConnectionHealthResponseFromJSON(json: any): ConnectionHealthResponse {
+ return ConnectionHealthResponseFromJSONTyped(json, false);
+}
+
+export function ConnectionHealthResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionHealthResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connectionId': json['connection_id'],
+ 'error': json['error'] == null ? undefined : json['error'],
+ 'healthy': json['healthy'],
+ 'latencyMs': json['latency_ms'],
+ };
+}
+
+export function ConnectionHealthResponseToJSON(json: any): ConnectionHealthResponse {
+ return ConnectionHealthResponseToJSONTyped(json, false);
+}
+
+export function ConnectionHealthResponseToJSONTyped(value?: ConnectionHealthResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connection_id': value['connectionId'],
+ 'error': value['error'],
+ 'healthy': value['healthy'],
+ 'latency_ms': value['latencyMs'],
+ };
+}
+
diff --git a/src/models/ConnectionInfo.ts b/src/models/ConnectionInfo.ts
new file mode 100644
index 0000000..a53cf03
--- /dev/null
+++ b/src/models/ConnectionInfo.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Single connection metadata for API responses
+ * @export
+ * @interface ConnectionInfo
+ */
+export interface ConnectionInfo {
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionInfo
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionInfo
+ */
+ name: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionInfo
+ */
+ sourceType: string;
+}
+
+/**
+ * Check if a given object implements the ConnectionInfo interface.
+ */
+export function instanceOfConnectionInfo(value: object): value is ConnectionInfo {
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('sourceType' in value) || value['sourceType'] === undefined) return false;
+ return true;
+}
+
+export function ConnectionInfoFromJSON(json: any): ConnectionInfo {
+ return ConnectionInfoFromJSONTyped(json, false);
+}
+
+export function ConnectionInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'id': json['id'],
+ 'name': json['name'],
+ 'sourceType': json['source_type'],
+ };
+}
+
+export function ConnectionInfoToJSON(json: any): ConnectionInfo {
+ return ConnectionInfoToJSONTyped(json, false);
+}
+
+export function ConnectionInfoToJSONTyped(value?: ConnectionInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'id': value['id'],
+ 'name': value['name'],
+ 'source_type': value['sourceType'],
+ };
+}
+
diff --git a/src/models/ConnectionRefreshResult.ts b/src/models/ConnectionRefreshResult.ts
new file mode 100644
index 0000000..ebed55e
--- /dev/null
+++ b/src/models/ConnectionRefreshResult.ts
@@ -0,0 +1,134 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { TableRefreshError } from './TableRefreshError';
+import {
+ TableRefreshErrorFromJSON,
+ TableRefreshErrorFromJSONTyped,
+ TableRefreshErrorToJSON,
+ TableRefreshErrorToJSONTyped,
+} from './TableRefreshError';
+import type { RefreshWarning } from './RefreshWarning';
+import {
+ RefreshWarningFromJSON,
+ RefreshWarningFromJSONTyped,
+ RefreshWarningToJSON,
+ RefreshWarningToJSONTyped,
+} from './RefreshWarning';
+
+/**
+ * Response for connection-wide data refresh
+ * @export
+ * @interface ConnectionRefreshResult
+ */
+export interface ConnectionRefreshResult {
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionRefreshResult
+ */
+ connectionId: string;
+ /**
+ *
+ * @type {number}
+ * @memberof ConnectionRefreshResult
+ */
+ durationMs: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof ConnectionRefreshResult
+ */
+ errors: Array;
+ /**
+ *
+ * @type {number}
+ * @memberof ConnectionRefreshResult
+ */
+ tablesFailed: number;
+ /**
+ *
+ * @type {number}
+ * @memberof ConnectionRefreshResult
+ */
+ tablesRefreshed: number;
+ /**
+ *
+ * @type {number}
+ * @memberof ConnectionRefreshResult
+ */
+ totalRows: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof ConnectionRefreshResult
+ */
+ warnings?: Array;
+}
+
+/**
+ * Check if a given object implements the ConnectionRefreshResult interface.
+ */
+export function instanceOfConnectionRefreshResult(value: object): value is ConnectionRefreshResult {
+ if (!('connectionId' in value) || value['connectionId'] === undefined) return false;
+ if (!('durationMs' in value) || value['durationMs'] === undefined) return false;
+ if (!('errors' in value) || value['errors'] === undefined) return false;
+ if (!('tablesFailed' in value) || value['tablesFailed'] === undefined) return false;
+ if (!('tablesRefreshed' in value) || value['tablesRefreshed'] === undefined) return false;
+ if (!('totalRows' in value) || value['totalRows'] === undefined) return false;
+ return true;
+}
+
+export function ConnectionRefreshResultFromJSON(json: any): ConnectionRefreshResult {
+ return ConnectionRefreshResultFromJSONTyped(json, false);
+}
+
+export function ConnectionRefreshResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionRefreshResult {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connectionId': json['connection_id'],
+ 'durationMs': json['duration_ms'],
+ 'errors': ((json['errors'] as Array).map(TableRefreshErrorFromJSON)),
+ 'tablesFailed': json['tables_failed'],
+ 'tablesRefreshed': json['tables_refreshed'],
+ 'totalRows': json['total_rows'],
+ 'warnings': json['warnings'] == null ? undefined : ((json['warnings'] as Array).map(RefreshWarningFromJSON)),
+ };
+}
+
+export function ConnectionRefreshResultToJSON(json: any): ConnectionRefreshResult {
+ return ConnectionRefreshResultToJSONTyped(json, false);
+}
+
+export function ConnectionRefreshResultToJSONTyped(value?: ConnectionRefreshResult | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connection_id': value['connectionId'],
+ 'duration_ms': value['durationMs'],
+ 'errors': ((value['errors'] as Array).map(TableRefreshErrorToJSON)),
+ 'tables_failed': value['tablesFailed'],
+ 'tables_refreshed': value['tablesRefreshed'],
+ 'total_rows': value['totalRows'],
+ 'warnings': value['warnings'] == null ? undefined : ((value['warnings'] as Array).map(RefreshWarningToJSON)),
+ };
+}
+
diff --git a/src/models/ConnectionSchemaError.ts b/src/models/ConnectionSchemaError.ts
new file mode 100644
index 0000000..f107e29
--- /dev/null
+++ b/src/models/ConnectionSchemaError.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Error details for a failed connection schema refresh
+ * @export
+ * @interface ConnectionSchemaError
+ */
+export interface ConnectionSchemaError {
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionSchemaError
+ */
+ connectionId: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionSchemaError
+ */
+ error: string;
+}
+
+/**
+ * Check if a given object implements the ConnectionSchemaError interface.
+ */
+export function instanceOfConnectionSchemaError(value: object): value is ConnectionSchemaError {
+ if (!('connectionId' in value) || value['connectionId'] === undefined) return false;
+ if (!('error' in value) || value['error'] === undefined) return false;
+ return true;
+}
+
+export function ConnectionSchemaErrorFromJSON(json: any): ConnectionSchemaError {
+ return ConnectionSchemaErrorFromJSONTyped(json, false);
+}
+
+export function ConnectionSchemaErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionSchemaError {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connectionId': json['connection_id'],
+ 'error': json['error'],
+ };
+}
+
+export function ConnectionSchemaErrorToJSON(json: any): ConnectionSchemaError {
+ return ConnectionSchemaErrorToJSONTyped(json, false);
+}
+
+export function ConnectionSchemaErrorToJSONTyped(value?: ConnectionSchemaError | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connection_id': value['connectionId'],
+ 'error': value['error'],
+ };
+}
+
diff --git a/src/models/ConnectionTypeDetail.ts b/src/models/ConnectionTypeDetail.ts
new file mode 100644
index 0000000..a784367
--- /dev/null
+++ b/src/models/ConnectionTypeDetail.ts
@@ -0,0 +1,91 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface ConnectionTypeDetail
+ */
+export interface ConnectionTypeDetail {
+ /**
+ *
+ * @type {any}
+ * @memberof ConnectionTypeDetail
+ */
+ auth?: any | null;
+ /**
+ *
+ * @type {any}
+ * @memberof ConnectionTypeDetail
+ */
+ configSchema?: any | null;
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionTypeDetail
+ */
+ label: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionTypeDetail
+ */
+ name: string;
+}
+
+/**
+ * Check if a given object implements the ConnectionTypeDetail interface.
+ */
+export function instanceOfConnectionTypeDetail(value: object): value is ConnectionTypeDetail {
+ if (!('label' in value) || value['label'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ return true;
+}
+
+export function ConnectionTypeDetailFromJSON(json: any): ConnectionTypeDetail {
+ return ConnectionTypeDetailFromJSONTyped(json, false);
+}
+
+export function ConnectionTypeDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionTypeDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'auth': json['auth'] == null ? undefined : json['auth'],
+ 'configSchema': json['config_schema'] == null ? undefined : json['config_schema'],
+ 'label': json['label'],
+ 'name': json['name'],
+ };
+}
+
+export function ConnectionTypeDetailToJSON(json: any): ConnectionTypeDetail {
+ return ConnectionTypeDetailToJSONTyped(json, false);
+}
+
+export function ConnectionTypeDetailToJSONTyped(value?: ConnectionTypeDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'auth': value['auth'],
+ 'config_schema': value['configSchema'],
+ 'label': value['label'],
+ 'name': value['name'],
+ };
+}
+
diff --git a/src/models/ConnectionTypeSummary.ts b/src/models/ConnectionTypeSummary.ts
new file mode 100644
index 0000000..cae0a56
--- /dev/null
+++ b/src/models/ConnectionTypeSummary.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface ConnectionTypeSummary
+ */
+export interface ConnectionTypeSummary {
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionTypeSummary
+ */
+ label: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ConnectionTypeSummary
+ */
+ name: string;
+}
+
+/**
+ * Check if a given object implements the ConnectionTypeSummary interface.
+ */
+export function instanceOfConnectionTypeSummary(value: object): value is ConnectionTypeSummary {
+ if (!('label' in value) || value['label'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ return true;
+}
+
+export function ConnectionTypeSummaryFromJSON(json: any): ConnectionTypeSummary {
+ return ConnectionTypeSummaryFromJSONTyped(json, false);
+}
+
+export function ConnectionTypeSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectionTypeSummary {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'label': json['label'],
+ 'name': json['name'],
+ };
+}
+
+export function ConnectionTypeSummaryToJSON(json: any): ConnectionTypeSummary {
+ return ConnectionTypeSummaryToJSONTyped(json, false);
+}
+
+export function ConnectionTypeSummaryToJSONTyped(value?: ConnectionTypeSummary | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'label': value['label'],
+ 'name': value['name'],
+ };
+}
+
diff --git a/src/models/CreateConnectionRequest.ts b/src/models/CreateConnectionRequest.ts
new file mode 100644
index 0000000..3461285
--- /dev/null
+++ b/src/models/CreateConnectionRequest.ts
@@ -0,0 +1,104 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for POST /connections
+ * @export
+ * @interface CreateConnectionRequest
+ */
+export interface CreateConnectionRequest {
+ /**
+ * Connection configuration object. Fields vary by source type (host, port, database, etc.).
+ * @type {{ [key: string]: any; }}
+ * @memberof CreateConnectionRequest
+ */
+ config: { [key: string]: any; };
+ /**
+ *
+ * @type {string}
+ * @memberof CreateConnectionRequest
+ */
+ name: string;
+ /**
+ * Optional reference to a secret by ID (e.g., "secr_abc123").
+ * If provided, this secret will be used for authentication.
+ * Mutually exclusive with `secret_name`.
+ * @type {string}
+ * @memberof CreateConnectionRequest
+ */
+ secretId?: string | null;
+ /**
+ * Optional reference to a secret by name.
+ * If provided, this secret will be used for authentication.
+ * Mutually exclusive with `secret_id`.
+ * @type {string}
+ * @memberof CreateConnectionRequest
+ */
+ secretName?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateConnectionRequest
+ */
+ sourceType: string;
+}
+
+/**
+ * Check if a given object implements the CreateConnectionRequest interface.
+ */
+export function instanceOfCreateConnectionRequest(value: object): value is CreateConnectionRequest {
+ if (!('config' in value) || value['config'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('sourceType' in value) || value['sourceType'] === undefined) return false;
+ return true;
+}
+
+export function CreateConnectionRequestFromJSON(json: any): CreateConnectionRequest {
+ return CreateConnectionRequestFromJSONTyped(json, false);
+}
+
+export function CreateConnectionRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateConnectionRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'config': json['config'],
+ 'name': json['name'],
+ 'secretId': json['secret_id'] == null ? undefined : json['secret_id'],
+ 'secretName': json['secret_name'] == null ? undefined : json['secret_name'],
+ 'sourceType': json['source_type'],
+ };
+}
+
+export function CreateConnectionRequestToJSON(json: any): CreateConnectionRequest {
+ return CreateConnectionRequestToJSONTyped(json, false);
+}
+
+export function CreateConnectionRequestToJSONTyped(value?: CreateConnectionRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'config': value['config'],
+ 'name': value['name'],
+ 'secret_id': value['secretId'],
+ 'secret_name': value['secretName'],
+ 'source_type': value['sourceType'],
+ };
+}
+
diff --git a/src/models/CreateConnectionResponse.ts b/src/models/CreateConnectionResponse.ts
new file mode 100644
index 0000000..5617787
--- /dev/null
+++ b/src/models/CreateConnectionResponse.ts
@@ -0,0 +1,120 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { DiscoveryStatus } from './DiscoveryStatus';
+import {
+ DiscoveryStatusFromJSON,
+ DiscoveryStatusFromJSONTyped,
+ DiscoveryStatusToJSON,
+ DiscoveryStatusToJSONTyped,
+} from './DiscoveryStatus';
+
+/**
+ * Response body for POST /connections
+ * @export
+ * @interface CreateConnectionResponse
+ */
+export interface CreateConnectionResponse {
+ /**
+ *
+ * @type {string}
+ * @memberof CreateConnectionResponse
+ */
+ discoveryError?: string | null;
+ /**
+ *
+ * @type {DiscoveryStatus}
+ * @memberof CreateConnectionResponse
+ */
+ discoveryStatus: DiscoveryStatus;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateConnectionResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateConnectionResponse
+ */
+ name: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateConnectionResponse
+ */
+ sourceType: string;
+ /**
+ *
+ * @type {number}
+ * @memberof CreateConnectionResponse
+ */
+ tablesDiscovered: number;
+}
+
+
+
+/**
+ * Check if a given object implements the CreateConnectionResponse interface.
+ */
+export function instanceOfCreateConnectionResponse(value: object): value is CreateConnectionResponse {
+ if (!('discoveryStatus' in value) || value['discoveryStatus'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('sourceType' in value) || value['sourceType'] === undefined) return false;
+ if (!('tablesDiscovered' in value) || value['tablesDiscovered'] === undefined) return false;
+ return true;
+}
+
+export function CreateConnectionResponseFromJSON(json: any): CreateConnectionResponse {
+ return CreateConnectionResponseFromJSONTyped(json, false);
+}
+
+export function CreateConnectionResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateConnectionResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'discoveryError': json['discovery_error'] == null ? undefined : json['discovery_error'],
+ 'discoveryStatus': DiscoveryStatusFromJSON(json['discovery_status']),
+ 'id': json['id'],
+ 'name': json['name'],
+ 'sourceType': json['source_type'],
+ 'tablesDiscovered': json['tables_discovered'],
+ };
+}
+
+export function CreateConnectionResponseToJSON(json: any): CreateConnectionResponse {
+ return CreateConnectionResponseToJSONTyped(json, false);
+}
+
+export function CreateConnectionResponseToJSONTyped(value?: CreateConnectionResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'discovery_error': value['discoveryError'],
+ 'discovery_status': DiscoveryStatusToJSON(value['discoveryStatus']),
+ 'id': value['id'],
+ 'name': value['name'],
+ 'source_type': value['sourceType'],
+ 'tables_discovered': value['tablesDiscovered'],
+ };
+}
+
diff --git a/src/models/CreateDatasetRequest.ts b/src/models/CreateDatasetRequest.ts
new file mode 100644
index 0000000..2e3cbe2
--- /dev/null
+++ b/src/models/CreateDatasetRequest.ts
@@ -0,0 +1,91 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { DatasetSource } from './DatasetSource';
+import {
+ DatasetSourceFromJSON,
+ DatasetSourceFromJSONTyped,
+ DatasetSourceToJSON,
+ DatasetSourceToJSONTyped,
+} from './DatasetSource';
+
+/**
+ * Request body for POST /v1/datasets
+ * @export
+ * @interface CreateDatasetRequest
+ */
+export interface CreateDatasetRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof CreateDatasetRequest
+ */
+ label: string;
+ /**
+ *
+ * @type {DatasetSource}
+ * @memberof CreateDatasetRequest
+ */
+ source: DatasetSource;
+ /**
+ * Optional table_name - if not provided, derived from label
+ * @type {string}
+ * @memberof CreateDatasetRequest
+ */
+ tableName?: string | null;
+}
+
+/**
+ * Check if a given object implements the CreateDatasetRequest interface.
+ */
+export function instanceOfCreateDatasetRequest(value: object): value is CreateDatasetRequest {
+ if (!('label' in value) || value['label'] === undefined) return false;
+ if (!('source' in value) || value['source'] === undefined) return false;
+ return true;
+}
+
+export function CreateDatasetRequestFromJSON(json: any): CreateDatasetRequest {
+ return CreateDatasetRequestFromJSONTyped(json, false);
+}
+
+export function CreateDatasetRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateDatasetRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'label': json['label'],
+ 'source': DatasetSourceFromJSON(json['source']),
+ 'tableName': json['table_name'] == null ? undefined : json['table_name'],
+ };
+}
+
+export function CreateDatasetRequestToJSON(json: any): CreateDatasetRequest {
+ return CreateDatasetRequestToJSONTyped(json, false);
+}
+
+export function CreateDatasetRequestToJSONTyped(value?: CreateDatasetRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'label': value['label'],
+ 'source': DatasetSourceToJSON(value['source']),
+ 'table_name': value['tableName'],
+ };
+}
+
diff --git a/src/models/CreateDatasetResponse.ts b/src/models/CreateDatasetResponse.ts
new file mode 100644
index 0000000..c327a10
--- /dev/null
+++ b/src/models/CreateDatasetResponse.ts
@@ -0,0 +1,102 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for POST /v1/datasets
+ * @export
+ * @interface CreateDatasetResponse
+ */
+export interface CreateDatasetResponse {
+ /**
+ *
+ * @type {Date}
+ * @memberof CreateDatasetResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateDatasetResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateDatasetResponse
+ */
+ label: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateDatasetResponse
+ */
+ status: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateDatasetResponse
+ */
+ tableName: string;
+}
+
+/**
+ * Check if a given object implements the CreateDatasetResponse interface.
+ */
+export function instanceOfCreateDatasetResponse(value: object): value is CreateDatasetResponse {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('label' in value) || value['label'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ if (!('tableName' in value) || value['tableName'] === undefined) return false;
+ return true;
+}
+
+export function CreateDatasetResponseFromJSON(json: any): CreateDatasetResponse {
+ return CreateDatasetResponseFromJSONTyped(json, false);
+}
+
+export function CreateDatasetResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateDatasetResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'label': json['label'],
+ 'status': json['status'],
+ 'tableName': json['table_name'],
+ };
+}
+
+export function CreateDatasetResponseToJSON(json: any): CreateDatasetResponse {
+ return CreateDatasetResponseToJSONTyped(json, false);
+}
+
+export function CreateDatasetResponseToJSONTyped(value?: CreateDatasetResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'label': value['label'],
+ 'status': value['status'],
+ 'table_name': value['tableName'],
+ };
+}
+
diff --git a/src/models/CreateIndexRequest.ts b/src/models/CreateIndexRequest.ts
new file mode 100644
index 0000000..dbd8200
--- /dev/null
+++ b/src/models/CreateIndexRequest.ts
@@ -0,0 +1,107 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for POST .../indexes
+ * @export
+ * @interface CreateIndexRequest
+ */
+export interface CreateIndexRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof CreateIndexRequest
+ */
+ indexName: string;
+ /**
+ * Index type: "sorted" (default), "bm25", or "vector"
+ * @type {string}
+ * @memberof CreateIndexRequest
+ */
+ indexType?: string;
+ /**
+ * Distance metric for vector indexes: "l2" (default), "cosine", or "dot".
+ * Only relevant when index_type = "vector".
+ * @type {string}
+ * @memberof CreateIndexRequest
+ */
+ metric?: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof CreateIndexRequest
+ */
+ sortColumns?: Array | null;
+ /**
+ * Text columns for BM25 indexes
+ * @type {Array}
+ * @memberof CreateIndexRequest
+ */
+ textColumns?: Array | null;
+ /**
+ * Vector column for vector indexes (exactly one entry required)
+ * @type {Array}
+ * @memberof CreateIndexRequest
+ */
+ vectorColumns?: Array | null;
+}
+
+/**
+ * Check if a given object implements the CreateIndexRequest interface.
+ */
+export function instanceOfCreateIndexRequest(value: object): value is CreateIndexRequest {
+ if (!('indexName' in value) || value['indexName'] === undefined) return false;
+ return true;
+}
+
+export function CreateIndexRequestFromJSON(json: any): CreateIndexRequest {
+ return CreateIndexRequestFromJSONTyped(json, false);
+}
+
+export function CreateIndexRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateIndexRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'indexName': json['index_name'],
+ 'indexType': json['index_type'] == null ? undefined : json['index_type'],
+ 'metric': json['metric'] == null ? undefined : json['metric'],
+ 'sortColumns': json['sort_columns'] == null ? undefined : json['sort_columns'],
+ 'textColumns': json['text_columns'] == null ? undefined : json['text_columns'],
+ 'vectorColumns': json['vector_columns'] == null ? undefined : json['vector_columns'],
+ };
+}
+
+export function CreateIndexRequestToJSON(json: any): CreateIndexRequest {
+ return CreateIndexRequestToJSONTyped(json, false);
+}
+
+export function CreateIndexRequestToJSONTyped(value?: CreateIndexRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'index_name': value['indexName'],
+ 'index_type': value['indexType'],
+ 'metric': value['metric'],
+ 'sort_columns': value['sortColumns'],
+ 'text_columns': value['textColumns'],
+ 'vector_columns': value['vectorColumns'],
+ };
+}
+
diff --git a/src/models/CreateSavedQueryRequest.ts b/src/models/CreateSavedQueryRequest.ts
new file mode 100644
index 0000000..5533455
--- /dev/null
+++ b/src/models/CreateSavedQueryRequest.ts
@@ -0,0 +1,91 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for POST /v1/queries
+ * @export
+ * @interface CreateSavedQueryRequest
+ */
+export interface CreateSavedQueryRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof CreateSavedQueryRequest
+ */
+ description?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateSavedQueryRequest
+ */
+ name: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateSavedQueryRequest
+ */
+ sql: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof CreateSavedQueryRequest
+ */
+ tags?: Array | null;
+}
+
+/**
+ * Check if a given object implements the CreateSavedQueryRequest interface.
+ */
+export function instanceOfCreateSavedQueryRequest(value: object): value is CreateSavedQueryRequest {
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('sql' in value) || value['sql'] === undefined) return false;
+ return true;
+}
+
+export function CreateSavedQueryRequestFromJSON(json: any): CreateSavedQueryRequest {
+ return CreateSavedQueryRequestFromJSONTyped(json, false);
+}
+
+export function CreateSavedQueryRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateSavedQueryRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'description': json['description'] == null ? undefined : json['description'],
+ 'name': json['name'],
+ 'sql': json['sql'],
+ 'tags': json['tags'] == null ? undefined : json['tags'],
+ };
+}
+
+export function CreateSavedQueryRequestToJSON(json: any): CreateSavedQueryRequest {
+ return CreateSavedQueryRequestToJSONTyped(json, false);
+}
+
+export function CreateSavedQueryRequestToJSONTyped(value?: CreateSavedQueryRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'description': value['description'],
+ 'name': value['name'],
+ 'sql': value['sql'],
+ 'tags': value['tags'],
+ };
+}
+
diff --git a/src/models/CreateSecretRequest.ts b/src/models/CreateSecretRequest.ts
new file mode 100644
index 0000000..6ea2b7e
--- /dev/null
+++ b/src/models/CreateSecretRequest.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for POST /secrets
+ * @export
+ * @interface CreateSecretRequest
+ */
+export interface CreateSecretRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof CreateSecretRequest
+ */
+ name: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateSecretRequest
+ */
+ value: string;
+}
+
+/**
+ * Check if a given object implements the CreateSecretRequest interface.
+ */
+export function instanceOfCreateSecretRequest(value: object): value is CreateSecretRequest {
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('value' in value) || value['value'] === undefined) return false;
+ return true;
+}
+
+export function CreateSecretRequestFromJSON(json: any): CreateSecretRequest {
+ return CreateSecretRequestFromJSONTyped(json, false);
+}
+
+export function CreateSecretRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateSecretRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'name': json['name'],
+ 'value': json['value'],
+ };
+}
+
+export function CreateSecretRequestToJSON(json: any): CreateSecretRequest {
+ return CreateSecretRequestToJSONTyped(json, false);
+}
+
+export function CreateSecretRequestToJSONTyped(value?: CreateSecretRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'name': value['name'],
+ 'value': value['value'],
+ };
+}
+
diff --git a/src/models/CreateSecretResponse.ts b/src/models/CreateSecretResponse.ts
new file mode 100644
index 0000000..d17fa84
--- /dev/null
+++ b/src/models/CreateSecretResponse.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for POST /secrets
+ * @export
+ * @interface CreateSecretResponse
+ */
+export interface CreateSecretResponse {
+ /**
+ *
+ * @type {Date}
+ * @memberof CreateSecretResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateSecretResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof CreateSecretResponse
+ */
+ name: string;
+}
+
+/**
+ * Check if a given object implements the CreateSecretResponse interface.
+ */
+export function instanceOfCreateSecretResponse(value: object): value is CreateSecretResponse {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ return true;
+}
+
+export function CreateSecretResponseFromJSON(json: any): CreateSecretResponse {
+ return CreateSecretResponseFromJSONTyped(json, false);
+}
+
+export function CreateSecretResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateSecretResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'name': json['name'],
+ };
+}
+
+export function CreateSecretResponseToJSON(json: any): CreateSecretResponse {
+ return CreateSecretResponseToJSONTyped(json, false);
+}
+
+export function CreateSecretResponseToJSONTyped(value?: CreateSecretResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'name': value['name'],
+ };
+}
+
diff --git a/src/models/CreateWorkspaceRequest.ts b/src/models/CreateWorkspaceRequest.ts
new file mode 100644
index 0000000..9ea5911
--- /dev/null
+++ b/src/models/CreateWorkspaceRequest.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface CreateWorkspaceRequest
+ */
+export interface CreateWorkspaceRequest {
+ /**
+ * Name for the new workspace.
+ * @type {string}
+ * @memberof CreateWorkspaceRequest
+ */
+ name: string;
+ /**
+ * Target organization. Defaults to the user's current organization.
+ * @type {string}
+ * @memberof CreateWorkspaceRequest
+ */
+ organizationPublicId?: string;
+}
+
+/**
+ * Check if a given object implements the CreateWorkspaceRequest interface.
+ */
+export function instanceOfCreateWorkspaceRequest(value: object): value is CreateWorkspaceRequest {
+ if (!('name' in value) || value['name'] === undefined) return false;
+ return true;
+}
+
+export function CreateWorkspaceRequestFromJSON(json: any): CreateWorkspaceRequest {
+ return CreateWorkspaceRequestFromJSONTyped(json, false);
+}
+
+export function CreateWorkspaceRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateWorkspaceRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'name': json['name'],
+ 'organizationPublicId': json['organization_public_id'] == null ? undefined : json['organization_public_id'],
+ };
+}
+
+export function CreateWorkspaceRequestToJSON(json: any): CreateWorkspaceRequest {
+ return CreateWorkspaceRequestToJSONTyped(json, false);
+}
+
+export function CreateWorkspaceRequestToJSONTyped(value?: CreateWorkspaceRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'name': value['name'],
+ 'organization_public_id': value['organizationPublicId'],
+ };
+}
+
diff --git a/src/models/CreateWorkspaceResponse.ts b/src/models/CreateWorkspaceResponse.ts
new file mode 100644
index 0000000..548494d
--- /dev/null
+++ b/src/models/CreateWorkspaceResponse.ts
@@ -0,0 +1,83 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { WorkspaceDetail } from './WorkspaceDetail';
+import {
+ WorkspaceDetailFromJSON,
+ WorkspaceDetailFromJSONTyped,
+ WorkspaceDetailToJSON,
+ WorkspaceDetailToJSONTyped,
+} from './WorkspaceDetail';
+
+/**
+ *
+ * @export
+ * @interface CreateWorkspaceResponse
+ */
+export interface CreateWorkspaceResponse {
+ /**
+ *
+ * @type {boolean}
+ * @memberof CreateWorkspaceResponse
+ */
+ ok: boolean;
+ /**
+ *
+ * @type {WorkspaceDetail}
+ * @memberof CreateWorkspaceResponse
+ */
+ workspace: WorkspaceDetail;
+}
+
+/**
+ * Check if a given object implements the CreateWorkspaceResponse interface.
+ */
+export function instanceOfCreateWorkspaceResponse(value: object): value is CreateWorkspaceResponse {
+ if (!('ok' in value) || value['ok'] === undefined) return false;
+ if (!('workspace' in value) || value['workspace'] === undefined) return false;
+ return true;
+}
+
+export function CreateWorkspaceResponseFromJSON(json: any): CreateWorkspaceResponse {
+ return CreateWorkspaceResponseFromJSONTyped(json, false);
+}
+
+export function CreateWorkspaceResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateWorkspaceResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'ok': json['ok'],
+ 'workspace': WorkspaceDetailFromJSON(json['workspace']),
+ };
+}
+
+export function CreateWorkspaceResponseToJSON(json: any): CreateWorkspaceResponse {
+ return CreateWorkspaceResponseToJSONTyped(json, false);
+}
+
+export function CreateWorkspaceResponseToJSONTyped(value?: CreateWorkspaceResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'ok': value['ok'],
+ 'workspace': WorkspaceDetailToJSON(value['workspace']),
+ };
+}
+
diff --git a/src/models/DatasetSource.ts b/src/models/DatasetSource.ts
new file mode 100644
index 0000000..08515e3
--- /dev/null
+++ b/src/models/DatasetSource.ts
@@ -0,0 +1,115 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import type { InlineDatasetSource } from './InlineDatasetSource';
+import {
+ instanceOfInlineDatasetSource,
+ InlineDatasetSourceFromJSON,
+ InlineDatasetSourceFromJSONTyped,
+ InlineDatasetSourceToJSON,
+} from './InlineDatasetSource';
+import type { SavedQueryDatasetSource } from './SavedQueryDatasetSource';
+import {
+ instanceOfSavedQueryDatasetSource,
+ SavedQueryDatasetSourceFromJSON,
+ SavedQueryDatasetSourceFromJSONTyped,
+ SavedQueryDatasetSourceToJSON,
+} from './SavedQueryDatasetSource';
+import type { SqlQueryDatasetSource } from './SqlQueryDatasetSource';
+import {
+ instanceOfSqlQueryDatasetSource,
+ SqlQueryDatasetSourceFromJSON,
+ SqlQueryDatasetSourceFromJSONTyped,
+ SqlQueryDatasetSourceToJSON,
+} from './SqlQueryDatasetSource';
+import type { UploadDatasetSource } from './UploadDatasetSource';
+import {
+ instanceOfUploadDatasetSource,
+ UploadDatasetSourceFromJSON,
+ UploadDatasetSourceFromJSONTyped,
+ UploadDatasetSourceToJSON,
+} from './UploadDatasetSource';
+import type { UrlDatasetSource } from './UrlDatasetSource';
+import {
+ instanceOfUrlDatasetSource,
+ UrlDatasetSourceFromJSON,
+ UrlDatasetSourceFromJSONTyped,
+ UrlDatasetSourceToJSON,
+} from './UrlDatasetSource';
+
+/**
+ * @type DatasetSource
+ * Dataset source specification
+ * @export
+ */
+export type DatasetSource = InlineDatasetSource | SavedQueryDatasetSource | SqlQueryDatasetSource | UploadDatasetSource | UrlDatasetSource;
+
+export function DatasetSourceFromJSON(json: any): DatasetSource {
+ return DatasetSourceFromJSONTyped(json, false);
+}
+
+export function DatasetSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): DatasetSource {
+ if (json == null) {
+ return json;
+ }
+ if (typeof json !== 'object') {
+ return json;
+ }
+ if (instanceOfInlineDatasetSource(json)) {
+ return InlineDatasetSourceFromJSONTyped(json, true);
+ }
+ if (instanceOfSavedQueryDatasetSource(json)) {
+ return SavedQueryDatasetSourceFromJSONTyped(json, true);
+ }
+ if (instanceOfSqlQueryDatasetSource(json)) {
+ return SqlQueryDatasetSourceFromJSONTyped(json, true);
+ }
+ if (instanceOfUploadDatasetSource(json)) {
+ return UploadDatasetSourceFromJSONTyped(json, true);
+ }
+ if (instanceOfUrlDatasetSource(json)) {
+ return UrlDatasetSourceFromJSONTyped(json, true);
+ }
+ return {} as any;
+}
+
+export function DatasetSourceToJSON(json: any): any {
+ return DatasetSourceToJSONTyped(json, false);
+}
+
+export function DatasetSourceToJSONTyped(value?: DatasetSource | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+ if (typeof value !== 'object') {
+ return value;
+ }
+ if (instanceOfInlineDatasetSource(value)) {
+ return InlineDatasetSourceToJSON(value as InlineDatasetSource);
+ }
+ if (instanceOfSavedQueryDatasetSource(value)) {
+ return SavedQueryDatasetSourceToJSON(value as SavedQueryDatasetSource);
+ }
+ if (instanceOfSqlQueryDatasetSource(value)) {
+ return SqlQueryDatasetSourceToJSON(value as SqlQueryDatasetSource);
+ }
+ if (instanceOfUploadDatasetSource(value)) {
+ return UploadDatasetSourceToJSON(value as UploadDatasetSource);
+ }
+ if (instanceOfUrlDatasetSource(value)) {
+ return UrlDatasetSourceToJSON(value as UrlDatasetSource);
+ }
+ return {};
+}
+
diff --git a/src/models/DatasetSummary.ts b/src/models/DatasetSummary.ts
new file mode 100644
index 0000000..3a536a9
--- /dev/null
+++ b/src/models/DatasetSummary.ts
@@ -0,0 +1,119 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Dataset summary for listing
+ * @export
+ * @interface DatasetSummary
+ */
+export interface DatasetSummary {
+ /**
+ *
+ * @type {Date}
+ * @memberof DatasetSummary
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof DatasetSummary
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof DatasetSummary
+ */
+ label: string;
+ /**
+ *
+ * @type {number}
+ * @memberof DatasetSummary
+ */
+ latestVersion: number;
+ /**
+ *
+ * @type {number}
+ * @memberof DatasetSummary
+ */
+ pinnedVersion?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof DatasetSummary
+ */
+ tableName: string;
+ /**
+ *
+ * @type {Date}
+ * @memberof DatasetSummary
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the DatasetSummary interface.
+ */
+export function instanceOfDatasetSummary(value: object): value is DatasetSummary {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('label' in value) || value['label'] === undefined) return false;
+ if (!('latestVersion' in value) || value['latestVersion'] === undefined) return false;
+ if (!('tableName' in value) || value['tableName'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function DatasetSummaryFromJSON(json: any): DatasetSummary {
+ return DatasetSummaryFromJSONTyped(json, false);
+}
+
+export function DatasetSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): DatasetSummary {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'label': json['label'],
+ 'latestVersion': json['latest_version'],
+ 'pinnedVersion': json['pinned_version'] == null ? undefined : json['pinned_version'],
+ 'tableName': json['table_name'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function DatasetSummaryToJSON(json: any): DatasetSummary {
+ return DatasetSummaryToJSONTyped(json, false);
+}
+
+export function DatasetSummaryToJSONTyped(value?: DatasetSummary | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'label': value['label'],
+ 'latest_version': value['latestVersion'],
+ 'pinned_version': value['pinnedVersion'],
+ 'table_name': value['tableName'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/DatasetVersionSummary.ts b/src/models/DatasetVersionSummary.ts
new file mode 100644
index 0000000..40c6808
--- /dev/null
+++ b/src/models/DatasetVersionSummary.ts
@@ -0,0 +1,93 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Dataset version summary
+ * @export
+ * @interface DatasetVersionSummary
+ */
+export interface DatasetVersionSummary {
+ /**
+ *
+ * @type {Date}
+ * @memberof DatasetVersionSummary
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof DatasetVersionSummary
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof DatasetVersionSummary
+ */
+ sourceType: string;
+ /**
+ *
+ * @type {number}
+ * @memberof DatasetVersionSummary
+ */
+ version: number;
+}
+
+/**
+ * Check if a given object implements the DatasetVersionSummary interface.
+ */
+export function instanceOfDatasetVersionSummary(value: object): value is DatasetVersionSummary {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('sourceType' in value) || value['sourceType'] === undefined) return false;
+ if (!('version' in value) || value['version'] === undefined) return false;
+ return true;
+}
+
+export function DatasetVersionSummaryFromJSON(json: any): DatasetVersionSummary {
+ return DatasetVersionSummaryFromJSONTyped(json, false);
+}
+
+export function DatasetVersionSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): DatasetVersionSummary {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'sourceType': json['source_type'],
+ 'version': json['version'],
+ };
+}
+
+export function DatasetVersionSummaryToJSON(json: any): DatasetVersionSummary {
+ return DatasetVersionSummaryToJSONTyped(json, false);
+}
+
+export function DatasetVersionSummaryToJSONTyped(value?: DatasetVersionSummary | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'source_type': value['sourceType'],
+ 'version': value['version'],
+ };
+}
+
diff --git a/src/models/DiscoveryStatus.ts b/src/models/DiscoveryStatus.ts
new file mode 100644
index 0000000..0e9f4c1
--- /dev/null
+++ b/src/models/DiscoveryStatus.ts
@@ -0,0 +1,54 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+/**
+ * Discovery status for connection creation
+ * @export
+ */
+export const DiscoveryStatus = {
+ Success: 'success',
+ Skipped: 'skipped',
+ Failed: 'failed'
+} as const;
+export type DiscoveryStatus = typeof DiscoveryStatus[keyof typeof DiscoveryStatus];
+
+
+export function instanceOfDiscoveryStatus(value: any): boolean {
+ for (const key in DiscoveryStatus) {
+ if (Object.prototype.hasOwnProperty.call(DiscoveryStatus, key)) {
+ if (DiscoveryStatus[key as keyof typeof DiscoveryStatus] === value) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+export function DiscoveryStatusFromJSON(json: any): DiscoveryStatus {
+ return DiscoveryStatusFromJSONTyped(json, false);
+}
+
+export function DiscoveryStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): DiscoveryStatus {
+ return json as DiscoveryStatus;
+}
+
+export function DiscoveryStatusToJSON(value?: DiscoveryStatus | null): any {
+ return value as any;
+}
+
+export function DiscoveryStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): DiscoveryStatus {
+ return value as DiscoveryStatus;
+}
+
diff --git a/src/models/ExecuteSavedQueryRequest.ts b/src/models/ExecuteSavedQueryRequest.ts
new file mode 100644
index 0000000..869c52b
--- /dev/null
+++ b/src/models/ExecuteSavedQueryRequest.ts
@@ -0,0 +1,65 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for POST /v1/queries/{id}/execute
+ * @export
+ * @interface ExecuteSavedQueryRequest
+ */
+export interface ExecuteSavedQueryRequest {
+ /**
+ *
+ * @type {number}
+ * @memberof ExecuteSavedQueryRequest
+ */
+ version?: number | null;
+}
+
+/**
+ * Check if a given object implements the ExecuteSavedQueryRequest interface.
+ */
+export function instanceOfExecuteSavedQueryRequest(value: object): value is ExecuteSavedQueryRequest {
+ return true;
+}
+
+export function ExecuteSavedQueryRequestFromJSON(json: any): ExecuteSavedQueryRequest {
+ return ExecuteSavedQueryRequestFromJSONTyped(json, false);
+}
+
+export function ExecuteSavedQueryRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ExecuteSavedQueryRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'version': json['version'] == null ? undefined : json['version'],
+ };
+}
+
+export function ExecuteSavedQueryRequestToJSON(json: any): ExecuteSavedQueryRequest {
+ return ExecuteSavedQueryRequestToJSONTyped(json, false);
+}
+
+export function ExecuteSavedQueryRequestToJSONTyped(value?: ExecuteSavedQueryRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'version': value['version'],
+ };
+}
+
diff --git a/src/models/GetConnectionResponse.ts b/src/models/GetConnectionResponse.ts
new file mode 100644
index 0000000..e9d10b8
--- /dev/null
+++ b/src/models/GetConnectionResponse.ts
@@ -0,0 +1,102 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for GET /connections/{connection_id}
+ * @export
+ * @interface GetConnectionResponse
+ */
+export interface GetConnectionResponse {
+ /**
+ *
+ * @type {string}
+ * @memberof GetConnectionResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof GetConnectionResponse
+ */
+ name: string;
+ /**
+ *
+ * @type {string}
+ * @memberof GetConnectionResponse
+ */
+ sourceType: string;
+ /**
+ *
+ * @type {number}
+ * @memberof GetConnectionResponse
+ */
+ syncedTableCount: number;
+ /**
+ *
+ * @type {number}
+ * @memberof GetConnectionResponse
+ */
+ tableCount: number;
+}
+
+/**
+ * Check if a given object implements the GetConnectionResponse interface.
+ */
+export function instanceOfGetConnectionResponse(value: object): value is GetConnectionResponse {
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('sourceType' in value) || value['sourceType'] === undefined) return false;
+ if (!('syncedTableCount' in value) || value['syncedTableCount'] === undefined) return false;
+ if (!('tableCount' in value) || value['tableCount'] === undefined) return false;
+ return true;
+}
+
+export function GetConnectionResponseFromJSON(json: any): GetConnectionResponse {
+ return GetConnectionResponseFromJSONTyped(json, false);
+}
+
+export function GetConnectionResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetConnectionResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'id': json['id'],
+ 'name': json['name'],
+ 'sourceType': json['source_type'],
+ 'syncedTableCount': json['synced_table_count'],
+ 'tableCount': json['table_count'],
+ };
+}
+
+export function GetConnectionResponseToJSON(json: any): GetConnectionResponse {
+ return GetConnectionResponseToJSONTyped(json, false);
+}
+
+export function GetConnectionResponseToJSONTyped(value?: GetConnectionResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'id': value['id'],
+ 'name': value['name'],
+ 'source_type': value['sourceType'],
+ 'synced_table_count': value['syncedTableCount'],
+ 'table_count': value['tableCount'],
+ };
+}
+
diff --git a/src/models/GetDatasetResponse.ts b/src/models/GetDatasetResponse.ts
new file mode 100644
index 0000000..7e5c424
--- /dev/null
+++ b/src/models/GetDatasetResponse.ts
@@ -0,0 +1,154 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ColumnInfo } from './ColumnInfo';
+import {
+ ColumnInfoFromJSON,
+ ColumnInfoFromJSONTyped,
+ ColumnInfoToJSON,
+ ColumnInfoToJSONTyped,
+} from './ColumnInfo';
+
+/**
+ * Response body for GET /v1/datasets/{id}
+ * @export
+ * @interface GetDatasetResponse
+ */
+export interface GetDatasetResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof GetDatasetResponse
+ */
+ columns: Array;
+ /**
+ *
+ * @type {Date}
+ * @memberof GetDatasetResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof GetDatasetResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof GetDatasetResponse
+ */
+ label: string;
+ /**
+ *
+ * @type {number}
+ * @memberof GetDatasetResponse
+ */
+ latestVersion: number;
+ /**
+ *
+ * @type {number}
+ * @memberof GetDatasetResponse
+ */
+ pinnedVersion?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof GetDatasetResponse
+ */
+ schemaName: string;
+ /**
+ *
+ * @type {string}
+ * @memberof GetDatasetResponse
+ */
+ sourceType: string;
+ /**
+ *
+ * @type {string}
+ * @memberof GetDatasetResponse
+ */
+ tableName: string;
+ /**
+ *
+ * @type {Date}
+ * @memberof GetDatasetResponse
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the GetDatasetResponse interface.
+ */
+export function instanceOfGetDatasetResponse(value: object): value is GetDatasetResponse {
+ if (!('columns' in value) || value['columns'] === undefined) return false;
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('label' in value) || value['label'] === undefined) return false;
+ if (!('latestVersion' in value) || value['latestVersion'] === undefined) return false;
+ if (!('schemaName' in value) || value['schemaName'] === undefined) return false;
+ if (!('sourceType' in value) || value['sourceType'] === undefined) return false;
+ if (!('tableName' in value) || value['tableName'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function GetDatasetResponseFromJSON(json: any): GetDatasetResponse {
+ return GetDatasetResponseFromJSONTyped(json, false);
+}
+
+export function GetDatasetResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetDatasetResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': ((json['columns'] as Array).map(ColumnInfoFromJSON)),
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'label': json['label'],
+ 'latestVersion': json['latest_version'],
+ 'pinnedVersion': json['pinned_version'] == null ? undefined : json['pinned_version'],
+ 'schemaName': json['schema_name'],
+ 'sourceType': json['source_type'],
+ 'tableName': json['table_name'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function GetDatasetResponseToJSON(json: any): GetDatasetResponse {
+ return GetDatasetResponseToJSONTyped(json, false);
+}
+
+export function GetDatasetResponseToJSONTyped(value?: GetDatasetResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': ((value['columns'] as Array).map(ColumnInfoToJSON)),
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'label': value['label'],
+ 'latest_version': value['latestVersion'],
+ 'pinned_version': value['pinnedVersion'],
+ 'schema_name': value['schemaName'],
+ 'source_type': value['sourceType'],
+ 'table_name': value['tableName'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/GetResultResponse.ts b/src/models/GetResultResponse.ts
new file mode 100644
index 0000000..6c56f60
--- /dev/null
+++ b/src/models/GetResultResponse.ts
@@ -0,0 +1,116 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for GET /results/{id}
+ * Returns status and optionally the result data
+ * @export
+ * @interface GetResultResponse
+ */
+export interface GetResultResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof GetResultResponse
+ */
+ columns?: Array | null;
+ /**
+ *
+ * @type {string}
+ * @memberof GetResultResponse
+ */
+ errorMessage?: string | null;
+ /**
+ *
+ * @type {Array}
+ * @memberof GetResultResponse
+ */
+ nullable?: Array | null;
+ /**
+ *
+ * @type {string}
+ * @memberof GetResultResponse
+ */
+ resultId: string;
+ /**
+ *
+ * @type {number}
+ * @memberof GetResultResponse
+ */
+ rowCount?: number | null;
+ /**
+ * Array of rows, where each row is an array of column values.
+ * @type {Array>}
+ * @memberof GetResultResponse
+ */
+ rows?: Array> | null;
+ /**
+ *
+ * @type {string}
+ * @memberof GetResultResponse
+ */
+ status: string;
+}
+
+/**
+ * Check if a given object implements the GetResultResponse interface.
+ */
+export function instanceOfGetResultResponse(value: object): value is GetResultResponse {
+ if (!('resultId' in value) || value['resultId'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ return true;
+}
+
+export function GetResultResponseFromJSON(json: any): GetResultResponse {
+ return GetResultResponseFromJSONTyped(json, false);
+}
+
+export function GetResultResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetResultResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': json['columns'] == null ? undefined : json['columns'],
+ 'errorMessage': json['error_message'] == null ? undefined : json['error_message'],
+ 'nullable': json['nullable'] == null ? undefined : json['nullable'],
+ 'resultId': json['result_id'],
+ 'rowCount': json['row_count'] == null ? undefined : json['row_count'],
+ 'rows': json['rows'] == null ? undefined : json['rows'],
+ 'status': json['status'],
+ };
+}
+
+export function GetResultResponseToJSON(json: any): GetResultResponse {
+ return GetResultResponseToJSONTyped(json, false);
+}
+
+export function GetResultResponseToJSONTyped(value?: GetResultResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': value['columns'],
+ 'error_message': value['errorMessage'],
+ 'nullable': value['nullable'],
+ 'result_id': value['resultId'],
+ 'row_count': value['rowCount'],
+ 'rows': value['rows'],
+ 'status': value['status'],
+ };
+}
+
diff --git a/src/models/GetSecretResponse.ts b/src/models/GetSecretResponse.ts
new file mode 100644
index 0000000..6e40d00
--- /dev/null
+++ b/src/models/GetSecretResponse.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for GET /secrets/{name}
+ * @export
+ * @interface GetSecretResponse
+ */
+export interface GetSecretResponse {
+ /**
+ *
+ * @type {Date}
+ * @memberof GetSecretResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof GetSecretResponse
+ */
+ name: string;
+ /**
+ *
+ * @type {Date}
+ * @memberof GetSecretResponse
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the GetSecretResponse interface.
+ */
+export function instanceOfGetSecretResponse(value: object): value is GetSecretResponse {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function GetSecretResponseFromJSON(json: any): GetSecretResponse {
+ return GetSecretResponseFromJSONTyped(json, false);
+}
+
+export function GetSecretResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetSecretResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'name': json['name'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function GetSecretResponseToJSON(json: any): GetSecretResponse {
+ return GetSecretResponseToJSONTyped(json, false);
+}
+
+export function GetSecretResponseToJSONTyped(value?: GetSecretResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'name': value['name'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/IndexInfoResponse.ts b/src/models/IndexInfoResponse.ts
new file mode 100644
index 0000000..dd03fa7
--- /dev/null
+++ b/src/models/IndexInfoResponse.ts
@@ -0,0 +1,147 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { IndexStatus } from './IndexStatus';
+import {
+ IndexStatusFromJSON,
+ IndexStatusFromJSONTyped,
+ IndexStatusToJSON,
+ IndexStatusToJSONTyped,
+} from './IndexStatus';
+
+/**
+ * Response for index endpoints.
+ * @export
+ * @interface IndexInfoResponse
+ */
+export interface IndexInfoResponse {
+ /**
+ *
+ * @type {Date}
+ * @memberof IndexInfoResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof IndexInfoResponse
+ */
+ indexName: string;
+ /**
+ *
+ * @type {string}
+ * @memberof IndexInfoResponse
+ */
+ indexType: string;
+ /**
+ * Distance metric this index was built with. Only present for vector indexes.
+ * @type {string}
+ * @memberof IndexInfoResponse
+ */
+ metric?: string | null;
+ /**
+ *
+ * @type {Array}
+ * @memberof IndexInfoResponse
+ */
+ sortColumns: Array;
+ /**
+ *
+ * @type {IndexStatus}
+ * @memberof IndexInfoResponse
+ */
+ status: IndexStatus;
+ /**
+ *
+ * @type {Array}
+ * @memberof IndexInfoResponse
+ */
+ textColumns: Array;
+ /**
+ *
+ * @type {Date}
+ * @memberof IndexInfoResponse
+ */
+ updatedAt: Date;
+ /**
+ *
+ * @type {Array}
+ * @memberof IndexInfoResponse
+ */
+ vectorColumns: Array;
+}
+
+
+
+/**
+ * Check if a given object implements the IndexInfoResponse interface.
+ */
+export function instanceOfIndexInfoResponse(value: object): value is IndexInfoResponse {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('indexName' in value) || value['indexName'] === undefined) return false;
+ if (!('indexType' in value) || value['indexType'] === undefined) return false;
+ if (!('sortColumns' in value) || value['sortColumns'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ if (!('textColumns' in value) || value['textColumns'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ if (!('vectorColumns' in value) || value['vectorColumns'] === undefined) return false;
+ return true;
+}
+
+export function IndexInfoResponseFromJSON(json: any): IndexInfoResponse {
+ return IndexInfoResponseFromJSONTyped(json, false);
+}
+
+export function IndexInfoResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): IndexInfoResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'indexName': json['index_name'],
+ 'indexType': json['index_type'],
+ 'metric': json['metric'] == null ? undefined : json['metric'],
+ 'sortColumns': json['sort_columns'],
+ 'status': IndexStatusFromJSON(json['status']),
+ 'textColumns': json['text_columns'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ 'vectorColumns': json['vector_columns'],
+ };
+}
+
+export function IndexInfoResponseToJSON(json: any): IndexInfoResponse {
+ return IndexInfoResponseToJSONTyped(json, false);
+}
+
+export function IndexInfoResponseToJSONTyped(value?: IndexInfoResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'index_name': value['indexName'],
+ 'index_type': value['indexType'],
+ 'metric': value['metric'],
+ 'sort_columns': value['sortColumns'],
+ 'status': IndexStatusToJSON(value['status']),
+ 'text_columns': value['textColumns'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ 'vector_columns': value['vectorColumns'],
+ };
+}
+
diff --git a/src/models/IndexStatus.ts b/src/models/IndexStatus.ts
new file mode 100644
index 0000000..0d9c0d0
--- /dev/null
+++ b/src/models/IndexStatus.ts
@@ -0,0 +1,53 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+/**
+ * Index build status exposed to API consumers.
+ * @export
+ */
+export const IndexStatus = {
+ Ready: 'ready',
+ Pending: 'pending'
+} as const;
+export type IndexStatus = typeof IndexStatus[keyof typeof IndexStatus];
+
+
+export function instanceOfIndexStatus(value: any): boolean {
+ for (const key in IndexStatus) {
+ if (Object.prototype.hasOwnProperty.call(IndexStatus, key)) {
+ if (IndexStatus[key as keyof typeof IndexStatus] === value) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+export function IndexStatusFromJSON(json: any): IndexStatus {
+ return IndexStatusFromJSONTyped(json, false);
+}
+
+export function IndexStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): IndexStatus {
+ return json as IndexStatus;
+}
+
+export function IndexStatusToJSON(value?: IndexStatus | null): any {
+ return value as any;
+}
+
+export function IndexStatusToJSONTyped(value: any, ignoreDiscriminator: boolean): IndexStatus {
+ return value as IndexStatus;
+}
+
diff --git a/src/models/InformationSchemaResponse.ts b/src/models/InformationSchemaResponse.ts
new file mode 100644
index 0000000..44e86b9
--- /dev/null
+++ b/src/models/InformationSchemaResponse.ts
@@ -0,0 +1,109 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { TableInfo } from './TableInfo';
+import {
+ TableInfoFromJSON,
+ TableInfoFromJSONTyped,
+ TableInfoToJSON,
+ TableInfoToJSONTyped,
+} from './TableInfo';
+
+/**
+ * Response body for GET /information_schema
+ * @export
+ * @interface InformationSchemaResponse
+ */
+export interface InformationSchemaResponse {
+ /**
+ *
+ * @type {number}
+ * @memberof InformationSchemaResponse
+ */
+ count: number;
+ /**
+ *
+ * @type {boolean}
+ * @memberof InformationSchemaResponse
+ */
+ hasMore: boolean;
+ /**
+ *
+ * @type {number}
+ * @memberof InformationSchemaResponse
+ */
+ limit: number;
+ /**
+ *
+ * @type {string}
+ * @memberof InformationSchemaResponse
+ */
+ nextCursor?: string | null;
+ /**
+ *
+ * @type {Array}
+ * @memberof InformationSchemaResponse
+ */
+ tables: Array;
+}
+
+/**
+ * Check if a given object implements the InformationSchemaResponse interface.
+ */
+export function instanceOfInformationSchemaResponse(value: object): value is InformationSchemaResponse {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ if (!('hasMore' in value) || value['hasMore'] === undefined) return false;
+ if (!('limit' in value) || value['limit'] === undefined) return false;
+ if (!('tables' in value) || value['tables'] === undefined) return false;
+ return true;
+}
+
+export function InformationSchemaResponseFromJSON(json: any): InformationSchemaResponse {
+ return InformationSchemaResponseFromJSONTyped(json, false);
+}
+
+export function InformationSchemaResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): InformationSchemaResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'hasMore': json['has_more'],
+ 'limit': json['limit'],
+ 'nextCursor': json['next_cursor'] == null ? undefined : json['next_cursor'],
+ 'tables': ((json['tables'] as Array).map(TableInfoFromJSON)),
+ };
+}
+
+export function InformationSchemaResponseToJSON(json: any): InformationSchemaResponse {
+ return InformationSchemaResponseToJSONTyped(json, false);
+}
+
+export function InformationSchemaResponseToJSONTyped(value?: InformationSchemaResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'has_more': value['hasMore'],
+ 'limit': value['limit'],
+ 'next_cursor': value['nextCursor'],
+ 'tables': ((value['tables'] as Array).map(TableInfoToJSON)),
+ };
+}
+
diff --git a/src/models/InlineData.ts b/src/models/InlineData.ts
new file mode 100644
index 0000000..967c4a7
--- /dev/null
+++ b/src/models/InlineData.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Inline data specification
+ * @export
+ * @interface InlineData
+ */
+export interface InlineData {
+ /**
+ * Optional explicit column definitions. Keys are column names, values are type specs.
+ * When provided, the schema is built from these definitions instead of being inferred.
+ * @type {{ [key: string]: string; }}
+ * @memberof InlineData
+ */
+ columns?: { [key: string]: string; };
+ /**
+ *
+ * @type {string}
+ * @memberof InlineData
+ */
+ content: string;
+ /**
+ *
+ * @type {string}
+ * @memberof InlineData
+ */
+ format: string;
+}
+
+/**
+ * Check if a given object implements the InlineData interface.
+ */
+export function instanceOfInlineData(value: object): value is InlineData {
+ if (!('content' in value) || value['content'] === undefined) return false;
+ if (!('format' in value) || value['format'] === undefined) return false;
+ return true;
+}
+
+export function InlineDataFromJSON(json: any): InlineData {
+ return InlineDataFromJSONTyped(json, false);
+}
+
+export function InlineDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): InlineData {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': json['columns'] == null ? undefined : json['columns'],
+ 'content': json['content'],
+ 'format': json['format'],
+ };
+}
+
+export function InlineDataToJSON(json: any): InlineData {
+ return InlineDataToJSONTyped(json, false);
+}
+
+export function InlineDataToJSONTyped(value?: InlineData | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': value['columns'],
+ 'content': value['content'],
+ 'format': value['format'],
+ };
+}
+
diff --git a/src/models/InlineDatasetSource.ts b/src/models/InlineDatasetSource.ts
new file mode 100644
index 0000000..52bf8ba
--- /dev/null
+++ b/src/models/InlineDatasetSource.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { InlineData } from './InlineData';
+import {
+ InlineDataFromJSON,
+ InlineDataFromJSONTyped,
+ InlineDataToJSON,
+ InlineDataToJSONTyped,
+} from './InlineData';
+
+/**
+ * Create dataset from inline data (small payloads)
+ * @export
+ * @interface InlineDatasetSource
+ */
+export interface InlineDatasetSource {
+ /**
+ *
+ * @type {InlineData}
+ * @memberof InlineDatasetSource
+ */
+ inline: InlineData;
+}
+
+/**
+ * Check if a given object implements the InlineDatasetSource interface.
+ */
+export function instanceOfInlineDatasetSource(value: object): value is InlineDatasetSource {
+ if (!('inline' in value) || value['inline'] === undefined) return false;
+ return true;
+}
+
+export function InlineDatasetSourceFromJSON(json: any): InlineDatasetSource {
+ return InlineDatasetSourceFromJSONTyped(json, false);
+}
+
+export function InlineDatasetSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): InlineDatasetSource {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'inline': InlineDataFromJSON(json['inline']),
+ };
+}
+
+export function InlineDatasetSourceToJSON(json: any): InlineDatasetSource {
+ return InlineDatasetSourceToJSONTyped(json, false);
+}
+
+export function InlineDatasetSourceToJSONTyped(value?: InlineDatasetSource | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'inline': InlineDataToJSON(value['inline']),
+ };
+}
+
diff --git a/src/models/ListConnectionTypesResponse.ts b/src/models/ListConnectionTypesResponse.ts
new file mode 100644
index 0000000..65509fb
--- /dev/null
+++ b/src/models/ListConnectionTypesResponse.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ConnectionTypeSummary } from './ConnectionTypeSummary';
+import {
+ ConnectionTypeSummaryFromJSON,
+ ConnectionTypeSummaryFromJSONTyped,
+ ConnectionTypeSummaryToJSON,
+ ConnectionTypeSummaryToJSONTyped,
+} from './ConnectionTypeSummary';
+
+/**
+ *
+ * @export
+ * @interface ListConnectionTypesResponse
+ */
+export interface ListConnectionTypesResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof ListConnectionTypesResponse
+ */
+ connectionTypes: Array;
+}
+
+/**
+ * Check if a given object implements the ListConnectionTypesResponse interface.
+ */
+export function instanceOfListConnectionTypesResponse(value: object): value is ListConnectionTypesResponse {
+ if (!('connectionTypes' in value) || value['connectionTypes'] === undefined) return false;
+ return true;
+}
+
+export function ListConnectionTypesResponseFromJSON(json: any): ListConnectionTypesResponse {
+ return ListConnectionTypesResponseFromJSONTyped(json, false);
+}
+
+export function ListConnectionTypesResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListConnectionTypesResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connectionTypes': ((json['connection_types'] as Array).map(ConnectionTypeSummaryFromJSON)),
+ };
+}
+
+export function ListConnectionTypesResponseToJSON(json: any): ListConnectionTypesResponse {
+ return ListConnectionTypesResponseToJSONTyped(json, false);
+}
+
+export function ListConnectionTypesResponseToJSONTyped(value?: ListConnectionTypesResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connection_types': ((value['connectionTypes'] as Array).map(ConnectionTypeSummaryToJSON)),
+ };
+}
+
diff --git a/src/models/ListConnectionsResponse.ts b/src/models/ListConnectionsResponse.ts
new file mode 100644
index 0000000..70e4045
--- /dev/null
+++ b/src/models/ListConnectionsResponse.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ConnectionInfo } from './ConnectionInfo';
+import {
+ ConnectionInfoFromJSON,
+ ConnectionInfoFromJSONTyped,
+ ConnectionInfoToJSON,
+ ConnectionInfoToJSONTyped,
+} from './ConnectionInfo';
+
+/**
+ * Response body for GET /connections
+ * @export
+ * @interface ListConnectionsResponse
+ */
+export interface ListConnectionsResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof ListConnectionsResponse
+ */
+ connections: Array;
+}
+
+/**
+ * Check if a given object implements the ListConnectionsResponse interface.
+ */
+export function instanceOfListConnectionsResponse(value: object): value is ListConnectionsResponse {
+ if (!('connections' in value) || value['connections'] === undefined) return false;
+ return true;
+}
+
+export function ListConnectionsResponseFromJSON(json: any): ListConnectionsResponse {
+ return ListConnectionsResponseFromJSONTyped(json, false);
+}
+
+export function ListConnectionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListConnectionsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connections': ((json['connections'] as Array).map(ConnectionInfoFromJSON)),
+ };
+}
+
+export function ListConnectionsResponseToJSON(json: any): ListConnectionsResponse {
+ return ListConnectionsResponseToJSONTyped(json, false);
+}
+
+export function ListConnectionsResponseToJSONTyped(value?: ListConnectionsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connections': ((value['connections'] as Array).map(ConnectionInfoToJSON)),
+ };
+}
+
diff --git a/src/models/ListDatasetVersionsResponse.ts b/src/models/ListDatasetVersionsResponse.ts
new file mode 100644
index 0000000..8c2bdf4
--- /dev/null
+++ b/src/models/ListDatasetVersionsResponse.ts
@@ -0,0 +1,119 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { DatasetVersionSummary } from './DatasetVersionSummary';
+import {
+ DatasetVersionSummaryFromJSON,
+ DatasetVersionSummaryFromJSONTyped,
+ DatasetVersionSummaryToJSON,
+ DatasetVersionSummaryToJSONTyped,
+} from './DatasetVersionSummary';
+
+/**
+ * Response body for GET /v1/datasets/{id}/versions
+ * @export
+ * @interface ListDatasetVersionsResponse
+ */
+export interface ListDatasetVersionsResponse {
+ /**
+ *
+ * @type {number}
+ * @memberof ListDatasetVersionsResponse
+ */
+ count: number;
+ /**
+ *
+ * @type {string}
+ * @memberof ListDatasetVersionsResponse
+ */
+ datasetId: string;
+ /**
+ *
+ * @type {boolean}
+ * @memberof ListDatasetVersionsResponse
+ */
+ hasMore: boolean;
+ /**
+ *
+ * @type {number}
+ * @memberof ListDatasetVersionsResponse
+ */
+ limit: number;
+ /**
+ *
+ * @type {number}
+ * @memberof ListDatasetVersionsResponse
+ */
+ offset: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof ListDatasetVersionsResponse
+ */
+ versions: Array;
+}
+
+/**
+ * Check if a given object implements the ListDatasetVersionsResponse interface.
+ */
+export function instanceOfListDatasetVersionsResponse(value: object): value is ListDatasetVersionsResponse {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ if (!('datasetId' in value) || value['datasetId'] === undefined) return false;
+ if (!('hasMore' in value) || value['hasMore'] === undefined) return false;
+ if (!('limit' in value) || value['limit'] === undefined) return false;
+ if (!('offset' in value) || value['offset'] === undefined) return false;
+ if (!('versions' in value) || value['versions'] === undefined) return false;
+ return true;
+}
+
+export function ListDatasetVersionsResponseFromJSON(json: any): ListDatasetVersionsResponse {
+ return ListDatasetVersionsResponseFromJSONTyped(json, false);
+}
+
+export function ListDatasetVersionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListDatasetVersionsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'datasetId': json['dataset_id'],
+ 'hasMore': json['has_more'],
+ 'limit': json['limit'],
+ 'offset': json['offset'],
+ 'versions': ((json['versions'] as Array).map(DatasetVersionSummaryFromJSON)),
+ };
+}
+
+export function ListDatasetVersionsResponseToJSON(json: any): ListDatasetVersionsResponse {
+ return ListDatasetVersionsResponseToJSONTyped(json, false);
+}
+
+export function ListDatasetVersionsResponseToJSONTyped(value?: ListDatasetVersionsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'dataset_id': value['datasetId'],
+ 'has_more': value['hasMore'],
+ 'limit': value['limit'],
+ 'offset': value['offset'],
+ 'versions': ((value['versions'] as Array).map(DatasetVersionSummaryToJSON)),
+ };
+}
+
diff --git a/src/models/ListDatasetsResponse.ts b/src/models/ListDatasetsResponse.ts
new file mode 100644
index 0000000..8617a8d
--- /dev/null
+++ b/src/models/ListDatasetsResponse.ts
@@ -0,0 +1,110 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { DatasetSummary } from './DatasetSummary';
+import {
+ DatasetSummaryFromJSON,
+ DatasetSummaryFromJSONTyped,
+ DatasetSummaryToJSON,
+ DatasetSummaryToJSONTyped,
+} from './DatasetSummary';
+
+/**
+ * Response body for GET /v1/datasets
+ * @export
+ * @interface ListDatasetsResponse
+ */
+export interface ListDatasetsResponse {
+ /**
+ * Number of datasets returned in this response
+ * @type {number}
+ * @memberof ListDatasetsResponse
+ */
+ count: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof ListDatasetsResponse
+ */
+ datasets: Array;
+ /**
+ * Whether there are more datasets available after this page
+ * @type {boolean}
+ * @memberof ListDatasetsResponse
+ */
+ hasMore: boolean;
+ /**
+ * Limit used for this request
+ * @type {number}
+ * @memberof ListDatasetsResponse
+ */
+ limit: number;
+ /**
+ * Pagination offset used for this request
+ * @type {number}
+ * @memberof ListDatasetsResponse
+ */
+ offset: number;
+}
+
+/**
+ * Check if a given object implements the ListDatasetsResponse interface.
+ */
+export function instanceOfListDatasetsResponse(value: object): value is ListDatasetsResponse {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ if (!('datasets' in value) || value['datasets'] === undefined) return false;
+ if (!('hasMore' in value) || value['hasMore'] === undefined) return false;
+ if (!('limit' in value) || value['limit'] === undefined) return false;
+ if (!('offset' in value) || value['offset'] === undefined) return false;
+ return true;
+}
+
+export function ListDatasetsResponseFromJSON(json: any): ListDatasetsResponse {
+ return ListDatasetsResponseFromJSONTyped(json, false);
+}
+
+export function ListDatasetsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListDatasetsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'datasets': ((json['datasets'] as Array).map(DatasetSummaryFromJSON)),
+ 'hasMore': json['has_more'],
+ 'limit': json['limit'],
+ 'offset': json['offset'],
+ };
+}
+
+export function ListDatasetsResponseToJSON(json: any): ListDatasetsResponse {
+ return ListDatasetsResponseToJSONTyped(json, false);
+}
+
+export function ListDatasetsResponseToJSONTyped(value?: ListDatasetsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'datasets': ((value['datasets'] as Array).map(DatasetSummaryToJSON)),
+ 'has_more': value['hasMore'],
+ 'limit': value['limit'],
+ 'offset': value['offset'],
+ };
+}
+
diff --git a/src/models/ListIndexesResponse.ts b/src/models/ListIndexesResponse.ts
new file mode 100644
index 0000000..d4d9d5a
--- /dev/null
+++ b/src/models/ListIndexesResponse.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { IndexInfoResponse } from './IndexInfoResponse';
+import {
+ IndexInfoResponseFromJSON,
+ IndexInfoResponseFromJSONTyped,
+ IndexInfoResponseToJSON,
+ IndexInfoResponseToJSONTyped,
+} from './IndexInfoResponse';
+
+/**
+ * Response body for GET .../indexes
+ * @export
+ * @interface ListIndexesResponse
+ */
+export interface ListIndexesResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof ListIndexesResponse
+ */
+ indexes: Array;
+}
+
+/**
+ * Check if a given object implements the ListIndexesResponse interface.
+ */
+export function instanceOfListIndexesResponse(value: object): value is ListIndexesResponse {
+ if (!('indexes' in value) || value['indexes'] === undefined) return false;
+ return true;
+}
+
+export function ListIndexesResponseFromJSON(json: any): ListIndexesResponse {
+ return ListIndexesResponseFromJSONTyped(json, false);
+}
+
+export function ListIndexesResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListIndexesResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'indexes': ((json['indexes'] as Array).map(IndexInfoResponseFromJSON)),
+ };
+}
+
+export function ListIndexesResponseToJSON(json: any): ListIndexesResponse {
+ return ListIndexesResponseToJSONTyped(json, false);
+}
+
+export function ListIndexesResponseToJSONTyped(value?: ListIndexesResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'indexes': ((value['indexes'] as Array).map(IndexInfoResponseToJSON)),
+ };
+}
+
diff --git a/src/models/ListQueryRunsResponse.ts b/src/models/ListQueryRunsResponse.ts
new file mode 100644
index 0000000..f82b702
--- /dev/null
+++ b/src/models/ListQueryRunsResponse.ts
@@ -0,0 +1,109 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { QueryRunInfo } from './QueryRunInfo';
+import {
+ QueryRunInfoFromJSON,
+ QueryRunInfoFromJSONTyped,
+ QueryRunInfoToJSON,
+ QueryRunInfoToJSONTyped,
+} from './QueryRunInfo';
+
+/**
+ * Response body for GET /query-runs
+ * @export
+ * @interface ListQueryRunsResponse
+ */
+export interface ListQueryRunsResponse {
+ /**
+ *
+ * @type {number}
+ * @memberof ListQueryRunsResponse
+ */
+ count: number;
+ /**
+ *
+ * @type {boolean}
+ * @memberof ListQueryRunsResponse
+ */
+ hasMore: boolean;
+ /**
+ *
+ * @type {number}
+ * @memberof ListQueryRunsResponse
+ */
+ limit: number;
+ /**
+ *
+ * @type {string}
+ * @memberof ListQueryRunsResponse
+ */
+ nextCursor?: string | null;
+ /**
+ *
+ * @type {Array}
+ * @memberof ListQueryRunsResponse
+ */
+ queryRuns: Array;
+}
+
+/**
+ * Check if a given object implements the ListQueryRunsResponse interface.
+ */
+export function instanceOfListQueryRunsResponse(value: object): value is ListQueryRunsResponse {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ if (!('hasMore' in value) || value['hasMore'] === undefined) return false;
+ if (!('limit' in value) || value['limit'] === undefined) return false;
+ if (!('queryRuns' in value) || value['queryRuns'] === undefined) return false;
+ return true;
+}
+
+export function ListQueryRunsResponseFromJSON(json: any): ListQueryRunsResponse {
+ return ListQueryRunsResponseFromJSONTyped(json, false);
+}
+
+export function ListQueryRunsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListQueryRunsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'hasMore': json['has_more'],
+ 'limit': json['limit'],
+ 'nextCursor': json['next_cursor'] == null ? undefined : json['next_cursor'],
+ 'queryRuns': ((json['query_runs'] as Array).map(QueryRunInfoFromJSON)),
+ };
+}
+
+export function ListQueryRunsResponseToJSON(json: any): ListQueryRunsResponse {
+ return ListQueryRunsResponseToJSONTyped(json, false);
+}
+
+export function ListQueryRunsResponseToJSONTyped(value?: ListQueryRunsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'has_more': value['hasMore'],
+ 'limit': value['limit'],
+ 'next_cursor': value['nextCursor'],
+ 'query_runs': ((value['queryRuns'] as Array).map(QueryRunInfoToJSON)),
+ };
+}
+
diff --git a/src/models/ListResultsResponse.ts b/src/models/ListResultsResponse.ts
new file mode 100644
index 0000000..793a8ec
--- /dev/null
+++ b/src/models/ListResultsResponse.ts
@@ -0,0 +1,110 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ResultInfo } from './ResultInfo';
+import {
+ ResultInfoFromJSON,
+ ResultInfoFromJSONTyped,
+ ResultInfoToJSON,
+ ResultInfoToJSONTyped,
+} from './ResultInfo';
+
+/**
+ * Response body for GET /results
+ * @export
+ * @interface ListResultsResponse
+ */
+export interface ListResultsResponse {
+ /**
+ * Number of results returned in this response
+ * @type {number}
+ * @memberof ListResultsResponse
+ */
+ count: number;
+ /**
+ * Whether there are more results available after this page
+ * @type {boolean}
+ * @memberof ListResultsResponse
+ */
+ hasMore: boolean;
+ /**
+ * Limit used for this request
+ * @type {number}
+ * @memberof ListResultsResponse
+ */
+ limit: number;
+ /**
+ * Pagination offset used for this request
+ * @type {number}
+ * @memberof ListResultsResponse
+ */
+ offset: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof ListResultsResponse
+ */
+ results: Array;
+}
+
+/**
+ * Check if a given object implements the ListResultsResponse interface.
+ */
+export function instanceOfListResultsResponse(value: object): value is ListResultsResponse {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ if (!('hasMore' in value) || value['hasMore'] === undefined) return false;
+ if (!('limit' in value) || value['limit'] === undefined) return false;
+ if (!('offset' in value) || value['offset'] === undefined) return false;
+ if (!('results' in value) || value['results'] === undefined) return false;
+ return true;
+}
+
+export function ListResultsResponseFromJSON(json: any): ListResultsResponse {
+ return ListResultsResponseFromJSONTyped(json, false);
+}
+
+export function ListResultsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListResultsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'hasMore': json['has_more'],
+ 'limit': json['limit'],
+ 'offset': json['offset'],
+ 'results': ((json['results'] as Array).map(ResultInfoFromJSON)),
+ };
+}
+
+export function ListResultsResponseToJSON(json: any): ListResultsResponse {
+ return ListResultsResponseToJSONTyped(json, false);
+}
+
+export function ListResultsResponseToJSONTyped(value?: ListResultsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'has_more': value['hasMore'],
+ 'limit': value['limit'],
+ 'offset': value['offset'],
+ 'results': ((value['results'] as Array).map(ResultInfoToJSON)),
+ };
+}
+
diff --git a/src/models/ListSavedQueriesResponse.ts b/src/models/ListSavedQueriesResponse.ts
new file mode 100644
index 0000000..24cb852
--- /dev/null
+++ b/src/models/ListSavedQueriesResponse.ts
@@ -0,0 +1,110 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { SavedQuerySummary } from './SavedQuerySummary';
+import {
+ SavedQuerySummaryFromJSON,
+ SavedQuerySummaryFromJSONTyped,
+ SavedQuerySummaryToJSON,
+ SavedQuerySummaryToJSONTyped,
+} from './SavedQuerySummary';
+
+/**
+ * Response body for GET /v1/queries
+ * @export
+ * @interface ListSavedQueriesResponse
+ */
+export interface ListSavedQueriesResponse {
+ /**
+ *
+ * @type {number}
+ * @memberof ListSavedQueriesResponse
+ */
+ count: number;
+ /**
+ *
+ * @type {boolean}
+ * @memberof ListSavedQueriesResponse
+ */
+ hasMore: boolean;
+ /**
+ *
+ * @type {number}
+ * @memberof ListSavedQueriesResponse
+ */
+ limit: number;
+ /**
+ *
+ * @type {number}
+ * @memberof ListSavedQueriesResponse
+ */
+ offset: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof ListSavedQueriesResponse
+ */
+ queries: Array;
+}
+
+/**
+ * Check if a given object implements the ListSavedQueriesResponse interface.
+ */
+export function instanceOfListSavedQueriesResponse(value: object): value is ListSavedQueriesResponse {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ if (!('hasMore' in value) || value['hasMore'] === undefined) return false;
+ if (!('limit' in value) || value['limit'] === undefined) return false;
+ if (!('offset' in value) || value['offset'] === undefined) return false;
+ if (!('queries' in value) || value['queries'] === undefined) return false;
+ return true;
+}
+
+export function ListSavedQueriesResponseFromJSON(json: any): ListSavedQueriesResponse {
+ return ListSavedQueriesResponseFromJSONTyped(json, false);
+}
+
+export function ListSavedQueriesResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListSavedQueriesResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'hasMore': json['has_more'],
+ 'limit': json['limit'],
+ 'offset': json['offset'],
+ 'queries': ((json['queries'] as Array).map(SavedQuerySummaryFromJSON)),
+ };
+}
+
+export function ListSavedQueriesResponseToJSON(json: any): ListSavedQueriesResponse {
+ return ListSavedQueriesResponseToJSONTyped(json, false);
+}
+
+export function ListSavedQueriesResponseToJSONTyped(value?: ListSavedQueriesResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'has_more': value['hasMore'],
+ 'limit': value['limit'],
+ 'offset': value['offset'],
+ 'queries': ((value['queries'] as Array).map(SavedQuerySummaryToJSON)),
+ };
+}
+
diff --git a/src/models/ListSavedQueryVersionsResponse.ts b/src/models/ListSavedQueryVersionsResponse.ts
new file mode 100644
index 0000000..c263266
--- /dev/null
+++ b/src/models/ListSavedQueryVersionsResponse.ts
@@ -0,0 +1,119 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { SavedQueryVersionInfo } from './SavedQueryVersionInfo';
+import {
+ SavedQueryVersionInfoFromJSON,
+ SavedQueryVersionInfoFromJSONTyped,
+ SavedQueryVersionInfoToJSON,
+ SavedQueryVersionInfoToJSONTyped,
+} from './SavedQueryVersionInfo';
+
+/**
+ * Response body for GET /v1/queries/{id}/versions
+ * @export
+ * @interface ListSavedQueryVersionsResponse
+ */
+export interface ListSavedQueryVersionsResponse {
+ /**
+ *
+ * @type {number}
+ * @memberof ListSavedQueryVersionsResponse
+ */
+ count: number;
+ /**
+ *
+ * @type {boolean}
+ * @memberof ListSavedQueryVersionsResponse
+ */
+ hasMore: boolean;
+ /**
+ *
+ * @type {number}
+ * @memberof ListSavedQueryVersionsResponse
+ */
+ limit: number;
+ /**
+ *
+ * @type {number}
+ * @memberof ListSavedQueryVersionsResponse
+ */
+ offset: number;
+ /**
+ *
+ * @type {string}
+ * @memberof ListSavedQueryVersionsResponse
+ */
+ savedQueryId: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof ListSavedQueryVersionsResponse
+ */
+ versions: Array;
+}
+
+/**
+ * Check if a given object implements the ListSavedQueryVersionsResponse interface.
+ */
+export function instanceOfListSavedQueryVersionsResponse(value: object): value is ListSavedQueryVersionsResponse {
+ if (!('count' in value) || value['count'] === undefined) return false;
+ if (!('hasMore' in value) || value['hasMore'] === undefined) return false;
+ if (!('limit' in value) || value['limit'] === undefined) return false;
+ if (!('offset' in value) || value['offset'] === undefined) return false;
+ if (!('savedQueryId' in value) || value['savedQueryId'] === undefined) return false;
+ if (!('versions' in value) || value['versions'] === undefined) return false;
+ return true;
+}
+
+export function ListSavedQueryVersionsResponseFromJSON(json: any): ListSavedQueryVersionsResponse {
+ return ListSavedQueryVersionsResponseFromJSONTyped(json, false);
+}
+
+export function ListSavedQueryVersionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListSavedQueryVersionsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'count': json['count'],
+ 'hasMore': json['has_more'],
+ 'limit': json['limit'],
+ 'offset': json['offset'],
+ 'savedQueryId': json['saved_query_id'],
+ 'versions': ((json['versions'] as Array).map(SavedQueryVersionInfoFromJSON)),
+ };
+}
+
+export function ListSavedQueryVersionsResponseToJSON(json: any): ListSavedQueryVersionsResponse {
+ return ListSavedQueryVersionsResponseToJSONTyped(json, false);
+}
+
+export function ListSavedQueryVersionsResponseToJSONTyped(value?: ListSavedQueryVersionsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'count': value['count'],
+ 'has_more': value['hasMore'],
+ 'limit': value['limit'],
+ 'offset': value['offset'],
+ 'saved_query_id': value['savedQueryId'],
+ 'versions': ((value['versions'] as Array).map(SavedQueryVersionInfoToJSON)),
+ };
+}
+
diff --git a/src/models/ListSecretsResponse.ts b/src/models/ListSecretsResponse.ts
new file mode 100644
index 0000000..a2ca46a
--- /dev/null
+++ b/src/models/ListSecretsResponse.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { SecretMetadataResponse } from './SecretMetadataResponse';
+import {
+ SecretMetadataResponseFromJSON,
+ SecretMetadataResponseFromJSONTyped,
+ SecretMetadataResponseToJSON,
+ SecretMetadataResponseToJSONTyped,
+} from './SecretMetadataResponse';
+
+/**
+ * Response body for GET /secrets
+ * @export
+ * @interface ListSecretsResponse
+ */
+export interface ListSecretsResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof ListSecretsResponse
+ */
+ secrets: Array;
+}
+
+/**
+ * Check if a given object implements the ListSecretsResponse interface.
+ */
+export function instanceOfListSecretsResponse(value: object): value is ListSecretsResponse {
+ if (!('secrets' in value) || value['secrets'] === undefined) return false;
+ return true;
+}
+
+export function ListSecretsResponseFromJSON(json: any): ListSecretsResponse {
+ return ListSecretsResponseFromJSONTyped(json, false);
+}
+
+export function ListSecretsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListSecretsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'secrets': ((json['secrets'] as Array).map(SecretMetadataResponseFromJSON)),
+ };
+}
+
+export function ListSecretsResponseToJSON(json: any): ListSecretsResponse {
+ return ListSecretsResponseToJSONTyped(json, false);
+}
+
+export function ListSecretsResponseToJSONTyped(value?: ListSecretsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'secrets': ((value['secrets'] as Array).map(SecretMetadataResponseToJSON)),
+ };
+}
+
diff --git a/src/models/ListUploadsResponse.ts b/src/models/ListUploadsResponse.ts
new file mode 100644
index 0000000..cad782c
--- /dev/null
+++ b/src/models/ListUploadsResponse.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { UploadInfo } from './UploadInfo';
+import {
+ UploadInfoFromJSON,
+ UploadInfoFromJSONTyped,
+ UploadInfoToJSON,
+ UploadInfoToJSONTyped,
+} from './UploadInfo';
+
+/**
+ * Response body for GET /v1/files
+ * @export
+ * @interface ListUploadsResponse
+ */
+export interface ListUploadsResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof ListUploadsResponse
+ */
+ uploads: Array;
+}
+
+/**
+ * Check if a given object implements the ListUploadsResponse interface.
+ */
+export function instanceOfListUploadsResponse(value: object): value is ListUploadsResponse {
+ if (!('uploads' in value) || value['uploads'] === undefined) return false;
+ return true;
+}
+
+export function ListUploadsResponseFromJSON(json: any): ListUploadsResponse {
+ return ListUploadsResponseFromJSONTyped(json, false);
+}
+
+export function ListUploadsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListUploadsResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'uploads': ((json['uploads'] as Array).map(UploadInfoFromJSON)),
+ };
+}
+
+export function ListUploadsResponseToJSON(json: any): ListUploadsResponse {
+ return ListUploadsResponseToJSONTyped(json, false);
+}
+
+export function ListUploadsResponseToJSONTyped(value?: ListUploadsResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'uploads': ((value['uploads'] as Array).map(UploadInfoToJSON)),
+ };
+}
+
diff --git a/src/models/ListWorkspacesResponse.ts b/src/models/ListWorkspacesResponse.ts
new file mode 100644
index 0000000..4c302aa
--- /dev/null
+++ b/src/models/ListWorkspacesResponse.ts
@@ -0,0 +1,83 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { WorkspaceListItem } from './WorkspaceListItem';
+import {
+ WorkspaceListItemFromJSON,
+ WorkspaceListItemFromJSONTyped,
+ WorkspaceListItemToJSON,
+ WorkspaceListItemToJSONTyped,
+} from './WorkspaceListItem';
+
+/**
+ *
+ * @export
+ * @interface ListWorkspacesResponse
+ */
+export interface ListWorkspacesResponse {
+ /**
+ *
+ * @type {boolean}
+ * @memberof ListWorkspacesResponse
+ */
+ ok: boolean;
+ /**
+ *
+ * @type {Array}
+ * @memberof ListWorkspacesResponse
+ */
+ workspaces: Array;
+}
+
+/**
+ * Check if a given object implements the ListWorkspacesResponse interface.
+ */
+export function instanceOfListWorkspacesResponse(value: object): value is ListWorkspacesResponse {
+ if (!('ok' in value) || value['ok'] === undefined) return false;
+ if (!('workspaces' in value) || value['workspaces'] === undefined) return false;
+ return true;
+}
+
+export function ListWorkspacesResponseFromJSON(json: any): ListWorkspacesResponse {
+ return ListWorkspacesResponseFromJSONTyped(json, false);
+}
+
+export function ListWorkspacesResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListWorkspacesResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'ok': json['ok'],
+ 'workspaces': ((json['workspaces'] as Array).map(WorkspaceListItemFromJSON)),
+ };
+}
+
+export function ListWorkspacesResponseToJSON(json: any): ListWorkspacesResponse {
+ return ListWorkspacesResponseToJSONTyped(json, false);
+}
+
+export function ListWorkspacesResponseToJSONTyped(value?: ListWorkspacesResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'ok': value['ok'],
+ 'workspaces': ((value['workspaces'] as Array).map(WorkspaceListItemToJSON)),
+ };
+}
+
diff --git a/src/models/ModelError.ts b/src/models/ModelError.ts
new file mode 100644
index 0000000..6d7bfef
--- /dev/null
+++ b/src/models/ModelError.ts
@@ -0,0 +1,66 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface ModelError
+ */
+export interface ModelError {
+ /**
+ * Machine-readable error code.
+ * @type {string}
+ * @memberof ModelError
+ */
+ error: string;
+}
+
+/**
+ * Check if a given object implements the ModelError interface.
+ */
+export function instanceOfModelError(value: object): value is ModelError {
+ if (!('error' in value) || value['error'] === undefined) return false;
+ return true;
+}
+
+export function ModelErrorFromJSON(json: any): ModelError {
+ return ModelErrorFromJSONTyped(json, false);
+}
+
+export function ModelErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelError {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'error': json['error'],
+ };
+}
+
+export function ModelErrorToJSON(json: any): ModelError {
+ return ModelErrorToJSONTyped(json, false);
+}
+
+export function ModelErrorToJSONTyped(value?: ModelError | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'error': value['error'],
+ };
+}
+
diff --git a/src/models/NumericProfileDetail.ts b/src/models/NumericProfileDetail.ts
new file mode 100644
index 0000000..53f3fd2
--- /dev/null
+++ b/src/models/NumericProfileDetail.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * High-cardinality numeric column (>200 distinct values).
+ * @export
+ * @interface NumericProfileDetail
+ */
+export interface NumericProfileDetail {
+ /**
+ * Maximum value (string to preserve precision for large integers and decimals)
+ * @type {string}
+ * @memberof NumericProfileDetail
+ */
+ max: string;
+ /**
+ * Arithmetic mean
+ * @type {number}
+ * @memberof NumericProfileDetail
+ */
+ mean: number;
+ /**
+ * Minimum value (string to preserve precision for large integers and decimals)
+ * @type {string}
+ * @memberof NumericProfileDetail
+ */
+ min: string;
+}
+
+/**
+ * Check if a given object implements the NumericProfileDetail interface.
+ */
+export function instanceOfNumericProfileDetail(value: object): value is NumericProfileDetail {
+ if (!('max' in value) || value['max'] === undefined) return false;
+ if (!('mean' in value) || value['mean'] === undefined) return false;
+ if (!('min' in value) || value['min'] === undefined) return false;
+ return true;
+}
+
+export function NumericProfileDetailFromJSON(json: any): NumericProfileDetail {
+ return NumericProfileDetailFromJSONTyped(json, false);
+}
+
+export function NumericProfileDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): NumericProfileDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'max': json['max'],
+ 'mean': json['mean'],
+ 'min': json['min'],
+ };
+}
+
+export function NumericProfileDetailToJSON(json: any): NumericProfileDetail {
+ return NumericProfileDetailToJSONTyped(json, false);
+}
+
+export function NumericProfileDetailToJSONTyped(value?: NumericProfileDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'max': value['max'],
+ 'mean': value['mean'],
+ 'min': value['min'],
+ };
+}
+
diff --git a/src/models/QueryRequest.ts b/src/models/QueryRequest.ts
new file mode 100644
index 0000000..ab266cd
--- /dev/null
+++ b/src/models/QueryRequest.ts
@@ -0,0 +1,66 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for POST /query
+ * @export
+ * @interface QueryRequest
+ */
+export interface QueryRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRequest
+ */
+ sql: string;
+}
+
+/**
+ * Check if a given object implements the QueryRequest interface.
+ */
+export function instanceOfQueryRequest(value: object): value is QueryRequest {
+ if (!('sql' in value) || value['sql'] === undefined) return false;
+ return true;
+}
+
+export function QueryRequestFromJSON(json: any): QueryRequest {
+ return QueryRequestFromJSONTyped(json, false);
+}
+
+export function QueryRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): QueryRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'sql': json['sql'],
+ };
+}
+
+export function QueryRequestToJSON(json: any): QueryRequest {
+ return QueryRequestToJSONTyped(json, false);
+}
+
+export function QueryRequestToJSONTyped(value?: QueryRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'sql': value['sql'],
+ };
+}
+
diff --git a/src/models/QueryResponse.ts b/src/models/QueryResponse.ts
new file mode 100644
index 0000000..9438b50
--- /dev/null
+++ b/src/models/QueryResponse.ts
@@ -0,0 +1,141 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for POST /query
+ *
+ * Query results are returned immediately along with a `result_id` for later retrieval.
+ * The actual persistence to storage happens asynchronously in the background.
+ *
+ * To check if a result is ready for SQL queries, poll GET /results/{id} and check `status`:
+ * - `"processing"`: Persistence is still in progress
+ * - `"ready"`: Result is available for retrieval and SQL queries
+ * - `"failed"`: Persistence failed (check `error_message` for details)
+ * @export
+ * @interface QueryResponse
+ */
+export interface QueryResponse {
+ /**
+ *
+ * @type {Array}
+ * @memberof QueryResponse
+ */
+ columns: Array;
+ /**
+ *
+ * @type {number}
+ * @memberof QueryResponse
+ */
+ executionTimeMs: number;
+ /**
+ * Nullable flags for each column (parallel to columns vec).
+ * True if the column allows NULL values, false if NOT NULL.
+ * @type {Array}
+ * @memberof QueryResponse
+ */
+ nullable: Array;
+ /**
+ * Unique identifier for the query run record (qrun...).
+ * @type {string}
+ * @memberof QueryResponse
+ */
+ queryRunId: string;
+ /**
+ * Unique identifier for retrieving this result via GET /results/{id}.
+ * Null if catalog registration failed (see `warning` field for details).
+ * When non-null, the result is being persisted asynchronously.
+ * @type {string}
+ * @memberof QueryResponse
+ */
+ resultId?: string | null;
+ /**
+ *
+ * @type {number}
+ * @memberof QueryResponse
+ */
+ rowCount: number;
+ /**
+ * Array of rows, where each row is an array of column values.
+ * Values can be strings, numbers, booleans, or null.
+ * @type {Array>}
+ * @memberof QueryResponse
+ */
+ rows: Array>;
+ /**
+ * Warning message if result persistence could not be initiated.
+ * When present, `result_id` will be null and the result cannot be retrieved later.
+ * The query results are still returned in this response.
+ * @type {string}
+ * @memberof QueryResponse
+ */
+ warning?: string | null;
+}
+
+/**
+ * Check if a given object implements the QueryResponse interface.
+ */
+export function instanceOfQueryResponse(value: object): value is QueryResponse {
+ if (!('columns' in value) || value['columns'] === undefined) return false;
+ if (!('executionTimeMs' in value) || value['executionTimeMs'] === undefined) return false;
+ if (!('nullable' in value) || value['nullable'] === undefined) return false;
+ if (!('queryRunId' in value) || value['queryRunId'] === undefined) return false;
+ if (!('rowCount' in value) || value['rowCount'] === undefined) return false;
+ if (!('rows' in value) || value['rows'] === undefined) return false;
+ return true;
+}
+
+export function QueryResponseFromJSON(json: any): QueryResponse {
+ return QueryResponseFromJSONTyped(json, false);
+}
+
+export function QueryResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): QueryResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': json['columns'],
+ 'executionTimeMs': json['execution_time_ms'],
+ 'nullable': json['nullable'],
+ 'queryRunId': json['query_run_id'],
+ 'resultId': json['result_id'] == null ? undefined : json['result_id'],
+ 'rowCount': json['row_count'],
+ 'rows': json['rows'],
+ 'warning': json['warning'] == null ? undefined : json['warning'],
+ };
+}
+
+export function QueryResponseToJSON(json: any): QueryResponse {
+ return QueryResponseToJSONTyped(json, false);
+}
+
+export function QueryResponseToJSONTyped(value?: QueryResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': value['columns'],
+ 'execution_time_ms': value['executionTimeMs'],
+ 'nullable': value['nullable'],
+ 'query_run_id': value['queryRunId'],
+ 'result_id': value['resultId'],
+ 'row_count': value['rowCount'],
+ 'rows': value['rows'],
+ 'warning': value['warning'],
+ };
+}
+
diff --git a/src/models/QueryRunInfo.ts b/src/models/QueryRunInfo.ts
new file mode 100644
index 0000000..f86d0db
--- /dev/null
+++ b/src/models/QueryRunInfo.ts
@@ -0,0 +1,183 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Single query run for listing
+ * @export
+ * @interface QueryRunInfo
+ */
+export interface QueryRunInfo {
+ /**
+ *
+ * @type {Date}
+ * @memberof QueryRunInfo
+ */
+ completedAt?: Date | null;
+ /**
+ *
+ * @type {Date}
+ * @memberof QueryRunInfo
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ errorMessage?: string | null;
+ /**
+ *
+ * @type {number}
+ * @memberof QueryRunInfo
+ */
+ executionTimeMs?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ resultId?: string | null;
+ /**
+ *
+ * @type {number}
+ * @memberof QueryRunInfo
+ */
+ rowCount?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ savedQueryId?: string | null;
+ /**
+ *
+ * @type {number}
+ * @memberof QueryRunInfo
+ */
+ savedQueryVersion?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ snapshotId: string;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ sqlHash: string;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ sqlText: string;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ status: string;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ traceId?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof QueryRunInfo
+ */
+ warningMessage?: string | null;
+}
+
+/**
+ * Check if a given object implements the QueryRunInfo interface.
+ */
+export function instanceOfQueryRunInfo(value: object): value is QueryRunInfo {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('snapshotId' in value) || value['snapshotId'] === undefined) return false;
+ if (!('sqlHash' in value) || value['sqlHash'] === undefined) return false;
+ if (!('sqlText' in value) || value['sqlText'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ return true;
+}
+
+export function QueryRunInfoFromJSON(json: any): QueryRunInfo {
+ return QueryRunInfoFromJSONTyped(json, false);
+}
+
+export function QueryRunInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): QueryRunInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'completedAt': json['completed_at'] == null ? undefined : (new Date(json['completed_at'])),
+ 'createdAt': (new Date(json['created_at'])),
+ 'errorMessage': json['error_message'] == null ? undefined : json['error_message'],
+ 'executionTimeMs': json['execution_time_ms'] == null ? undefined : json['execution_time_ms'],
+ 'id': json['id'],
+ 'resultId': json['result_id'] == null ? undefined : json['result_id'],
+ 'rowCount': json['row_count'] == null ? undefined : json['row_count'],
+ 'savedQueryId': json['saved_query_id'] == null ? undefined : json['saved_query_id'],
+ 'savedQueryVersion': json['saved_query_version'] == null ? undefined : json['saved_query_version'],
+ 'snapshotId': json['snapshot_id'],
+ 'sqlHash': json['sql_hash'],
+ 'sqlText': json['sql_text'],
+ 'status': json['status'],
+ 'traceId': json['trace_id'] == null ? undefined : json['trace_id'],
+ 'warningMessage': json['warning_message'] == null ? undefined : json['warning_message'],
+ };
+}
+
+export function QueryRunInfoToJSON(json: any): QueryRunInfo {
+ return QueryRunInfoToJSONTyped(json, false);
+}
+
+export function QueryRunInfoToJSONTyped(value?: QueryRunInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'completed_at': value['completedAt'] == null ? value['completedAt'] : value['completedAt'].toISOString(),
+ 'created_at': value['createdAt'].toISOString(),
+ 'error_message': value['errorMessage'],
+ 'execution_time_ms': value['executionTimeMs'],
+ 'id': value['id'],
+ 'result_id': value['resultId'],
+ 'row_count': value['rowCount'],
+ 'saved_query_id': value['savedQueryId'],
+ 'saved_query_version': value['savedQueryVersion'],
+ 'snapshot_id': value['snapshotId'],
+ 'sql_hash': value['sqlHash'],
+ 'sql_text': value['sqlText'],
+ 'status': value['status'],
+ 'trace_id': value['traceId'],
+ 'warning_message': value['warningMessage'],
+ };
+}
+
diff --git a/src/models/RefreshDatasetResponse.ts b/src/models/RefreshDatasetResponse.ts
new file mode 100644
index 0000000..a06ffe8
--- /dev/null
+++ b/src/models/RefreshDatasetResponse.ts
@@ -0,0 +1,93 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for POST /v1/datasets/{id}/refresh
+ * @export
+ * @interface RefreshDatasetResponse
+ */
+export interface RefreshDatasetResponse {
+ /**
+ *
+ * @type {Date}
+ * @memberof RefreshDatasetResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshDatasetResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshDatasetResponse
+ */
+ status: string;
+ /**
+ *
+ * @type {number}
+ * @memberof RefreshDatasetResponse
+ */
+ version: number;
+}
+
+/**
+ * Check if a given object implements the RefreshDatasetResponse interface.
+ */
+export function instanceOfRefreshDatasetResponse(value: object): value is RefreshDatasetResponse {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ if (!('version' in value) || value['version'] === undefined) return false;
+ return true;
+}
+
+export function RefreshDatasetResponseFromJSON(json: any): RefreshDatasetResponse {
+ return RefreshDatasetResponseFromJSONTyped(json, false);
+}
+
+export function RefreshDatasetResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): RefreshDatasetResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'status': json['status'],
+ 'version': json['version'],
+ };
+}
+
+export function RefreshDatasetResponseToJSON(json: any): RefreshDatasetResponse {
+ return RefreshDatasetResponseToJSONTyped(json, false);
+}
+
+export function RefreshDatasetResponseToJSONTyped(value?: RefreshDatasetResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'status': value['status'],
+ 'version': value['version'],
+ };
+}
+
diff --git a/src/models/RefreshRequest.ts b/src/models/RefreshRequest.ts
new file mode 100644
index 0000000..5912b04
--- /dev/null
+++ b/src/models/RefreshRequest.ts
@@ -0,0 +1,114 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for POST /refresh
+ * @export
+ * @interface RefreshRequest
+ */
+export interface RefreshRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshRequest
+ */
+ connectionId?: string | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof RefreshRequest
+ */
+ data?: boolean;
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshRequest
+ */
+ datasetId?: string | null;
+ /**
+ * Controls whether uncached tables are included in connection-wide data refresh.
+ *
+ * - `false` (default): Only refresh tables that already have cached data.
+ * This is the common case for keeping existing data up-to-date.
+ * - `true`: Also sync tables that haven't been cached yet, essentially performing
+ * an initial sync for any new tables discovered since the connection was created.
+ *
+ * This field only applies to connection-wide data refresh (when `data=true` and
+ * `table_name` is not specified). It has no effect on single-table refresh or
+ * schema refresh operations.
+ * @type {boolean}
+ * @memberof RefreshRequest
+ */
+ includeUncached?: boolean;
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshRequest
+ */
+ schemaName?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshRequest
+ */
+ tableName?: string | null;
+}
+
+/**
+ * Check if a given object implements the RefreshRequest interface.
+ */
+export function instanceOfRefreshRequest(value: object): value is RefreshRequest {
+ return true;
+}
+
+export function RefreshRequestFromJSON(json: any): RefreshRequest {
+ return RefreshRequestFromJSONTyped(json, false);
+}
+
+export function RefreshRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): RefreshRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connectionId': json['connection_id'] == null ? undefined : json['connection_id'],
+ 'data': json['data'] == null ? undefined : json['data'],
+ 'datasetId': json['dataset_id'] == null ? undefined : json['dataset_id'],
+ 'includeUncached': json['include_uncached'] == null ? undefined : json['include_uncached'],
+ 'schemaName': json['schema_name'] == null ? undefined : json['schema_name'],
+ 'tableName': json['table_name'] == null ? undefined : json['table_name'],
+ };
+}
+
+export function RefreshRequestToJSON(json: any): RefreshRequest {
+ return RefreshRequestToJSONTyped(json, false);
+}
+
+export function RefreshRequestToJSONTyped(value?: RefreshRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connection_id': value['connectionId'],
+ 'data': value['data'],
+ 'dataset_id': value['datasetId'],
+ 'include_uncached': value['includeUncached'],
+ 'schema_name': value['schemaName'],
+ 'table_name': value['tableName'],
+ };
+}
+
diff --git a/src/models/RefreshResponse.ts b/src/models/RefreshResponse.ts
new file mode 100644
index 0000000..531b90d
--- /dev/null
+++ b/src/models/RefreshResponse.ts
@@ -0,0 +1,102 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import type { ConnectionRefreshResult } from './ConnectionRefreshResult';
+import {
+ instanceOfConnectionRefreshResult,
+ ConnectionRefreshResultFromJSON,
+ ConnectionRefreshResultFromJSONTyped,
+ ConnectionRefreshResultToJSON,
+} from './ConnectionRefreshResult';
+import type { RefreshDatasetResponse } from './RefreshDatasetResponse';
+import {
+ instanceOfRefreshDatasetResponse,
+ RefreshDatasetResponseFromJSON,
+ RefreshDatasetResponseFromJSONTyped,
+ RefreshDatasetResponseToJSON,
+} from './RefreshDatasetResponse';
+import type { SchemaRefreshResult } from './SchemaRefreshResult';
+import {
+ instanceOfSchemaRefreshResult,
+ SchemaRefreshResultFromJSON,
+ SchemaRefreshResultFromJSONTyped,
+ SchemaRefreshResultToJSON,
+} from './SchemaRefreshResult';
+import type { TableRefreshResult } from './TableRefreshResult';
+import {
+ instanceOfTableRefreshResult,
+ TableRefreshResultFromJSON,
+ TableRefreshResultFromJSONTyped,
+ TableRefreshResultToJSON,
+} from './TableRefreshResult';
+
+/**
+ * @type RefreshResponse
+ * Unified response type for refresh operations
+ * @export
+ */
+export type RefreshResponse = ConnectionRefreshResult | RefreshDatasetResponse | SchemaRefreshResult | TableRefreshResult;
+
+export function RefreshResponseFromJSON(json: any): RefreshResponse {
+ return RefreshResponseFromJSONTyped(json, false);
+}
+
+export function RefreshResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): RefreshResponse {
+ if (json == null) {
+ return json;
+ }
+ if (typeof json !== 'object') {
+ return json;
+ }
+ if (instanceOfConnectionRefreshResult(json)) {
+ return ConnectionRefreshResultFromJSONTyped(json, true);
+ }
+ if (instanceOfRefreshDatasetResponse(json)) {
+ return RefreshDatasetResponseFromJSONTyped(json, true);
+ }
+ if (instanceOfSchemaRefreshResult(json)) {
+ return SchemaRefreshResultFromJSONTyped(json, true);
+ }
+ if (instanceOfTableRefreshResult(json)) {
+ return TableRefreshResultFromJSONTyped(json, true);
+ }
+ return {} as any;
+}
+
+export function RefreshResponseToJSON(json: any): any {
+ return RefreshResponseToJSONTyped(json, false);
+}
+
+export function RefreshResponseToJSONTyped(value?: RefreshResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+ if (typeof value !== 'object') {
+ return value;
+ }
+ if (instanceOfConnectionRefreshResult(value)) {
+ return ConnectionRefreshResultToJSON(value as ConnectionRefreshResult);
+ }
+ if (instanceOfRefreshDatasetResponse(value)) {
+ return RefreshDatasetResponseToJSON(value as RefreshDatasetResponse);
+ }
+ if (instanceOfSchemaRefreshResult(value)) {
+ return SchemaRefreshResultToJSON(value as SchemaRefreshResult);
+ }
+ if (instanceOfTableRefreshResult(value)) {
+ return TableRefreshResultToJSON(value as TableRefreshResult);
+ }
+ return {};
+}
+
diff --git a/src/models/RefreshWarning.ts b/src/models/RefreshWarning.ts
new file mode 100644
index 0000000..5e60805
--- /dev/null
+++ b/src/models/RefreshWarning.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Non-fatal warning that occurred during a refresh operation.
+ * Used to report issues like failed deletion scheduling that don't
+ * prevent the refresh from succeeding.
+ * @export
+ * @interface RefreshWarning
+ */
+export interface RefreshWarning {
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshWarning
+ */
+ message: string;
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshWarning
+ */
+ schemaName?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof RefreshWarning
+ */
+ tableName?: string | null;
+}
+
+/**
+ * Check if a given object implements the RefreshWarning interface.
+ */
+export function instanceOfRefreshWarning(value: object): value is RefreshWarning {
+ if (!('message' in value) || value['message'] === undefined) return false;
+ return true;
+}
+
+export function RefreshWarningFromJSON(json: any): RefreshWarning {
+ return RefreshWarningFromJSONTyped(json, false);
+}
+
+export function RefreshWarningFromJSONTyped(json: any, ignoreDiscriminator: boolean): RefreshWarning {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'message': json['message'],
+ 'schemaName': json['schema_name'] == null ? undefined : json['schema_name'],
+ 'tableName': json['table_name'] == null ? undefined : json['table_name'],
+ };
+}
+
+export function RefreshWarningToJSON(json: any): RefreshWarning {
+ return RefreshWarningToJSONTyped(json, false);
+}
+
+export function RefreshWarningToJSONTyped(value?: RefreshWarning | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'message': value['message'],
+ 'schema_name': value['schemaName'],
+ 'table_name': value['tableName'],
+ };
+}
+
diff --git a/src/models/ResultInfo.ts b/src/models/ResultInfo.ts
new file mode 100644
index 0000000..ccb1bab
--- /dev/null
+++ b/src/models/ResultInfo.ts
@@ -0,0 +1,92 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Summary of a persisted query result for listing
+ * @export
+ * @interface ResultInfo
+ */
+export interface ResultInfo {
+ /**
+ *
+ * @type {Date}
+ * @memberof ResultInfo
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof ResultInfo
+ */
+ errorMessage?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof ResultInfo
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof ResultInfo
+ */
+ status: string;
+}
+
+/**
+ * Check if a given object implements the ResultInfo interface.
+ */
+export function instanceOfResultInfo(value: object): value is ResultInfo {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ return true;
+}
+
+export function ResultInfoFromJSON(json: any): ResultInfo {
+ return ResultInfoFromJSONTyped(json, false);
+}
+
+export function ResultInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResultInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'errorMessage': json['error_message'] == null ? undefined : json['error_message'],
+ 'id': json['id'],
+ 'status': json['status'],
+ };
+}
+
+export function ResultInfoToJSON(json: any): ResultInfo {
+ return ResultInfoToJSONTyped(json, false);
+}
+
+export function ResultInfoToJSONTyped(value?: ResultInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'error_message': value['errorMessage'],
+ 'id': value['id'],
+ 'status': value['status'],
+ };
+}
+
diff --git a/src/models/SavedQueryDatasetSource.ts b/src/models/SavedQueryDatasetSource.ts
new file mode 100644
index 0000000..0c84b22
--- /dev/null
+++ b/src/models/SavedQueryDatasetSource.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Create dataset from a saved query result
+ * @export
+ * @interface SavedQueryDatasetSource
+ */
+export interface SavedQueryDatasetSource {
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDatasetSource
+ */
+ savedQueryId: string;
+ /**
+ *
+ * @type {number}
+ * @memberof SavedQueryDatasetSource
+ */
+ version?: number | null;
+}
+
+/**
+ * Check if a given object implements the SavedQueryDatasetSource interface.
+ */
+export function instanceOfSavedQueryDatasetSource(value: object): value is SavedQueryDatasetSource {
+ if (!('savedQueryId' in value) || value['savedQueryId'] === undefined) return false;
+ return true;
+}
+
+export function SavedQueryDatasetSourceFromJSON(json: any): SavedQueryDatasetSource {
+ return SavedQueryDatasetSourceFromJSONTyped(json, false);
+}
+
+export function SavedQueryDatasetSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): SavedQueryDatasetSource {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'savedQueryId': json['saved_query_id'],
+ 'version': json['version'] == null ? undefined : json['version'],
+ };
+}
+
+export function SavedQueryDatasetSourceToJSON(json: any): SavedQueryDatasetSource {
+ return SavedQueryDatasetSourceToJSONTyped(json, false);
+}
+
+export function SavedQueryDatasetSourceToJSONTyped(value?: SavedQueryDatasetSource | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'saved_query_id': value['savedQueryId'],
+ 'version': value['version'],
+ };
+}
+
diff --git a/src/models/SavedQueryDetail.ts b/src/models/SavedQueryDetail.ts
new file mode 100644
index 0000000..b9cfa11
--- /dev/null
+++ b/src/models/SavedQueryDetail.ts
@@ -0,0 +1,210 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Saved query detail (includes latest version's SQL)
+ * @export
+ * @interface SavedQueryDetail
+ */
+export interface SavedQueryDetail {
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDetail
+ */
+ category?: string | null;
+ /**
+ *
+ * @type {Date}
+ * @memberof SavedQueryDetail
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDetail
+ */
+ description: string;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryDetail
+ */
+ hasAggregation?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryDetail
+ */
+ hasGroupBy?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryDetail
+ */
+ hasJoin?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryDetail
+ */
+ hasLimit?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryDetail
+ */
+ hasOrderBy?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryDetail
+ */
+ hasPredicate?: boolean | null;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDetail
+ */
+ id: string;
+ /**
+ *
+ * @type {number}
+ * @memberof SavedQueryDetail
+ */
+ latestVersion: number;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDetail
+ */
+ name: string;
+ /**
+ *
+ * @type {number}
+ * @memberof SavedQueryDetail
+ */
+ numTables?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDetail
+ */
+ sql: string;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDetail
+ */
+ sqlHash: string;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryDetail
+ */
+ tableSize?: string | null;
+ /**
+ *
+ * @type {Array}
+ * @memberof SavedQueryDetail
+ */
+ tags: Array;
+ /**
+ *
+ * @type {Date}
+ * @memberof SavedQueryDetail
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the SavedQueryDetail interface.
+ */
+export function instanceOfSavedQueryDetail(value: object): value is SavedQueryDetail {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('description' in value) || value['description'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('latestVersion' in value) || value['latestVersion'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('sql' in value) || value['sql'] === undefined) return false;
+ if (!('sqlHash' in value) || value['sqlHash'] === undefined) return false;
+ if (!('tags' in value) || value['tags'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function SavedQueryDetailFromJSON(json: any): SavedQueryDetail {
+ return SavedQueryDetailFromJSONTyped(json, false);
+}
+
+export function SavedQueryDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): SavedQueryDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'category': json['category'] == null ? undefined : json['category'],
+ 'createdAt': (new Date(json['created_at'])),
+ 'description': json['description'],
+ 'hasAggregation': json['has_aggregation'] == null ? undefined : json['has_aggregation'],
+ 'hasGroupBy': json['has_group_by'] == null ? undefined : json['has_group_by'],
+ 'hasJoin': json['has_join'] == null ? undefined : json['has_join'],
+ 'hasLimit': json['has_limit'] == null ? undefined : json['has_limit'],
+ 'hasOrderBy': json['has_order_by'] == null ? undefined : json['has_order_by'],
+ 'hasPredicate': json['has_predicate'] == null ? undefined : json['has_predicate'],
+ 'id': json['id'],
+ 'latestVersion': json['latest_version'],
+ 'name': json['name'],
+ 'numTables': json['num_tables'] == null ? undefined : json['num_tables'],
+ 'sql': json['sql'],
+ 'sqlHash': json['sql_hash'],
+ 'tableSize': json['table_size'] == null ? undefined : json['table_size'],
+ 'tags': json['tags'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function SavedQueryDetailToJSON(json: any): SavedQueryDetail {
+ return SavedQueryDetailToJSONTyped(json, false);
+}
+
+export function SavedQueryDetailToJSONTyped(value?: SavedQueryDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'category': value['category'],
+ 'created_at': value['createdAt'].toISOString(),
+ 'description': value['description'],
+ 'has_aggregation': value['hasAggregation'],
+ 'has_group_by': value['hasGroupBy'],
+ 'has_join': value['hasJoin'],
+ 'has_limit': value['hasLimit'],
+ 'has_order_by': value['hasOrderBy'],
+ 'has_predicate': value['hasPredicate'],
+ 'id': value['id'],
+ 'latest_version': value['latestVersion'],
+ 'name': value['name'],
+ 'num_tables': value['numTables'],
+ 'sql': value['sql'],
+ 'sql_hash': value['sqlHash'],
+ 'table_size': value['tableSize'],
+ 'tags': value['tags'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/SavedQuerySummary.ts b/src/models/SavedQuerySummary.ts
new file mode 100644
index 0000000..aa418c8
--- /dev/null
+++ b/src/models/SavedQuerySummary.ts
@@ -0,0 +1,120 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Saved query summary for listing
+ * @export
+ * @interface SavedQuerySummary
+ */
+export interface SavedQuerySummary {
+ /**
+ *
+ * @type {Date}
+ * @memberof SavedQuerySummary
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQuerySummary
+ */
+ description: string;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQuerySummary
+ */
+ id: string;
+ /**
+ *
+ * @type {number}
+ * @memberof SavedQuerySummary
+ */
+ latestVersion: number;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQuerySummary
+ */
+ name: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof SavedQuerySummary
+ */
+ tags: Array;
+ /**
+ *
+ * @type {Date}
+ * @memberof SavedQuerySummary
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the SavedQuerySummary interface.
+ */
+export function instanceOfSavedQuerySummary(value: object): value is SavedQuerySummary {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('description' in value) || value['description'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('latestVersion' in value) || value['latestVersion'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('tags' in value) || value['tags'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function SavedQuerySummaryFromJSON(json: any): SavedQuerySummary {
+ return SavedQuerySummaryFromJSONTyped(json, false);
+}
+
+export function SavedQuerySummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): SavedQuerySummary {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'description': json['description'],
+ 'id': json['id'],
+ 'latestVersion': json['latest_version'],
+ 'name': json['name'],
+ 'tags': json['tags'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function SavedQuerySummaryToJSON(json: any): SavedQuerySummary {
+ return SavedQuerySummaryToJSONTyped(json, false);
+}
+
+export function SavedQuerySummaryToJSONTyped(value?: SavedQuerySummary | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'description': value['description'],
+ 'id': value['id'],
+ 'latest_version': value['latestVersion'],
+ 'name': value['name'],
+ 'tags': value['tags'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/SavedQueryVersionInfo.ts b/src/models/SavedQueryVersionInfo.ts
new file mode 100644
index 0000000..7b3a2f0
--- /dev/null
+++ b/src/models/SavedQueryVersionInfo.ts
@@ -0,0 +1,165 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Single saved query version
+ * @export
+ * @interface SavedQueryVersionInfo
+ */
+export interface SavedQueryVersionInfo {
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryVersionInfo
+ */
+ category?: string | null;
+ /**
+ *
+ * @type {Date}
+ * @memberof SavedQueryVersionInfo
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryVersionInfo
+ */
+ hasAggregation?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryVersionInfo
+ */
+ hasGroupBy?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryVersionInfo
+ */
+ hasJoin?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryVersionInfo
+ */
+ hasLimit?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryVersionInfo
+ */
+ hasOrderBy?: boolean | null;
+ /**
+ *
+ * @type {boolean}
+ * @memberof SavedQueryVersionInfo
+ */
+ hasPredicate?: boolean | null;
+ /**
+ *
+ * @type {number}
+ * @memberof SavedQueryVersionInfo
+ */
+ numTables?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryVersionInfo
+ */
+ sql: string;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryVersionInfo
+ */
+ sqlHash: string;
+ /**
+ *
+ * @type {string}
+ * @memberof SavedQueryVersionInfo
+ */
+ tableSize?: string | null;
+ /**
+ *
+ * @type {number}
+ * @memberof SavedQueryVersionInfo
+ */
+ version: number;
+}
+
+/**
+ * Check if a given object implements the SavedQueryVersionInfo interface.
+ */
+export function instanceOfSavedQueryVersionInfo(value: object): value is SavedQueryVersionInfo {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('sql' in value) || value['sql'] === undefined) return false;
+ if (!('sqlHash' in value) || value['sqlHash'] === undefined) return false;
+ if (!('version' in value) || value['version'] === undefined) return false;
+ return true;
+}
+
+export function SavedQueryVersionInfoFromJSON(json: any): SavedQueryVersionInfo {
+ return SavedQueryVersionInfoFromJSONTyped(json, false);
+}
+
+export function SavedQueryVersionInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SavedQueryVersionInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'category': json['category'] == null ? undefined : json['category'],
+ 'createdAt': (new Date(json['created_at'])),
+ 'hasAggregation': json['has_aggregation'] == null ? undefined : json['has_aggregation'],
+ 'hasGroupBy': json['has_group_by'] == null ? undefined : json['has_group_by'],
+ 'hasJoin': json['has_join'] == null ? undefined : json['has_join'],
+ 'hasLimit': json['has_limit'] == null ? undefined : json['has_limit'],
+ 'hasOrderBy': json['has_order_by'] == null ? undefined : json['has_order_by'],
+ 'hasPredicate': json['has_predicate'] == null ? undefined : json['has_predicate'],
+ 'numTables': json['num_tables'] == null ? undefined : json['num_tables'],
+ 'sql': json['sql'],
+ 'sqlHash': json['sql_hash'],
+ 'tableSize': json['table_size'] == null ? undefined : json['table_size'],
+ 'version': json['version'],
+ };
+}
+
+export function SavedQueryVersionInfoToJSON(json: any): SavedQueryVersionInfo {
+ return SavedQueryVersionInfoToJSONTyped(json, false);
+}
+
+export function SavedQueryVersionInfoToJSONTyped(value?: SavedQueryVersionInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'category': value['category'],
+ 'created_at': value['createdAt'].toISOString(),
+ 'has_aggregation': value['hasAggregation'],
+ 'has_group_by': value['hasGroupBy'],
+ 'has_join': value['hasJoin'],
+ 'has_limit': value['hasLimit'],
+ 'has_order_by': value['hasOrderBy'],
+ 'has_predicate': value['hasPredicate'],
+ 'num_tables': value['numTables'],
+ 'sql': value['sql'],
+ 'sql_hash': value['sqlHash'],
+ 'table_size': value['tableSize'],
+ 'version': value['version'],
+ };
+}
+
diff --git a/src/models/SchemaRefreshResult.ts b/src/models/SchemaRefreshResult.ts
new file mode 100644
index 0000000..712eadc
--- /dev/null
+++ b/src/models/SchemaRefreshResult.ts
@@ -0,0 +1,118 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ConnectionSchemaError } from './ConnectionSchemaError';
+import {
+ ConnectionSchemaErrorFromJSON,
+ ConnectionSchemaErrorFromJSONTyped,
+ ConnectionSchemaErrorToJSON,
+ ConnectionSchemaErrorToJSONTyped,
+} from './ConnectionSchemaError';
+
+/**
+ * Response for schema refresh operations
+ * @export
+ * @interface SchemaRefreshResult
+ */
+export interface SchemaRefreshResult {
+ /**
+ *
+ * @type {number}
+ * @memberof SchemaRefreshResult
+ */
+ connectionsFailed: number;
+ /**
+ *
+ * @type {number}
+ * @memberof SchemaRefreshResult
+ */
+ connectionsRefreshed: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof SchemaRefreshResult
+ */
+ errors?: Array;
+ /**
+ *
+ * @type {number}
+ * @memberof SchemaRefreshResult
+ */
+ tablesAdded: number;
+ /**
+ *
+ * @type {number}
+ * @memberof SchemaRefreshResult
+ */
+ tablesDiscovered: number;
+ /**
+ *
+ * @type {number}
+ * @memberof SchemaRefreshResult
+ */
+ tablesModified: number;
+}
+
+/**
+ * Check if a given object implements the SchemaRefreshResult interface.
+ */
+export function instanceOfSchemaRefreshResult(value: object): value is SchemaRefreshResult {
+ if (!('connectionsFailed' in value) || value['connectionsFailed'] === undefined) return false;
+ if (!('connectionsRefreshed' in value) || value['connectionsRefreshed'] === undefined) return false;
+ if (!('tablesAdded' in value) || value['tablesAdded'] === undefined) return false;
+ if (!('tablesDiscovered' in value) || value['tablesDiscovered'] === undefined) return false;
+ if (!('tablesModified' in value) || value['tablesModified'] === undefined) return false;
+ return true;
+}
+
+export function SchemaRefreshResultFromJSON(json: any): SchemaRefreshResult {
+ return SchemaRefreshResultFromJSONTyped(json, false);
+}
+
+export function SchemaRefreshResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): SchemaRefreshResult {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connectionsFailed': json['connections_failed'],
+ 'connectionsRefreshed': json['connections_refreshed'],
+ 'errors': json['errors'] == null ? undefined : ((json['errors'] as Array).map(ConnectionSchemaErrorFromJSON)),
+ 'tablesAdded': json['tables_added'],
+ 'tablesDiscovered': json['tables_discovered'],
+ 'tablesModified': json['tables_modified'],
+ };
+}
+
+export function SchemaRefreshResultToJSON(json: any): SchemaRefreshResult {
+ return SchemaRefreshResultToJSONTyped(json, false);
+}
+
+export function SchemaRefreshResultToJSONTyped(value?: SchemaRefreshResult | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connections_failed': value['connectionsFailed'],
+ 'connections_refreshed': value['connectionsRefreshed'],
+ 'errors': value['errors'] == null ? undefined : ((value['errors'] as Array).map(ConnectionSchemaErrorToJSON)),
+ 'tables_added': value['tablesAdded'],
+ 'tables_discovered': value['tablesDiscovered'],
+ 'tables_modified': value['tablesModified'],
+ };
+}
+
diff --git a/src/models/SecretMetadataResponse.ts b/src/models/SecretMetadataResponse.ts
new file mode 100644
index 0000000..daba869
--- /dev/null
+++ b/src/models/SecretMetadataResponse.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Single secret metadata for API responses
+ * @export
+ * @interface SecretMetadataResponse
+ */
+export interface SecretMetadataResponse {
+ /**
+ *
+ * @type {Date}
+ * @memberof SecretMetadataResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof SecretMetadataResponse
+ */
+ name: string;
+ /**
+ *
+ * @type {Date}
+ * @memberof SecretMetadataResponse
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the SecretMetadataResponse interface.
+ */
+export function instanceOfSecretMetadataResponse(value: object): value is SecretMetadataResponse {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function SecretMetadataResponseFromJSON(json: any): SecretMetadataResponse {
+ return SecretMetadataResponseFromJSONTyped(json, false);
+}
+
+export function SecretMetadataResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SecretMetadataResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'createdAt': (new Date(json['created_at'])),
+ 'name': json['name'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function SecretMetadataResponseToJSON(json: any): SecretMetadataResponse {
+ return SecretMetadataResponseToJSONTyped(json, false);
+}
+
+export function SecretMetadataResponseToJSONTyped(value?: SecretMetadataResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'created_at': value['createdAt'].toISOString(),
+ 'name': value['name'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/SqlQueryDatasetSource.ts b/src/models/SqlQueryDatasetSource.ts
new file mode 100644
index 0000000..3bd3a4a
--- /dev/null
+++ b/src/models/SqlQueryDatasetSource.ts
@@ -0,0 +1,82 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Create dataset from a SQL query (auto-creates a saved query)
+ * @export
+ * @interface SqlQueryDatasetSource
+ */
+export interface SqlQueryDatasetSource {
+ /**
+ * Optional description for the auto-created saved query.
+ * @type {string}
+ * @memberof SqlQueryDatasetSource
+ */
+ description?: string | null;
+ /**
+ * Optional name for the auto-created saved query. Defaults to the dataset label.
+ * @type {string}
+ * @memberof SqlQueryDatasetSource
+ */
+ name?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof SqlQueryDatasetSource
+ */
+ sql: string;
+}
+
+/**
+ * Check if a given object implements the SqlQueryDatasetSource interface.
+ */
+export function instanceOfSqlQueryDatasetSource(value: object): value is SqlQueryDatasetSource {
+ if (!('sql' in value) || value['sql'] === undefined) return false;
+ return true;
+}
+
+export function SqlQueryDatasetSourceFromJSON(json: any): SqlQueryDatasetSource {
+ return SqlQueryDatasetSourceFromJSONTyped(json, false);
+}
+
+export function SqlQueryDatasetSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): SqlQueryDatasetSource {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'description': json['description'] == null ? undefined : json['description'],
+ 'name': json['name'] == null ? undefined : json['name'],
+ 'sql': json['sql'],
+ };
+}
+
+export function SqlQueryDatasetSourceToJSON(json: any): SqlQueryDatasetSource {
+ return SqlQueryDatasetSourceToJSONTyped(json, false);
+}
+
+export function SqlQueryDatasetSourceToJSONTyped(value?: SqlQueryDatasetSource | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'description': value['description'],
+ 'name': value['name'],
+ 'sql': value['sql'],
+ };
+}
+
diff --git a/src/models/TableInfo.ts b/src/models/TableInfo.ts
new file mode 100644
index 0000000..66ed338
--- /dev/null
+++ b/src/models/TableInfo.ts
@@ -0,0 +1,117 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ColumnInfo } from './ColumnInfo';
+import {
+ ColumnInfoFromJSON,
+ ColumnInfoFromJSONTyped,
+ ColumnInfoToJSON,
+ ColumnInfoToJSONTyped,
+} from './ColumnInfo';
+
+/**
+ * Single table metadata
+ * @export
+ * @interface TableInfo
+ */
+export interface TableInfo {
+ /**
+ *
+ * @type {Array}
+ * @memberof TableInfo
+ */
+ columns?: Array | null;
+ /**
+ *
+ * @type {string}
+ * @memberof TableInfo
+ */
+ connection: string;
+ /**
+ *
+ * @type {string}
+ * @memberof TableInfo
+ */
+ lastSync?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof TableInfo
+ */
+ schema: string;
+ /**
+ *
+ * @type {boolean}
+ * @memberof TableInfo
+ */
+ synced: boolean;
+ /**
+ *
+ * @type {string}
+ * @memberof TableInfo
+ */
+ table: string;
+}
+
+/**
+ * Check if a given object implements the TableInfo interface.
+ */
+export function instanceOfTableInfo(value: object): value is TableInfo {
+ if (!('connection' in value) || value['connection'] === undefined) return false;
+ if (!('schema' in value) || value['schema'] === undefined) return false;
+ if (!('synced' in value) || value['synced'] === undefined) return false;
+ if (!('table' in value) || value['table'] === undefined) return false;
+ return true;
+}
+
+export function TableInfoFromJSON(json: any): TableInfo {
+ return TableInfoFromJSONTyped(json, false);
+}
+
+export function TableInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): TableInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': json['columns'] == null ? undefined : ((json['columns'] as Array).map(ColumnInfoFromJSON)),
+ 'connection': json['connection'],
+ 'lastSync': json['last_sync'] == null ? undefined : json['last_sync'],
+ 'schema': json['schema'],
+ 'synced': json['synced'],
+ 'table': json['table'],
+ };
+}
+
+export function TableInfoToJSON(json: any): TableInfo {
+ return TableInfoToJSONTyped(json, false);
+}
+
+export function TableInfoToJSONTyped(value?: TableInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': value['columns'] == null ? undefined : ((value['columns'] as Array).map(ColumnInfoToJSON)),
+ 'connection': value['connection'],
+ 'last_sync': value['lastSync'],
+ 'schema': value['schema'],
+ 'synced': value['synced'],
+ 'table': value['table'],
+ };
+}
+
diff --git a/src/models/TableProfileResponse.ts b/src/models/TableProfileResponse.ts
new file mode 100644
index 0000000..ab154ac
--- /dev/null
+++ b/src/models/TableProfileResponse.ts
@@ -0,0 +1,119 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { ColumnProfileInfo } from './ColumnProfileInfo';
+import {
+ ColumnProfileInfoFromJSON,
+ ColumnProfileInfoFromJSONTyped,
+ ColumnProfileInfoToJSON,
+ ColumnProfileInfoToJSONTyped,
+} from './ColumnProfileInfo';
+
+/**
+ * Column-level statistics for a synced table. Profiles are computed at sync time
+ * and include per-column cardinality, null counts, and type-specific details.
+ * @export
+ * @interface TableProfileResponse
+ */
+export interface TableProfileResponse {
+ /**
+ * Per-column profile statistics
+ * @type {Array}
+ * @memberof TableProfileResponse
+ */
+ columns: Array;
+ /**
+ * Connection name
+ * @type {string}
+ * @memberof TableProfileResponse
+ */
+ connection: string;
+ /**
+ * Total number of rows in the table
+ * @type {number}
+ * @memberof TableProfileResponse
+ */
+ rowCount: number;
+ /**
+ * Schema name
+ * @type {string}
+ * @memberof TableProfileResponse
+ */
+ schema: string;
+ /**
+ * When the table was last synced
+ * @type {string}
+ * @memberof TableProfileResponse
+ */
+ syncedAt?: string | null;
+ /**
+ * Table name
+ * @type {string}
+ * @memberof TableProfileResponse
+ */
+ table: string;
+}
+
+/**
+ * Check if a given object implements the TableProfileResponse interface.
+ */
+export function instanceOfTableProfileResponse(value: object): value is TableProfileResponse {
+ if (!('columns' in value) || value['columns'] === undefined) return false;
+ if (!('connection' in value) || value['connection'] === undefined) return false;
+ if (!('rowCount' in value) || value['rowCount'] === undefined) return false;
+ if (!('schema' in value) || value['schema'] === undefined) return false;
+ if (!('table' in value) || value['table'] === undefined) return false;
+ return true;
+}
+
+export function TableProfileResponseFromJSON(json: any): TableProfileResponse {
+ return TableProfileResponseFromJSONTyped(json, false);
+}
+
+export function TableProfileResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TableProfileResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': ((json['columns'] as Array).map(ColumnProfileInfoFromJSON)),
+ 'connection': json['connection'],
+ 'rowCount': json['row_count'],
+ 'schema': json['schema'],
+ 'syncedAt': json['synced_at'] == null ? undefined : json['synced_at'],
+ 'table': json['table'],
+ };
+}
+
+export function TableProfileResponseToJSON(json: any): TableProfileResponse {
+ return TableProfileResponseToJSONTyped(json, false);
+}
+
+export function TableProfileResponseToJSONTyped(value?: TableProfileResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': ((value['columns'] as Array).map(ColumnProfileInfoToJSON)),
+ 'connection': value['connection'],
+ 'row_count': value['rowCount'],
+ 'schema': value['schema'],
+ 'synced_at': value['syncedAt'],
+ 'table': value['table'],
+ };
+}
+
diff --git a/src/models/TableRefreshError.ts b/src/models/TableRefreshError.ts
new file mode 100644
index 0000000..978708c
--- /dev/null
+++ b/src/models/TableRefreshError.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Error details for a failed table refresh
+ * @export
+ * @interface TableRefreshError
+ */
+export interface TableRefreshError {
+ /**
+ *
+ * @type {string}
+ * @memberof TableRefreshError
+ */
+ error: string;
+ /**
+ *
+ * @type {string}
+ * @memberof TableRefreshError
+ */
+ schemaName: string;
+ /**
+ *
+ * @type {string}
+ * @memberof TableRefreshError
+ */
+ tableName: string;
+}
+
+/**
+ * Check if a given object implements the TableRefreshError interface.
+ */
+export function instanceOfTableRefreshError(value: object): value is TableRefreshError {
+ if (!('error' in value) || value['error'] === undefined) return false;
+ if (!('schemaName' in value) || value['schemaName'] === undefined) return false;
+ if (!('tableName' in value) || value['tableName'] === undefined) return false;
+ return true;
+}
+
+export function TableRefreshErrorFromJSON(json: any): TableRefreshError {
+ return TableRefreshErrorFromJSONTyped(json, false);
+}
+
+export function TableRefreshErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): TableRefreshError {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'error': json['error'],
+ 'schemaName': json['schema_name'],
+ 'tableName': json['table_name'],
+ };
+}
+
+export function TableRefreshErrorToJSON(json: any): TableRefreshError {
+ return TableRefreshErrorToJSONTyped(json, false);
+}
+
+export function TableRefreshErrorToJSONTyped(value?: TableRefreshError | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'error': value['error'],
+ 'schema_name': value['schemaName'],
+ 'table_name': value['tableName'],
+ };
+}
+
diff --git a/src/models/TableRefreshResult.ts b/src/models/TableRefreshResult.ts
new file mode 100644
index 0000000..565db7c
--- /dev/null
+++ b/src/models/TableRefreshResult.ts
@@ -0,0 +1,118 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+import type { RefreshWarning } from './RefreshWarning';
+import {
+ RefreshWarningFromJSON,
+ RefreshWarningFromJSONTyped,
+ RefreshWarningToJSON,
+ RefreshWarningToJSONTyped,
+} from './RefreshWarning';
+
+/**
+ * Response for single table data refresh
+ * @export
+ * @interface TableRefreshResult
+ */
+export interface TableRefreshResult {
+ /**
+ *
+ * @type {string}
+ * @memberof TableRefreshResult
+ */
+ connectionId: string;
+ /**
+ *
+ * @type {number}
+ * @memberof TableRefreshResult
+ */
+ durationMs: number;
+ /**
+ *
+ * @type {number}
+ * @memberof TableRefreshResult
+ */
+ rowsSynced: number;
+ /**
+ *
+ * @type {string}
+ * @memberof TableRefreshResult
+ */
+ schemaName: string;
+ /**
+ *
+ * @type {string}
+ * @memberof TableRefreshResult
+ */
+ tableName: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof TableRefreshResult
+ */
+ warnings?: Array;
+}
+
+/**
+ * Check if a given object implements the TableRefreshResult interface.
+ */
+export function instanceOfTableRefreshResult(value: object): value is TableRefreshResult {
+ if (!('connectionId' in value) || value['connectionId'] === undefined) return false;
+ if (!('durationMs' in value) || value['durationMs'] === undefined) return false;
+ if (!('rowsSynced' in value) || value['rowsSynced'] === undefined) return false;
+ if (!('schemaName' in value) || value['schemaName'] === undefined) return false;
+ if (!('tableName' in value) || value['tableName'] === undefined) return false;
+ return true;
+}
+
+export function TableRefreshResultFromJSON(json: any): TableRefreshResult {
+ return TableRefreshResultFromJSONTyped(json, false);
+}
+
+export function TableRefreshResultFromJSONTyped(json: any, ignoreDiscriminator: boolean): TableRefreshResult {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'connectionId': json['connection_id'],
+ 'durationMs': json['duration_ms'],
+ 'rowsSynced': json['rows_synced'],
+ 'schemaName': json['schema_name'],
+ 'tableName': json['table_name'],
+ 'warnings': json['warnings'] == null ? undefined : ((json['warnings'] as Array).map(RefreshWarningFromJSON)),
+ };
+}
+
+export function TableRefreshResultToJSON(json: any): TableRefreshResult {
+ return TableRefreshResultToJSONTyped(json, false);
+}
+
+export function TableRefreshResultToJSONTyped(value?: TableRefreshResult | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'connection_id': value['connectionId'],
+ 'duration_ms': value['durationMs'],
+ 'rows_synced': value['rowsSynced'],
+ 'schema_name': value['schemaName'],
+ 'table_name': value['tableName'],
+ 'warnings': value['warnings'] == null ? undefined : ((value['warnings'] as Array).map(RefreshWarningToJSON)),
+ };
+}
+
diff --git a/src/models/TemporalProfileDetail.ts b/src/models/TemporalProfileDetail.ts
new file mode 100644
index 0000000..ccbbf71
--- /dev/null
+++ b/src/models/TemporalProfileDetail.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Date or timestamp column.
+ * @export
+ * @interface TemporalProfileDetail
+ */
+export interface TemporalProfileDetail {
+ /**
+ * Latest value as ISO-8601 string
+ * @type {string}
+ * @memberof TemporalProfileDetail
+ */
+ max: string;
+ /**
+ * Earliest value as ISO-8601 string
+ * @type {string}
+ * @memberof TemporalProfileDetail
+ */
+ min: string;
+}
+
+/**
+ * Check if a given object implements the TemporalProfileDetail interface.
+ */
+export function instanceOfTemporalProfileDetail(value: object): value is TemporalProfileDetail {
+ if (!('max' in value) || value['max'] === undefined) return false;
+ if (!('min' in value) || value['min'] === undefined) return false;
+ return true;
+}
+
+export function TemporalProfileDetailFromJSON(json: any): TemporalProfileDetail {
+ return TemporalProfileDetailFromJSONTyped(json, false);
+}
+
+export function TemporalProfileDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): TemporalProfileDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'max': json['max'],
+ 'min': json['min'],
+ };
+}
+
+export function TemporalProfileDetailToJSON(json: any): TemporalProfileDetail {
+ return TemporalProfileDetailToJSONTyped(json, false);
+}
+
+export function TemporalProfileDetailToJSONTyped(value?: TemporalProfileDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'max': value['max'],
+ 'min': value['min'],
+ };
+}
+
diff --git a/src/models/TextProfileDetail.ts b/src/models/TextProfileDetail.ts
new file mode 100644
index 0000000..f82f725
--- /dev/null
+++ b/src/models/TextProfileDetail.ts
@@ -0,0 +1,84 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * High-cardinality text column (>200 distinct values).
+ * @export
+ * @interface TextProfileDetail
+ */
+export interface TextProfileDetail {
+ /**
+ * Average string length
+ * @type {number}
+ * @memberof TextProfileDetail
+ */
+ avgLength: number;
+ /**
+ * Longest string length in the column
+ * @type {number}
+ * @memberof TextProfileDetail
+ */
+ maxLength: number;
+ /**
+ * Shortest string length in the column
+ * @type {number}
+ * @memberof TextProfileDetail
+ */
+ minLength: number;
+}
+
+/**
+ * Check if a given object implements the TextProfileDetail interface.
+ */
+export function instanceOfTextProfileDetail(value: object): value is TextProfileDetail {
+ if (!('avgLength' in value) || value['avgLength'] === undefined) return false;
+ if (!('maxLength' in value) || value['maxLength'] === undefined) return false;
+ if (!('minLength' in value) || value['minLength'] === undefined) return false;
+ return true;
+}
+
+export function TextProfileDetailFromJSON(json: any): TextProfileDetail {
+ return TextProfileDetailFromJSONTyped(json, false);
+}
+
+export function TextProfileDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): TextProfileDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'avgLength': json['avg_length'],
+ 'maxLength': json['max_length'],
+ 'minLength': json['min_length'],
+ };
+}
+
+export function TextProfileDetailToJSON(json: any): TextProfileDetail {
+ return TextProfileDetailToJSONTyped(json, false);
+}
+
+export function TextProfileDetailToJSONTyped(value?: TextProfileDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'avg_length': value['avgLength'],
+ 'max_length': value['maxLength'],
+ 'min_length': value['minLength'],
+ };
+}
+
diff --git a/src/models/UpdateDatasetRequest.ts b/src/models/UpdateDatasetRequest.ts
new file mode 100644
index 0000000..6b4b4c2
--- /dev/null
+++ b/src/models/UpdateDatasetRequest.ts
@@ -0,0 +1,82 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for PUT /v1/datasets/{id}
+ * @export
+ * @interface UpdateDatasetRequest
+ */
+export interface UpdateDatasetRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateDatasetRequest
+ */
+ label?: string | null;
+ /**
+ * Pin to a specific version, or send null to unpin.
+ * Omit the field entirely to leave pinning unchanged.
+ * @type {number}
+ * @memberof UpdateDatasetRequest
+ */
+ pinnedVersion?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateDatasetRequest
+ */
+ tableName?: string | null;
+}
+
+/**
+ * Check if a given object implements the UpdateDatasetRequest interface.
+ */
+export function instanceOfUpdateDatasetRequest(value: object): value is UpdateDatasetRequest {
+ return true;
+}
+
+export function UpdateDatasetRequestFromJSON(json: any): UpdateDatasetRequest {
+ return UpdateDatasetRequestFromJSONTyped(json, false);
+}
+
+export function UpdateDatasetRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateDatasetRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'label': json['label'] == null ? undefined : json['label'],
+ 'pinnedVersion': json['pinned_version'] == null ? undefined : json['pinned_version'],
+ 'tableName': json['table_name'] == null ? undefined : json['table_name'],
+ };
+}
+
+export function UpdateDatasetRequestToJSON(json: any): UpdateDatasetRequest {
+ return UpdateDatasetRequestToJSONTyped(json, false);
+}
+
+export function UpdateDatasetRequestToJSONTyped(value?: UpdateDatasetRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'label': value['label'],
+ 'pinned_version': value['pinnedVersion'],
+ 'table_name': value['tableName'],
+ };
+}
+
diff --git a/src/models/UpdateDatasetResponse.ts b/src/models/UpdateDatasetResponse.ts
new file mode 100644
index 0000000..4949f10
--- /dev/null
+++ b/src/models/UpdateDatasetResponse.ts
@@ -0,0 +1,110 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for PUT /v1/datasets/{id}
+ * @export
+ * @interface UpdateDatasetResponse
+ */
+export interface UpdateDatasetResponse {
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateDatasetResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateDatasetResponse
+ */
+ label: string;
+ /**
+ *
+ * @type {number}
+ * @memberof UpdateDatasetResponse
+ */
+ latestVersion: number;
+ /**
+ *
+ * @type {number}
+ * @memberof UpdateDatasetResponse
+ */
+ pinnedVersion?: number | null;
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateDatasetResponse
+ */
+ tableName: string;
+ /**
+ *
+ * @type {Date}
+ * @memberof UpdateDatasetResponse
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the UpdateDatasetResponse interface.
+ */
+export function instanceOfUpdateDatasetResponse(value: object): value is UpdateDatasetResponse {
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('label' in value) || value['label'] === undefined) return false;
+ if (!('latestVersion' in value) || value['latestVersion'] === undefined) return false;
+ if (!('tableName' in value) || value['tableName'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function UpdateDatasetResponseFromJSON(json: any): UpdateDatasetResponse {
+ return UpdateDatasetResponseFromJSONTyped(json, false);
+}
+
+export function UpdateDatasetResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateDatasetResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'id': json['id'],
+ 'label': json['label'],
+ 'latestVersion': json['latest_version'],
+ 'pinnedVersion': json['pinned_version'] == null ? undefined : json['pinned_version'],
+ 'tableName': json['table_name'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function UpdateDatasetResponseToJSON(json: any): UpdateDatasetResponse {
+ return UpdateDatasetResponseToJSONTyped(json, false);
+}
+
+export function UpdateDatasetResponseToJSONTyped(value?: UpdateDatasetResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'id': value['id'],
+ 'label': value['label'],
+ 'latest_version': value['latestVersion'],
+ 'pinned_version': value['pinnedVersion'],
+ 'table_name': value['tableName'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/UpdateSavedQueryRequest.ts b/src/models/UpdateSavedQueryRequest.ts
new file mode 100644
index 0000000..92f807b
--- /dev/null
+++ b/src/models/UpdateSavedQueryRequest.ts
@@ -0,0 +1,105 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for PUT /v1/queries/{id}
+ * @export
+ * @interface UpdateSavedQueryRequest
+ */
+export interface UpdateSavedQueryRequest {
+ /**
+ * Override the auto-detected category. Send `null` to clear (revert to auto).
+ * @type {string}
+ * @memberof UpdateSavedQueryRequest
+ */
+ categoryOverride?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateSavedQueryRequest
+ */
+ description?: string | null;
+ /**
+ * Optional new name. When omitted the existing name is preserved.
+ * @type {string}
+ * @memberof UpdateSavedQueryRequest
+ */
+ name?: string | null;
+ /**
+ * Optional new SQL. When omitted the existing SQL is preserved.
+ * @type {string}
+ * @memberof UpdateSavedQueryRequest
+ */
+ sql?: string | null;
+ /**
+ * User annotation for table size. Send `null` to clear.
+ * @type {string}
+ * @memberof UpdateSavedQueryRequest
+ */
+ tableSizeOverride?: string | null;
+ /**
+ *
+ * @type {Array}
+ * @memberof UpdateSavedQueryRequest
+ */
+ tags?: Array | null;
+}
+
+/**
+ * Check if a given object implements the UpdateSavedQueryRequest interface.
+ */
+export function instanceOfUpdateSavedQueryRequest(value: object): value is UpdateSavedQueryRequest {
+ return true;
+}
+
+export function UpdateSavedQueryRequestFromJSON(json: any): UpdateSavedQueryRequest {
+ return UpdateSavedQueryRequestFromJSONTyped(json, false);
+}
+
+export function UpdateSavedQueryRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateSavedQueryRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'categoryOverride': json['category_override'] == null ? undefined : json['category_override'],
+ 'description': json['description'] == null ? undefined : json['description'],
+ 'name': json['name'] == null ? undefined : json['name'],
+ 'sql': json['sql'] == null ? undefined : json['sql'],
+ 'tableSizeOverride': json['table_size_override'] == null ? undefined : json['table_size_override'],
+ 'tags': json['tags'] == null ? undefined : json['tags'],
+ };
+}
+
+export function UpdateSavedQueryRequestToJSON(json: any): UpdateSavedQueryRequest {
+ return UpdateSavedQueryRequestToJSONTyped(json, false);
+}
+
+export function UpdateSavedQueryRequestToJSONTyped(value?: UpdateSavedQueryRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'category_override': value['categoryOverride'],
+ 'description': value['description'],
+ 'name': value['name'],
+ 'sql': value['sql'],
+ 'table_size_override': value['tableSizeOverride'],
+ 'tags': value['tags'],
+ };
+}
+
diff --git a/src/models/UpdateSecretRequest.ts b/src/models/UpdateSecretRequest.ts
new file mode 100644
index 0000000..4cdc0f2
--- /dev/null
+++ b/src/models/UpdateSecretRequest.ts
@@ -0,0 +1,66 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Request body for PUT /secrets/{name}
+ * @export
+ * @interface UpdateSecretRequest
+ */
+export interface UpdateSecretRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateSecretRequest
+ */
+ value: string;
+}
+
+/**
+ * Check if a given object implements the UpdateSecretRequest interface.
+ */
+export function instanceOfUpdateSecretRequest(value: object): value is UpdateSecretRequest {
+ if (!('value' in value) || value['value'] === undefined) return false;
+ return true;
+}
+
+export function UpdateSecretRequestFromJSON(json: any): UpdateSecretRequest {
+ return UpdateSecretRequestFromJSONTyped(json, false);
+}
+
+export function UpdateSecretRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateSecretRequest {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'value': json['value'],
+ };
+}
+
+export function UpdateSecretRequestToJSON(json: any): UpdateSecretRequest {
+ return UpdateSecretRequestToJSONTyped(json, false);
+}
+
+export function UpdateSecretRequestToJSONTyped(value?: UpdateSecretRequest | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'value': value['value'],
+ };
+}
+
diff --git a/src/models/UpdateSecretResponse.ts b/src/models/UpdateSecretResponse.ts
new file mode 100644
index 0000000..65dc43a
--- /dev/null
+++ b/src/models/UpdateSecretResponse.ts
@@ -0,0 +1,75 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for PUT /secrets/{name}
+ * @export
+ * @interface UpdateSecretResponse
+ */
+export interface UpdateSecretResponse {
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateSecretResponse
+ */
+ name: string;
+ /**
+ *
+ * @type {Date}
+ * @memberof UpdateSecretResponse
+ */
+ updatedAt: Date;
+}
+
+/**
+ * Check if a given object implements the UpdateSecretResponse interface.
+ */
+export function instanceOfUpdateSecretResponse(value: object): value is UpdateSecretResponse {
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
+ return true;
+}
+
+export function UpdateSecretResponseFromJSON(json: any): UpdateSecretResponse {
+ return UpdateSecretResponseFromJSONTyped(json, false);
+}
+
+export function UpdateSecretResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateSecretResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'name': json['name'],
+ 'updatedAt': (new Date(json['updated_at'])),
+ };
+}
+
+export function UpdateSecretResponseToJSON(json: any): UpdateSecretResponse {
+ return UpdateSecretResponseToJSONTyped(json, false);
+}
+
+export function UpdateSecretResponseToJSONTyped(value?: UpdateSecretResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'name': value['name'],
+ 'updated_at': value['updatedAt'].toISOString(),
+ };
+}
+
diff --git a/src/models/UploadDatasetSource.ts b/src/models/UploadDatasetSource.ts
new file mode 100644
index 0000000..b115cef
--- /dev/null
+++ b/src/models/UploadDatasetSource.ts
@@ -0,0 +1,83 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Create dataset from a previously uploaded file
+ * @export
+ * @interface UploadDatasetSource
+ */
+export interface UploadDatasetSource {
+ /**
+ * Optional explicit column definitions. Keys are column names, values are type specs.
+ * When provided, the schema is built from these definitions instead of being inferred.
+ * @type {{ [key: string]: string; }}
+ * @memberof UploadDatasetSource
+ */
+ columns?: { [key: string]: string; };
+ /**
+ *
+ * @type {string}
+ * @memberof UploadDatasetSource
+ */
+ format?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof UploadDatasetSource
+ */
+ uploadId: string;
+}
+
+/**
+ * Check if a given object implements the UploadDatasetSource interface.
+ */
+export function instanceOfUploadDatasetSource(value: object): value is UploadDatasetSource {
+ if (!('uploadId' in value) || value['uploadId'] === undefined) return false;
+ return true;
+}
+
+export function UploadDatasetSourceFromJSON(json: any): UploadDatasetSource {
+ return UploadDatasetSourceFromJSONTyped(json, false);
+}
+
+export function UploadDatasetSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): UploadDatasetSource {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': json['columns'] == null ? undefined : json['columns'],
+ 'format': json['format'] == null ? undefined : json['format'],
+ 'uploadId': json['upload_id'],
+ };
+}
+
+export function UploadDatasetSourceToJSON(json: any): UploadDatasetSource {
+ return UploadDatasetSourceToJSONTyped(json, false);
+}
+
+export function UploadDatasetSourceToJSONTyped(value?: UploadDatasetSource | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': value['columns'],
+ 'format': value['format'],
+ 'upload_id': value['uploadId'],
+ };
+}
+
diff --git a/src/models/UploadInfo.ts b/src/models/UploadInfo.ts
new file mode 100644
index 0000000..781c4a5
--- /dev/null
+++ b/src/models/UploadInfo.ts
@@ -0,0 +1,101 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Single upload info for listing
+ * @export
+ * @interface UploadInfo
+ */
+export interface UploadInfo {
+ /**
+ *
+ * @type {string}
+ * @memberof UploadInfo
+ */
+ contentType?: string | null;
+ /**
+ *
+ * @type {Date}
+ * @memberof UploadInfo
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof UploadInfo
+ */
+ id: string;
+ /**
+ *
+ * @type {number}
+ * @memberof UploadInfo
+ */
+ sizeBytes: number;
+ /**
+ *
+ * @type {string}
+ * @memberof UploadInfo
+ */
+ status: string;
+}
+
+/**
+ * Check if a given object implements the UploadInfo interface.
+ */
+export function instanceOfUploadInfo(value: object): value is UploadInfo {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('sizeBytes' in value) || value['sizeBytes'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ return true;
+}
+
+export function UploadInfoFromJSON(json: any): UploadInfo {
+ return UploadInfoFromJSONTyped(json, false);
+}
+
+export function UploadInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): UploadInfo {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'contentType': json['content_type'] == null ? undefined : json['content_type'],
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'sizeBytes': json['size_bytes'],
+ 'status': json['status'],
+ };
+}
+
+export function UploadInfoToJSON(json: any): UploadInfo {
+ return UploadInfoToJSONTyped(json, false);
+}
+
+export function UploadInfoToJSONTyped(value?: UploadInfo | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'content_type': value['contentType'],
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'size_bytes': value['sizeBytes'],
+ 'status': value['status'],
+ };
+}
+
diff --git a/src/models/UploadResponse.ts b/src/models/UploadResponse.ts
new file mode 100644
index 0000000..b9001d2
--- /dev/null
+++ b/src/models/UploadResponse.ts
@@ -0,0 +1,101 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Response body for POST /v1/files
+ * @export
+ * @interface UploadResponse
+ */
+export interface UploadResponse {
+ /**
+ *
+ * @type {string}
+ * @memberof UploadResponse
+ */
+ contentType?: string | null;
+ /**
+ *
+ * @type {Date}
+ * @memberof UploadResponse
+ */
+ createdAt: Date;
+ /**
+ *
+ * @type {string}
+ * @memberof UploadResponse
+ */
+ id: string;
+ /**
+ *
+ * @type {number}
+ * @memberof UploadResponse
+ */
+ sizeBytes: number;
+ /**
+ *
+ * @type {string}
+ * @memberof UploadResponse
+ */
+ status: string;
+}
+
+/**
+ * Check if a given object implements the UploadResponse interface.
+ */
+export function instanceOfUploadResponse(value: object): value is UploadResponse {
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
+ if (!('id' in value) || value['id'] === undefined) return false;
+ if (!('sizeBytes' in value) || value['sizeBytes'] === undefined) return false;
+ if (!('status' in value) || value['status'] === undefined) return false;
+ return true;
+}
+
+export function UploadResponseFromJSON(json: any): UploadResponse {
+ return UploadResponseFromJSONTyped(json, false);
+}
+
+export function UploadResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): UploadResponse {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'contentType': json['content_type'] == null ? undefined : json['content_type'],
+ 'createdAt': (new Date(json['created_at'])),
+ 'id': json['id'],
+ 'sizeBytes': json['size_bytes'],
+ 'status': json['status'],
+ };
+}
+
+export function UploadResponseToJSON(json: any): UploadResponse {
+ return UploadResponseToJSONTyped(json, false);
+}
+
+export function UploadResponseToJSONTyped(value?: UploadResponse | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'content_type': value['contentType'],
+ 'created_at': value['createdAt'].toISOString(),
+ 'id': value['id'],
+ 'size_bytes': value['sizeBytes'],
+ 'status': value['status'],
+ };
+}
+
diff --git a/src/models/UrlDatasetSource.ts b/src/models/UrlDatasetSource.ts
new file mode 100644
index 0000000..9b4f02f
--- /dev/null
+++ b/src/models/UrlDatasetSource.ts
@@ -0,0 +1,82 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ * Create dataset from an external HTTP URL
+ * @export
+ * @interface UrlDatasetSource
+ */
+export interface UrlDatasetSource {
+ /**
+ * Optional explicit column definitions. Keys are column names, values are type specs.
+ * @type {{ [key: string]: string; }}
+ * @memberof UrlDatasetSource
+ */
+ columns?: { [key: string]: string; };
+ /**
+ *
+ * @type {string}
+ * @memberof UrlDatasetSource
+ */
+ format?: string | null;
+ /**
+ *
+ * @type {string}
+ * @memberof UrlDatasetSource
+ */
+ url: string;
+}
+
+/**
+ * Check if a given object implements the UrlDatasetSource interface.
+ */
+export function instanceOfUrlDatasetSource(value: object): value is UrlDatasetSource {
+ if (!('url' in value) || value['url'] === undefined) return false;
+ return true;
+}
+
+export function UrlDatasetSourceFromJSON(json: any): UrlDatasetSource {
+ return UrlDatasetSourceFromJSONTyped(json, false);
+}
+
+export function UrlDatasetSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): UrlDatasetSource {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'columns': json['columns'] == null ? undefined : json['columns'],
+ 'format': json['format'] == null ? undefined : json['format'],
+ 'url': json['url'],
+ };
+}
+
+export function UrlDatasetSourceToJSON(json: any): UrlDatasetSource {
+ return UrlDatasetSourceToJSONTyped(json, false);
+}
+
+export function UrlDatasetSourceToJSONTyped(value?: UrlDatasetSource | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'columns': value['columns'],
+ 'format': value['format'],
+ 'url': value['url'],
+ };
+}
+
diff --git a/src/models/WorkspaceDetail.ts b/src/models/WorkspaceDetail.ts
new file mode 100644
index 0000000..25e9466
--- /dev/null
+++ b/src/models/WorkspaceDetail.ts
@@ -0,0 +1,93 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface WorkspaceDetail
+ */
+export interface WorkspaceDetail {
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceDetail
+ */
+ publicId: string;
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceDetail
+ */
+ name: string;
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceDetail
+ */
+ provisionStatus: string;
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceDetail
+ */
+ namespace: string;
+}
+
+/**
+ * Check if a given object implements the WorkspaceDetail interface.
+ */
+export function instanceOfWorkspaceDetail(value: object): value is WorkspaceDetail {
+ if (!('publicId' in value) || value['publicId'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('provisionStatus' in value) || value['provisionStatus'] === undefined) return false;
+ if (!('namespace' in value) || value['namespace'] === undefined) return false;
+ return true;
+}
+
+export function WorkspaceDetailFromJSON(json: any): WorkspaceDetail {
+ return WorkspaceDetailFromJSONTyped(json, false);
+}
+
+export function WorkspaceDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): WorkspaceDetail {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'publicId': json['public_id'],
+ 'name': json['name'],
+ 'provisionStatus': json['provision_status'],
+ 'namespace': json['namespace'],
+ };
+}
+
+export function WorkspaceDetailToJSON(json: any): WorkspaceDetail {
+ return WorkspaceDetailToJSONTyped(json, false);
+}
+
+export function WorkspaceDetailToJSONTyped(value?: WorkspaceDetail | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'public_id': value['publicId'],
+ 'name': value['name'],
+ 'provision_status': value['provisionStatus'],
+ 'namespace': value['namespace'],
+ };
+}
+
diff --git a/src/models/WorkspaceListItem.ts b/src/models/WorkspaceListItem.ts
new file mode 100644
index 0000000..8446619
--- /dev/null
+++ b/src/models/WorkspaceListItem.ts
@@ -0,0 +1,111 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import { mapValues } from '../runtime';
+/**
+ *
+ * @export
+ * @interface WorkspaceListItem
+ */
+export interface WorkspaceListItem {
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceListItem
+ */
+ publicId: string;
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceListItem
+ */
+ name: string;
+ /**
+ *
+ * @type {boolean}
+ * @memberof WorkspaceListItem
+ */
+ active: boolean;
+ /**
+ *
+ * @type {boolean}
+ * @memberof WorkspaceListItem
+ */
+ favorite: boolean;
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceListItem
+ */
+ provisionStatus: string;
+ /**
+ *
+ * @type {string}
+ * @memberof WorkspaceListItem
+ */
+ namespace: string;
+}
+
+/**
+ * Check if a given object implements the WorkspaceListItem interface.
+ */
+export function instanceOfWorkspaceListItem(value: object): value is WorkspaceListItem {
+ if (!('publicId' in value) || value['publicId'] === undefined) return false;
+ if (!('name' in value) || value['name'] === undefined) return false;
+ if (!('active' in value) || value['active'] === undefined) return false;
+ if (!('favorite' in value) || value['favorite'] === undefined) return false;
+ if (!('provisionStatus' in value) || value['provisionStatus'] === undefined) return false;
+ if (!('namespace' in value) || value['namespace'] === undefined) return false;
+ return true;
+}
+
+export function WorkspaceListItemFromJSON(json: any): WorkspaceListItem {
+ return WorkspaceListItemFromJSONTyped(json, false);
+}
+
+export function WorkspaceListItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): WorkspaceListItem {
+ if (json == null) {
+ return json;
+ }
+ return {
+
+ 'publicId': json['public_id'],
+ 'name': json['name'],
+ 'active': json['active'],
+ 'favorite': json['favorite'],
+ 'provisionStatus': json['provision_status'],
+ 'namespace': json['namespace'],
+ };
+}
+
+export function WorkspaceListItemToJSON(json: any): WorkspaceListItem {
+ return WorkspaceListItemToJSONTyped(json, false);
+}
+
+export function WorkspaceListItemToJSONTyped(value?: WorkspaceListItem | null, ignoreDiscriminator: boolean = false): any {
+ if (value == null) {
+ return value;
+ }
+
+ return {
+
+ 'public_id': value['publicId'],
+ 'name': value['name'],
+ 'active': value['active'],
+ 'favorite': value['favorite'],
+ 'provision_status': value['provisionStatus'],
+ 'namespace': value['namespace'],
+ };
+}
+
diff --git a/src/models/index.ts b/src/models/index.ts
new file mode 100644
index 0000000..57846ea
--- /dev/null
+++ b/src/models/index.ts
@@ -0,0 +1,92 @@
+/* tslint:disable */
+/* eslint-disable */
+export * from './ApiErrorDetail';
+export * from './ApiErrorResponse';
+export * from './BooleanProfileDetail';
+export * from './CategoricalProfileDetail';
+export * from './CategoryValueInfo';
+export * from './ColumnInfo';
+export * from './ColumnProfileDetail';
+export * from './ColumnProfileDetailOneOf';
+export * from './ColumnProfileDetailOneOf1';
+export * from './ColumnProfileDetailOneOf2';
+export * from './ColumnProfileDetailOneOf3';
+export * from './ColumnProfileDetailOneOf4';
+export * from './ColumnProfileInfo';
+export * from './ColumnTypeSpec';
+export * from './ConnectionHealthResponse';
+export * from './ConnectionInfo';
+export * from './ConnectionRefreshResult';
+export * from './ConnectionSchemaError';
+export * from './ConnectionTypeDetail';
+export * from './ConnectionTypeSummary';
+export * from './CreateConnectionRequest';
+export * from './CreateConnectionResponse';
+export * from './CreateDatasetRequest';
+export * from './CreateDatasetResponse';
+export * from './CreateIndexRequest';
+export * from './CreateSavedQueryRequest';
+export * from './CreateSecretRequest';
+export * from './CreateSecretResponse';
+export * from './CreateWorkspaceRequest';
+export * from './CreateWorkspaceResponse';
+export * from './DatasetSource';
+export * from './DatasetSummary';
+export * from './DatasetVersionSummary';
+export * from './DiscoveryStatus';
+export * from './ExecuteSavedQueryRequest';
+export * from './GetConnectionResponse';
+export * from './GetDatasetResponse';
+export * from './GetResultResponse';
+export * from './GetSecretResponse';
+export * from './IndexInfoResponse';
+export * from './IndexStatus';
+export * from './InformationSchemaResponse';
+export * from './InlineData';
+export * from './InlineDatasetSource';
+export * from './ListConnectionTypesResponse';
+export * from './ListConnectionsResponse';
+export * from './ListDatasetVersionsResponse';
+export * from './ListDatasetsResponse';
+export * from './ListIndexesResponse';
+export * from './ListQueryRunsResponse';
+export * from './ListResultsResponse';
+export * from './ListSavedQueriesResponse';
+export * from './ListSavedQueryVersionsResponse';
+export * from './ListSecretsResponse';
+export * from './ListUploadsResponse';
+export * from './ListWorkspacesResponse';
+export * from './ModelError';
+export * from './NumericProfileDetail';
+export * from './QueryRequest';
+export * from './QueryResponse';
+export * from './QueryRunInfo';
+export * from './RefreshDatasetResponse';
+export * from './RefreshRequest';
+export * from './RefreshResponse';
+export * from './RefreshWarning';
+export * from './ResultInfo';
+export * from './SavedQueryDatasetSource';
+export * from './SavedQueryDetail';
+export * from './SavedQuerySummary';
+export * from './SavedQueryVersionInfo';
+export * from './SchemaRefreshResult';
+export * from './SecretMetadataResponse';
+export * from './SqlQueryDatasetSource';
+export * from './TableInfo';
+export * from './TableProfileResponse';
+export * from './TableRefreshError';
+export * from './TableRefreshResult';
+export * from './TemporalProfileDetail';
+export * from './TextProfileDetail';
+export * from './UpdateDatasetRequest';
+export * from './UpdateDatasetResponse';
+export * from './UpdateSavedQueryRequest';
+export * from './UpdateSecretRequest';
+export * from './UpdateSecretResponse';
+export * from './UploadDatasetSource';
+export * from './UploadInfo';
+export * from './UploadResponse';
+export * from './UrlDatasetSource';
+export * from './WorkspaceDetail';
+export * from './WorkspaceListItem';
diff --git a/src/runtime.ts b/src/runtime.ts
new file mode 100644
index 0000000..9b69db1
--- /dev/null
+++ b/src/runtime.ts
@@ -0,0 +1,432 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Hotdata API
+ * Powerful data platform API for datasets, queries, and analytics.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Contact: developers@hotdata.dev
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+export const BASE_PATH = "https://app.hotdata.dev".replace(/\/+$/, "");
+
+export interface ConfigurationParameters {
+ basePath?: string; // override base path
+ fetchApi?: FetchAPI; // override for fetch implementation
+ middleware?: Middleware[]; // middleware to apply before/after fetch requests
+ queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings
+ username?: string; // parameter for basic security
+ password?: string; // parameter for basic security
+ apiKey?: string | Promise | ((name: string) => string | Promise); // parameter for apiKey security
+ accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security
+ headers?: HTTPHeaders; //header params we want to use on every request
+ credentials?: RequestCredentials; //value for the credentials param we want to use on each request
+}
+
+export class Configuration {
+ constructor(private configuration: ConfigurationParameters = {}) {}
+
+ set config(configuration: Configuration) {
+ this.configuration = configuration;
+ }
+
+ get basePath(): string {
+ return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;
+ }
+
+ get fetchApi(): FetchAPI | undefined {
+ return this.configuration.fetchApi;
+ }
+
+ get middleware(): Middleware[] {
+ return this.configuration.middleware || [];
+ }
+
+ get queryParamsStringify(): (params: HTTPQuery) => string {
+ return this.configuration.queryParamsStringify || querystring;
+ }
+
+ get username(): string | undefined {
+ return this.configuration.username;
+ }
+
+ get password(): string | undefined {
+ return this.configuration.password;
+ }
+
+ get apiKey(): ((name: string) => string | Promise) | undefined {
+ const apiKey = this.configuration.apiKey;
+ if (apiKey) {
+ return typeof apiKey === 'function' ? apiKey : () => apiKey;
+ }
+ return undefined;
+ }
+
+ get accessToken(): ((name?: string, scopes?: string[]) => string | Promise