v1_dashboards_CreateDashboard_607525069/
v1_dashboards_CreateDashboard_607525069.rs

1// Create a new timeseries widget with product_analytics data source
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::DashboardReflowType;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionEventAggregation;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinition;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionCompute;
10use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionSearch;
11use datadog_api_client::datadogV1::model::FormulaAndFunctionEventsDataSource;
12use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
13use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
14use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinition;
15use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinitionType;
16use datadog_api_client::datadogV1::model::TimeseriesWidgetLegendColumn;
17use datadog_api_client::datadogV1::model::TimeseriesWidgetLegendLayout;
18use datadog_api_client::datadogV1::model::TimeseriesWidgetRequest;
19use datadog_api_client::datadogV1::model::Widget;
20use datadog_api_client::datadogV1::model::WidgetDefinition;
21use datadog_api_client::datadogV1::model::WidgetDisplayType;
22use datadog_api_client::datadogV1::model::WidgetFormula;
23use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
24use datadog_api_client::datadogV1::model::WidgetLineType;
25use datadog_api_client::datadogV1::model::WidgetLineWidth;
26use datadog_api_client::datadogV1::model::WidgetRequestStyle;
27use datadog_api_client::datadogV1::model::WidgetTime;
28
29#[tokio::main]
30async fn main() {
31    let body =
32        Dashboard::new(
33            DashboardLayoutType::ORDERED,
34            "Example-Dashboard with product_analytics datasource".to_string(),
35            vec![
36                Widget::new(
37                    WidgetDefinition::TimeseriesWidgetDefinition(
38                        Box::new(
39                            TimeseriesWidgetDefinition::new(
40                                vec![
41                                    TimeseriesWidgetRequest::new()
42                                        .display_type(WidgetDisplayType::LINE)
43                                        .formulas(vec![WidgetFormula::new("query1".to_string())])
44                                        .queries(
45                                            vec![
46                                                FormulaAndFunctionQueryDefinition
47                                                ::FormulaAndFunctionEventQueryDefinition(
48                                                    Box::new(
49                                                        FormulaAndFunctionEventQueryDefinition::new(
50                                                            FormulaAndFunctionEventQueryDefinitionCompute::new(
51                                                                FormulaAndFunctionEventAggregation::COUNT,
52                                                            ),
53                                                            FormulaAndFunctionEventsDataSource::PRODUCT_ANALYTICS,
54                                                            "query1".to_string(),
55                                                        )
56                                                            .group_by(vec![])
57                                                            .indexes(vec!["*".to_string()])
58                                                            .search(
59                                                                FormulaAndFunctionEventQueryDefinitionSearch::new(
60                                                                    "test_level:test".to_string(),
61                                                                ),
62                                                            ),
63                                                    ),
64                                                )
65                                            ],
66                                        )
67                                        .response_format(FormulaAndFunctionResponseFormat::TIMESERIES)
68                                        .style(
69                                            WidgetRequestStyle::new()
70                                                .line_type(WidgetLineType::SOLID)
71                                                .line_width(WidgetLineWidth::NORMAL)
72                                                .palette("dog_classic".to_string()),
73                                        )
74                                ],
75                                TimeseriesWidgetDefinitionType::TIMESERIES,
76                            )
77                                .legend_columns(
78                                    vec![
79                                        TimeseriesWidgetLegendColumn::AVG,
80                                        TimeseriesWidgetLegendColumn::MIN,
81                                        TimeseriesWidgetLegendColumn::MAX,
82                                        TimeseriesWidgetLegendColumn::VALUE,
83                                        TimeseriesWidgetLegendColumn::SUM
84                                    ],
85                                )
86                                .legend_layout(TimeseriesWidgetLegendLayout::AUTO)
87                                .show_legend(true)
88                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
89                                .title("".to_string()),
90                        ),
91                    ),
92                )
93            ],
94        ).reflow_type(DashboardReflowType::AUTO);
95    let configuration = datadog::Configuration::new();
96    let api = DashboardsAPI::with_config(configuration);
97    let resp = api.create_dashboard(body).await;
98    if let Ok(value) = resp {
99        println!("{:#?}", value);
100    } else {
101        println!("{:#?}", resp.unwrap_err());
102    }
103}