use http::Method;
use serde_json::Value;
use crate::{Result, client::RequestOptions, types::path::PathParam};
#[cfg(feature = "blocking")]
use crate::client::BlockingClient;
#[cfg(feature = "async")]
use crate::client::Client;
#[cfg(feature = "async")]
#[derive(Clone)]
pub struct DashboardService {
client: Client,
}
#[cfg(feature = "async")]
impl DashboardService {
pub(crate) fn new(client: Client) -> Self {
Self { client }
}
pub async fn get(&self, query: Option<&Value>) -> Result<Value> {
let segments = ["api", "dashboard"];
self.client
.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post(&self, body: Option<&Value>) -> Result<Value> {
let segments = ["api", "dashboard"];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn get_embeddable(&self) -> Result<Value> {
let segments = ["api", "dashboard", "embeddable"];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn get_params_valid_filter_fields(&self, query: Option<&Value>) -> Result<Value> {
let segments = ["api", "dashboard", "params", "valid-filter-fields"];
self.client
.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post_pivot_by_dashboard_id_dashcard_by_dashcard_id_card_by_card_id_query(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
card_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let card_id = card_id.into();
let segments = [
"api",
"dashboard",
"pivot",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"card",
card_id.as_str(),
"query",
];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn get_public(&self) -> Result<Value> {
let segments = ["api", "dashboard", "public"];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post_save(&self) -> Result<Value> {
let segments = ["api", "dashboard", "save"];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post_save_collection_by_parent_collection_id(
&self,
parent_collection_id: impl Into<PathParam>,
) -> Result<Value> {
let parent_collection_id = parent_collection_id.into();
let segments = [
"api",
"dashboard",
"save",
"collection",
parent_collection_id.as_str(),
];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post_by_dashboard_id_dashcard_by_dashcard_id_card_by_card_id_query(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
card_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let card_id = card_id.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"card",
card_id.as_str(),
"query",
];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn post_by_dashboard_id_dashcard_by_dashcard_id_card_by_card_id_query_by_export_format(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
card_id: impl Into<PathParam>,
export_format: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Vec<u8>> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let card_id = card_id.into();
let export_format = export_format.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"card",
card_id.as_str(),
"query",
export_format.as_str(),
];
self.client
.request_bytes(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn get_by_dashboard_id_dashcard_by_dashcard_id_execute(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
query: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"execute",
];
self.client
.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post_by_dashboard_id_dashcard_by_dashcard_id_execute(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"execute",
];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn delete_by_dashboard_id_public_link(
&self,
dashboard_id: impl Into<PathParam>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let segments = ["api", "dashboard", dashboard_id.as_str(), "public_link"];
self.client
.request_json(
Method::DELETE,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post_by_dashboard_id_public_link(
&self,
dashboard_id: impl Into<PathParam>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let segments = ["api", "dashboard", dashboard_id.as_str(), "public_link"];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn post_by_from_dashboard_id_copy(
&self,
from_dashboard_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let from_dashboard_id = from_dashboard_id.into();
let segments = ["api", "dashboard", from_dashboard_id.as_str(), "copy"];
self.client
.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn delete_by_id(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str()];
self.client
.request_json(
Method::DELETE,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn get_by_id(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str()];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn put_by_id(&self, id: impl Into<PathParam>, body: Option<&Value>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str()];
self.client
.request_json(
Method::PUT,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn put_by_id_cards(
&self,
id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "cards"];
self.client
.request_json(
Method::PUT,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
.await
}
pub async fn get_by_id_items(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "items"];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn get_by_id_params_by_param_key_remapping(
&self,
id: impl Into<PathParam>,
param_key: impl Into<PathParam>,
query: Option<&Value>,
) -> Result<Value> {
let id = id.into();
let param_key = param_key.into();
let segments = [
"api",
"dashboard",
id.as_str(),
"params",
param_key.as_str(),
"remapping",
];
self.client
.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn get_by_id_params_by_param_key_search_by_query(
&self,
id: impl Into<PathParam>,
param_key: impl Into<PathParam>,
query: impl Into<PathParam>,
) -> Result<Value> {
let id = id.into();
let param_key = param_key.into();
let query = query.into();
let segments = [
"api",
"dashboard",
id.as_str(),
"params",
param_key.as_str(),
"search",
query.as_str(),
];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn get_by_id_params_by_param_key_values(
&self,
id: impl Into<PathParam>,
param_key: impl Into<PathParam>,
) -> Result<Value> {
let id = id.into();
let param_key = param_key.into();
let segments = [
"api",
"dashboard",
id.as_str(),
"params",
param_key.as_str(),
"values",
];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn get_by_id_query_metadata(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "query_metadata"];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
pub async fn get_by_id_related(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "related"];
self.client
.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
.await
}
}
#[cfg(feature = "blocking")]
#[derive(Clone)]
pub struct BlockingDashboardService {
client: BlockingClient,
}
#[cfg(feature = "blocking")]
impl BlockingDashboardService {
pub(crate) fn new(client: BlockingClient) -> Self {
Self { client }
}
pub fn get(&self, query: Option<&Value>) -> Result<Value> {
let segments = ["api", "dashboard"];
self.client.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post(&self, body: Option<&Value>) -> Result<Value> {
let segments = ["api", "dashboard"];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn get_embeddable(&self) -> Result<Value> {
let segments = ["api", "dashboard", "embeddable"];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn get_params_valid_filter_fields(&self, query: Option<&Value>) -> Result<Value> {
let segments = ["api", "dashboard", "params", "valid-filter-fields"];
self.client.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post_pivot_by_dashboard_id_dashcard_by_dashcard_id_card_by_card_id_query(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
card_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let card_id = card_id.into();
let segments = [
"api",
"dashboard",
"pivot",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"card",
card_id.as_str(),
"query",
];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn get_public(&self) -> Result<Value> {
let segments = ["api", "dashboard", "public"];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post_save(&self) -> Result<Value> {
let segments = ["api", "dashboard", "save"];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post_save_collection_by_parent_collection_id(
&self,
parent_collection_id: impl Into<PathParam>,
) -> Result<Value> {
let parent_collection_id = parent_collection_id.into();
let segments = [
"api",
"dashboard",
"save",
"collection",
parent_collection_id.as_str(),
];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post_by_dashboard_id_dashcard_by_dashcard_id_card_by_card_id_query(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
card_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let card_id = card_id.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"card",
card_id.as_str(),
"query",
];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn post_by_dashboard_id_dashcard_by_dashcard_id_card_by_card_id_query_by_export_format(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
card_id: impl Into<PathParam>,
export_format: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Vec<u8>> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let card_id = card_id.into();
let export_format = export_format.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"card",
card_id.as_str(),
"query",
export_format.as_str(),
];
self.client.request_bytes(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn get_by_dashboard_id_dashcard_by_dashcard_id_execute(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
query: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"execute",
];
self.client.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post_by_dashboard_id_dashcard_by_dashcard_id_execute(
&self,
dashboard_id: impl Into<PathParam>,
dashcard_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let dashcard_id = dashcard_id.into();
let segments = [
"api",
"dashboard",
dashboard_id.as_str(),
"dashcard",
dashcard_id.as_str(),
"execute",
];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn delete_by_dashboard_id_public_link(
&self,
dashboard_id: impl Into<PathParam>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let segments = ["api", "dashboard", dashboard_id.as_str(), "public_link"];
self.client.request_json(
Method::DELETE,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post_by_dashboard_id_public_link(
&self,
dashboard_id: impl Into<PathParam>,
) -> Result<Value> {
let dashboard_id = dashboard_id.into();
let segments = ["api", "dashboard", dashboard_id.as_str(), "public_link"];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn post_by_from_dashboard_id_copy(
&self,
from_dashboard_id: impl Into<PathParam>,
body: Option<&Value>,
) -> Result<Value> {
let from_dashboard_id = from_dashboard_id.into();
let segments = ["api", "dashboard", from_dashboard_id.as_str(), "copy"];
self.client.request_json(
Method::POST,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn delete_by_id(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str()];
self.client.request_json(
Method::DELETE,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn get_by_id(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str()];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn put_by_id(&self, id: impl Into<PathParam>, body: Option<&Value>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str()];
self.client.request_json(
Method::PUT,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn put_by_id_cards(&self, id: impl Into<PathParam>, body: Option<&Value>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "cards"];
self.client.request_json(
Method::PUT,
&segments,
Option::<&()>::None,
body,
RequestOptions::default(),
)
}
pub fn get_by_id_items(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "items"];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn get_by_id_params_by_param_key_remapping(
&self,
id: impl Into<PathParam>,
param_key: impl Into<PathParam>,
query: Option<&Value>,
) -> Result<Value> {
let id = id.into();
let param_key = param_key.into();
let segments = [
"api",
"dashboard",
id.as_str(),
"params",
param_key.as_str(),
"remapping",
];
self.client.request_json(
Method::GET,
&segments,
query,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn get_by_id_params_by_param_key_search_by_query(
&self,
id: impl Into<PathParam>,
param_key: impl Into<PathParam>,
query: impl Into<PathParam>,
) -> Result<Value> {
let id = id.into();
let param_key = param_key.into();
let query = query.into();
let segments = [
"api",
"dashboard",
id.as_str(),
"params",
param_key.as_str(),
"search",
query.as_str(),
];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn get_by_id_params_by_param_key_values(
&self,
id: impl Into<PathParam>,
param_key: impl Into<PathParam>,
) -> Result<Value> {
let id = id.into();
let param_key = param_key.into();
let segments = [
"api",
"dashboard",
id.as_str(),
"params",
param_key.as_str(),
"values",
];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn get_by_id_query_metadata(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "query_metadata"];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
pub fn get_by_id_related(&self, id: impl Into<PathParam>) -> Result<Value> {
let id = id.into();
let segments = ["api", "dashboard", id.as_str(), "related"];
self.client.request_json(
Method::GET,
&segments,
Option::<&()>::None,
Option::<&()>::None,
RequestOptions::default(),
)
}
}