v2_events_CreateEvent/
v2_events_CreateEvent.rs

1// Post an event returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_events::EventsAPI;
4use datadog_api_client::datadogV2::model::ChangeEventCustomAttributes;
5use datadog_api_client::datadogV2::model::ChangeEventCustomAttributesAuthor;
6use datadog_api_client::datadogV2::model::ChangeEventCustomAttributesAuthorType;
7use datadog_api_client::datadogV2::model::ChangeEventCustomAttributesChangedResource;
8use datadog_api_client::datadogV2::model::ChangeEventCustomAttributesChangedResourceType;
9use datadog_api_client::datadogV2::model::ChangeEventCustomAttributesImpactedResourcesItems;
10use datadog_api_client::datadogV2::model::ChangeEventCustomAttributesImpactedResourcesItemsType;
11use datadog_api_client::datadogV2::model::EventCategory;
12use datadog_api_client::datadogV2::model::EventCreateRequest;
13use datadog_api_client::datadogV2::model::EventCreateRequestPayload;
14use datadog_api_client::datadogV2::model::EventCreateRequestType;
15use datadog_api_client::datadogV2::model::EventPayload;
16use datadog_api_client::datadogV2::model::EventPayloadAttributes;
17use datadog_api_client::datadogV2::model::EventPayloadIntegrationId;
18use serde_json::Value;
19use std::collections::BTreeMap;
20
21#[tokio::main]
22async fn main() {
23    let body = EventCreateRequestPayload::new(EventCreateRequest::new(
24        EventPayload::new(
25            EventPayloadAttributes::ChangeEventCustomAttributes(Box::new(
26                ChangeEventCustomAttributes::new(ChangeEventCustomAttributesChangedResource::new(
27                    "fallback_payments_test".to_string(),
28                    ChangeEventCustomAttributesChangedResourceType::FEATURE_FLAG,
29                ))
30                .author(ChangeEventCustomAttributesAuthor::new(
31                    "example@datadog.com".to_string(),
32                    ChangeEventCustomAttributesAuthorType::USER,
33                ))
34                .change_metadata(BTreeMap::from([(
35                    "resource_link".to_string(),
36                    Value::from("datadog.com/feature/fallback_payments_test"),
37                )]))
38                .impacted_resources(vec![
39                    ChangeEventCustomAttributesImpactedResourcesItems::new(
40                        "payments_api".to_string(),
41                        ChangeEventCustomAttributesImpactedResourcesItemsType::SERVICE,
42                    ),
43                ])
44                .new_value(BTreeMap::from([
45                    ("enabled".to_string(), Value::from("True")),
46                    ("percentage".to_string(), Value::from("50%")),
47                ]))
48                .prev_value(BTreeMap::from([
49                    ("enabled".to_string(), Value::from("True")),
50                    ("percentage".to_string(), Value::from("10%")),
51                ])),
52            )),
53            EventCategory::CHANGE,
54            "payment_processed feature flag updated".to_string(),
55        )
56        .aggregation_key("aggregation_key_123".to_string())
57        .integration_id(EventPayloadIntegrationId::CUSTOM_EVENTS)
58        .message("payment_processed feature flag has been enabled".to_string())
59        .tags(vec!["env:api_client_test".to_string()]),
60        EventCreateRequestType::EVENT,
61    ));
62    let configuration = datadog::Configuration::new();
63    let api = EventsAPI::with_config(configuration);
64    let resp = api.create_event(body).await;
65    if let Ok(value) = resp {
66        println!("{:#?}", value);
67    } else {
68        println!("{:#?}", resp.unwrap_err());
69    }
70}