Skip to main content

fastly_api/apis/
automation_tokens_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 [`create_automation_token`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateAutomationTokenParams {
17    pub automation_token_create_request: Option<crate::models::AutomationTokenCreateRequest>
18}
19
20/// struct for passing parameters to the method [`get_automation_token_id`]
21#[derive(Clone, Debug, Default)]
22pub struct GetAutomationTokenIdParams {
23    pub id: String
24}
25
26/// struct for passing parameters to the method [`get_automation_tokens_id_services`]
27#[derive(Clone, Debug, Default)]
28pub struct GetAutomationTokensIdServicesParams {
29    pub id: String,
30    pub per_page: Option<i32>,
31    pub page: Option<i32>
32}
33
34/// struct for passing parameters to the method [`get_automation_tokens_id_workspaces`]
35#[derive(Clone, Debug, Default)]
36pub struct GetAutomationTokensIdWorkspacesParams {
37    /// The alphanumeric string identifying the automation token.
38    pub id: String,
39    /// Maximum number of workspaces to return per page.
40    pub limit: Option<i32>,
41    /// Pagination cursor from a previous response. Pass the `next_cursor` value to retrieve the next page, or `previous_cursor` to go back.
42    pub cursor: Option<String>
43}
44
45/// struct for passing parameters to the method [`list_automation_tokens`]
46#[derive(Clone, Debug, Default)]
47pub struct ListAutomationTokensParams {
48    pub per_page: Option<i32>,
49    pub page: Option<i32>
50}
51
52/// struct for passing parameters to the method [`revoke_automation_token_id`]
53#[derive(Clone, Debug, Default)]
54pub struct RevokeAutomationTokenIdParams {
55    pub id: String
56}
57
58
59/// struct for typed errors of method [`create_automation_token`]
60#[derive(Debug, Clone, Serialize, Deserialize)]
61#[serde(untagged)]
62pub enum CreateAutomationTokenError {
63    Status400(crate::models::AutomationTokenErrorResponse),
64    Status401(crate::models::AutomationTokenErrorResponse),
65    Status403(crate::models::AutomationTokenErrorResponse),
66    UnknownValue(serde_json::Value),
67}
68
69/// struct for typed errors of method [`get_automation_token_id`]
70#[derive(Debug, Clone, Serialize, Deserialize)]
71#[serde(untagged)]
72pub enum GetAutomationTokenIdError {
73    Status401(crate::models::AutomationTokenErrorResponse),
74    Status403(crate::models::AutomationTokenErrorResponse),
75    UnknownValue(serde_json::Value),
76}
77
78/// struct for typed errors of method [`get_automation_tokens_id_services`]
79#[derive(Debug, Clone, Serialize, Deserialize)]
80#[serde(untagged)]
81pub enum GetAutomationTokensIdServicesError {
82    Status401(crate::models::AutomationTokenErrorResponse),
83    Status403(crate::models::AutomationTokenErrorResponse),
84    UnknownValue(serde_json::Value),
85}
86
87/// struct for typed errors of method [`get_automation_tokens_id_workspaces`]
88#[derive(Debug, Clone, Serialize, Deserialize)]
89#[serde(untagged)]
90pub enum GetAutomationTokensIdWorkspacesError {
91    Status400(crate::models::AutomationTokenUnversionedErrorResponse),
92    Status403(crate::models::AutomationTokenUnversionedErrorResponse),
93    Status404(crate::models::AutomationTokenUnversionedErrorResponse),
94    UnknownValue(serde_json::Value),
95}
96
97/// struct for typed errors of method [`list_automation_tokens`]
98#[derive(Debug, Clone, Serialize, Deserialize)]
99#[serde(untagged)]
100pub enum ListAutomationTokensError {
101    Status401(crate::models::AutomationTokenErrorResponse),
102    Status403(crate::models::AutomationTokenErrorResponse),
103    UnknownValue(serde_json::Value),
104}
105
106/// struct for typed errors of method [`revoke_automation_token_id`]
107#[derive(Debug, Clone, Serialize, Deserialize)]
108#[serde(untagged)]
109pub enum RevokeAutomationTokenIdError {
110    Status400(crate::models::AutomationTokenErrorResponse),
111    Status401(crate::models::AutomationTokenErrorResponse),
112    Status403(crate::models::AutomationTokenErrorResponse),
113    Status404(crate::models::AutomationTokenErrorResponse),
114    UnknownValue(serde_json::Value),
115}
116
117
118/// Creates a new automation token.
119pub async fn create_automation_token(configuration: &mut configuration::Configuration, params: CreateAutomationTokenParams) -> Result<crate::models::AutomationTokenCreateResponse, Error<CreateAutomationTokenError>> {
120    let local_var_configuration = configuration;
121
122    // unbox the parameters
123    let automation_token_create_request = params.automation_token_create_request;
124
125
126    let local_var_client = &local_var_configuration.client;
127
128    let local_var_uri_str = format!("{}/automation-tokens", local_var_configuration.base_path);
129    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
130
131    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
132        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
133    }
134    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
135        let local_var_key = local_var_apikey.key.clone();
136        let local_var_value = match local_var_apikey.prefix {
137            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
138            None => local_var_key,
139        };
140        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
141    };
142    local_var_req_builder = local_var_req_builder.json(&automation_token_create_request);
143
144    let local_var_req = local_var_req_builder.build()?;
145    let local_var_resp = local_var_client.execute(local_var_req).await?;
146
147    if "POST" != "GET" && "POST" != "HEAD" {
148      let headers = local_var_resp.headers();
149      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
150          Some(v) => v.to_str().unwrap().parse().unwrap(),
151          None => configuration::DEFAULT_RATELIMIT,
152      };
153      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
154          Some(v) => v.to_str().unwrap().parse().unwrap(),
155          None => 0,
156      };
157    }
158
159    let local_var_status = local_var_resp.status();
160    let local_var_content = local_var_resp.text().await?;
161
162    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
163        serde_json::from_str(&local_var_content).map_err(Error::from)
164    } else {
165        let local_var_entity: Option<CreateAutomationTokenError> = serde_json::from_str(&local_var_content).ok();
166        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
167        Err(Error::ResponseError(local_var_error))
168    }
169}
170
171/// Retrieves an automation token by ID.
172pub async fn get_automation_token_id(configuration: &mut configuration::Configuration, params: GetAutomationTokenIdParams) -> Result<crate::models::AutomationTokenResponse, Error<GetAutomationTokenIdError>> {
173    let local_var_configuration = configuration;
174
175    // unbox the parameters
176    let id = params.id;
177
178
179    let local_var_client = &local_var_configuration.client;
180
181    let local_var_uri_str = format!("{}/automation-tokens/{id}", local_var_configuration.base_path, id=crate::apis::urlencode(id));
182    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
183
184    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
185        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
186    }
187    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
188        let local_var_key = local_var_apikey.key.clone();
189        let local_var_value = match local_var_apikey.prefix {
190            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
191            None => local_var_key,
192        };
193        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
194    };
195
196    let local_var_req = local_var_req_builder.build()?;
197    let local_var_resp = local_var_client.execute(local_var_req).await?;
198
199    if "GET" != "GET" && "GET" != "HEAD" {
200      let headers = local_var_resp.headers();
201      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
202          Some(v) => v.to_str().unwrap().parse().unwrap(),
203          None => configuration::DEFAULT_RATELIMIT,
204      };
205      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
206          Some(v) => v.to_str().unwrap().parse().unwrap(),
207          None => 0,
208      };
209    }
210
211    let local_var_status = local_var_resp.status();
212    let local_var_content = local_var_resp.text().await?;
213
214    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
215        serde_json::from_str(&local_var_content).map_err(Error::from)
216    } else {
217        let local_var_entity: Option<GetAutomationTokenIdError> = serde_json::from_str(&local_var_content).ok();
218        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
219        Err(Error::ResponseError(local_var_error))
220    }
221}
222
223/// List of services associated with the automation token.
224pub async fn get_automation_tokens_id_services(configuration: &mut configuration::Configuration, params: GetAutomationTokensIdServicesParams) -> Result<crate::models::InlineResponse2004, Error<GetAutomationTokensIdServicesError>> {
225    let local_var_configuration = configuration;
226
227    // unbox the parameters
228    let id = params.id;
229    let per_page = params.per_page;
230    let page = params.page;
231
232
233    let local_var_client = &local_var_configuration.client;
234
235    let local_var_uri_str = format!("{}/automation-tokens/{id}/services", local_var_configuration.base_path, id=crate::apis::urlencode(id));
236    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
237
238    if let Some(ref local_var_str) = per_page {
239        local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
240    }
241    if let Some(ref local_var_str) = page {
242        local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
243    }
244    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
245        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
246    }
247    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
248        let local_var_key = local_var_apikey.key.clone();
249        let local_var_value = match local_var_apikey.prefix {
250            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
251            None => local_var_key,
252        };
253        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
254    };
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 "GET" != "GET" && "GET" != "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        serde_json::from_str(&local_var_content).map_err(Error::from)
276    } else {
277        let local_var_entity: Option<GetAutomationTokensIdServicesError> = 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/// Lists the Next-Gen WAF workspaces accessible by an automation token. Only applicable for tokens with roles that support workspace access (such as Next-Gen WAF roles).
284pub async fn get_automation_tokens_id_workspaces(configuration: &mut configuration::Configuration, params: GetAutomationTokensIdWorkspacesParams) -> Result<crate::models::AutomationTokenWorkspacesResponse, Error<GetAutomationTokensIdWorkspacesError>> {
285    let local_var_configuration = configuration;
286
287    // unbox the parameters
288    let id = params.id;
289    let limit = params.limit;
290    let cursor = params.cursor;
291
292
293    let local_var_client = &local_var_configuration.client;
294
295    let local_var_uri_str = format!("{}/automation-tokens/{id}/workspaces", local_var_configuration.base_path, id=crate::apis::urlencode(id));
296    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
297
298    if let Some(ref local_var_str) = limit {
299        local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
300    }
301    if let Some(ref local_var_str) = cursor {
302        local_var_req_builder = local_var_req_builder.query(&[("cursor", &local_var_str.to_string())]);
303    }
304    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
305        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
306    }
307    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
308        let local_var_key = local_var_apikey.key.clone();
309        let local_var_value = match local_var_apikey.prefix {
310            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
311            None => local_var_key,
312        };
313        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
314    };
315
316    let local_var_req = local_var_req_builder.build()?;
317    let local_var_resp = local_var_client.execute(local_var_req).await?;
318
319    if "GET" != "GET" && "GET" != "HEAD" {
320      let headers = local_var_resp.headers();
321      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
322          Some(v) => v.to_str().unwrap().parse().unwrap(),
323          None => configuration::DEFAULT_RATELIMIT,
324      };
325      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
326          Some(v) => v.to_str().unwrap().parse().unwrap(),
327          None => 0,
328      };
329    }
330
331    let local_var_status = local_var_resp.status();
332    let local_var_content = local_var_resp.text().await?;
333
334    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
335        serde_json::from_str(&local_var_content).map_err(Error::from)
336    } else {
337        let local_var_entity: Option<GetAutomationTokensIdWorkspacesError> = serde_json::from_str(&local_var_content).ok();
338        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
339        Err(Error::ResponseError(local_var_error))
340    }
341}
342
343/// Lists all automation tokens for a customer.
344pub async fn list_automation_tokens(configuration: &mut configuration::Configuration, params: ListAutomationTokensParams) -> Result<Vec<crate::models::AutomationTokenResponse>, Error<ListAutomationTokensError>> {
345    let local_var_configuration = configuration;
346
347    // unbox the parameters
348    let per_page = params.per_page;
349    let page = params.page;
350
351
352    let local_var_client = &local_var_configuration.client;
353
354    let local_var_uri_str = format!("{}/automation-tokens", local_var_configuration.base_path);
355    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
356
357    if let Some(ref local_var_str) = per_page {
358        local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
359    }
360    if let Some(ref local_var_str) = page {
361        local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
362    }
363    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
364        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
365    }
366    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
367        let local_var_key = local_var_apikey.key.clone();
368        let local_var_value = match local_var_apikey.prefix {
369            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
370            None => local_var_key,
371        };
372        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
373    };
374
375    let local_var_req = local_var_req_builder.build()?;
376    let local_var_resp = local_var_client.execute(local_var_req).await?;
377
378    if "GET" != "GET" && "GET" != "HEAD" {
379      let headers = local_var_resp.headers();
380      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
381          Some(v) => v.to_str().unwrap().parse().unwrap(),
382          None => configuration::DEFAULT_RATELIMIT,
383      };
384      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
385          Some(v) => v.to_str().unwrap().parse().unwrap(),
386          None => 0,
387      };
388    }
389
390    let local_var_status = local_var_resp.status();
391    let local_var_content = local_var_resp.text().await?;
392
393    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
394        serde_json::from_str(&local_var_content).map_err(Error::from)
395    } else {
396        let local_var_entity: Option<ListAutomationTokensError> = serde_json::from_str(&local_var_content).ok();
397        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
398        Err(Error::ResponseError(local_var_error))
399    }
400}
401
402/// Revoke an automation token by ID.
403pub async fn revoke_automation_token_id(configuration: &mut configuration::Configuration, params: RevokeAutomationTokenIdParams) -> Result<crate::models::AutomationTokenErrorResponse, Error<RevokeAutomationTokenIdError>> {
404    let local_var_configuration = configuration;
405
406    // unbox the parameters
407    let id = params.id;
408
409
410    let local_var_client = &local_var_configuration.client;
411
412    let local_var_uri_str = format!("{}/automation-tokens/{id}", local_var_configuration.base_path, id=crate::apis::urlencode(id));
413    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
414
415    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
416        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
417    }
418    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
419        let local_var_key = local_var_apikey.key.clone();
420        let local_var_value = match local_var_apikey.prefix {
421            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
422            None => local_var_key,
423        };
424        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
425    };
426
427    let local_var_req = local_var_req_builder.build()?;
428    let local_var_resp = local_var_client.execute(local_var_req).await?;
429
430    if "DELETE" != "GET" && "DELETE" != "HEAD" {
431      let headers = local_var_resp.headers();
432      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
433          Some(v) => v.to_str().unwrap().parse().unwrap(),
434          None => configuration::DEFAULT_RATELIMIT,
435      };
436      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
437          Some(v) => v.to_str().unwrap().parse().unwrap(),
438          None => 0,
439      };
440    }
441
442    let local_var_status = local_var_resp.status();
443    let local_var_content = local_var_resp.text().await?;
444
445    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
446        serde_json::from_str(&local_var_content).map_err(Error::from)
447    } else {
448        let local_var_entity: Option<RevokeAutomationTokenIdError> = serde_json::from_str(&local_var_content).ok();
449        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
450        Err(Error::ResponseError(local_var_error))
451    }
452}
453