osdm_sys/apis/
release_api.rs

1/*
2 * UIC 90918-10 - OSDM
3 *
4 * Specifications for the OSDM API standard. The OSDM specification supports two modes of operation: Retailer Mode and Distributor Mode. The API works identically in both modes, except that in distributor mode the API also returns fare information.  The following resources are key to get started:    -  [Processes](https://osdm.io/spec/processes/)   -  [Models](https://osdm.io/spec/models/)   -  [Getting started](https://osdm.io/spec/getting-started/) 
5 *
6 * The version of the OpenAPI document: 3.7.0
7 * Contact: osdm@uic.org
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 [`delete_release_offers`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum DeleteReleaseOffersError {
22    Status400(models::Problem),
23    Status401(models::Problem),
24    Status403(models::Problem),
25    Status404(models::Problem),
26    Status406(models::Problem),
27    Status409(models::Problem),
28    Status415(models::Problem),
29    Status500(models::Problem),
30    Status501(models::Problem),
31    Status503(models::Problem),
32    DefaultResponse(models::Problem),
33    UnknownValue(serde_json::Value),
34}
35
36/// struct for typed errors of method [`get_release_offer`]
37#[derive(Debug, Clone, Serialize, Deserialize)]
38#[serde(untagged)]
39pub enum GetReleaseOfferError {
40    Status400(models::Problem),
41    Status401(models::Problem),
42    Status403(models::Problem),
43    Status404(models::Problem),
44    Status406(models::Problem),
45    Status415(models::Problem),
46    Status500(models::Problem),
47    Status501(models::Problem),
48    Status503(models::Problem),
49    DefaultResponse(models::Problem),
50    UnknownValue(serde_json::Value),
51}
52
53/// struct for typed errors of method [`patch_release_offers`]
54#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(untagged)]
56pub enum PatchReleaseOffersError {
57    Status400(models::Problem),
58    Status401(models::Problem),
59    Status403(models::Problem),
60    Status404(models::Problem),
61    Status406(models::Problem),
62    Status409(models::Problem),
63    Status415(models::Problem),
64    Status500(models::Problem),
65    Status501(models::Problem),
66    Status503(models::Problem),
67    DefaultResponse(models::Problem),
68    UnknownValue(serde_json::Value),
69}
70
71/// struct for typed errors of method [`post_release_offers`]
72#[derive(Debug, Clone, Serialize, Deserialize)]
73#[serde(untagged)]
74pub enum PostReleaseOffersError {
75    Status400(models::Problem),
76    Status401(models::Problem),
77    Status403(models::Problem),
78    Status404(models::Problem),
79    Status406(models::Problem),
80    Status415(models::Problem),
81    Status500(models::Problem),
82    Status501(models::Problem),
83    Status503(models::Problem),
84    DefaultResponse(models::Problem),
85    UnknownValue(serde_json::Value),
86}
87
88
89pub async fn delete_release_offers(configuration: &configuration::Configuration, booking_id: &str, release_offer_id: &str, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>) -> Result<(), Error<DeleteReleaseOffersError>> {
90    // add a prefix to parameters to efficiently prevent name collisions
91    let p_path_booking_id = booking_id;
92    let p_path_release_offer_id = release_offer_id;
93    let p_header_requestor = requestor;
94    let p_header_accept_language = accept_language;
95    let p_header_traceparent = traceparent;
96    let p_header_tracestate = tracestate;
97
98    let uri_str = format!("{}/bookings/{bookingId}/release-offers/{releaseOfferId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), releaseOfferId=crate::apis::urlencode(p_path_release_offer_id));
99    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
100
101    if let Some(ref user_agent) = configuration.user_agent {
102        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
103    }
104    if let Some(param_value) = p_header_requestor {
105        req_builder = req_builder.header("Requestor", param_value.to_string());
106    }
107    if let Some(param_value) = p_header_accept_language {
108        req_builder = req_builder.header("Accept-Language", param_value.to_string());
109    }
110    if let Some(param_value) = p_header_traceparent {
111        req_builder = req_builder.header("traceparent", param_value.to_string());
112    }
113    if let Some(param_value) = p_header_tracestate {
114        req_builder = req_builder.header("tracestate", param_value.to_string());
115    }
116    if let Some(ref token) = configuration.oauth_access_token {
117        req_builder = req_builder.bearer_auth(token.to_owned());
118    };
119
120    let req = req_builder.build()?;
121    let resp = configuration.client.execute(req).await?;
122
123    let status = resp.status();
124
125    if !status.is_client_error() && !status.is_server_error() {
126        Ok(())
127    } else {
128        let content = resp.text().await?;
129        let entity: Option<DeleteReleaseOffersError> = serde_json::from_str(&content).ok();
130        Err(Error::ResponseError(ResponseContent { status, content, entity }))
131    }
132}
133
134pub async fn get_release_offer(configuration: &configuration::Configuration, booking_id: &str, release_offer_id: &str, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>, x_accept_namespace: Option<&str>) -> Result<models::ReleaseOfferResponse, Error<GetReleaseOfferError>> {
135    // add a prefix to parameters to efficiently prevent name collisions
136    let p_path_booking_id = booking_id;
137    let p_path_release_offer_id = release_offer_id;
138    let p_header_requestor = requestor;
139    let p_header_accept_language = accept_language;
140    let p_header_traceparent = traceparent;
141    let p_header_tracestate = tracestate;
142    let p_header_x_accept_namespace = x_accept_namespace;
143
144    let uri_str = format!("{}/bookings/{bookingId}/release-offers/{releaseOfferId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), releaseOfferId=crate::apis::urlencode(p_path_release_offer_id));
145    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
146
147    if let Some(ref user_agent) = configuration.user_agent {
148        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
149    }
150    if let Some(param_value) = p_header_requestor {
151        req_builder = req_builder.header("Requestor", param_value.to_string());
152    }
153    if let Some(param_value) = p_header_accept_language {
154        req_builder = req_builder.header("Accept-Language", param_value.to_string());
155    }
156    if let Some(param_value) = p_header_traceparent {
157        req_builder = req_builder.header("traceparent", param_value.to_string());
158    }
159    if let Some(param_value) = p_header_tracestate {
160        req_builder = req_builder.header("tracestate", param_value.to_string());
161    }
162    if let Some(param_value) = p_header_x_accept_namespace {
163        req_builder = req_builder.header("x-accept-namespace", param_value.to_string());
164    }
165    if let Some(ref token) = configuration.oauth_access_token {
166        req_builder = req_builder.bearer_auth(token.to_owned());
167    };
168
169    let req = req_builder.build()?;
170    let resp = configuration.client.execute(req).await?;
171
172    let status = resp.status();
173    let content_type = resp
174        .headers()
175        .get("content-type")
176        .and_then(|v| v.to_str().ok())
177        .unwrap_or("application/octet-stream");
178    let content_type = super::ContentType::from(content_type);
179
180    if !status.is_client_error() && !status.is_server_error() {
181        let content = resp.text().await?;
182        match content_type {
183            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
184            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ReleaseOfferResponse`"))),
185            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::ReleaseOfferResponse`")))),
186        }
187    } else {
188        let content = resp.text().await?;
189        let entity: Option<GetReleaseOfferError> = serde_json::from_str(&content).ok();
190        Err(Error::ResponseError(ResponseContent { status, content, entity }))
191    }
192}
193
194pub async fn patch_release_offers(configuration: &configuration::Configuration, booking_id: &str, release_offer_id: &str, release_offer_patch_request: models::ReleaseOfferPatchRequest, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>, idempotency_key: Option<&str>, x_accept_namespace: Option<&str>) -> Result<models::ReleaseOfferResponse, Error<PatchReleaseOffersError>> {
195    // add a prefix to parameters to efficiently prevent name collisions
196    let p_path_booking_id = booking_id;
197    let p_path_release_offer_id = release_offer_id;
198    let p_body_release_offer_patch_request = release_offer_patch_request;
199    let p_header_requestor = requestor;
200    let p_header_accept_language = accept_language;
201    let p_header_traceparent = traceparent;
202    let p_header_tracestate = tracestate;
203    let p_header_idempotency_key = idempotency_key;
204    let p_header_x_accept_namespace = x_accept_namespace;
205
206    let uri_str = format!("{}/bookings/{bookingId}/release-offers/{releaseOfferId}", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id), releaseOfferId=crate::apis::urlencode(p_path_release_offer_id));
207    let mut req_builder = configuration.client.request(reqwest::Method::PATCH, &uri_str);
208
209    if let Some(ref user_agent) = configuration.user_agent {
210        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
211    }
212    if let Some(param_value) = p_header_requestor {
213        req_builder = req_builder.header("Requestor", param_value.to_string());
214    }
215    if let Some(param_value) = p_header_accept_language {
216        req_builder = req_builder.header("Accept-Language", param_value.to_string());
217    }
218    if let Some(param_value) = p_header_traceparent {
219        req_builder = req_builder.header("traceparent", param_value.to_string());
220    }
221    if let Some(param_value) = p_header_tracestate {
222        req_builder = req_builder.header("tracestate", param_value.to_string());
223    }
224    if let Some(param_value) = p_header_idempotency_key {
225        req_builder = req_builder.header("Idempotency-Key", param_value.to_string());
226    }
227    if let Some(param_value) = p_header_x_accept_namespace {
228        req_builder = req_builder.header("x-accept-namespace", param_value.to_string());
229    }
230    if let Some(ref token) = configuration.oauth_access_token {
231        req_builder = req_builder.bearer_auth(token.to_owned());
232    };
233    req_builder = req_builder.json(&p_body_release_offer_patch_request);
234
235    let req = req_builder.build()?;
236    let resp = configuration.client.execute(req).await?;
237
238    let status = resp.status();
239    let content_type = resp
240        .headers()
241        .get("content-type")
242        .and_then(|v| v.to_str().ok())
243        .unwrap_or("application/octet-stream");
244    let content_type = super::ContentType::from(content_type);
245
246    if !status.is_client_error() && !status.is_server_error() {
247        let content = resp.text().await?;
248        match content_type {
249            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
250            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ReleaseOfferResponse`"))),
251            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::ReleaseOfferResponse`")))),
252        }
253    } else {
254        let content = resp.text().await?;
255        let entity: Option<PatchReleaseOffersError> = serde_json::from_str(&content).ok();
256        Err(Error::ResponseError(ResponseContent { status, content, entity }))
257    }
258}
259
260pub async fn post_release_offers(configuration: &configuration::Configuration, booking_id: &str, release_offer_request: models::ReleaseOfferRequest, requestor: Option<&str>, accept_language: Option<&str>, traceparent: Option<&str>, tracestate: Option<&str>, idempotency_key: Option<&str>, x_accept_namespace: Option<&str>) -> Result<models::ReleaseOfferCollectionResponse, Error<PostReleaseOffersError>> {
261    // add a prefix to parameters to efficiently prevent name collisions
262    let p_path_booking_id = booking_id;
263    let p_body_release_offer_request = release_offer_request;
264    let p_header_requestor = requestor;
265    let p_header_accept_language = accept_language;
266    let p_header_traceparent = traceparent;
267    let p_header_tracestate = tracestate;
268    let p_header_idempotency_key = idempotency_key;
269    let p_header_x_accept_namespace = x_accept_namespace;
270
271    let uri_str = format!("{}/bookings/{bookingId}/release-offers", configuration.base_path, bookingId=crate::apis::urlencode(p_path_booking_id));
272    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
273
274    if let Some(ref user_agent) = configuration.user_agent {
275        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
276    }
277    if let Some(param_value) = p_header_requestor {
278        req_builder = req_builder.header("Requestor", param_value.to_string());
279    }
280    if let Some(param_value) = p_header_accept_language {
281        req_builder = req_builder.header("Accept-Language", param_value.to_string());
282    }
283    if let Some(param_value) = p_header_traceparent {
284        req_builder = req_builder.header("traceparent", param_value.to_string());
285    }
286    if let Some(param_value) = p_header_tracestate {
287        req_builder = req_builder.header("tracestate", param_value.to_string());
288    }
289    if let Some(param_value) = p_header_idempotency_key {
290        req_builder = req_builder.header("Idempotency-Key", param_value.to_string());
291    }
292    if let Some(param_value) = p_header_x_accept_namespace {
293        req_builder = req_builder.header("x-accept-namespace", param_value.to_string());
294    }
295    if let Some(ref token) = configuration.oauth_access_token {
296        req_builder = req_builder.bearer_auth(token.to_owned());
297    };
298    req_builder = req_builder.json(&p_body_release_offer_request);
299
300    let req = req_builder.build()?;
301    let resp = configuration.client.execute(req).await?;
302
303    let status = resp.status();
304    let content_type = resp
305        .headers()
306        .get("content-type")
307        .and_then(|v| v.to_str().ok())
308        .unwrap_or("application/octet-stream");
309    let content_type = super::ContentType::from(content_type);
310
311    if !status.is_client_error() && !status.is_server_error() {
312        let content = resp.text().await?;
313        match content_type {
314            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
315            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ReleaseOfferCollectionResponse`"))),
316            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::ReleaseOfferCollectionResponse`")))),
317        }
318    } else {
319        let content = resp.text().await?;
320        let entity: Option<PostReleaseOffersError> = serde_json::from_str(&content).ok();
321        Err(Error::ResponseError(ResponseContent { status, content, entity }))
322    }
323}
324