diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 07c0d64..40bf6f8 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -18,6 +18,9 @@ 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 @@ -42,6 +45,7 @@ docs/InformationSchemaApi.md docs/InformationSchemaResponse.md docs/InlineData.md docs/InlineDatasetSource.md +docs/ListConnectionTypesResponse.md docs/ListConnectionsResponse.md docs/ListDatasetsResponse.md docs/ListQueryRunsResponse.md @@ -89,6 +93,7 @@ docs/WorkspaceDetail.md docs/WorkspaceListItem.md docs/WorkspacesApi.md src/apis/configuration.rs +src/apis/connection_types_api.rs src/apis/connections_api.rs src/apis/datasets_api.rs src/apis/information_schema_api.rs @@ -120,6 +125,8 @@ src/models/connection_health_response.rs src/models/connection_info.rs src/models/connection_refresh_result.rs src/models/connection_schema_error.rs +src/models/connection_type_detail.rs +src/models/connection_type_summary.rs src/models/create_connection_request.rs src/models/create_connection_response.rs src/models/create_dataset_request.rs @@ -141,6 +148,7 @@ src/models/get_secret_response.rs src/models/information_schema_response.rs src/models/inline_data.rs src/models/inline_dataset_source.rs +src/models/list_connection_types_response.rs src/models/list_connections_response.rs src/models/list_datasets_response.rs src/models/list_query_runs_response.rs diff --git a/docs/ConnectionTypeDetail.md b/docs/ConnectionTypeDetail.md new file mode 100644 index 0000000..b5b36c4 --- /dev/null +++ b/docs/ConnectionTypeDetail.md @@ -0,0 +1,14 @@ +# ConnectionTypeDetail + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**auth** | Option<**serde_json::Value**> | | [optional] +**config_schema** | Option<**serde_json::Value**> | | [optional] +**label** | **String** | | +**name** | **String** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ConnectionTypeSummary.md b/docs/ConnectionTypeSummary.md new file mode 100644 index 0000000..3937178 --- /dev/null +++ b/docs/ConnectionTypeSummary.md @@ -0,0 +1,12 @@ +# ConnectionTypeSummary + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**label** | **String** | | +**name** | **String** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ConnectionTypesApi.md b/docs/ConnectionTypesApi.md new file mode 100644 index 0000000..03ee407 --- /dev/null +++ b/docs/ConnectionTypesApi.md @@ -0,0 +1,67 @@ +# \ConnectionTypesApi + +All URIs are relative to *https://app.hotdata.dev* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_connection_type**](ConnectionTypesApi.md#get_connection_type) | **GET** /v1/connection-types/{name} | Get connection type details +[**list_connection_types**](ConnectionTypesApi.md#list_connection_types) | **GET** /v1/connection-types | List connection types + + + +## get_connection_type + +> models::ConnectionTypeDetail get_connection_type(name) +Get connection type details + +Get configuration schema and authentication requirements for a specific connection type. + +### Parameters + + +Name | Type | Description | Required | Notes +------------- | ------------- | ------------- | ------------- | ------------- +**name** | **String** | Connection type name (e.g. postgres, mysql, snowflake) | [required] | + +### Return type + +[**models::ConnectionTypeDetail**](ConnectionTypeDetail.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +## list_connection_types + +> models::ListConnectionTypesResponse list_connection_types() +List connection types + +List all available connection types, including native sources and FlightDLT services. + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**models::ListConnectionTypesResponse**](ListConnectionTypesResponse.md) + +### Authorization + +[BearerAuth](../README.md#BearerAuth) + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/ListConnectionTypesResponse.md b/docs/ListConnectionTypesResponse.md new file mode 100644 index 0000000..b310c5c --- /dev/null +++ b/docs/ListConnectionTypesResponse.md @@ -0,0 +1,11 @@ +# ListConnectionTypesResponse + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**connection_types** | [**Vec**](ConnectionTypeSummary.md) | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/src/apis/connection_types_api.rs b/src/apis/connection_types_api.rs new file mode 100644 index 0000000..0f607c2 --- /dev/null +++ b/src/apis/connection_types_api.rs @@ -0,0 +1,111 @@ +/* + * HotData API + * + * Powerful data platform API for datasets, queries, and analytics. + * + * The version of the OpenAPI document: 1.0.0 + * Contact: developers@hotdata.dev + * Generated by: https://openapi-generator.tech + */ + + +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; +use crate::{apis::ResponseContent, models}; +use super::{Error, configuration, ContentType}; + + +/// struct for typed errors of method [`get_connection_type`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetConnectionTypeError { + Status404(models::ApiErrorResponse), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`list_connection_types`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ListConnectionTypesError { + UnknownValue(serde_json::Value), +} + + +/// Get configuration schema and authentication requirements for a specific connection type. +pub async fn get_connection_type(configuration: &configuration::Configuration, name: &str) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_name = name; + + let uri_str = format!("{}/v1/connection-types/{name}", configuration.base_path, name=crate::apis::urlencode(p_path_name)); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ConnectionTypeDetail`"))), + ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ConnectionTypeDetail`")))), + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { status, content, entity })) + } +} + +/// List all available connection types, including native sources and FlightDLT services. +pub async fn list_connection_types(configuration: &configuration::Configuration, ) -> Result> { + + let uri_str = format!("{}/v1/connection-types", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListConnectionTypesResponse`"))), + ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListConnectionTypesResponse`")))), + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { status, content, entity })) + } +} + diff --git a/src/apis/mod.rs b/src/apis/mod.rs index 74fe0be..0363b08 100644 --- a/src/apis/mod.rs +++ b/src/apis/mod.rs @@ -111,6 +111,7 @@ impl From<&str> for ContentType { } } +pub mod connection_types_api; pub mod connections_api; pub mod datasets_api; pub mod information_schema_api; diff --git a/src/models/connection_type_detail.rs b/src/models/connection_type_detail.rs new file mode 100644 index 0000000..fed792c --- /dev/null +++ b/src/models/connection_type_detail.rs @@ -0,0 +1,36 @@ +/* + * HotData API + * + * Powerful data platform API for datasets, queries, and analytics. + * + * The version of the OpenAPI document: 1.0.0 + * Contact: developers@hotdata.dev + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ConnectionTypeDetail { + #[serde(rename = "auth", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub auth: Option>, + #[serde(rename = "config_schema", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")] + pub config_schema: Option>, + #[serde(rename = "label")] + pub label: String, + #[serde(rename = "name")] + pub name: String, +} + +impl ConnectionTypeDetail { + pub fn new(label: String, name: String) -> ConnectionTypeDetail { + ConnectionTypeDetail { + auth: None, + config_schema: None, + label, + name, + } + } +} + diff --git a/src/models/connection_type_summary.rs b/src/models/connection_type_summary.rs new file mode 100644 index 0000000..ede44e2 --- /dev/null +++ b/src/models/connection_type_summary.rs @@ -0,0 +1,30 @@ +/* + * HotData API + * + * Powerful data platform API for datasets, queries, and analytics. + * + * The version of the OpenAPI document: 1.0.0 + * Contact: developers@hotdata.dev + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ConnectionTypeSummary { + #[serde(rename = "label")] + pub label: String, + #[serde(rename = "name")] + pub name: String, +} + +impl ConnectionTypeSummary { + pub fn new(label: String, name: String) -> ConnectionTypeSummary { + ConnectionTypeSummary { + label, + name, + } + } +} + diff --git a/src/models/list_connection_types_response.rs b/src/models/list_connection_types_response.rs new file mode 100644 index 0000000..12ffd33 --- /dev/null +++ b/src/models/list_connection_types_response.rs @@ -0,0 +1,27 @@ +/* + * HotData API + * + * Powerful data platform API for datasets, queries, and analytics. + * + * The version of the OpenAPI document: 1.0.0 + * Contact: developers@hotdata.dev + * Generated by: https://openapi-generator.tech + */ + +use crate::models; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ListConnectionTypesResponse { + #[serde(rename = "connection_types")] + pub connection_types: Vec, +} + +impl ListConnectionTypesResponse { + pub fn new(connection_types: Vec) -> ListConnectionTypesResponse { + ListConnectionTypesResponse { + connection_types, + } + } +} + diff --git a/src/models/mod.rs b/src/models/mod.rs index f0b3998..1251a97 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -34,6 +34,10 @@ pub mod connection_refresh_result; pub use self::connection_refresh_result::ConnectionRefreshResult; pub mod connection_schema_error; pub use self::connection_schema_error::ConnectionSchemaError; +pub mod connection_type_detail; +pub use self::connection_type_detail::ConnectionTypeDetail; +pub mod connection_type_summary; +pub use self::connection_type_summary::ConnectionTypeSummary; pub mod create_connection_request; pub use self::create_connection_request::CreateConnectionRequest; pub mod create_connection_response; @@ -76,6 +80,8 @@ pub mod inline_data; pub use self::inline_data::InlineData; pub mod inline_dataset_source; pub use self::inline_dataset_source::InlineDatasetSource; +pub mod list_connection_types_response; +pub use self::list_connection_types_response::ListConnectionTypesResponse; pub mod list_connections_response; pub use self::list_connections_response::ListConnectionsResponse; pub mod list_datasets_response;