v1_notebooks_UpdateNotebook/
v1_notebooks_UpdateNotebook.rs

1// Update a notebook returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_notebooks::NotebooksAPI;
4use datadog_api_client::datadogV1::model::NotebookCellCreateRequest;
5use datadog_api_client::datadogV1::model::NotebookCellCreateRequestAttributes;
6use datadog_api_client::datadogV1::model::NotebookCellResourceType;
7use datadog_api_client::datadogV1::model::NotebookGlobalTime;
8use datadog_api_client::datadogV1::model::NotebookGraphSize;
9use datadog_api_client::datadogV1::model::NotebookMarkdownCellAttributes;
10use datadog_api_client::datadogV1::model::NotebookMarkdownCellDefinition;
11use datadog_api_client::datadogV1::model::NotebookMarkdownCellDefinitionType;
12use datadog_api_client::datadogV1::model::NotebookRelativeTime;
13use datadog_api_client::datadogV1::model::NotebookResourceType;
14use datadog_api_client::datadogV1::model::NotebookSplitBy;
15use datadog_api_client::datadogV1::model::NotebookStatus;
16use datadog_api_client::datadogV1::model::NotebookTimeseriesCellAttributes;
17use datadog_api_client::datadogV1::model::NotebookUpdateCell;
18use datadog_api_client::datadogV1::model::NotebookUpdateData;
19use datadog_api_client::datadogV1::model::NotebookUpdateDataAttributes;
20use datadog_api_client::datadogV1::model::NotebookUpdateRequest;
21use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinition;
22use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinitionType;
23use datadog_api_client::datadogV1::model::TimeseriesWidgetRequest;
24use datadog_api_client::datadogV1::model::WidgetAxis;
25use datadog_api_client::datadogV1::model::WidgetDisplayType;
26use datadog_api_client::datadogV1::model::WidgetLineType;
27use datadog_api_client::datadogV1::model::WidgetLineWidth;
28use datadog_api_client::datadogV1::model::WidgetLiveSpan;
29use datadog_api_client::datadogV1::model::WidgetRequestStyle;
30
31#[tokio::main]
32async fn main() {
33    // there is a valid "notebook" in the system
34    let notebook_data_id: i64 = std::env::var("NOTEBOOK_DATA_ID").unwrap().parse().unwrap();
35    let body = NotebookUpdateRequest::new(NotebookUpdateData::new(
36        NotebookUpdateDataAttributes::new(
37            vec![
38                NotebookUpdateCell::NotebookCellCreateRequest(Box::new(
39                    NotebookCellCreateRequest::new(
40                        NotebookCellCreateRequestAttributes::NotebookMarkdownCellAttributes(
41                            Box::new(NotebookMarkdownCellAttributes::new(
42                                NotebookMarkdownCellDefinition::new(
43                                    r#"## Some test markdown
44
45```js
46var x, y;
47x = 5;
48y = 6;
49```"#
50                                        .to_string(),
51                                    NotebookMarkdownCellDefinitionType::MARKDOWN,
52                                ),
53                            )),
54                        ),
55                        NotebookCellResourceType::NOTEBOOK_CELLS,
56                    ),
57                )),
58                NotebookUpdateCell::NotebookCellCreateRequest(Box::new(
59                    NotebookCellCreateRequest::new(
60                        NotebookCellCreateRequestAttributes::NotebookTimeseriesCellAttributes(
61                            Box::new(
62                                NotebookTimeseriesCellAttributes::new(
63                                    TimeseriesWidgetDefinition::new(
64                                        vec![TimeseriesWidgetRequest::new()
65                                            .display_type(WidgetDisplayType::LINE)
66                                            .q("avg:system.load.1{*}".to_string())
67                                            .style(
68                                                WidgetRequestStyle::new()
69                                                    .line_type(WidgetLineType::SOLID)
70                                                    .line_width(WidgetLineWidth::NORMAL)
71                                                    .palette("dog_classic".to_string()),
72                                            )],
73                                        TimeseriesWidgetDefinitionType::TIMESERIES,
74                                    )
75                                    .show_legend(true)
76                                    .yaxis(WidgetAxis::new().scale("linear".to_string())),
77                                )
78                                .graph_size(NotebookGraphSize::MEDIUM)
79                                .split_by(NotebookSplitBy::new(vec![], vec![]))
80                                .time(None),
81                            ),
82                        ),
83                        NotebookCellResourceType::NOTEBOOK_CELLS,
84                    ),
85                )),
86            ],
87            "Example-Notebook-updated".to_string(),
88            NotebookGlobalTime::NotebookRelativeTime(Box::new(NotebookRelativeTime::new(
89                WidgetLiveSpan::PAST_ONE_HOUR,
90            ))),
91        )
92        .status(NotebookStatus::PUBLISHED),
93        NotebookResourceType::NOTEBOOKS,
94    ));
95    let configuration = datadog::Configuration::new();
96    let api = NotebooksAPI::with_config(configuration);
97    let resp = api.update_notebook(notebook_data_id.clone(), body).await;
98    if let Ok(value) = resp {
99        println!("{:#?}", value);
100    } else {
101        println!("{:#?}", resp.unwrap_err());
102    }
103}