fastly_api/apis/
tls_certificates_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_tls_cert`]
15#[derive(Clone, Debug, Default)]
16pub struct CreateTlsCertParams {
17    pub tls_certificate: Option<crate::models::TlsCertificate>
18}
19
20/// struct for passing parameters to the method [`delete_tls_cert`]
21#[derive(Clone, Debug, Default)]
22pub struct DeleteTlsCertParams {
23    /// Alphanumeric string identifying a TLS certificate.
24    pub tls_certificate_id: String
25}
26
27/// struct for passing parameters to the method [`get_tls_cert`]
28#[derive(Clone, Debug, Default)]
29pub struct GetTlsCertParams {
30    /// Alphanumeric string identifying a TLS certificate.
31    pub tls_certificate_id: String
32}
33
34/// struct for passing parameters to the method [`get_tls_cert_blob`]
35#[derive(Clone, Debug, Default)]
36pub struct GetTlsCertBlobParams {
37    /// Alphanumeric string identifying a TLS certificate.
38    pub tls_certificate_id: String
39}
40
41/// struct for passing parameters to the method [`list_tls_certs`]
42#[derive(Clone, Debug, Default)]
43pub struct ListTlsCertsParams {
44    /// Optional. Limit the returned certificates to those currently using Fastly to terminate TLS (that is, certificates associated with an activation). Permitted values: true, false.
45    pub filter_in_use: Option<String>,
46    /// Limit the returned certificates to those that expire prior to the specified date in UTC. Accepts parameters: lte (e.g., filter[not_after][lte]=2020-05-05). 
47    pub filter_not_after: Option<String>,
48    /// Limit the returned certificates to those that include the specific domain.
49    pub filter_tls_domains_id: Option<String>,
50    /// Include related objects. Optional, comma-separated values. Permitted values: `tls_activations`. 
51    pub include: Option<String>,
52    /// The order in which to list the results.
53    pub sort: Option<String>,
54    /// Current page.
55    pub page_number: Option<i32>,
56    /// Number of records per page.
57    pub page_size: Option<i32>
58}
59
60/// struct for passing parameters to the method [`update_tls_cert`]
61#[derive(Clone, Debug, Default)]
62pub struct UpdateTlsCertParams {
63    /// Alphanumeric string identifying a TLS certificate.
64    pub tls_certificate_id: String,
65    pub tls_certificate: Option<crate::models::TlsCertificate>
66}
67
68
69/// struct for typed errors of method [`create_tls_cert`]
70#[derive(Debug, Clone, Serialize, Deserialize)]
71#[serde(untagged)]
72pub enum CreateTlsCertError {
73    UnknownValue(serde_json::Value),
74}
75
76/// struct for typed errors of method [`delete_tls_cert`]
77#[derive(Debug, Clone, Serialize, Deserialize)]
78#[serde(untagged)]
79pub enum DeleteTlsCertError {
80    UnknownValue(serde_json::Value),
81}
82
83/// struct for typed errors of method [`get_tls_cert`]
84#[derive(Debug, Clone, Serialize, Deserialize)]
85#[serde(untagged)]
86pub enum GetTlsCertError {
87    UnknownValue(serde_json::Value),
88}
89
90/// struct for typed errors of method [`get_tls_cert_blob`]
91#[derive(Debug, Clone, Serialize, Deserialize)]
92#[serde(untagged)]
93pub enum GetTlsCertBlobError {
94    UnknownValue(serde_json::Value),
95}
96
97/// struct for typed errors of method [`list_tls_certs`]
98#[derive(Debug, Clone, Serialize, Deserialize)]
99#[serde(untagged)]
100pub enum ListTlsCertsError {
101    UnknownValue(serde_json::Value),
102}
103
104/// struct for typed errors of method [`update_tls_cert`]
105#[derive(Debug, Clone, Serialize, Deserialize)]
106#[serde(untagged)]
107pub enum UpdateTlsCertError {
108    UnknownValue(serde_json::Value),
109}
110
111
112/// Create a TLS certificate.
113pub async fn create_tls_cert(configuration: &mut configuration::Configuration, params: CreateTlsCertParams) -> Result<serde_json::Value, Error<CreateTlsCertError>> {
114    let local_var_configuration = configuration;
115
116    // unbox the parameters
117    let tls_certificate = params.tls_certificate;
118
119
120    let local_var_client = &local_var_configuration.client;
121
122    let local_var_uri_str = format!("{}/tls/certificates", local_var_configuration.base_path);
123    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
124
125    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
126        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
127    }
128    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
129        let local_var_key = local_var_apikey.key.clone();
130        let local_var_value = match local_var_apikey.prefix {
131            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
132            None => local_var_key,
133        };
134        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
135    };
136    local_var_req_builder = local_var_req_builder.json(&tls_certificate);
137
138    let local_var_req = local_var_req_builder.build()?;
139    let local_var_resp = local_var_client.execute(local_var_req).await?;
140
141    if "POST" != "GET" && "POST" != "HEAD" {
142      let headers = local_var_resp.headers();
143      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
144          Some(v) => v.to_str().unwrap().parse().unwrap(),
145          None => configuration::DEFAULT_RATELIMIT,
146      };
147      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
148          Some(v) => v.to_str().unwrap().parse().unwrap(),
149          None => 0,
150      };
151    }
152
153    let local_var_status = local_var_resp.status();
154    let local_var_content = local_var_resp.text().await?;
155
156    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
157        serde_json::from_str(&local_var_content).map_err(Error::from)
158    } else {
159        let local_var_entity: Option<CreateTlsCertError> = serde_json::from_str(&local_var_content).ok();
160        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
161        Err(Error::ResponseError(local_var_error))
162    }
163}
164
165/// Destroy a TLS certificate. TLS certificates already enabled for a domain cannot be destroyed.
166pub async fn delete_tls_cert(configuration: &mut configuration::Configuration, params: DeleteTlsCertParams) -> Result<(), Error<DeleteTlsCertError>> {
167    let local_var_configuration = configuration;
168
169    // unbox the parameters
170    let tls_certificate_id = params.tls_certificate_id;
171
172
173    let local_var_client = &local_var_configuration.client;
174
175    let local_var_uri_str = format!("{}/tls/certificates/{tls_certificate_id}", local_var_configuration.base_path, tls_certificate_id=crate::apis::urlencode(tls_certificate_id));
176    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
177
178    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
179        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
180    }
181    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
182        let local_var_key = local_var_apikey.key.clone();
183        let local_var_value = match local_var_apikey.prefix {
184            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
185            None => local_var_key,
186        };
187        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
188    };
189
190    let local_var_req = local_var_req_builder.build()?;
191    let local_var_resp = local_var_client.execute(local_var_req).await?;
192
193    if "DELETE" != "GET" && "DELETE" != "HEAD" {
194      let headers = local_var_resp.headers();
195      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
196          Some(v) => v.to_str().unwrap().parse().unwrap(),
197          None => configuration::DEFAULT_RATELIMIT,
198      };
199      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
200          Some(v) => v.to_str().unwrap().parse().unwrap(),
201          None => 0,
202      };
203    }
204
205    let local_var_status = local_var_resp.status();
206    let local_var_content = local_var_resp.text().await?;
207
208    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
209        Ok(())
210    } else {
211        let local_var_entity: Option<DeleteTlsCertError> = serde_json::from_str(&local_var_content).ok();
212        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
213        Err(Error::ResponseError(local_var_error))
214    }
215}
216
217/// Show a TLS certificate.
218pub async fn get_tls_cert(configuration: &mut configuration::Configuration, params: GetTlsCertParams) -> Result<crate::models::TlsCertificateResponse, Error<GetTlsCertError>> {
219    let local_var_configuration = configuration;
220
221    // unbox the parameters
222    let tls_certificate_id = params.tls_certificate_id;
223
224
225    let local_var_client = &local_var_configuration.client;
226
227    let local_var_uri_str = format!("{}/tls/certificates/{tls_certificate_id}", local_var_configuration.base_path, tls_certificate_id=crate::apis::urlencode(tls_certificate_id));
228    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
229
230    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
231        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
232    }
233    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
234        let local_var_key = local_var_apikey.key.clone();
235        let local_var_value = match local_var_apikey.prefix {
236            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
237            None => local_var_key,
238        };
239        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
240    };
241
242    let local_var_req = local_var_req_builder.build()?;
243    let local_var_resp = local_var_client.execute(local_var_req).await?;
244
245    if "GET" != "GET" && "GET" != "HEAD" {
246      let headers = local_var_resp.headers();
247      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
248          Some(v) => v.to_str().unwrap().parse().unwrap(),
249          None => configuration::DEFAULT_RATELIMIT,
250      };
251      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
252          Some(v) => v.to_str().unwrap().parse().unwrap(),
253          None => 0,
254      };
255    }
256
257    let local_var_status = local_var_resp.status();
258    let local_var_content = local_var_resp.text().await?;
259
260    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
261        serde_json::from_str(&local_var_content).map_err(Error::from)
262    } else {
263        let local_var_entity: Option<GetTlsCertError> = serde_json::from_str(&local_var_content).ok();
264        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
265        Err(Error::ResponseError(local_var_error))
266    }
267}
268
269/// Retrieve a TLS certificate blob. This feature is part of a [limited availability](https://docs.fastly.com/products/fastly-product-lifecycle#limited-availability) release.
270pub async fn get_tls_cert_blob(configuration: &mut configuration::Configuration, params: GetTlsCertBlobParams) -> Result<crate::models::TlsCertificateBlobResponse, Error<GetTlsCertBlobError>> {
271    let local_var_configuration = configuration;
272
273    // unbox the parameters
274    let tls_certificate_id = params.tls_certificate_id;
275
276
277    let local_var_client = &local_var_configuration.client;
278
279    let local_var_uri_str = format!("{}/tls/certificates/{tls_certificate_id}/blob", local_var_configuration.base_path, tls_certificate_id=crate::apis::urlencode(tls_certificate_id));
280    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
281
282    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
283        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
284    }
285    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
286        let local_var_key = local_var_apikey.key.clone();
287        let local_var_value = match local_var_apikey.prefix {
288            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
289            None => local_var_key,
290        };
291        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
292    };
293
294    let local_var_req = local_var_req_builder.build()?;
295    let local_var_resp = local_var_client.execute(local_var_req).await?;
296
297    if "GET" != "GET" && "GET" != "HEAD" {
298      let headers = local_var_resp.headers();
299      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
300          Some(v) => v.to_str().unwrap().parse().unwrap(),
301          None => configuration::DEFAULT_RATELIMIT,
302      };
303      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
304          Some(v) => v.to_str().unwrap().parse().unwrap(),
305          None => 0,
306      };
307    }
308
309    let local_var_status = local_var_resp.status();
310    let local_var_content = local_var_resp.text().await?;
311
312    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
313        serde_json::from_str(&local_var_content).map_err(Error::from)
314    } else {
315        let local_var_entity: Option<GetTlsCertBlobError> = serde_json::from_str(&local_var_content).ok();
316        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
317        Err(Error::ResponseError(local_var_error))
318    }
319}
320
321/// List all TLS certificates.
322pub async fn list_tls_certs(configuration: &mut configuration::Configuration, params: ListTlsCertsParams) -> Result<crate::models::TlsCertificatesResponse, Error<ListTlsCertsError>> {
323    let local_var_configuration = configuration;
324
325    // unbox the parameters
326    let filter_in_use = params.filter_in_use;
327    let filter_not_after = params.filter_not_after;
328    let filter_tls_domains_id = params.filter_tls_domains_id;
329    let include = params.include;
330    let sort = params.sort;
331    let page_number = params.page_number;
332    let page_size = params.page_size;
333
334
335    let local_var_client = &local_var_configuration.client;
336
337    let local_var_uri_str = format!("{}/tls/certificates", local_var_configuration.base_path);
338    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
339
340    if let Some(ref local_var_str) = filter_in_use {
341        local_var_req_builder = local_var_req_builder.query(&[("filter[in_use]", &local_var_str.to_string())]);
342    }
343    if let Some(ref local_var_str) = filter_not_after {
344        local_var_req_builder = local_var_req_builder.query(&[("filter[not_after]", &local_var_str.to_string())]);
345    }
346    if let Some(ref local_var_str) = filter_tls_domains_id {
347        local_var_req_builder = local_var_req_builder.query(&[("filter[tls_domains.id]", &local_var_str.to_string())]);
348    }
349    if let Some(ref local_var_str) = include {
350        local_var_req_builder = local_var_req_builder.query(&[("include", &local_var_str.to_string())]);
351    }
352    if let Some(ref local_var_str) = sort {
353        local_var_req_builder = local_var_req_builder.query(&[("sort", &local_var_str.to_string())]);
354    }
355    if let Some(ref local_var_str) = page_number {
356        local_var_req_builder = local_var_req_builder.query(&[("page[number]", &local_var_str.to_string())]);
357    }
358    if let Some(ref local_var_str) = page_size {
359        local_var_req_builder = local_var_req_builder.query(&[("page[size]", &local_var_str.to_string())]);
360    }
361    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
362        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
363    }
364    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
365        let local_var_key = local_var_apikey.key.clone();
366        let local_var_value = match local_var_apikey.prefix {
367            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
368            None => local_var_key,
369        };
370        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
371    };
372
373    let local_var_req = local_var_req_builder.build()?;
374    let local_var_resp = local_var_client.execute(local_var_req).await?;
375
376    if "GET" != "GET" && "GET" != "HEAD" {
377      let headers = local_var_resp.headers();
378      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
379          Some(v) => v.to_str().unwrap().parse().unwrap(),
380          None => configuration::DEFAULT_RATELIMIT,
381      };
382      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
383          Some(v) => v.to_str().unwrap().parse().unwrap(),
384          None => 0,
385      };
386    }
387
388    let local_var_status = local_var_resp.status();
389    let local_var_content = local_var_resp.text().await?;
390
391    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
392        serde_json::from_str(&local_var_content).map_err(Error::from)
393    } else {
394        let local_var_entity: Option<ListTlsCertsError> = serde_json::from_str(&local_var_content).ok();
395        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
396        Err(Error::ResponseError(local_var_error))
397    }
398}
399
400/// Replace a TLS certificate with a newly reissued TLS certificate, or update a TLS certificate's name. If replacing a TLS certificate, the new TLS certificate must contain all SAN entries as the current TLS certificate. It must either have an exact matching list or contain a superset.
401pub async fn update_tls_cert(configuration: &mut configuration::Configuration, params: UpdateTlsCertParams) -> Result<crate::models::TlsCertificateResponse, Error<UpdateTlsCertError>> {
402    let local_var_configuration = configuration;
403
404    // unbox the parameters
405    let tls_certificate_id = params.tls_certificate_id;
406    let tls_certificate = params.tls_certificate;
407
408
409    let local_var_client = &local_var_configuration.client;
410
411    let local_var_uri_str = format!("{}/tls/certificates/{tls_certificate_id}", local_var_configuration.base_path, tls_certificate_id=crate::apis::urlencode(tls_certificate_id));
412    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
413
414    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
415        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
416    }
417    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
418        let local_var_key = local_var_apikey.key.clone();
419        let local_var_value = match local_var_apikey.prefix {
420            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
421            None => local_var_key,
422        };
423        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
424    };
425    local_var_req_builder = local_var_req_builder.json(&tls_certificate);
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 "PATCH" != "GET" && "PATCH" != "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<UpdateTlsCertError> = 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