v2_sensitive_data_scanner_CreateScanningRule/
v2_sensitive-data-scanner_CreateScanningRule.rs

1// Create Scanning Rule returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_sensitive_data_scanner::SensitiveDataScannerAPI;
4use datadog_api_client::datadogV2::model::SensitiveDataScannerGroup;
5use datadog_api_client::datadogV2::model::SensitiveDataScannerGroupData;
6use datadog_api_client::datadogV2::model::SensitiveDataScannerGroupType;
7use datadog_api_client::datadogV2::model::SensitiveDataScannerIncludedKeywordConfiguration;
8use datadog_api_client::datadogV2::model::SensitiveDataScannerMetaVersionOnly;
9use datadog_api_client::datadogV2::model::SensitiveDataScannerRuleAttributes;
10use datadog_api_client::datadogV2::model::SensitiveDataScannerRuleCreate;
11use datadog_api_client::datadogV2::model::SensitiveDataScannerRuleCreateRequest;
12use datadog_api_client::datadogV2::model::SensitiveDataScannerRuleRelationships;
13use datadog_api_client::datadogV2::model::SensitiveDataScannerRuleType;
14use datadog_api_client::datadogV2::model::SensitiveDataScannerTextReplacement;
15use datadog_api_client::datadogV2::model::SensitiveDataScannerTextReplacementType;
16
17#[tokio::main]
18async fn main() {
19    // there is a valid "scanning_group" in the system
20    let group_data_id = std::env::var("GROUP_DATA_ID").unwrap();
21    let body = SensitiveDataScannerRuleCreateRequest::new(
22        SensitiveDataScannerRuleCreate::new(
23            SensitiveDataScannerRuleAttributes::new()
24                .excluded_namespaces(vec!["admin.name".to_string()])
25                .included_keyword_configuration(
26                    SensitiveDataScannerIncludedKeywordConfiguration::new(
27                        35,
28                        vec!["credit card".to_string()],
29                    ),
30                )
31                .is_enabled(true)
32                .name("Example-Sensitive-Data-Scanner".to_string())
33                .namespaces(vec!["admin".to_string()])
34                .pattern("pattern".to_string())
35                .priority(1)
36                .tags(vec!["sensitive_data:true".to_string()])
37                .text_replacement(
38                    SensitiveDataScannerTextReplacement::new()
39                        .type_(SensitiveDataScannerTextReplacementType::NONE),
40                ),
41            SensitiveDataScannerRuleRelationships::new().group(
42                SensitiveDataScannerGroupData::new().data(
43                    SensitiveDataScannerGroup::new()
44                        .id(group_data_id.clone())
45                        .type_(SensitiveDataScannerGroupType::SENSITIVE_DATA_SCANNER_GROUP),
46                ),
47            ),
48            SensitiveDataScannerRuleType::SENSITIVE_DATA_SCANNER_RULE,
49        ),
50        SensitiveDataScannerMetaVersionOnly::new(),
51    );
52    let configuration = datadog::Configuration::new();
53    let api = SensitiveDataScannerAPI::with_config(configuration);
54    let resp = api.create_scanning_rule(body).await;
55    if let Ok(value) = resp {
56        println!("{:#?}", value);
57    } else {
58        println!("{:#?}", resp.unwrap_err());
59    }
60}