fastly_api/apis/
tls_bulk_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 [`delete_bulk_tls_cert`]
15#[derive(Clone, Debug, Default)]
16pub struct DeleteBulkTlsCertParams {
17    /// Alphanumeric string identifying a TLS bulk certificate.
18    pub certificate_id: String
19}
20
21/// struct for passing parameters to the method [`get_tls_bulk_cert`]
22#[derive(Clone, Debug, Default)]
23pub struct GetTlsBulkCertParams {
24    /// Alphanumeric string identifying a TLS bulk certificate.
25    pub certificate_id: String
26}
27
28/// struct for passing parameters to the method [`list_tls_bulk_certs`]
29#[derive(Clone, Debug, Default)]
30pub struct ListTlsBulkCertsParams {
31    /// Filter certificates by their matching, fully-qualified domain name.
32    pub filter_tls_domain_id: Option<String>,
33    /// Filter the returned certificates by not_before date in UTC.  Accepts parameters: lt, lte, gt, gte (e.g., filter[not_before][gte]=2020-05-05). 
34    pub filter_not_before: Option<String>,
35    /// Filter the returned certificates by expiry date in UTC.  Accepts parameters: lt, lte, gt, gte (e.g., filter[not_after][lte]=2020-05-05). 
36    pub filter_not_after: Option<String>,
37    /// Current page.
38    pub page_number: Option<i32>,
39    /// Number of records per page.
40    pub page_size: Option<i32>,
41    /// The order in which to list the results by creation date.
42    pub sort: Option<String>
43}
44
45/// struct for passing parameters to the method [`update_bulk_tls_cert`]
46#[derive(Clone, Debug, Default)]
47pub struct UpdateBulkTlsCertParams {
48    /// Alphanumeric string identifying a TLS bulk certificate.
49    pub certificate_id: String,
50    pub tls_bulk_certificate: Option<crate::models::TlsBulkCertificate>
51}
52
53/// struct for passing parameters to the method [`upload_tls_bulk_cert`]
54#[derive(Clone, Debug, Default)]
55pub struct UploadTlsBulkCertParams {
56    pub tls_bulk_certificate: Option<crate::models::TlsBulkCertificate>
57}
58
59
60/// struct for typed errors of method [`delete_bulk_tls_cert`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum DeleteBulkTlsCertError {
64    UnknownValue(serde_json::Value),
65}
66
67/// struct for typed errors of method [`get_tls_bulk_cert`]
68#[derive(Debug, Clone, Serialize, Deserialize)]
69#[serde(untagged)]
70pub enum GetTlsBulkCertError {
71    UnknownValue(serde_json::Value),
72}
73
74/// struct for typed errors of method [`list_tls_bulk_certs`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum ListTlsBulkCertsError {
78    UnknownValue(serde_json::Value),
79}
80
81/// struct for typed errors of method [`update_bulk_tls_cert`]
82#[derive(Debug, Clone, Serialize, Deserialize)]
83#[serde(untagged)]
84pub enum UpdateBulkTlsCertError {
85    UnknownValue(serde_json::Value),
86}
87
88/// struct for typed errors of method [`upload_tls_bulk_cert`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum UploadTlsBulkCertError {
92    UnknownValue(serde_json::Value),
93}
94
95
96/// Destroy a certificate. This disables TLS for all domains listed as SAN entries.
97pub async fn delete_bulk_tls_cert(configuration: &mut configuration::Configuration, params: DeleteBulkTlsCertParams) -> Result<(), Error<DeleteBulkTlsCertError>> {
98    let local_var_configuration = configuration;
99
100    // unbox the parameters
101    let certificate_id = params.certificate_id;
102
103
104    let local_var_client = &local_var_configuration.client;
105
106    let local_var_uri_str = format!("{}/tls/bulk/certificates/{certificate_id}", local_var_configuration.base_path, certificate_id=crate::apis::urlencode(certificate_id));
107    let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
108
109    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
110        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
111    }
112    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
113        let local_var_key = local_var_apikey.key.clone();
114        let local_var_value = match local_var_apikey.prefix {
115            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
116            None => local_var_key,
117        };
118        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
119    };
120
121    let local_var_req = local_var_req_builder.build()?;
122    let local_var_resp = local_var_client.execute(local_var_req).await?;
123
124    if "DELETE" != "GET" && "DELETE" != "HEAD" {
125      let headers = local_var_resp.headers();
126      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
127          Some(v) => v.to_str().unwrap().parse().unwrap(),
128          None => configuration::DEFAULT_RATELIMIT,
129      };
130      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
131          Some(v) => v.to_str().unwrap().parse().unwrap(),
132          None => 0,
133      };
134    }
135
136    let local_var_status = local_var_resp.status();
137    let local_var_content = local_var_resp.text().await?;
138
139    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
140        Ok(())
141    } else {
142        let local_var_entity: Option<DeleteBulkTlsCertError> = serde_json::from_str(&local_var_content).ok();
143        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
144        Err(Error::ResponseError(local_var_error))
145    }
146}
147
148/// Retrieve a single certificate.
149pub async fn get_tls_bulk_cert(configuration: &mut configuration::Configuration, params: GetTlsBulkCertParams) -> Result<crate::models::TlsBulkCertificateResponse, Error<GetTlsBulkCertError>> {
150    let local_var_configuration = configuration;
151
152    // unbox the parameters
153    let certificate_id = params.certificate_id;
154
155
156    let local_var_client = &local_var_configuration.client;
157
158    let local_var_uri_str = format!("{}/tls/bulk/certificates/{certificate_id}", local_var_configuration.base_path, certificate_id=crate::apis::urlencode(certificate_id));
159    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
160
161    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
162        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
163    }
164    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
165        let local_var_key = local_var_apikey.key.clone();
166        let local_var_value = match local_var_apikey.prefix {
167            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
168            None => local_var_key,
169        };
170        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
171    };
172
173    let local_var_req = local_var_req_builder.build()?;
174    let local_var_resp = local_var_client.execute(local_var_req).await?;
175
176    if "GET" != "GET" && "GET" != "HEAD" {
177      let headers = local_var_resp.headers();
178      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
179          Some(v) => v.to_str().unwrap().parse().unwrap(),
180          None => configuration::DEFAULT_RATELIMIT,
181      };
182      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
183          Some(v) => v.to_str().unwrap().parse().unwrap(),
184          None => 0,
185      };
186    }
187
188    let local_var_status = local_var_resp.status();
189    let local_var_content = local_var_resp.text().await?;
190
191    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
192        serde_json::from_str(&local_var_content).map_err(Error::from)
193    } else {
194        let local_var_entity: Option<GetTlsBulkCertError> = serde_json::from_str(&local_var_content).ok();
195        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
196        Err(Error::ResponseError(local_var_error))
197    }
198}
199
200/// List all certificates.
201pub async fn list_tls_bulk_certs(configuration: &mut configuration::Configuration, params: ListTlsBulkCertsParams) -> Result<crate::models::TlsBulkCertificatesResponse, Error<ListTlsBulkCertsError>> {
202    let local_var_configuration = configuration;
203
204    // unbox the parameters
205    let filter_tls_domain_id = params.filter_tls_domain_id;
206    let filter_not_before = params.filter_not_before;
207    let filter_not_after = params.filter_not_after;
208    let page_number = params.page_number;
209    let page_size = params.page_size;
210    let sort = params.sort;
211
212
213    let local_var_client = &local_var_configuration.client;
214
215    let local_var_uri_str = format!("{}/tls/bulk/certificates", local_var_configuration.base_path);
216    let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
217
218    if let Some(ref local_var_str) = filter_tls_domain_id {
219        local_var_req_builder = local_var_req_builder.query(&[("filter[tls_domain.id]", &local_var_str.to_string())]);
220    }
221    if let Some(ref local_var_str) = filter_not_before {
222        local_var_req_builder = local_var_req_builder.query(&[("filter[not_before]", &local_var_str.to_string())]);
223    }
224    if let Some(ref local_var_str) = filter_not_after {
225        local_var_req_builder = local_var_req_builder.query(&[("filter[not_after]", &local_var_str.to_string())]);
226    }
227    if let Some(ref local_var_str) = page_number {
228        local_var_req_builder = local_var_req_builder.query(&[("page[number]", &local_var_str.to_string())]);
229    }
230    if let Some(ref local_var_str) = page_size {
231        local_var_req_builder = local_var_req_builder.query(&[("page[size]", &local_var_str.to_string())]);
232    }
233    if let Some(ref local_var_str) = sort {
234        local_var_req_builder = local_var_req_builder.query(&[("sort", &local_var_str.to_string())]);
235    }
236    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
237        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
238    }
239    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
240        let local_var_key = local_var_apikey.key.clone();
241        let local_var_value = match local_var_apikey.prefix {
242            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
243            None => local_var_key,
244        };
245        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
246    };
247
248    let local_var_req = local_var_req_builder.build()?;
249    let local_var_resp = local_var_client.execute(local_var_req).await?;
250
251    if "GET" != "GET" && "GET" != "HEAD" {
252      let headers = local_var_resp.headers();
253      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
254          Some(v) => v.to_str().unwrap().parse().unwrap(),
255          None => configuration::DEFAULT_RATELIMIT,
256      };
257      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
258          Some(v) => v.to_str().unwrap().parse().unwrap(),
259          None => 0,
260      };
261    }
262
263    let local_var_status = local_var_resp.status();
264    let local_var_content = local_var_resp.text().await?;
265
266    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
267        serde_json::from_str(&local_var_content).map_err(Error::from)
268    } else {
269        let local_var_entity: Option<ListTlsBulkCertsError> = serde_json::from_str(&local_var_content).ok();
270        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
271        Err(Error::ResponseError(local_var_error))
272    }
273}
274
275/// Replace a certificate with a newly reissued certificate. By using this endpoint, the original certificate will cease to be used for future TLS handshakes. Thus, only SAN entries that appear in the replacement certificate will become TLS enabled. Any SAN entries that are missing in the replacement certificate will become disabled.
276pub async fn update_bulk_tls_cert(configuration: &mut configuration::Configuration, params: UpdateBulkTlsCertParams) -> Result<crate::models::TlsBulkCertificateResponse, Error<UpdateBulkTlsCertError>> {
277    let local_var_configuration = configuration;
278
279    // unbox the parameters
280    let certificate_id = params.certificate_id;
281    let tls_bulk_certificate = params.tls_bulk_certificate;
282
283
284    let local_var_client = &local_var_configuration.client;
285
286    let local_var_uri_str = format!("{}/tls/bulk/certificates/{certificate_id}", local_var_configuration.base_path, certificate_id=crate::apis::urlencode(certificate_id));
287    let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
288
289    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
290        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
291    }
292    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
293        let local_var_key = local_var_apikey.key.clone();
294        let local_var_value = match local_var_apikey.prefix {
295            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
296            None => local_var_key,
297        };
298        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
299    };
300    local_var_req_builder = local_var_req_builder.json(&tls_bulk_certificate);
301
302    let local_var_req = local_var_req_builder.build()?;
303    let local_var_resp = local_var_client.execute(local_var_req).await?;
304
305    if "PATCH" != "GET" && "PATCH" != "HEAD" {
306      let headers = local_var_resp.headers();
307      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
308          Some(v) => v.to_str().unwrap().parse().unwrap(),
309          None => configuration::DEFAULT_RATELIMIT,
310      };
311      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
312          Some(v) => v.to_str().unwrap().parse().unwrap(),
313          None => 0,
314      };
315    }
316
317    let local_var_status = local_var_resp.status();
318    let local_var_content = local_var_resp.text().await?;
319
320    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
321        serde_json::from_str(&local_var_content).map_err(Error::from)
322    } else {
323        let local_var_entity: Option<UpdateBulkTlsCertError> = serde_json::from_str(&local_var_content).ok();
324        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
325        Err(Error::ResponseError(local_var_error))
326    }
327}
328
329/// Upload a new certificate. TLS domains are automatically enabled upon certificate creation. If a domain is already enabled on a previously uploaded certificate, that domain will be updated to use the new certificate for all future TLS handshake requests.
330pub async fn upload_tls_bulk_cert(configuration: &mut configuration::Configuration, params: UploadTlsBulkCertParams) -> Result<crate::models::TlsBulkCertificateResponse, Error<UploadTlsBulkCertError>> {
331    let local_var_configuration = configuration;
332
333    // unbox the parameters
334    let tls_bulk_certificate = params.tls_bulk_certificate;
335
336
337    let local_var_client = &local_var_configuration.client;
338
339    let local_var_uri_str = format!("{}/tls/bulk/certificates", local_var_configuration.base_path);
340    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
341
342    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
343        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
344    }
345    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
346        let local_var_key = local_var_apikey.key.clone();
347        let local_var_value = match local_var_apikey.prefix {
348            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
349            None => local_var_key,
350        };
351        local_var_req_builder = local_var_req_builder.header("Fastly-Key", local_var_value);
352    };
353    local_var_req_builder = local_var_req_builder.json(&tls_bulk_certificate);
354
355    let local_var_req = local_var_req_builder.build()?;
356    let local_var_resp = local_var_client.execute(local_var_req).await?;
357
358    if "POST" != "GET" && "POST" != "HEAD" {
359      let headers = local_var_resp.headers();
360      local_var_configuration.rate_limit_remaining = match headers.get("Fastly-RateLimit-Remaining") {
361          Some(v) => v.to_str().unwrap().parse().unwrap(),
362          None => configuration::DEFAULT_RATELIMIT,
363      };
364      local_var_configuration.rate_limit_reset = match headers.get("Fastly-RateLimit-Reset") {
365          Some(v) => v.to_str().unwrap().parse().unwrap(),
366          None => 0,
367      };
368    }
369
370    let local_var_status = local_var_resp.status();
371    let local_var_content = local_var_resp.text().await?;
372
373    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
374        serde_json::from_str(&local_var_content).map_err(Error::from)
375    } else {
376        let local_var_entity: Option<UploadTlsBulkCertError> = serde_json::from_str(&local_var_content).ok();
377        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
378        Err(Error::ResponseError(local_var_error))
379    }
380}
381