v2_logs_custom_destinations_CreateLogsCustomDestination/
v2_logs-custom-destinations_CreateLogsCustomDestination.rs

1// Create a custom destination returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_logs_custom_destinations::LogsCustomDestinationsAPI;
4use datadog_api_client::datadogV2::model::CustomDestinationAttributeTagsRestrictionListType;
5use datadog_api_client::datadogV2::model::CustomDestinationCreateRequest;
6use datadog_api_client::datadogV2::model::CustomDestinationCreateRequestAttributes;
7use datadog_api_client::datadogV2::model::CustomDestinationCreateRequestDefinition;
8use datadog_api_client::datadogV2::model::CustomDestinationForwardDestination;
9use datadog_api_client::datadogV2::model::CustomDestinationForwardDestinationHttp;
10use datadog_api_client::datadogV2::model::CustomDestinationForwardDestinationHttpType;
11use datadog_api_client::datadogV2::model::CustomDestinationHttpDestinationAuth;
12use datadog_api_client::datadogV2::model::CustomDestinationHttpDestinationAuthBasic;
13use datadog_api_client::datadogV2::model::CustomDestinationHttpDestinationAuthBasicType;
14use datadog_api_client::datadogV2::model::CustomDestinationType;
15
16#[tokio::main]
17async fn main() {
18    let body = CustomDestinationCreateRequest::new()
19        .data(CustomDestinationCreateRequestDefinition::new(
20        CustomDestinationCreateRequestAttributes::new(
21            CustomDestinationForwardDestination::CustomDestinationForwardDestinationHttp(Box::new(
22                CustomDestinationForwardDestinationHttp::new(
23                    CustomDestinationHttpDestinationAuth::CustomDestinationHttpDestinationAuthBasic(
24                        Box::new(CustomDestinationHttpDestinationAuthBasic::new(
25                            "datadog-custom-destination-password".to_string(),
26                            CustomDestinationHttpDestinationAuthBasicType::BASIC,
27                            "datadog-custom-destination-username".to_string(),
28                        )),
29                    ),
30                    "https://example.com".to_string(),
31                    CustomDestinationForwardDestinationHttpType::HTTP,
32                ),
33            )),
34            "Nginx logs".to_string(),
35        )
36        .enabled(true)
37        .forward_tags(true)
38        .forward_tags_restriction_list(vec!["datacenter".to_string(), "host".to_string()])
39        .forward_tags_restriction_list_type(
40            CustomDestinationAttributeTagsRestrictionListType::ALLOW_LIST,
41        )
42        .query("source:nginx".to_string()),
43        CustomDestinationType::CUSTOM_DESTINATION,
44    ));
45    let configuration = datadog::Configuration::new();
46    let api = LogsCustomDestinationsAPI::with_config(configuration);
47    let resp = api.create_logs_custom_destination(body).await;
48    if let Ok(value) = resp {
49        println!("{:#?}", value);
50    } else {
51        println!("{:#?}", resp.unwrap_err());
52    }
53}