Skip to main content

fastly_api/apis/
bot_management_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 [`bot_management_get_bot`]
15#[derive(Clone, Debug, Default)]
16pub struct BotManagementGetBotParams {
17    /// The ID of the bot management workspace.
18    pub workspace_id: String,
19    /// The ID of the bot category.
20    pub category_id: String,
21    /// The ID of the bot.
22    pub bot_id: String
23}
24
25/// struct for passing parameters to the method [`bot_management_get_category`]
26#[derive(Clone, Debug, Default)]
27pub struct BotManagementGetCategoryParams {
28    /// The ID of the bot management workspace.
29    pub workspace_id: String,
30    /// The ID of the bot category.
31    pub category_id: String
32}
33
34/// struct for passing parameters to the method [`bot_management_get_workspace`]
35#[derive(Clone, Debug, Default)]
36pub struct BotManagementGetWorkspaceParams {
37    /// The ID of the bot management workspace.
38    pub workspace_id: String
39}
40
41/// struct for passing parameters to the method [`bot_management_list_bots`]
42#[derive(Clone, Debug, Default)]
43pub struct BotManagementListBotsParams {
44    /// The ID of the bot management workspace.
45    pub workspace_id: String,
46    /// Limit how many results are returned.
47    pub limit: Option<i32>,
48    /// Cursor for pagination. Use the `next_cursor` value from a previous response to request the next page of results.
49    pub cursor: Option<String>
50}
51
52/// struct for passing parameters to the method [`bot_management_list_categories`]
53#[derive(Clone, Debug, Default)]
54pub struct BotManagementListCategoriesParams {
55    /// The ID of the bot management workspace.
56    pub workspace_id: String,
57    /// Limit how many results are returned.
58    pub limit: Option<i32>,
59    /// Cursor for pagination. Use the `next_cursor` value from a previous response to request the next page of results.
60    pub cursor: Option<String>
61}
62
63/// struct for passing parameters to the method [`bot_management_list_category_bots`]
64#[derive(Clone, Debug, Default)]
65pub struct BotManagementListCategoryBotsParams {
66    /// The ID of the bot management workspace.
67    pub workspace_id: String,
68    /// The ID of the bot category.
69    pub category_id: String,
70    /// Limit how many results are returned.
71    pub limit: Option<i32>,
72    /// Cursor for pagination. Use the `next_cursor` value from a previous response to request the next page of results.
73    pub cursor: Option<String>
74}
75
76/// struct for passing parameters to the method [`bot_management_list_workspaces`]
77#[derive(Clone, Debug, Default)]
78pub struct BotManagementListWorkspacesParams {
79    /// Filter results to the workspace attached to this service. Returns an empty list if the service is not attached to a workspace.
80    pub service_id: Option<String>,
81    /// Limit how many results are returned.
82    pub limit: Option<i32>,
83    /// Cursor for pagination. Use the `next_cursor` value from a previous response to request the next page of results.
84    pub cursor: Option<String>
85}
86
87/// struct for passing parameters to the method [`bot_management_update_bot`]
88#[derive(Clone, Debug, Default)]
89pub struct BotManagementUpdateBotParams {
90    /// The ID of the bot management workspace.
91    pub workspace_id: String,
92    /// The ID of the bot category.
93    pub category_id: String,
94    /// The ID of the bot.
95    pub bot_id: String,
96    pub bot_management_bot: crate::models::BotManagementBot
97}
98
99/// struct for passing parameters to the method [`bot_management_update_category`]
100#[derive(Clone, Debug, Default)]
101pub struct BotManagementUpdateCategoryParams {
102    /// The ID of the bot management workspace.
103    pub workspace_id: String,
104    /// The ID of the bot category.
105    pub category_id: String,
106    pub bot_management_category: crate::models::BotManagementCategory
107}
108
109/// struct for passing parameters to the method [`bot_management_update_workspace`]
110#[derive(Clone, Debug, Default)]
111pub struct BotManagementUpdateWorkspaceParams {
112    /// The ID of the bot management workspace.
113    pub workspace_id: String,
114    pub bot_management_workspace: crate::models::BotManagementWorkspace
115}
116
117
118/// struct for typed errors of method [`bot_management_get_bot`]
119#[derive(Debug, Clone, Serialize, Deserialize)]
120#[serde(untagged)]
121pub enum BotManagementGetBotError {
122    Status400(crate::models::BotManagementInvalidRequestError),
123    Status401(crate::models::BotManagementNotAuthenticatedError),
124    Status403(crate::models::BotManagementNotAllowedError),
125    Status404(crate::models::BotManagementNotFoundError),
126    Status429(crate::models::BotManagementRateLimitError),
127    UnknownValue(serde_json::Value),
128}
129
130/// struct for typed errors of method [`bot_management_get_category`]
131#[derive(Debug, Clone, Serialize, Deserialize)]
132#[serde(untagged)]
133pub enum BotManagementGetCategoryError {
134    Status400(crate::models::BotManagementInvalidRequestError),
135    Status401(crate::models::BotManagementNotAuthenticatedError),
136    Status403(crate::models::BotManagementNotAllowedError),
137    Status404(crate::models::BotManagementNotFoundError),
138    Status429(crate::models::BotManagementRateLimitError),
139    UnknownValue(serde_json::Value),
140}
141
142/// struct for typed errors of method [`bot_management_get_workspace`]
143#[derive(Debug, Clone, Serialize, Deserialize)]
144#[serde(untagged)]
145pub enum BotManagementGetWorkspaceError {
146    Status400(crate::models::BotManagementInvalidRequestError),
147    Status401(crate::models::BotManagementNotAuthenticatedError),
148    Status403(crate::models::BotManagementNotAllowedError),
149    Status404(crate::models::BotManagementNotFoundError),
150    Status429(crate::models::BotManagementRateLimitError),
151    UnknownValue(serde_json::Value),
152}
153
154/// struct for typed errors of method [`bot_management_list_bots`]
155#[derive(Debug, Clone, Serialize, Deserialize)]
156#[serde(untagged)]
157pub enum BotManagementListBotsError {
158    Status400(crate::models::BotManagementInvalidRequestError),
159    Status401(crate::models::BotManagementNotAuthenticatedError),
160    Status403(crate::models::BotManagementNotAllowedError),
161    Status404(crate::models::BotManagementNotFoundError),
162    Status429(crate::models::BotManagementRateLimitError),
163    UnknownValue(serde_json::Value),
164}
165
166/// struct for typed errors of method [`bot_management_list_categories`]
167#[derive(Debug, Clone, Serialize, Deserialize)]
168#[serde(untagged)]
169pub enum BotManagementListCategoriesError {
170    Status400(crate::models::BotManagementInvalidRequestError),
171    Status401(crate::models::BotManagementNotAuthenticatedError),
172    Status403(crate::models::BotManagementNotAllowedError),
173    Status404(crate::models::BotManagementNotFoundError),
174    Status429(crate::models::BotManagementRateLimitError),
175    UnknownValue(serde_json::Value),
176}
177
178/// struct for typed errors of method [`bot_management_list_category_bots`]
179#[derive(Debug, Clone, Serialize, Deserialize)]
180#[serde(untagged)]
181pub enum BotManagementListCategoryBotsError {
182    Status400(crate::models::BotManagementInvalidRequestError),
183    Status401(crate::models::BotManagementNotAuthenticatedError),
184    Status403(crate::models::BotManagementNotAllowedError),
185    Status404(crate::models::BotManagementNotFoundError),
186    Status429(crate::models::BotManagementRateLimitError),
187    UnknownValue(serde_json::Value),
188}
189
190/// struct for typed errors of method [`bot_management_list_workspaces`]
191#[derive(Debug, Clone, Serialize, Deserialize)]
192#[serde(untagged)]
193pub enum BotManagementListWorkspacesError {
194    Status400(crate::models::BotManagementInvalidRequestError),
195    Status401(crate::models::BotManagementNotAuthenticatedError),
196    Status403(crate::models::BotManagementNotAllowedError),
197    Status429(crate::models::BotManagementRateLimitError),
198    UnknownValue(serde_json::Value),
199}
200
201/// struct for typed errors of method [`bot_management_update_bot`]
202#[derive(Debug, Clone, Serialize, Deserialize)]
203#[serde(untagged)]
204pub enum BotManagementUpdateBotError {
205    Status400(crate::models::BotManagementInvalidRequestError),
206    Status401(crate::models::BotManagementNotAuthenticatedError),
207    Status403(crate::models::BotManagementNotAllowedError),
208    Status404(crate::models::BotManagementNotFoundError),
209    Status429(crate::models::BotManagementRateLimitError),
210    UnknownValue(serde_json::Value),
211}
212
213/// struct for typed errors of method [`bot_management_update_category`]
214#[derive(Debug, Clone, Serialize, Deserialize)]
215#[serde(untagged)]
216pub enum BotManagementUpdateCategoryError {
217    Status400(crate::models::BotManagementInvalidRequestError),
218    Status401(crate::models::BotManagementNotAuthenticatedError),
219    Status403(crate::models::BotManagementNotAllowedError),
220    Status404(crate::models::BotManagementNotFoundError),
221    Status429(crate::models::BotManagementRateLimitError),
222    UnknownValue(serde_json::Value),
223}
224
225/// struct for typed errors of method [`bot_management_update_workspace`]
226#[derive(Debug, Clone, Serialize, Deserialize)]
227#[serde(untagged)]
228pub enum BotManagementUpdateWorkspaceError {
229    Status400(crate::models::BotManagementInvalidRequestError),
230    Status401(crate::models::BotManagementNotAuthenticatedError),
231    Status403(crate::models::BotManagementNotAllowedError),
232    Status404(crate::models::BotManagementNotFoundError),
233    Status429(crate::models::BotManagementRateLimitError),
234    UnknownValue(serde_json::Value),
235}
236
237
238/// Get the attributes of a bot in a category.
239pub async fn bot_management_get_bot(configuration: &mut configuration::Configuration, params: BotManagementGetBotParams) -> Result<crate::models::BotManagementBotResponse, Error<BotManagementGetBotError>> {
240    let local_var_configuration = configuration;
241
242    // unbox the parameters
243    let workspace_id = params.workspace_id;
244    let category_id = params.category_id;
245    let bot_id = params.bot_id;
246
247
248    let local_var_client = &local_var_configuration.client;
249
250    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}/policy/categories/{category_id}/bots/{bot_id}", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id), category_id=crate::apis::urlencode(category_id), bot_id=crate::apis::urlencode(bot_id));
251    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
252
253    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
254        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
255    }
256    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
257        let local_var_key = local_var_apikey.key.clone();
258        let local_var_value = match local_var_apikey.prefix {
259            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
260            None => local_var_key,
261        };
262        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
263    };
264
265    let local_var_req = local_var_req_builder.build()?;
266    let local_var_resp = local_var_client.execute(local_var_req).await?;
267
268    if "GET" != "GET" && "GET" != "HEAD" {
269      let headers = local_var_resp.headers();
270      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
271          Some(v) => v.to_str().unwrap().parse().unwrap(),
272          None => configuration::DEFAULT_RATELIMIT,
273      };
274      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
275          Some(v) => v.to_str().unwrap().parse().unwrap(),
276          None => 0,
277      };
278    }
279
280    let local_var_status = local_var_resp.status();
281    let local_var_content = local_var_resp.text().await?;
282
283    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
284        serde_json::from_str(&local_var_content).map_err(Error::from)
285    } else {
286        let local_var_entity: Option<BotManagementGetBotError> = serde_json::from_str(&local_var_content).ok();
287        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
288        Err(Error::ResponseError(local_var_error))
289    }
290}
291
292/// Get the attributes of a bot category.
293pub async fn bot_management_get_category(configuration: &mut configuration::Configuration, params: BotManagementGetCategoryParams) -> Result<crate::models::BotManagementCategoryResponse, Error<BotManagementGetCategoryError>> {
294    let local_var_configuration = configuration;
295
296    // unbox the parameters
297    let workspace_id = params.workspace_id;
298    let category_id = params.category_id;
299
300
301    let local_var_client = &local_var_configuration.client;
302
303    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}/policy/categories/{category_id}", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id), category_id=crate::apis::urlencode(category_id));
304    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
305
306    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
307        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
308    }
309    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
310        let local_var_key = local_var_apikey.key.clone();
311        let local_var_value = match local_var_apikey.prefix {
312            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
313            None => local_var_key,
314        };
315        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
316    };
317
318    let local_var_req = local_var_req_builder.build()?;
319    let local_var_resp = local_var_client.execute(local_var_req).await?;
320
321    if "GET" != "GET" && "GET" != "HEAD" {
322      let headers = local_var_resp.headers();
323      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
324          Some(v) => v.to_str().unwrap().parse().unwrap(),
325          None => configuration::DEFAULT_RATELIMIT,
326      };
327      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
328          Some(v) => v.to_str().unwrap().parse().unwrap(),
329          None => 0,
330      };
331    }
332
333    let local_var_status = local_var_resp.status();
334    let local_var_content = local_var_resp.text().await?;
335
336    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
337        serde_json::from_str(&local_var_content).map_err(Error::from)
338    } else {
339        let local_var_entity: Option<BotManagementGetCategoryError> = serde_json::from_str(&local_var_content).ok();
340        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
341        Err(Error::ResponseError(local_var_error))
342    }
343}
344
345/// Retrieve a bot management workspace.
346pub async fn bot_management_get_workspace(configuration: &mut configuration::Configuration, params: BotManagementGetWorkspaceParams) -> Result<crate::models::BotManagementWorkspaceResponse, Error<BotManagementGetWorkspaceError>> {
347    let local_var_configuration = configuration;
348
349    // unbox the parameters
350    let workspace_id = params.workspace_id;
351
352
353    let local_var_client = &local_var_configuration.client;
354
355    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id));
356    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
357
358    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
359        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
360    }
361    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
362        let local_var_key = local_var_apikey.key.clone();
363        let local_var_value = match local_var_apikey.prefix {
364            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
365            None => local_var_key,
366        };
367        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
368    };
369
370    let local_var_req = local_var_req_builder.build()?;
371    let local_var_resp = local_var_client.execute(local_var_req).await?;
372
373    if "GET" != "GET" && "GET" != "HEAD" {
374      let headers = local_var_resp.headers();
375      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
376          Some(v) => v.to_str().unwrap().parse().unwrap(),
377          None => configuration::DEFAULT_RATELIMIT,
378      };
379      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
380          Some(v) => v.to_str().unwrap().parse().unwrap(),
381          None => 0,
382      };
383    }
384
385    let local_var_status = local_var_resp.status();
386    let local_var_content = local_var_resp.text().await?;
387
388    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
389        serde_json::from_str(&local_var_content).map_err(Error::from)
390    } else {
391        let local_var_entity: Option<BotManagementGetWorkspaceError> = serde_json::from_str(&local_var_content).ok();
392        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
393        Err(Error::ResponseError(local_var_error))
394    }
395}
396
397/// List all bots in a workspace's policy across all categories.
398pub async fn bot_management_list_bots(configuration: &mut configuration::Configuration, params: BotManagementListBotsParams) -> Result<crate::models::BotManagementWorkspaceBotsResponse, Error<BotManagementListBotsError>> {
399    let local_var_configuration = configuration;
400
401    // unbox the parameters
402    let workspace_id = params.workspace_id;
403    let limit = params.limit;
404    let cursor = params.cursor;
405
406
407    let local_var_client = &local_var_configuration.client;
408
409    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}/policy/bots", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id));
410    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
411
412    if let Some(ref local_var_str) = limit {
413        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
414    }
415    if let Some(ref local_var_str) = cursor {
416        local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
417    }
418    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
419        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
420    }
421    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
422        let local_var_key = local_var_apikey.key.clone();
423        let local_var_value = match local_var_apikey.prefix {
424            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
425            None => local_var_key,
426        };
427        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
428    };
429
430    let local_var_req = local_var_req_builder.build()?;
431    let local_var_resp = local_var_client.execute(local_var_req).await?;
432
433    if "GET" != "GET" && "GET" != "HEAD" {
434      let headers = local_var_resp.headers();
435      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
436          Some(v) => v.to_str().unwrap().parse().unwrap(),
437          None => configuration::DEFAULT_RATELIMIT,
438      };
439      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
440          Some(v) => v.to_str().unwrap().parse().unwrap(),
441          None => 0,
442      };
443    }
444
445    let local_var_status = local_var_resp.status();
446    let local_var_content = local_var_resp.text().await?;
447
448    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
449        serde_json::from_str(&local_var_content).map_err(Error::from)
450    } else {
451        let local_var_entity: Option<BotManagementListBotsError> = serde_json::from_str(&local_var_content).ok();
452        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
453        Err(Error::ResponseError(local_var_error))
454    }
455}
456
457/// List all bot categories in a workspace's policy. Each category has an action that applies to every bot in the category. To list the bots themselves, use [list all bots in a workspace](#bot-management-list-bots) or [list bots in a category](#bot-management-list-category-bots).
458pub async fn bot_management_list_categories(configuration: &mut configuration::Configuration, params: BotManagementListCategoriesParams) -> Result<crate::models::BotManagementCategoriesResponse, Error<BotManagementListCategoriesError>> {
459    let local_var_configuration = configuration;
460
461    // unbox the parameters
462    let workspace_id = params.workspace_id;
463    let limit = params.limit;
464    let cursor = params.cursor;
465
466
467    let local_var_client = &local_var_configuration.client;
468
469    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}/policy/categories", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id));
470    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
471
472    if let Some(ref local_var_str) = limit {
473        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
474    }
475    if let Some(ref local_var_str) = cursor {
476        local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
477    }
478    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
479        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
480    }
481    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
482        let local_var_key = local_var_apikey.key.clone();
483        let local_var_value = match local_var_apikey.prefix {
484            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
485            None => local_var_key,
486        };
487        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
488    };
489
490    let local_var_req = local_var_req_builder.build()?;
491    let local_var_resp = local_var_client.execute(local_var_req).await?;
492
493    if "GET" != "GET" && "GET" != "HEAD" {
494      let headers = local_var_resp.headers();
495      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
496          Some(v) => v.to_str().unwrap().parse().unwrap(),
497          None => configuration::DEFAULT_RATELIMIT,
498      };
499      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
500          Some(v) => v.to_str().unwrap().parse().unwrap(),
501          None => 0,
502      };
503    }
504
505    let local_var_status = local_var_resp.status();
506    let local_var_content = local_var_resp.text().await?;
507
508    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
509        serde_json::from_str(&local_var_content).map_err(Error::from)
510    } else {
511        let local_var_entity: Option<BotManagementListCategoriesError> = serde_json::from_str(&local_var_content).ok();
512        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
513        Err(Error::ResponseError(local_var_error))
514    }
515}
516
517/// List all bots in a bot category.
518pub async fn bot_management_list_category_bots(configuration: &mut configuration::Configuration, params: BotManagementListCategoryBotsParams) -> Result<crate::models::BotManagementBotsResponse, Error<BotManagementListCategoryBotsError>> {
519    let local_var_configuration = configuration;
520
521    // unbox the parameters
522    let workspace_id = params.workspace_id;
523    let category_id = params.category_id;
524    let limit = params.limit;
525    let cursor = params.cursor;
526
527
528    let local_var_client = &local_var_configuration.client;
529
530    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}/policy/categories/{category_id}/bots", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id), category_id=crate::apis::urlencode(category_id));
531    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
532
533    if let Some(ref local_var_str) = limit {
534        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
535    }
536    if let Some(ref local_var_str) = cursor {
537        local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
538    }
539    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
540        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
541    }
542    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
543        let local_var_key = local_var_apikey.key.clone();
544        let local_var_value = match local_var_apikey.prefix {
545            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
546            None => local_var_key,
547        };
548        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
549    };
550
551    let local_var_req = local_var_req_builder.build()?;
552    let local_var_resp = local_var_client.execute(local_var_req).await?;
553
554    if "GET" != "GET" && "GET" != "HEAD" {
555      let headers = local_var_resp.headers();
556      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
557          Some(v) => v.to_str().unwrap().parse().unwrap(),
558          None => configuration::DEFAULT_RATELIMIT,
559      };
560      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
561          Some(v) => v.to_str().unwrap().parse().unwrap(),
562          None => 0,
563      };
564    }
565
566    let local_var_status = local_var_resp.status();
567    let local_var_content = local_var_resp.text().await?;
568
569    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
570        serde_json::from_str(&local_var_content).map_err(Error::from)
571    } else {
572        let local_var_entity: Option<BotManagementListCategoryBotsError> = serde_json::from_str(&local_var_content).ok();
573        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
574        Err(Error::ResponseError(local_var_error))
575    }
576}
577
578/// List bot management workspaces.
579pub async fn bot_management_list_workspaces(configuration: &mut configuration::Configuration, params: BotManagementListWorkspacesParams) -> Result<crate::models::BotManagementWorkspacesResponse, Error<BotManagementListWorkspacesError>> {
580    let local_var_configuration = configuration;
581
582    // unbox the parameters
583    let service_id = params.service_id;
584    let limit = params.limit;
585    let cursor = params.cursor;
586
587
588    let local_var_client = &local_var_configuration.client;
589
590    let local_var_uri_str = format!("{}/bot-management/v1/workspaces", local_var_configuration.base_path);
591    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
592
593    if let Some(ref local_var_str) = service_id {
594        local_var_req_builder = local_var_req_builder.query(&[("service_id", &local_var_str.to_string())]);
595    }
596    if let Some(ref local_var_str) = limit {
597        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
598    }
599    if let Some(ref local_var_str) = cursor {
600        local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
601    }
602    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
603        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
604    }
605    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
606        let local_var_key = local_var_apikey.key.clone();
607        let local_var_value = match local_var_apikey.prefix {
608            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
609            None => local_var_key,
610        };
611        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
612    };
613
614    let local_var_req = local_var_req_builder.build()?;
615    let local_var_resp = local_var_client.execute(local_var_req).await?;
616
617    if "GET" != "GET" && "GET" != "HEAD" {
618      let headers = local_var_resp.headers();
619      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
620          Some(v) => v.to_str().unwrap().parse().unwrap(),
621          None => configuration::DEFAULT_RATELIMIT,
622      };
623      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
624          Some(v) => v.to_str().unwrap().parse().unwrap(),
625          None => 0,
626      };
627    }
628
629    let local_var_status = local_var_resp.status();
630    let local_var_content = local_var_resp.text().await?;
631
632    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
633        serde_json::from_str(&local_var_content).map_err(Error::from)
634    } else {
635        let local_var_entity: Option<BotManagementListWorkspacesError> = serde_json::from_str(&local_var_content).ok();
636        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
637        Err(Error::ResponseError(local_var_error))
638    }
639}
640
641/// Set the action for a bot. Set the action to 'inherit' to apply the category's action or to a specific value to override the category's action.
642pub async fn bot_management_update_bot(configuration: &mut configuration::Configuration, params: BotManagementUpdateBotParams) -> Result<crate::models::BotManagementBotResponse, Error<BotManagementUpdateBotError>> {
643    let local_var_configuration = configuration;
644
645    // unbox the parameters
646    let workspace_id = params.workspace_id;
647    let category_id = params.category_id;
648    let bot_id = params.bot_id;
649    let bot_management_bot = params.bot_management_bot;
650
651
652    let local_var_client = &local_var_configuration.client;
653
654    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}/policy/categories/{category_id}/bots/{bot_id}", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id), category_id=crate::apis::urlencode(category_id), bot_id=crate::apis::urlencode(bot_id));
655    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
656
657    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
658        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
659    }
660    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
661        let local_var_key = local_var_apikey.key.clone();
662        let local_var_value = match local_var_apikey.prefix {
663            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
664            None => local_var_key,
665        };
666        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
667    };
668    local_var_req_builder = local_var_req_builder.json(&bot_management_bot);
669
670    let local_var_req = local_var_req_builder.build()?;
671    let local_var_resp = local_var_client.execute(local_var_req).await?;
672
673    if "PATCH" != "GET" && "PATCH" != "HEAD" {
674      let headers = local_var_resp.headers();
675      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
676          Some(v) => v.to_str().unwrap().parse().unwrap(),
677          None => configuration::DEFAULT_RATELIMIT,
678      };
679      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
680          Some(v) => v.to_str().unwrap().parse().unwrap(),
681          None => 0,
682      };
683    }
684
685    let local_var_status = local_var_resp.status();
686    let local_var_content = local_var_resp.text().await?;
687
688    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
689        serde_json::from_str(&local_var_content).map_err(Error::from)
690    } else {
691        let local_var_entity: Option<BotManagementUpdateBotError> = serde_json::from_str(&local_var_content).ok();
692        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
693        Err(Error::ResponseError(local_var_error))
694    }
695}
696
697/// Set the action for a bot category. Every bot in the category configured with the 'inherit' action uses the action set for the category.
698pub async fn bot_management_update_category(configuration: &mut configuration::Configuration, params: BotManagementUpdateCategoryParams) -> Result<crate::models::BotManagementCategoryResponse, Error<BotManagementUpdateCategoryError>> {
699    let local_var_configuration = configuration;
700
701    // unbox the parameters
702    let workspace_id = params.workspace_id;
703    let category_id = params.category_id;
704    let bot_management_category = params.bot_management_category;
705
706
707    let local_var_client = &local_var_configuration.client;
708
709    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}/policy/categories/{category_id}", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id), category_id=crate::apis::urlencode(category_id));
710    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
711
712    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
713        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
714    }
715    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
716        let local_var_key = local_var_apikey.key.clone();
717        let local_var_value = match local_var_apikey.prefix {
718            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
719            None => local_var_key,
720        };
721        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
722    };
723    local_var_req_builder = local_var_req_builder.json(&bot_management_category);
724
725    let local_var_req = local_var_req_builder.build()?;
726    let local_var_resp = local_var_client.execute(local_var_req).await?;
727
728    if "PATCH" != "GET" && "PATCH" != "HEAD" {
729      let headers = local_var_resp.headers();
730      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
731          Some(v) => v.to_str().unwrap().parse().unwrap(),
732          None => configuration::DEFAULT_RATELIMIT,
733      };
734      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
735          Some(v) => v.to_str().unwrap().parse().unwrap(),
736          None => 0,
737      };
738    }
739
740    let local_var_status = local_var_resp.status();
741    let local_var_content = local_var_resp.text().await?;
742
743    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
744        serde_json::from_str(&local_var_content).map_err(Error::from)
745    } else {
746        let local_var_entity: Option<BotManagementUpdateCategoryError> = serde_json::from_str(&local_var_content).ok();
747        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
748        Err(Error::ResponseError(local_var_error))
749    }
750}
751
752/// Update the attributes of a bot management workspace.
753pub async fn bot_management_update_workspace(configuration: &mut configuration::Configuration, params: BotManagementUpdateWorkspaceParams) -> Result<crate::models::BotManagementWorkspaceResponse, Error<BotManagementUpdateWorkspaceError>> {
754    let local_var_configuration = configuration;
755
756    // unbox the parameters
757    let workspace_id = params.workspace_id;
758    let bot_management_workspace = params.bot_management_workspace;
759
760
761    let local_var_client = &local_var_configuration.client;
762
763    let local_var_uri_str = format!("{}/bot-management/v1/workspaces/{workspace_id}", local_var_configuration.base_path, workspace_id=crate::apis::urlencode(workspace_id));
764    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
765
766    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
767        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
768    }
769    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
770        let local_var_key = local_var_apikey.key.clone();
771        let local_var_value = match local_var_apikey.prefix {
772            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
773            None => local_var_key,
774        };
775        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
776    };
777    local_var_req_builder = local_var_req_builder.json(&bot_management_workspace);
778
779    let local_var_req = local_var_req_builder.build()?;
780    let local_var_resp = local_var_client.execute(local_var_req).await?;
781
782    if "PATCH" != "GET" && "PATCH" != "HEAD" {
783      let headers = local_var_resp.headers();
784      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
785          Some(v) => v.to_str().unwrap().parse().unwrap(),
786          None => configuration::DEFAULT_RATELIMIT,
787      };
788      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
789          Some(v) => v.to_str().unwrap().parse().unwrap(),
790          None => 0,
791      };
792    }
793
794    let local_var_status = local_var_resp.status();
795    let local_var_content = local_var_resp.text().await?;
796
797    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
798        serde_json::from_str(&local_var_content).map_err(Error::from)
799    } else {
800        let local_var_entity: Option<BotManagementUpdateWorkspaceError> = serde_json::from_str(&local_var_content).ok();
801        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
802        Err(Error::ResponseError(local_var_error))
803    }
804}
805