fastly_api/apis/
waf_active_rules_api.rs

1/*
2 * Fastly API
3 *
4 * Via the Fastly API you can perform any of the operations that are possible within the management console,  including creating services, domains, and backends, configuring rules or uploading your own application code, as well as account operations such as user administration and billing reports. The API is organized into collections of endpoints that allow manipulation of objects related to Fastly services and accounts. For the most accurate and up-to-date API reference content, visit our [Developer Hub](https://www.fastly.com/documentation/reference/api/) 
5 *
6 */
7
8
9use reqwest;
10
11use crate::apis::ResponseContent;
12use super::{Error, configuration};
13
14/// struct for passing parameters to the method [`bulk_delete_waf_active_rules`]
15#[derive(Clone, Debug, Default)]
16pub struct BulkDeleteWafActiveRulesParams {
17    /// Alphanumeric string identifying a WAF Firewall.
18    pub firewall_id: String,
19    /// Integer identifying a service version.
20    pub version_id: i32,
21    pub request_body: Option<::std::collections::HashMap<String, serde_json::Value>>
22}
23
24/// struct for passing parameters to the method [`bulk_update_waf_active_rules`]
25#[derive(Clone, Debug, Default)]
26pub struct BulkUpdateWafActiveRulesParams {
27    /// Alphanumeric string identifying a WAF Firewall.
28    pub firewall_id: String,
29    /// Integer identifying a service version.
30    pub version_id: i32,
31    pub body: Option<crate::models::WafActiveRuleData>
32}
33
34/// struct for passing parameters to the method [`create_waf_active_rule`]
35#[derive(Clone, Debug, Default)]
36pub struct CreateWafActiveRuleParams {
37    /// Alphanumeric string identifying a WAF Firewall.
38    pub firewall_id: String,
39    /// Integer identifying a service version.
40    pub version_id: i32,
41    pub waf_active_rule: Option<crate::models::WafActiveRule>
42}
43
44/// struct for passing parameters to the method [`create_waf_active_rules_tag`]
45#[derive(Clone, Debug, Default)]
46pub struct CreateWafActiveRulesTagParams {
47    /// Alphanumeric string identifying a WAF Firewall.
48    pub firewall_id: String,
49    /// Integer identifying a service version.
50    pub version_id: i32,
51    /// Name of the tag.
52    pub waf_tag_name: String,
53    pub waf_active_rule: Option<crate::models::WafActiveRule>
54}
55
56/// struct for passing parameters to the method [`delete_waf_active_rule`]
57#[derive(Clone, Debug, Default)]
58pub struct DeleteWafActiveRuleParams {
59    /// Alphanumeric string identifying a WAF Firewall.
60    pub firewall_id: String,
61    /// Integer identifying a service version.
62    pub version_id: i32,
63    /// Alphanumeric string identifying a WAF rule.
64    pub waf_rule_id: String
65}
66
67/// struct for passing parameters to the method [`get_waf_active_rule`]
68#[derive(Clone, Debug, Default)]
69pub struct GetWafActiveRuleParams {
70    /// Alphanumeric string identifying a WAF Firewall.
71    pub firewall_id: String,
72    /// Integer identifying a service version.
73    pub version_id: i32,
74    /// Alphanumeric string identifying a WAF rule.
75    pub waf_rule_id: String,
76    /// Include relationships. Optional, comma-separated values. Permitted values: `waf_rule_revision` and `waf_firewall_version`. 
77    pub include: Option<String>
78}
79
80/// struct for passing parameters to the method [`list_waf_active_rules`]
81#[derive(Clone, Debug, Default)]
82pub struct ListWafActiveRulesParams {
83    /// Alphanumeric string identifying a WAF Firewall.
84    pub firewall_id: String,
85    /// Integer identifying a service version.
86    pub version_id: i32,
87    /// Limit results to active rules with the specified status.
88    pub filter_status: Option<String>,
89    /// Limit results to active rules with the specified message.
90    pub filter_waf_rule_revision_message: Option<String>,
91    /// Limit results to active rules that represent the specified ModSecurity modsec_rule_id.
92    pub filter_waf_rule_revision_modsec_rule_id: Option<String>,
93    /// Limit results to active rules referencing an outdated rule revision.
94    pub filter_outdated: Option<String>,
95    /// Include relationships. Optional, comma-separated values. Permitted values: `waf_rule_revision` and `waf_firewall_version`. 
96    pub include: Option<String>,
97    /// Current page.
98    pub page_number: Option<i32>,
99    /// Number of records per page.
100    pub page_size: Option<i32>
101}
102
103/// struct for passing parameters to the method [`update_waf_active_rule`]
104#[derive(Clone, Debug, Default)]
105pub struct UpdateWafActiveRuleParams {
106    /// Alphanumeric string identifying a WAF Firewall.
107    pub firewall_id: String,
108    /// Integer identifying a service version.
109    pub version_id: i32,
110    /// Alphanumeric string identifying a WAF rule.
111    pub waf_rule_id: String,
112    pub waf_active_rule: Option<crate::models::WafActiveRule>
113}
114
115
116/// struct for typed errors of method [`bulk_delete_waf_active_rules`]
117#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(untagged)]
119pub enum BulkDeleteWafActiveRulesError {
120    UnknownValue(serde_json::Value),
121}
122
123/// struct for typed errors of method [`bulk_update_waf_active_rules`]
124#[derive(Debug, Clone, Serialize, Deserialize)]
125#[serde(untagged)]
126pub enum BulkUpdateWafActiveRulesError {
127    UnknownValue(serde_json::Value),
128}
129
130/// struct for typed errors of method [`create_waf_active_rule`]
131#[derive(Debug, Clone, Serialize, Deserialize)]
132#[serde(untagged)]
133pub enum CreateWafActiveRuleError {
134    UnknownValue(serde_json::Value),
135}
136
137/// struct for typed errors of method [`create_waf_active_rules_tag`]
138#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(untagged)]
140pub enum CreateWafActiveRulesTagError {
141    UnknownValue(serde_json::Value),
142}
143
144/// struct for typed errors of method [`delete_waf_active_rule`]
145#[derive(Debug, Clone, Serialize, Deserialize)]
146#[serde(untagged)]
147pub enum DeleteWafActiveRuleError {
148    UnknownValue(serde_json::Value),
149}
150
151/// struct for typed errors of method [`get_waf_active_rule`]
152#[derive(Debug, Clone, Serialize, Deserialize)]
153#[serde(untagged)]
154pub enum GetWafActiveRuleError {
155    UnknownValue(serde_json::Value),
156}
157
158/// struct for typed errors of method [`list_waf_active_rules`]
159#[derive(Debug, Clone, Serialize, Deserialize)]
160#[serde(untagged)]
161pub enum ListWafActiveRulesError {
162    UnknownValue(serde_json::Value),
163}
164
165/// struct for typed errors of method [`update_waf_active_rule`]
166#[derive(Debug, Clone, Serialize, Deserialize)]
167#[serde(untagged)]
168pub enum UpdateWafActiveRuleError {
169    UnknownValue(serde_json::Value),
170}
171
172
173/// Delete many active rules on a particular firewall version using the active rule ID. Limited to 500 rules per request.
174pub async fn bulk_delete_waf_active_rules(configuration: &mut configuration::Configuration, params: BulkDeleteWafActiveRulesParams) -> Result<(), Error<BulkDeleteWafActiveRulesError>> {
175    let local_var_configuration = configuration;
176
177    // unbox the parameters
178    let firewall_id = params.firewall_id;
179    let version_id = params.version_id;
180    let request_body = params.request_body;
181
182
183    let local_var_client = &local_var_configuration.client;
184
185    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
186    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
187
188    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
189        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
190    }
191    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
192        let local_var_key = local_var_apikey.key.clone();
193        let local_var_value = match local_var_apikey.prefix {
194            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
195            None => local_var_key,
196        };
197        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
198    };
199    local_var_req_builder = local_var_req_builder.json(&request_body);
200
201    let local_var_req = local_var_req_builder.build()?;
202    let local_var_resp = local_var_client.execute(local_var_req).await?;
203
204    if "DELETE" != "GET" && "DELETE" != "HEAD" {
205      let headers = local_var_resp.headers();
206      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
207          Some(v) => v.to_str().unwrap().parse().unwrap(),
208          None => configuration::DEFAULT_RATELIMIT,
209      };
210      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
211          Some(v) => v.to_str().unwrap().parse().unwrap(),
212          None => 0,
213      };
214    }
215
216    let local_var_status = local_var_resp.status();
217    let local_var_content = local_var_resp.text().await?;
218
219    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
220        Ok(())
221    } else {
222        let local_var_entity: Option<BulkDeleteWafActiveRulesError> = serde_json::from_str(&local_var_content).ok();
223        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
224        Err(Error::ResponseError(local_var_error))
225    }
226}
227
228/// Bulk update all active rules on a [firewall version](https://www.fastly.com/documentation/reference/api/waf/firewall-version/). This endpoint will not add new active rules, only update existing active rules.
229pub async fn bulk_update_waf_active_rules(configuration: &mut configuration::Configuration, params: BulkUpdateWafActiveRulesParams) -> Result<(), Error<BulkUpdateWafActiveRulesError>> {
230    let local_var_configuration = configuration;
231
232    // unbox the parameters
233    let firewall_id = params.firewall_id;
234    let version_id = params.version_id;
235    let body = params.body;
236
237
238    let local_var_client = &local_var_configuration.client;
239
240    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/bulk", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
241    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
242
243    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
244        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
245    }
246    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
247        let local_var_key = local_var_apikey.key.clone();
248        let local_var_value = match local_var_apikey.prefix {
249            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
250            None => local_var_key,
251        };
252        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
253    };
254    local_var_req_builder = local_var_req_builder.json(&body);
255
256    let local_var_req = local_var_req_builder.build()?;
257    let local_var_resp = local_var_client.execute(local_var_req).await?;
258
259    if "PATCH" != "GET" && "PATCH" != "HEAD" {
260      let headers = local_var_resp.headers();
261      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
262          Some(v) => v.to_str().unwrap().parse().unwrap(),
263          None => configuration::DEFAULT_RATELIMIT,
264      };
265      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
266          Some(v) => v.to_str().unwrap().parse().unwrap(),
267          None => 0,
268      };
269    }
270
271    let local_var_status = local_var_resp.status();
272    let local_var_content = local_var_resp.text().await?;
273
274    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
275        Ok(())
276    } else {
277        let local_var_entity: Option<BulkUpdateWafActiveRulesError> = serde_json::from_str(&local_var_content).ok();
278        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
279        Err(Error::ResponseError(local_var_error))
280    }
281}
282
283/// Create an active rule for a particular firewall version.
284pub async fn create_waf_active_rule(configuration: &mut configuration::Configuration, params: CreateWafActiveRuleParams) -> Result<crate::models::WafActiveRuleCreationResponse, Error<CreateWafActiveRuleError>> {
285    let local_var_configuration = configuration;
286
287    // unbox the parameters
288    let firewall_id = params.firewall_id;
289    let version_id = params.version_id;
290    let waf_active_rule = params.waf_active_rule;
291
292
293    let local_var_client = &local_var_configuration.client;
294
295    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
296    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
297
298    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
299        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
300    }
301    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
302        let local_var_key = local_var_apikey.key.clone();
303        let local_var_value = match local_var_apikey.prefix {
304            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
305            None => local_var_key,
306        };
307        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
308    };
309    local_var_req_builder = local_var_req_builder.json(&waf_active_rule);
310
311    let local_var_req = local_var_req_builder.build()?;
312    let local_var_resp = local_var_client.execute(local_var_req).await?;
313
314    if "POST" != "GET" && "POST" != "HEAD" {
315      let headers = local_var_resp.headers();
316      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
317          Some(v) => v.to_str().unwrap().parse().unwrap(),
318          None => configuration::DEFAULT_RATELIMIT,
319      };
320      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
321          Some(v) => v.to_str().unwrap().parse().unwrap(),
322          None => 0,
323      };
324    }
325
326    let local_var_status = local_var_resp.status();
327    let local_var_content = local_var_resp.text().await?;
328
329    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
330        serde_json::from_str(&local_var_content).map_err(Error::from)
331    } else {
332        let local_var_entity: Option<CreateWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
333        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
334        Err(Error::ResponseError(local_var_error))
335    }
336}
337
338/// Create active rules by tag. This endpoint will create active rules using the latest revision available for each rule.
339pub async fn create_waf_active_rules_tag(configuration: &mut configuration::Configuration, params: CreateWafActiveRulesTagParams) -> Result<(), Error<CreateWafActiveRulesTagError>> {
340    let local_var_configuration = configuration;
341
342    // unbox the parameters
343    let firewall_id = params.firewall_id;
344    let version_id = params.version_id;
345    let waf_tag_name = params.waf_tag_name;
346    let waf_active_rule = params.waf_active_rule;
347
348
349    let local_var_client = &local_var_configuration.client;
350
351    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/tags/{waf_tag_name}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_tag_name=crate::apis::urlencode(waf_tag_name));
352    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
353
354    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
355        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
356    }
357    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
358        let local_var_key = local_var_apikey.key.clone();
359        let local_var_value = match local_var_apikey.prefix {
360            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
361            None => local_var_key,
362        };
363        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
364    };
365    local_var_req_builder = local_var_req_builder.json(&waf_active_rule);
366
367    let local_var_req = local_var_req_builder.build()?;
368    let local_var_resp = local_var_client.execute(local_var_req).await?;
369
370    if "POST" != "GET" && "POST" != "HEAD" {
371      let headers = local_var_resp.headers();
372      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
373          Some(v) => v.to_str().unwrap().parse().unwrap(),
374          None => configuration::DEFAULT_RATELIMIT,
375      };
376      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
377          Some(v) => v.to_str().unwrap().parse().unwrap(),
378          None => 0,
379      };
380    }
381
382    let local_var_status = local_var_resp.status();
383    let local_var_content = local_var_resp.text().await?;
384
385    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
386        Ok(())
387    } else {
388        let local_var_entity: Option<CreateWafActiveRulesTagError> = serde_json::from_str(&local_var_content).ok();
389        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
390        Err(Error::ResponseError(local_var_error))
391    }
392}
393
394/// Delete an active rule for a particular firewall version.
395pub async fn delete_waf_active_rule(configuration: &mut configuration::Configuration, params: DeleteWafActiveRuleParams) -> Result<(), Error<DeleteWafActiveRuleError>> {
396    let local_var_configuration = configuration;
397
398    // unbox the parameters
399    let firewall_id = params.firewall_id;
400    let version_id = params.version_id;
401    let waf_rule_id = params.waf_rule_id;
402
403
404    let local_var_client = &local_var_configuration.client;
405
406    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id}", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_rule_id=crate::apis::urlencode(waf_rule_id));
407    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
408
409    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
410        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
411    }
412    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
413        let local_var_key = local_var_apikey.key.clone();
414        let local_var_value = match local_var_apikey.prefix {
415            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
416            None => local_var_key,
417        };
418        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
419    };
420
421    let local_var_req = local_var_req_builder.build()?;
422    let local_var_resp = local_var_client.execute(local_var_req).await?;
423
424    if "DELETE" != "GET" && "DELETE" != "HEAD" {
425      let headers = local_var_resp.headers();
426      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
427          Some(v) => v.to_str().unwrap().parse().unwrap(),
428          None => configuration::DEFAULT_RATELIMIT,
429      };
430      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
431          Some(v) => v.to_str().unwrap().parse().unwrap(),
432          None => 0,
433      };
434    }
435
436    let local_var_status = local_var_resp.status();
437    let local_var_content = local_var_resp.text().await?;
438
439    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
440        Ok(())
441    } else {
442        let local_var_entity: Option<DeleteWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
443        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
444        Err(Error::ResponseError(local_var_error))
445    }
446}
447
448/// Get a specific active rule object. Includes details of the rule revision associated with the active rule object by default.
449pub async fn get_waf_active_rule(configuration: &mut configuration::Configuration, params: GetWafActiveRuleParams) -> Result<crate::models::WafActiveRuleResponse, Error<GetWafActiveRuleError>> {
450    let local_var_configuration = configuration;
451
452    // unbox the parameters
453    let firewall_id = params.firewall_id;
454    let version_id = params.version_id;
455    let waf_rule_id = params.waf_rule_id;
456    let include = params.include;
457
458
459    let local_var_client = &local_var_configuration.client;
460
461    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id}", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_rule_id=crate::apis::urlencode(waf_rule_id));
462    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
463
464    if let Some(ref local_var_str) = include {
465        local_var_req_builder = local_var_req_builder.query(&[("include", &local_var_str.to_string())]);
466    }
467    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
468        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
469    }
470    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
471        let local_var_key = local_var_apikey.key.clone();
472        let local_var_value = match local_var_apikey.prefix {
473            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
474            None => local_var_key,
475        };
476        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
477    };
478
479    let local_var_req = local_var_req_builder.build()?;
480    let local_var_resp = local_var_client.execute(local_var_req).await?;
481
482    if "GET" != "GET" && "GET" != "HEAD" {
483      let headers = local_var_resp.headers();
484      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
485          Some(v) => v.to_str().unwrap().parse().unwrap(),
486          None => configuration::DEFAULT_RATELIMIT,
487      };
488      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
489          Some(v) => v.to_str().unwrap().parse().unwrap(),
490          None => 0,
491      };
492    }
493
494    let local_var_status = local_var_resp.status();
495    let local_var_content = local_var_resp.text().await?;
496
497    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
498        serde_json::from_str(&local_var_content).map_err(Error::from)
499    } else {
500        let local_var_entity: Option<GetWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
501        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
502        Err(Error::ResponseError(local_var_error))
503    }
504}
505
506/// List all active rules for a particular firewall version.
507pub async fn list_waf_active_rules(configuration: &mut configuration::Configuration, params: ListWafActiveRulesParams) -> Result<crate::models::WafActiveRulesResponse, Error<ListWafActiveRulesError>> {
508    let local_var_configuration = configuration;
509
510    // unbox the parameters
511    let firewall_id = params.firewall_id;
512    let version_id = params.version_id;
513    let filter_status = params.filter_status;
514    let filter_waf_rule_revision_message = params.filter_waf_rule_revision_message;
515    let filter_waf_rule_revision_modsec_rule_id = params.filter_waf_rule_revision_modsec_rule_id;
516    let filter_outdated = params.filter_outdated;
517    let include = params.include;
518    let page_number = params.page_number;
519    let page_size = params.page_size;
520
521
522    let local_var_client = &local_var_configuration.client;
523
524    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id);
525    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
526
527    if let Some(ref local_var_str) = filter_status {
528        local_var_req_builder = local_var_req_builder.query(&[("filter[status]", &local_var_str.to_string())]);
529    }
530    if let Some(ref local_var_str) = filter_waf_rule_revision_message {
531        local_var_req_builder = local_var_req_builder.query(&[("filter[waf_rule_revision][message]", &local_var_str.to_string())]);
532    }
533    if let Some(ref local_var_str) = filter_waf_rule_revision_modsec_rule_id {
534        local_var_req_builder = local_var_req_builder.query(&[("filter[waf_rule_revision][modsec_rule_id]", &local_var_str.to_string())]);
535    }
536    if let Some(ref local_var_str) = filter_outdated {
537        local_var_req_builder = local_var_req_builder.query(&[("filter[outdated]", &local_var_str.to_string())]);
538    }
539    if let Some(ref local_var_str) = include {
540        local_var_req_builder = local_var_req_builder.query(&[("include", &local_var_str.to_string())]);
541    }
542    if let Some(ref local_var_str) = page_number {
543        local_var_req_builder = local_var_req_builder.query(&[("page[number]", &local_var_str.to_string())]);
544    }
545    if let Some(ref local_var_str) = page_size {
546        local_var_req_builder = local_var_req_builder.query(&[("page[size]", &local_var_str.to_string())]);
547    }
548    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
549        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
550    }
551    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
552        let local_var_key = local_var_apikey.key.clone();
553        let local_var_value = match local_var_apikey.prefix {
554            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
555            None => local_var_key,
556        };
557        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
558    };
559
560    let local_var_req = local_var_req_builder.build()?;
561    let local_var_resp = local_var_client.execute(local_var_req).await?;
562
563    if "GET" != "GET" && "GET" != "HEAD" {
564      let headers = local_var_resp.headers();
565      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
566          Some(v) => v.to_str().unwrap().parse().unwrap(),
567          None => configuration::DEFAULT_RATELIMIT,
568      };
569      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
570          Some(v) => v.to_str().unwrap().parse().unwrap(),
571          None => 0,
572      };
573    }
574
575    let local_var_status = local_var_resp.status();
576    let local_var_content = local_var_resp.text().await?;
577
578    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
579        serde_json::from_str(&local_var_content).map_err(Error::from)
580    } else {
581        let local_var_entity: Option<ListWafActiveRulesError> = serde_json::from_str(&local_var_content).ok();
582        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
583        Err(Error::ResponseError(local_var_error))
584    }
585}
586
587/// Update an active rule's status for a particular firewall version.
588pub async fn update_waf_active_rule(configuration: &mut configuration::Configuration, params: UpdateWafActiveRuleParams) -> Result<crate::models::WafActiveRuleResponse, Error<UpdateWafActiveRuleError>> {
589    let local_var_configuration = configuration;
590
591    // unbox the parameters
592    let firewall_id = params.firewall_id;
593    let version_id = params.version_id;
594    let waf_rule_id = params.waf_rule_id;
595    let waf_active_rule = params.waf_active_rule;
596
597
598    let local_var_client = &local_var_configuration.client;
599
600    let local_var_uri_str = format!("{}/waf/firewalls/{firewall_id}/versions/{version_id}/active-rules/{waf_rule_id}", local_var_configuration.base_path, firewall_id=crate::apis::urlencode(firewall_id), version_id=version_id, waf_rule_id=crate::apis::urlencode(waf_rule_id));
601    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
602
603    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
604        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
605    }
606    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
607        let local_var_key = local_var_apikey.key.clone();
608        let local_var_value = match local_var_apikey.prefix {
609            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
610            None => local_var_key,
611        };
612        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
613    };
614    local_var_req_builder = local_var_req_builder.json(&waf_active_rule);
615
616    let local_var_req = local_var_req_builder.build()?;
617    let local_var_resp = local_var_client.execute(local_var_req).await?;
618
619    if "PATCH" != "GET" && "PATCH" != "HEAD" {
620      let headers = local_var_resp.headers();
621      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
622          Some(v) => v.to_str().unwrap().parse().unwrap(),
623          None => configuration::DEFAULT_RATELIMIT,
624      };
625      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
626          Some(v) => v.to_str().unwrap().parse().unwrap(),
627          None => 0,
628      };
629    }
630
631    let local_var_status = local_var_resp.status();
632    let local_var_content = local_var_resp.text().await?;
633
634    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
635        serde_json::from_str(&local_var_content).map_err(Error::from)
636    } else {
637        let local_var_entity: Option<UpdateWafActiveRuleError> = serde_json::from_str(&local_var_content).ok();
638        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
639        Err(Error::ResponseError(local_var_error))
640    }
641}
642