use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::client::Client;
use crate::error::Result;
pub const DASHBOARD_PATH: &str = "api/v1/dashboard";
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct DashboardSummary {
pub id: String,
#[serde(default)]
pub title: Option<String>,
#[serde(default)]
pub url: Option<String>,
#[serde(default)]
pub author_handle: Option<String>,
#[serde(default)]
pub description: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct DashboardListResponse {
#[serde(default)]
pub dashboards: Vec<DashboardSummary>,
}
impl Client {
pub async fn dashboard_get(&self, id: &str) -> Result<Value> {
self.get_json(&format!("{DASHBOARD_PATH}/{id}"), &[]).await
}
pub async fn dashboards_list(&self) -> Result<DashboardListResponse> {
self.get_json(DASHBOARD_PATH, &[]).await
}
}