v2_application_security_CreateApplicationSecurityWafCustomRule/
v2_application-security_CreateApplicationSecurityWafCustomRule.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_application_security::ApplicationSecurityAPI;
4use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleAction;
5use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleActionAction;
6use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleActionParameters;
7use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleCondition;
8use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionInput;
9use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionInputAddress;
10use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionOperator;
11use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionOptions;
12use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleConditionParameters;
13use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleCreateAttributes;
14use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleCreateData;
15use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleCreateRequest;
16use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleScope;
17use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleTags;
18use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleTagsCategory;
19use datadog_api_client::datadogV2::model::ApplicationSecurityWafCustomRuleType;
20use std::collections::BTreeMap;
21
22#[tokio::main]
23async fn main() {
24 let body =
25 ApplicationSecurityWafCustomRuleCreateRequest::new(
26 ApplicationSecurityWafCustomRuleCreateData::new(
27 ApplicationSecurityWafCustomRuleCreateAttributes::new(
28 false,
29 vec![
30 ApplicationSecurityWafCustomRuleCondition::new(
31 ApplicationSecurityWafCustomRuleConditionOperator::MATCH_REGEX,
32 ApplicationSecurityWafCustomRuleConditionParameters::new(
33 vec![
34 ApplicationSecurityWafCustomRuleConditionInput::new(
35 ApplicationSecurityWafCustomRuleConditionInputAddress::SERVER_DB_STATEMENT,
36 ).key_path(vec![])
37 ],
38 )
39 .data("blocked_users".to_string())
40 .list(vec![])
41 .options(
42 ApplicationSecurityWafCustomRuleConditionOptions::new()
43 .case_sensitive(false)
44 .min_length(0),
45 )
46 .regex("path.*".to_string())
47 .value("custom_tag".to_string()),
48 )
49 ],
50 false,
51 "Block request from a bad useragent".to_string(),
52 ApplicationSecurityWafCustomRuleTags::new(
53 ApplicationSecurityWafCustomRuleTagsCategory::BUSINESS_LOGIC,
54 "users.login.success".to_string(),
55 ).additional_properties(BTreeMap::from([])),
56 )
57 .action(
58 ApplicationSecurityWafCustomRuleAction::new()
59 .action(ApplicationSecurityWafCustomRuleActionAction::BLOCK_REQUEST)
60 .parameters(
61 ApplicationSecurityWafCustomRuleActionParameters::new()
62 .location("/blocking".to_string())
63 .status_code(403),
64 ),
65 )
66 .path_glob("/api/search/*".to_string())
67 .scope(
68 vec![
69 ApplicationSecurityWafCustomRuleScope::new(
70 "prod".to_string(),
71 "billing-service".to_string(),
72 )
73 ],
74 ),
75 ApplicationSecurityWafCustomRuleType::CUSTOM_RULE,
76 ),
77 );
78 let configuration = datadog::Configuration::new();
79 let api = ApplicationSecurityAPI::with_config(configuration);
80 let resp = api.create_application_security_waf_custom_rule(body).await;
81 if let Ok(value) = resp {
82 println!("{:#?}", value);
83 } else {
84 println!("{:#?}", resp.unwrap_err());
85 }
86}