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) | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + + private static readonly jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i'); + private middleware: Middleware[]; + + constructor(protected configuration = DefaultConfig) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware(this: T, ...preMiddlewares: Array) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware(this: T, ...postMiddlewares: Array) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && (response.status >= 200 && response.status < 300)) { + return response; + } + throw new ResponseError(response, 'Response returned an error code'); + } + + private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + + const headers = Object.assign({}, this.configuration.headers, context.headers); + Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {}); + + const initOverrideFn = + typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })) + }; + + let body: any; + if (isFormData(overriddenInit.body) + || (overriddenInit.body instanceof URLSearchParams) + || isBlob(overriddenInit.body)) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body + }; + + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + }) || fetchParams; + } + } + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + }) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response'); + } else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + }) || response; + } + } + return response; + } + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +}; + +function isBlob(value: any): value is Blob { + return typeof Blob !== 'undefined' && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== "undefined" && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: "ResponseError" = "ResponseError"; + constructor(public response: Response, msg?: string) { + super(msg); + } +} + +export class FetchError extends Error { + override name: "FetchError" = "FetchError"; + constructor(public cause: Error, msg?: string) { + super(msg); + } +} + +export class RequiredError extends Error { + override name: "RequiredError" = "RequiredError"; + constructor(public field: string, msg?: string) { + super(msg); + } +} + +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; + +export type Json = any; +export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { [key: string]: string | number | null | boolean | Array | Set | HTTPQuery }; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody }; +export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; + +export type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function querystring(params: HTTPQuery, prefix: string = ''): string { + return Object.keys(params) + .map(key => querystringSingleKey(key, params[key], prefix)) + .filter(part => part.length > 0) + .join('&'); +} + +function querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array | Set | HTTPQuery, keyPrefix: string = ''): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} + +export function exists(json: any, key: string) { + const value = json[key]; + return value !== null && value !== undefined; +} + +export function mapValues(data: any, fn: (item: any) => any) { + const result: { [key: string]: any } = {}; + for (const key of Object.keys(data)) { + result[key] = fn(data[key]); + } + return result; +} + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string; +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + }; +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + }; +} diff --git a/tsconfig.esm.json b/tsconfig.esm.json new file mode 100644 index 0000000..2c0331c --- /dev/null +++ b/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "esnext", + "outDir": "dist/esm" + } +} diff --git a/tsconfig.json b/tsconfig.json index 78c4dd0..250280d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,16 @@ { "compilerOptions": { - "target": "ES2022", - "module": "Node16", - "moduleResolution": "Node16", "declaration": true, + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", "outDir": "dist", - "rootDir": "src", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true + "typeRoots": [ + "node_modules/@types" + ] }, - "include": ["src"] + "exclude": [ + "dist", + "node_modules" + ] }