v1_synthetics_CreateSyntheticsAPITest/
v1_synthetics_CreateSyntheticsAPITest.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_synthetics::SyntheticsAPI;
4use datadog_api_client::datadogV1::model::SyntheticsAPITest;
5use datadog_api_client::datadogV1::model::SyntheticsAPITestConfig;
6use datadog_api_client::datadogV1::model::SyntheticsAPITestType;
7use datadog_api_client::datadogV1::model::SyntheticsAssertion;
8use datadog_api_client::datadogV1::model::SyntheticsAssertionOperator;
9use datadog_api_client::datadogV1::model::SyntheticsAssertionTarget;
10use datadog_api_client::datadogV1::model::SyntheticsAssertionTargetValue;
11use datadog_api_client::datadogV1::model::SyntheticsAssertionType;
12use datadog_api_client::datadogV1::model::SyntheticsBrowserTestRumSettings;
13use datadog_api_client::datadogV1::model::SyntheticsTestCiOptions;
14use datadog_api_client::datadogV1::model::SyntheticsTestDetailsSubType;
15use datadog_api_client::datadogV1::model::SyntheticsTestExecutionRule;
16use datadog_api_client::datadogV1::model::SyntheticsTestOptions;
17use datadog_api_client::datadogV1::model::SyntheticsTestOptionsHTTPVersion;
18use datadog_api_client::datadogV1::model::SyntheticsTestOptionsMonitorOptions;
19use datadog_api_client::datadogV1::model::SyntheticsTestOptionsMonitorOptionsNotificationPresetName;
20use datadog_api_client::datadogV1::model::SyntheticsTestOptionsRetry;
21use datadog_api_client::datadogV1::model::SyntheticsTestOptionsScheduling;
22use datadog_api_client::datadogV1::model::SyntheticsTestOptionsSchedulingTimeframe;
23use datadog_api_client::datadogV1::model::SyntheticsTestPauseStatus;
24use datadog_api_client::datadogV1::model::SyntheticsTestRequest;
25
26#[tokio::main]
27async fn main() {
28    let body = SyntheticsAPITest::new(
29        SyntheticsAPITestConfig::new()
30            .assertions(vec![SyntheticsAssertion::SyntheticsAssertionTarget(
31                Box::new(SyntheticsAssertionTarget::new(
32                    SyntheticsAssertionOperator::LESS_THAN,
33                    SyntheticsAssertionTargetValue::SyntheticsAssertionTargetValueNumber(
34                        1000.0 as f64,
35                    ),
36                    SyntheticsAssertionType::RESPONSE_TIME,
37                )),
38            )])
39            .request(
40                SyntheticsTestRequest::new()
41                    .method("GET".to_string())
42                    .url("https://example.com".to_string()),
43            ),
44        vec!["aws:eu-west-3".to_string()],
45        "Notification message".to_string(),
46        "Example test name".to_string(),
47        SyntheticsTestOptions::new()
48            .blocked_request_patterns(vec![])
49            .ci(SyntheticsTestCiOptions::new(
50                SyntheticsTestExecutionRule::BLOCKING,
51            ))
52            .device_ids(vec!["chrome.laptop_large".to_string()])
53            .http_version(SyntheticsTestOptionsHTTPVersion::HTTP1)
54            .monitor_options(
55                SyntheticsTestOptionsMonitorOptions::new().notification_preset_name(
56                    SyntheticsTestOptionsMonitorOptionsNotificationPresetName::SHOW_ALL,
57                ),
58            )
59            .restricted_roles(vec!["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".to_string()])
60            .retry(SyntheticsTestOptionsRetry::new())
61            .rum_settings(
62                SyntheticsBrowserTestRumSettings::new(true)
63                    .application_id("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".to_string())
64                    .client_token_id(12345),
65            )
66            .scheduling(SyntheticsTestOptionsScheduling::new(
67                vec![
68                    SyntheticsTestOptionsSchedulingTimeframe::new(
69                        1,
70                        "07:00".to_string(),
71                        "16:00".to_string(),
72                    ),
73                    SyntheticsTestOptionsSchedulingTimeframe::new(
74                        3,
75                        "07:00".to_string(),
76                        "16:00".to_string(),
77                    ),
78                ],
79                "America/New_York".to_string(),
80            )),
81        SyntheticsAPITestType::API,
82    )
83    .status(SyntheticsTestPauseStatus::LIVE)
84    .subtype(SyntheticsTestDetailsSubType::HTTP)
85    .tags(vec!["env:production".to_string()]);
86    let configuration = datadog::Configuration::new();
87    let api = SyntheticsAPI::with_config(configuration);
88    let resp = api.create_synthetics_api_test(body).await;
89    if let Ok(value) = resp {
90        println!("{:#?}", value);
91    } else {
92        println!("{:#?}", resp.unwrap_err());
93    }
94}