v1_dashboards_CreateDashboard_3451918078/
v1_dashboards_CreateDashboard_3451918078.rs

1// Create a new timeseries widget with new fixed span time format
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::WidgetLineType;
24use datadog_api_client::datadogV1::model::WidgetLineWidth;
25use datadog_api_client::datadogV1::model::WidgetNewFixedSpan;
26use datadog_api_client::datadogV1::model::WidgetNewFixedSpanType;
27use datadog_api_client::datadogV1::model::WidgetRequestStyle;
28use datadog_api_client::datadogV1::model::WidgetTime;
29
30#[tokio::main]
31async fn main() {
32    let body =
33        Dashboard::new(
34            DashboardLayoutType::ORDERED,
35            "Example-Dashboard with new fixed span time".to_string(),
36            vec![
37                Widget::new(
38                    WidgetDefinition::TimeseriesWidgetDefinition(
39                        Box::new(
40                            TimeseriesWidgetDefinition::new(
41                                vec![
42                                    TimeseriesWidgetRequest::new()
43                                        .display_type(WidgetDisplayType::LINE)
44                                        .formulas(vec![WidgetFormula::new("query1".to_string())])
45                                        .queries(
46                                            vec![
47                                                FormulaAndFunctionQueryDefinition
48                                                ::FormulaAndFunctionEventQueryDefinition(
49                                                    Box::new(
50                                                        FormulaAndFunctionEventQueryDefinition::new(
51                                                            FormulaAndFunctionEventQueryDefinitionCompute::new(
52                                                                FormulaAndFunctionEventAggregation::COUNT,
53                                                            ).metric("@ci.queue_time".to_string()),
54                                                            FormulaAndFunctionEventsDataSource::CI_PIPELINES,
55                                                            "query1".to_string(),
56                                                        )
57                                                            .group_by(vec![])
58                                                            .indexes(vec!["*".to_string()])
59                                                            .search(
60                                                                FormulaAndFunctionEventQueryDefinitionSearch::new(
61                                                                    "ci_level:job".to_string(),
62                                                                ),
63                                                            ),
64                                                    ),
65                                                )
66                                            ],
67                                        )
68                                        .response_format(FormulaAndFunctionResponseFormat::TIMESERIES)
69                                        .style(
70                                            WidgetRequestStyle::new()
71                                                .line_type(WidgetLineType::SOLID)
72                                                .line_width(WidgetLineWidth::NORMAL)
73                                                .palette("dog_classic".to_string()),
74                                        )
75                                ],
76                                TimeseriesWidgetDefinitionType::TIMESERIES,
77                            )
78                                .legend_columns(
79                                    vec![
80                                        TimeseriesWidgetLegendColumn::AVG,
81                                        TimeseriesWidgetLegendColumn::MIN,
82                                        TimeseriesWidgetLegendColumn::MAX,
83                                        TimeseriesWidgetLegendColumn::VALUE,
84                                        TimeseriesWidgetLegendColumn::SUM
85                                    ],
86                                )
87                                .legend_layout(TimeseriesWidgetLegendLayout::AUTO)
88                                .show_legend(true)
89                                .time(
90                                    WidgetTime::WidgetNewFixedSpan(
91                                        Box::new(
92                                            WidgetNewFixedSpan::new(
93                                                1712080128,
94                                                1712083128,
95                                                WidgetNewFixedSpanType::FIXED,
96                                            ).hide_incomplete_cost_data(true),
97                                        ),
98                                    ),
99                                )
100                                .title("".to_string()),
101                        ),
102                    ),
103                )
104            ],
105        ).reflow_type(DashboardReflowType::AUTO);
106    let configuration = datadog::Configuration::new();
107    let api = DashboardsAPI::with_config(configuration);
108    let resp = api.create_dashboard(body).await;
109    if let Ok(value) = resp {
110        println!("{:#?}", value);
111    } else {
112        println!("{:#?}", resp.unwrap_err());
113    }
114}