v1_dashboards_CreateDashboard_765140092/
v1_dashboards_CreateDashboard_765140092.rs

1// Create a new dashboard with a query value widget using timeseries background
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_dashboards::DashboardsAPI;
4use datadog_api_client::datadogV1::model::Dashboard;
5use datadog_api_client::datadogV1::model::DashboardLayoutType;
6use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricAggregation;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricDataSource;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
10use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
11use datadog_api_client::datadogV1::model::QueryValueWidgetDefinition;
12use datadog_api_client::datadogV1::model::QueryValueWidgetDefinitionType;
13use datadog_api_client::datadogV1::model::QueryValueWidgetRequest;
14use datadog_api_client::datadogV1::model::TimeseriesBackground;
15use datadog_api_client::datadogV1::model::TimeseriesBackgroundType;
16use datadog_api_client::datadogV1::model::Widget;
17use datadog_api_client::datadogV1::model::WidgetAxis;
18use datadog_api_client::datadogV1::model::WidgetDefinition;
19use datadog_api_client::datadogV1::model::WidgetFormula;
20use datadog_api_client::datadogV1::model::WidgetLayout;
21use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
22use datadog_api_client::datadogV1::model::WidgetTextAlign;
23use datadog_api_client::datadogV1::model::WidgetTime;
24
25#[tokio::main]
26async fn main() {
27    let body =
28        Dashboard::new(
29            DashboardLayoutType::ORDERED,
30            "Example-Dashboard with QVW Timeseries Background".to_string(),
31            vec![
32                Widget::new(
33                    WidgetDefinition::QueryValueWidgetDefinition(
34                        Box::new(
35                            QueryValueWidgetDefinition::new(
36                                vec![
37                                    QueryValueWidgetRequest::new()
38                                        .formulas(vec![WidgetFormula::new("query1".to_string())])
39                                        .queries(
40                                            vec![
41                                                FormulaAndFunctionQueryDefinition
42                                                ::FormulaAndFunctionMetricQueryDefinition(
43                                                    Box::new(
44                                                        FormulaAndFunctionMetricQueryDefinition::new(
45                                                            FormulaAndFunctionMetricDataSource::METRICS,
46                                                            "query1".to_string(),
47                                                            "sum:my.cool.count.metric{*}".to_string(),
48                                                        ).aggregator(FormulaAndFunctionMetricAggregation::PERCENTILE),
49                                                    ),
50                                                )
51                                            ],
52                                        )
53                                        .response_format(FormulaAndFunctionResponseFormat::SCALAR)
54                                ],
55                                QueryValueWidgetDefinitionType::QUERY_VALUE,
56                            )
57                                .autoscale(true)
58                                .precision(2)
59                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
60                                .timeseries_background(
61                                    TimeseriesBackground::new(
62                                        TimeseriesBackgroundType::AREA,
63                                    ).yaxis(WidgetAxis::new().include_zero(true)),
64                                )
65                                .title("".to_string())
66                                .title_align(WidgetTextAlign::LEFT)
67                                .title_size("16".to_string()),
68                        ),
69                    ),
70                ).layout(WidgetLayout::new(2, 2, 0, 0))
71            ],
72        );
73    let configuration = datadog::Configuration::new();
74    let api = DashboardsAPI::with_config(configuration);
75    let resp = api.create_dashboard(body).await;
76    if let Ok(value) = resp {
77        println!("{:#?}", value);
78    } else {
79        println!("{:#?}", resp.unwrap_err());
80    }
81}