Skip to main content

clientapi_pbs/apis/
nodes_apt_api.rs

1/*
2 * Proxmox Backup Server API
3 *
4 * Generated from apidoc.js. NOT an official Proxmox specification. See https://pbs.proxmox.com/docs/api-viewer/ for the upstream documentation.
5 *
6 * The version of the OpenAPI document: 9.x
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18/// struct for typed errors of method [`nodes_apt_create_repositories`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum NodesAptCreateRepositoriesError {
22    Status400(models::PbsError),
23    Status401(models::PbsError),
24    Status403(models::PbsError),
25    Status404(models::PbsError),
26    Status500(models::PbsError),
27    Status501(models::PbsError),
28    Status503(models::PbsError),
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`nodes_apt_create_update`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum NodesAptCreateUpdateError {
36    Status400(models::PbsError),
37    Status401(models::PbsError),
38    Status403(models::PbsError),
39    Status404(models::PbsError),
40    Status500(models::PbsError),
41    Status501(models::PbsError),
42    Status503(models::PbsError),
43    UnknownValue(serde_json::Value),
44}
45
46/// struct for typed errors of method [`nodes_apt_get_apt`]
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum NodesAptGetAptError {
50    Status400(models::PbsError),
51    Status401(models::PbsError),
52    Status403(models::PbsError),
53    Status404(models::PbsError),
54    Status500(models::PbsError),
55    Status501(models::PbsError),
56    Status503(models::PbsError),
57    UnknownValue(serde_json::Value),
58}
59
60/// struct for typed errors of method [`nodes_apt_get_changelog`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum NodesAptGetChangelogError {
64    Status400(models::PbsError),
65    Status401(models::PbsError),
66    Status403(models::PbsError),
67    Status404(models::PbsError),
68    Status500(models::PbsError),
69    Status501(models::PbsError),
70    Status503(models::PbsError),
71    UnknownValue(serde_json::Value),
72}
73
74/// struct for typed errors of method [`nodes_apt_get_repositories`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum NodesAptGetRepositoriesError {
78    Status400(models::PbsError),
79    Status401(models::PbsError),
80    Status403(models::PbsError),
81    Status404(models::PbsError),
82    Status500(models::PbsError),
83    Status501(models::PbsError),
84    Status503(models::PbsError),
85    UnknownValue(serde_json::Value),
86}
87
88/// struct for typed errors of method [`nodes_apt_get_update`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum NodesAptGetUpdateError {
92    Status400(models::PbsError),
93    Status401(models::PbsError),
94    Status403(models::PbsError),
95    Status404(models::PbsError),
96    Status500(models::PbsError),
97    Status501(models::PbsError),
98    Status503(models::PbsError),
99    UnknownValue(serde_json::Value),
100}
101
102/// struct for typed errors of method [`nodes_apt_get_versions`]
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(untagged)]
105pub enum NodesAptGetVersionsError {
106    Status400(models::PbsError),
107    Status401(models::PbsError),
108    Status403(models::PbsError),
109    Status404(models::PbsError),
110    Status500(models::PbsError),
111    Status501(models::PbsError),
112    Status503(models::PbsError),
113    UnknownValue(serde_json::Value),
114}
115
116/// struct for typed errors of method [`nodes_apt_update_repositories`]
117#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(untagged)]
119pub enum NodesAptUpdateRepositoriesError {
120    Status400(models::PbsError),
121    Status401(models::PbsError),
122    Status403(models::PbsError),
123    Status404(models::PbsError),
124    Status500(models::PbsError),
125    Status501(models::PbsError),
126    Status503(models::PbsError),
127    UnknownValue(serde_json::Value),
128}
129
130
131/// Change the properties of the specified repository.  The `digest` parameter asserts that the configuration has not been modified.
132pub async fn nodes_apt_create_repositories(configuration: &configuration::Configuration, node: &str, nodes_apt_create_repositories_request: models::NodesAptCreateRepositoriesRequest) -> Result<models::NodesAptCreateRepositoriesResponse, Error<NodesAptCreateRepositoriesError>> {
133    // add a prefix to parameters to efficiently prevent name collisions
134    let p_path_node = node;
135    let p_body_nodes_apt_create_repositories_request = nodes_apt_create_repositories_request;
136
137    let uri_str = format!("{}/nodes/{node}/apt/repositories", configuration.base_path, node=crate::apis::urlencode(p_path_node));
138    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
139
140    if let Some(ref user_agent) = configuration.user_agent {
141        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
142    }
143    if let Some(ref apikey) = configuration.api_key {
144        let key = apikey.key.clone();
145        let value = match apikey.prefix {
146            Some(ref prefix) => format!("{} {}", prefix, key),
147            None => key,
148        };
149        req_builder = req_builder.header("Authorization", value);
150    };
151    if let Some(ref apikey) = configuration.api_key {
152        let key = apikey.key.clone();
153        let value = match apikey.prefix {
154            Some(ref prefix) => format!("{} {}", prefix, key),
155            None => key,
156        };
157        req_builder = req_builder.header("CSRFPreventionToken", value);
158    };
159    req_builder = req_builder.json(&p_body_nodes_apt_create_repositories_request);
160
161    let req = req_builder.build()?;
162    let resp = configuration.client.execute(req).await?;
163
164    let status = resp.status();
165    let content_type = resp
166        .headers()
167        .get("content-type")
168        .and_then(|v| v.to_str().ok())
169        .unwrap_or("application/octet-stream");
170    let content_type = super::ContentType::from(content_type);
171
172    if !status.is_client_error() && !status.is_server_error() {
173        let content = resp.text().await?;
174        match content_type {
175            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
176            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptCreateRepositoriesResponse`"))),
177            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptCreateRepositoriesResponse`")))),
178        }
179    } else {
180        let content = resp.text().await?;
181        let entity: Option<NodesAptCreateRepositoriesError> = serde_json::from_str(&content).ok();
182        Err(Error::ResponseError(ResponseContent { status, content, entity }))
183    }
184}
185
186/// Update the APT database
187pub async fn nodes_apt_create_update(configuration: &configuration::Configuration, node: &str, nodes_apt_create_update_request: Option<models::NodesAptCreateUpdateRequest>) -> Result<models::NodesAptCreateUpdateResponse, Error<NodesAptCreateUpdateError>> {
188    // add a prefix to parameters to efficiently prevent name collisions
189    let p_path_node = node;
190    let p_body_nodes_apt_create_update_request = nodes_apt_create_update_request;
191
192    let uri_str = format!("{}/nodes/{node}/apt/update", configuration.base_path, node=crate::apis::urlencode(p_path_node));
193    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
194
195    if let Some(ref user_agent) = configuration.user_agent {
196        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
197    }
198    if let Some(ref apikey) = configuration.api_key {
199        let key = apikey.key.clone();
200        let value = match apikey.prefix {
201            Some(ref prefix) => format!("{} {}", prefix, key),
202            None => key,
203        };
204        req_builder = req_builder.header("Authorization", value);
205    };
206    if let Some(ref apikey) = configuration.api_key {
207        let key = apikey.key.clone();
208        let value = match apikey.prefix {
209            Some(ref prefix) => format!("{} {}", prefix, key),
210            None => key,
211        };
212        req_builder = req_builder.header("CSRFPreventionToken", value);
213    };
214    req_builder = req_builder.json(&p_body_nodes_apt_create_update_request);
215
216    let req = req_builder.build()?;
217    let resp = configuration.client.execute(req).await?;
218
219    let status = resp.status();
220    let content_type = resp
221        .headers()
222        .get("content-type")
223        .and_then(|v| v.to_str().ok())
224        .unwrap_or("application/octet-stream");
225    let content_type = super::ContentType::from(content_type);
226
227    if !status.is_client_error() && !status.is_server_error() {
228        let content = resp.text().await?;
229        match content_type {
230            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
231            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptCreateUpdateResponse`"))),
232            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptCreateUpdateResponse`")))),
233        }
234    } else {
235        let content = resp.text().await?;
236        let entity: Option<NodesAptCreateUpdateError> = serde_json::from_str(&content).ok();
237        Err(Error::ResponseError(ResponseContent { status, content, entity }))
238    }
239}
240
241/// Directory index.
242pub async fn nodes_apt_get_apt(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesAptGetAptResponse, Error<NodesAptGetAptError>> {
243    // add a prefix to parameters to efficiently prevent name collisions
244    let p_path_node = node;
245
246    let uri_str = format!("{}/nodes/{node}/apt", configuration.base_path, node=crate::apis::urlencode(p_path_node));
247    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
248
249    if let Some(ref user_agent) = configuration.user_agent {
250        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
251    }
252    if let Some(ref apikey) = configuration.api_key {
253        let key = apikey.key.clone();
254        let value = match apikey.prefix {
255            Some(ref prefix) => format!("{} {}", prefix, key),
256            None => key,
257        };
258        req_builder = req_builder.header("Authorization", value);
259    };
260    if let Some(ref apikey) = configuration.api_key {
261        let key = apikey.key.clone();
262        let value = match apikey.prefix {
263            Some(ref prefix) => format!("{} {}", prefix, key),
264            None => key,
265        };
266        req_builder = req_builder.header("CSRFPreventionToken", value);
267    };
268
269    let req = req_builder.build()?;
270    let resp = configuration.client.execute(req).await?;
271
272    let status = resp.status();
273    let content_type = resp
274        .headers()
275        .get("content-type")
276        .and_then(|v| v.to_str().ok())
277        .unwrap_or("application/octet-stream");
278    let content_type = super::ContentType::from(content_type);
279
280    if !status.is_client_error() && !status.is_server_error() {
281        let content = resp.text().await?;
282        match content_type {
283            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
284            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptGetAptResponse`"))),
285            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptGetAptResponse`")))),
286        }
287    } else {
288        let content = resp.text().await?;
289        let entity: Option<NodesAptGetAptError> = serde_json::from_str(&content).ok();
290        Err(Error::ResponseError(ResponseContent { status, content, entity }))
291    }
292}
293
294/// Retrieve the changelog of the specified package.
295pub async fn nodes_apt_get_changelog(configuration: &configuration::Configuration, name: &str, node: &str, version: Option<&str>) -> Result<models::NodesAptGetChangelogResponse, Error<NodesAptGetChangelogError>> {
296    // add a prefix to parameters to efficiently prevent name collisions
297    let p_query_name = name;
298    let p_path_node = node;
299    let p_query_version = version;
300
301    let uri_str = format!("{}/nodes/{node}/apt/changelog", configuration.base_path, node=crate::apis::urlencode(p_path_node));
302    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
303
304    req_builder = req_builder.query(&[("name", &p_query_name.to_string())]);
305    if let Some(ref param_value) = p_query_version {
306        req_builder = req_builder.query(&[("version", &param_value.to_string())]);
307    }
308    if let Some(ref user_agent) = configuration.user_agent {
309        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
310    }
311    if let Some(ref apikey) = configuration.api_key {
312        let key = apikey.key.clone();
313        let value = match apikey.prefix {
314            Some(ref prefix) => format!("{} {}", prefix, key),
315            None => key,
316        };
317        req_builder = req_builder.header("Authorization", value);
318    };
319    if let Some(ref apikey) = configuration.api_key {
320        let key = apikey.key.clone();
321        let value = match apikey.prefix {
322            Some(ref prefix) => format!("{} {}", prefix, key),
323            None => key,
324        };
325        req_builder = req_builder.header("CSRFPreventionToken", value);
326    };
327
328    let req = req_builder.build()?;
329    let resp = configuration.client.execute(req).await?;
330
331    let status = resp.status();
332    let content_type = resp
333        .headers()
334        .get("content-type")
335        .and_then(|v| v.to_str().ok())
336        .unwrap_or("application/octet-stream");
337    let content_type = super::ContentType::from(content_type);
338
339    if !status.is_client_error() && !status.is_server_error() {
340        let content = resp.text().await?;
341        match content_type {
342            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
343            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptGetChangelogResponse`"))),
344            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptGetChangelogResponse`")))),
345        }
346    } else {
347        let content = resp.text().await?;
348        let entity: Option<NodesAptGetChangelogError> = serde_json::from_str(&content).ok();
349        Err(Error::ResponseError(ResponseContent { status, content, entity }))
350    }
351}
352
353/// Get APT repository information.
354pub async fn nodes_apt_get_repositories(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesAptGetRepositoriesResponse, Error<NodesAptGetRepositoriesError>> {
355    // add a prefix to parameters to efficiently prevent name collisions
356    let p_path_node = node;
357
358    let uri_str = format!("{}/nodes/{node}/apt/repositories", configuration.base_path, node=crate::apis::urlencode(p_path_node));
359    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
360
361    if let Some(ref user_agent) = configuration.user_agent {
362        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
363    }
364    if let Some(ref apikey) = configuration.api_key {
365        let key = apikey.key.clone();
366        let value = match apikey.prefix {
367            Some(ref prefix) => format!("{} {}", prefix, key),
368            None => key,
369        };
370        req_builder = req_builder.header("Authorization", value);
371    };
372    if let Some(ref apikey) = configuration.api_key {
373        let key = apikey.key.clone();
374        let value = match apikey.prefix {
375            Some(ref prefix) => format!("{} {}", prefix, key),
376            None => key,
377        };
378        req_builder = req_builder.header("CSRFPreventionToken", value);
379    };
380
381    let req = req_builder.build()?;
382    let resp = configuration.client.execute(req).await?;
383
384    let status = resp.status();
385    let content_type = resp
386        .headers()
387        .get("content-type")
388        .and_then(|v| v.to_str().ok())
389        .unwrap_or("application/octet-stream");
390    let content_type = super::ContentType::from(content_type);
391
392    if !status.is_client_error() && !status.is_server_error() {
393        let content = resp.text().await?;
394        match content_type {
395            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
396            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptGetRepositoriesResponse`"))),
397            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptGetRepositoriesResponse`")))),
398        }
399    } else {
400        let content = resp.text().await?;
401        let entity: Option<NodesAptGetRepositoriesError> = serde_json::from_str(&content).ok();
402        Err(Error::ResponseError(ResponseContent { status, content, entity }))
403    }
404}
405
406/// List available APT updates
407pub async fn nodes_apt_get_update(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesAptGetUpdateResponse, Error<NodesAptGetUpdateError>> {
408    // add a prefix to parameters to efficiently prevent name collisions
409    let p_path_node = node;
410
411    let uri_str = format!("{}/nodes/{node}/apt/update", configuration.base_path, node=crate::apis::urlencode(p_path_node));
412    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
413
414    if let Some(ref user_agent) = configuration.user_agent {
415        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
416    }
417    if let Some(ref apikey) = configuration.api_key {
418        let key = apikey.key.clone();
419        let value = match apikey.prefix {
420            Some(ref prefix) => format!("{} {}", prefix, key),
421            None => key,
422        };
423        req_builder = req_builder.header("Authorization", value);
424    };
425    if let Some(ref apikey) = configuration.api_key {
426        let key = apikey.key.clone();
427        let value = match apikey.prefix {
428            Some(ref prefix) => format!("{} {}", prefix, key),
429            None => key,
430        };
431        req_builder = req_builder.header("CSRFPreventionToken", value);
432    };
433
434    let req = req_builder.build()?;
435    let resp = configuration.client.execute(req).await?;
436
437    let status = resp.status();
438    let content_type = resp
439        .headers()
440        .get("content-type")
441        .and_then(|v| v.to_str().ok())
442        .unwrap_or("application/octet-stream");
443    let content_type = super::ContentType::from(content_type);
444
445    if !status.is_client_error() && !status.is_server_error() {
446        let content = resp.text().await?;
447        match content_type {
448            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
449            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptGetUpdateResponse`"))),
450            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptGetUpdateResponse`")))),
451        }
452    } else {
453        let content = resp.text().await?;
454        let entity: Option<NodesAptGetUpdateError> = serde_json::from_str(&content).ok();
455        Err(Error::ResponseError(ResponseContent { status, content, entity }))
456    }
457}
458
459/// Get package information for important Proxmox Backup Server packages.
460pub async fn nodes_apt_get_versions(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesAptGetVersionsResponse, Error<NodesAptGetVersionsError>> {
461    // add a prefix to parameters to efficiently prevent name collisions
462    let p_path_node = node;
463
464    let uri_str = format!("{}/nodes/{node}/apt/versions", configuration.base_path, node=crate::apis::urlencode(p_path_node));
465    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
466
467    if let Some(ref user_agent) = configuration.user_agent {
468        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
469    }
470    if let Some(ref apikey) = configuration.api_key {
471        let key = apikey.key.clone();
472        let value = match apikey.prefix {
473            Some(ref prefix) => format!("{} {}", prefix, key),
474            None => key,
475        };
476        req_builder = req_builder.header("Authorization", value);
477    };
478    if let Some(ref apikey) = configuration.api_key {
479        let key = apikey.key.clone();
480        let value = match apikey.prefix {
481            Some(ref prefix) => format!("{} {}", prefix, key),
482            None => key,
483        };
484        req_builder = req_builder.header("CSRFPreventionToken", value);
485    };
486
487    let req = req_builder.build()?;
488    let resp = configuration.client.execute(req).await?;
489
490    let status = resp.status();
491    let content_type = resp
492        .headers()
493        .get("content-type")
494        .and_then(|v| v.to_str().ok())
495        .unwrap_or("application/octet-stream");
496    let content_type = super::ContentType::from(content_type);
497
498    if !status.is_client_error() && !status.is_server_error() {
499        let content = resp.text().await?;
500        match content_type {
501            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
502            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptGetVersionsResponse`"))),
503            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptGetVersionsResponse`")))),
504        }
505    } else {
506        let content = resp.text().await?;
507        let entity: Option<NodesAptGetVersionsError> = serde_json::from_str(&content).ok();
508        Err(Error::ResponseError(ResponseContent { status, content, entity }))
509    }
510}
511
512/// Add the repository identified by the `handle`. If the repository is already configured, it will be set to enabled.  The `digest` parameter asserts that the configuration has not been modified.
513pub async fn nodes_apt_update_repositories(configuration: &configuration::Configuration, node: &str, nodes_apt_update_repositories_request: models::NodesAptUpdateRepositoriesRequest) -> Result<models::NodesAptUpdateRepositoriesResponse, Error<NodesAptUpdateRepositoriesError>> {
514    // add a prefix to parameters to efficiently prevent name collisions
515    let p_path_node = node;
516    let p_body_nodes_apt_update_repositories_request = nodes_apt_update_repositories_request;
517
518    let uri_str = format!("{}/nodes/{node}/apt/repositories", configuration.base_path, node=crate::apis::urlencode(p_path_node));
519    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
520
521    if let Some(ref user_agent) = configuration.user_agent {
522        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
523    }
524    if let Some(ref apikey) = configuration.api_key {
525        let key = apikey.key.clone();
526        let value = match apikey.prefix {
527            Some(ref prefix) => format!("{} {}", prefix, key),
528            None => key,
529        };
530        req_builder = req_builder.header("Authorization", value);
531    };
532    if let Some(ref apikey) = configuration.api_key {
533        let key = apikey.key.clone();
534        let value = match apikey.prefix {
535            Some(ref prefix) => format!("{} {}", prefix, key),
536            None => key,
537        };
538        req_builder = req_builder.header("CSRFPreventionToken", value);
539    };
540    req_builder = req_builder.json(&p_body_nodes_apt_update_repositories_request);
541
542    let req = req_builder.build()?;
543    let resp = configuration.client.execute(req).await?;
544
545    let status = resp.status();
546    let content_type = resp
547        .headers()
548        .get("content-type")
549        .and_then(|v| v.to_str().ok())
550        .unwrap_or("application/octet-stream");
551    let content_type = super::ContentType::from(content_type);
552
553    if !status.is_client_error() && !status.is_server_error() {
554        let content = resp.text().await?;
555        match content_type {
556            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
557            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesAptUpdateRepositoriesResponse`"))),
558            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesAptUpdateRepositoriesResponse`")))),
559        }
560    } else {
561        let content = resp.text().await?;
562        let entity: Option<NodesAptUpdateRepositoriesError> = serde_json::from_str(&content).ok();
563        Err(Error::ResponseError(ResponseContent { status, content, entity }))
564    }
565}
566