v2_application_security_UpdateApplicationSecurityWafCustomRule/
v2_application-security_UpdateApplicationSecurityWafCustomRule.rs

1// Update a WAF Custom Rule returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_application_security::ApplicationSecurityAPI;
4use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleCondition;
5use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionInput;
6use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionInputAddress;
7use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionOperator;
8use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionParameters;
9use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleScope;
10use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleTags;
11use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleTagsCategory;
12use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleType;
13use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleUpdateAttributes;
14use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleUpdateData;
15use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleUpdateRequest;
16use std::collections::BTreeMap;
17
18#[tokio::main]
19async fn main() {
20    // there is a valid "custom_rule" in the system
21    let custom_rule_data_id = std::env::var("CUSTOM_RULE_DATA_ID").unwrap();
22    let body =
23        ApplicationSecurityWafCustomRuleUpdateRequest::new(
24            ApplicationSecurityWafCustomRuleUpdateData::new(
25                ApplicationSecurityWafCustomRuleUpdateAttributes::new(
26                    false,
27                    vec![
28                        ApplicationSecurityWafCustomRuleCondition::new(
29                            ApplicationSecurityWafCustomRuleConditionOperator::MATCH_REGEX,
30                            ApplicationSecurityWafCustomRuleConditionParameters::new(
31                                vec![
32                                    ApplicationSecurityWafCustomRuleConditionInput::new(
33                                        ApplicationSecurityWafCustomRuleConditionInputAddress::SERVER_REQUEST_QUERY,
34                                    ).key_path(vec!["id".to_string()])
35                                ],
36                            ).regex("badactor".to_string()),
37                        )
38                    ],
39                    false,
40                    "test".to_string(),
41                    ApplicationSecurityWafCustomRuleTags::new(
42                        ApplicationSecurityWafCustomRuleTagsCategory::ATTACK_ATTEMPT,
43                        "test".to_string(),
44                    ).additional_properties(BTreeMap::from([])),
45                )
46                    .path_glob("/test".to_string())
47                    .scope(vec![ApplicationSecurityWafCustomRuleScope::new("test".to_string(), "test".to_string())]),
48                ApplicationSecurityWafCustomRuleType::CUSTOM_RULE,
49            ),
50        );
51    let configuration = datadog::Configuration::new();
52    let api = ApplicationSecurityAPI::with_config(configuration);
53    let resp = api
54        .update_application_security_waf_custom_rule(custom_rule_data_id.clone(), body)
55        .await;
56    if let Ok(value) = resp {
57        println!("{:#?}", value);
58    } else {
59        println!("{:#?}", resp.unwrap_err());
60    }
61}