use serde::{Deserialize, Serialize}; /*
                                      * Compute Engine API
                                      *
                                      * Creates and runs virtual machines on Google Cloud Platform.
                                      *
                                      * The version of the OpenAPI document: v1
                                      *
                                      * Generated by: https://openapi-generator.tech
                                      */

#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct SecurityPolicyRulePreconfiguredWafConfigExclusion {
    /// A list of request cookie names whose value will be excluded from inspection during preconfigured WAF evaluation.
    #[serde(rename = "requestCookiesToExclude", skip_serializing_if = "Option::is_none")]
    pub request_cookies_to_exclude: Option<Vec<crate::google_rest_apis::compute_v1::models::SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams>>,
    /// A list of request header names whose value will be excluded from inspection during preconfigured WAF evaluation.
    #[serde(rename = "requestHeadersToExclude", skip_serializing_if = "Option::is_none")]
    pub request_headers_to_exclude: Option<Vec<crate::google_rest_apis::compute_v1::models::SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams>>,
    /// A list of request query parameter names whose value will be excluded from inspection during preconfigured WAF evaluation. Note that the parameter can be in the query string or in the POST body.
    #[serde(rename = "requestQueryParamsToExclude", skip_serializing_if = "Option::is_none")]
    pub request_query_params_to_exclude: Option<Vec<crate::google_rest_apis::compute_v1::models::SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams>>,
    /// A list of request URIs from the request line to be excluded from inspection during preconfigured WAF evaluation. When specifying this field, the query or fragment part should be excluded.
    #[serde(rename = "requestUrisToExclude", skip_serializing_if = "Option::is_none")]
    pub request_uris_to_exclude: Option<Vec<crate::google_rest_apis::compute_v1::models::SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams>>,
    /// A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion. If omitted, it refers to all the rule IDs under the WAF rule set.
    #[serde(rename = "targetRuleIds", skip_serializing_if = "Option::is_none")]
    pub target_rule_ids: Option<Vec<String>>,
    /// Target WAF rule set to apply the preconfigured WAF exclusion.
    #[serde(rename = "targetRuleSet", skip_serializing_if = "Option::is_none")]
    pub target_rule_set: Option<String>,
}

impl SecurityPolicyRulePreconfiguredWafConfigExclusion {
    pub fn new() -> SecurityPolicyRulePreconfiguredWafConfigExclusion {
        SecurityPolicyRulePreconfiguredWafConfigExclusion {
            request_cookies_to_exclude: None,
            request_headers_to_exclude: None,
            request_query_params_to_exclude: None,
            request_uris_to_exclude: None,
            target_rule_ids: None,
            target_rule_set: None,
        }
    }
}
