Skip to main content

gocardless_bankaccountdata/apis/
requisitions_api.rs

1/*
2 * GoCardless Bank Account Data API
3 *
4 * Securely access your user's bank account information for better lending, accounting, verification and financial management.
5 *
6 * The version of the OpenAPI document: 2.0.7
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use super::{Error, configuration};
12use crate::{apis::ResponseContent, models};
13use async_trait::async_trait;
14use reqwest;
15use serde::{Deserialize, Serialize};
16use std::sync::Arc;
17
18#[async_trait]
19pub trait RequisitionsApi: Send + Sync {
20    async fn create_requisition(
21        &self,
22        params: CreateRequisitionParams,
23    ) -> Result<models::SpectacularRequisition, Error<CreateRequisitionError>>;
24    async fn delete_requisition_by_id(
25        &self,
26        params: DeleteRequisitionByIdParams,
27    ) -> Result<models::SuccessfulDeleteResponse, Error<DeleteRequisitionByIdError>>;
28    async fn requisition_by_id(
29        &self,
30        params: RequisitionByIdParams,
31    ) -> Result<models::Requisition, Error<RequisitionByIdError>>;
32    async fn retrieve_all_requisitions(
33        &self,
34        params: RetrieveAllRequisitionsParams,
35    ) -> Result<models::PaginatedRequisitionList, Error<RetrieveAllRequisitionsError>>;
36}
37
38pub struct RequisitionsApiClient {
39    configuration: Arc<configuration::Configuration>,
40}
41
42impl RequisitionsApiClient {
43    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
44        Self { configuration }
45    }
46}
47
48/// struct for passing parameters to the method [`create_requisition`]
49#[derive(Clone, Debug)]
50#[cfg_attr(feature = "bon", derive(::bon::Builder))]
51pub struct CreateRequisitionParams {
52    pub requisition_request: models::RequisitionRequest,
53}
54
55/// struct for passing parameters to the method [`delete_requisition_by_id`]
56#[derive(Clone, Debug)]
57#[cfg_attr(feature = "bon", derive(::bon::Builder))]
58pub struct DeleteRequisitionByIdParams {
59    /// A UUID string identifying this requisition.
60    pub id: String,
61}
62
63/// struct for passing parameters to the method [`requisition_by_id`]
64#[derive(Clone, Debug)]
65#[cfg_attr(feature = "bon", derive(::bon::Builder))]
66pub struct RequisitionByIdParams {
67    /// A UUID string identifying this requisition.
68    pub id: String,
69}
70
71/// struct for passing parameters to the method [`retrieve_all_requisitions`]
72#[derive(Clone, Debug)]
73#[cfg_attr(feature = "bon", derive(::bon::Builder))]
74pub struct RetrieveAllRequisitionsParams {
75    /// Number of results to return per page.
76    pub limit: Option<i32>,
77    /// The initial zero-based index from which to return the results.
78    pub offset: Option<i32>,
79}
80
81#[async_trait]
82impl RequisitionsApi for RequisitionsApiClient {
83    /// Create a new requisition
84    async fn create_requisition(
85        &self,
86        params: CreateRequisitionParams,
87    ) -> Result<models::SpectacularRequisition, Error<CreateRequisitionError>> {
88        let CreateRequisitionParams {
89            requisition_request,
90        } = params;
91
92        let local_var_configuration = &self.configuration;
93
94        let local_var_client = &local_var_configuration.client;
95
96        let local_var_uri_str =
97            format!("{}/api/v2/requisitions/", local_var_configuration.base_path);
98        let mut local_var_req_builder =
99            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
100
101        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
102            local_var_req_builder = local_var_req_builder
103                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
104        }
105        if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
106            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
107        };
108        local_var_req_builder = local_var_req_builder.json(&requisition_request);
109
110        let local_var_req = local_var_req_builder.build()?;
111        let local_var_resp = local_var_client.execute(local_var_req).await?;
112
113        let local_var_status = local_var_resp.status();
114        let local_var_content = local_var_resp.text().await?;
115
116        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
117            serde_json::from_str(&local_var_content).map_err(Error::from)
118        } else {
119            let local_var_entity: Option<CreateRequisitionError> =
120                serde_json::from_str(&local_var_content).ok();
121            let local_var_error = ResponseContent {
122                status: local_var_status,
123                content: local_var_content,
124                entity: local_var_entity,
125            };
126            Err(Error::ResponseError(local_var_error))
127        }
128    }
129
130    /// Delete requisition and its end user agreement
131    async fn delete_requisition_by_id(
132        &self,
133        params: DeleteRequisitionByIdParams,
134    ) -> Result<models::SuccessfulDeleteResponse, Error<DeleteRequisitionByIdError>> {
135        let DeleteRequisitionByIdParams { id } = params;
136
137        let local_var_configuration = &self.configuration;
138
139        let local_var_client = &local_var_configuration.client;
140
141        let local_var_uri_str = format!(
142            "{}/api/v2/requisitions/{id}/",
143            local_var_configuration.base_path,
144            id = crate::apis::urlencode(id)
145        );
146        let mut local_var_req_builder =
147            local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
148
149        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
150            local_var_req_builder = local_var_req_builder
151                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
152        }
153        if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
154            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
155        };
156
157        let local_var_req = local_var_req_builder.build()?;
158        let local_var_resp = local_var_client.execute(local_var_req).await?;
159
160        let local_var_status = local_var_resp.status();
161        let local_var_content = local_var_resp.text().await?;
162
163        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
164            serde_json::from_str(&local_var_content).map_err(Error::from)
165        } else {
166            let local_var_entity: Option<DeleteRequisitionByIdError> =
167                serde_json::from_str(&local_var_content).ok();
168            let local_var_error = ResponseContent {
169                status: local_var_status,
170                content: local_var_content,
171                entity: local_var_entity,
172            };
173            Err(Error::ResponseError(local_var_error))
174        }
175    }
176
177    /// Retrieve a requisition by ID
178    async fn requisition_by_id(
179        &self,
180        params: RequisitionByIdParams,
181    ) -> Result<models::Requisition, Error<RequisitionByIdError>> {
182        let RequisitionByIdParams { id } = params;
183
184        let local_var_configuration = &self.configuration;
185
186        let local_var_client = &local_var_configuration.client;
187
188        let local_var_uri_str = format!(
189            "{}/api/v2/requisitions/{id}/",
190            local_var_configuration.base_path,
191            id = crate::apis::urlencode(id)
192        );
193        let mut local_var_req_builder =
194            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
195
196        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
197            local_var_req_builder = local_var_req_builder
198                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
199        }
200        if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
201            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
202        };
203
204        let local_var_req = local_var_req_builder.build()?;
205        let local_var_resp = local_var_client.execute(local_var_req).await?;
206
207        let local_var_status = local_var_resp.status();
208        let local_var_content = local_var_resp.text().await?;
209
210        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
211            serde_json::from_str(&local_var_content).map_err(Error::from)
212        } else {
213            let local_var_entity: Option<RequisitionByIdError> =
214                serde_json::from_str(&local_var_content).ok();
215            let local_var_error = ResponseContent {
216                status: local_var_status,
217                content: local_var_content,
218                entity: local_var_entity,
219            };
220            Err(Error::ResponseError(local_var_error))
221        }
222    }
223
224    /// Retrieve all requisitions belonging to the company
225    async fn retrieve_all_requisitions(
226        &self,
227        params: RetrieveAllRequisitionsParams,
228    ) -> Result<models::PaginatedRequisitionList, Error<RetrieveAllRequisitionsError>> {
229        let RetrieveAllRequisitionsParams { limit, offset } = params;
230
231        let local_var_configuration = &self.configuration;
232
233        let local_var_client = &local_var_configuration.client;
234
235        let local_var_uri_str =
236            format!("{}/api/v2/requisitions/", local_var_configuration.base_path);
237        let mut local_var_req_builder =
238            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
239
240        if let Some(ref local_var_str) = limit {
241            local_var_req_builder =
242                local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
243        }
244        if let Some(ref local_var_str) = offset {
245            local_var_req_builder =
246                local_var_req_builder.query(&[("offset", &local_var_str.to_string())]);
247        }
248        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
249            local_var_req_builder = local_var_req_builder
250                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
251        }
252        if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
253            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
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        let local_var_status = local_var_resp.status();
260        let local_var_content = local_var_resp.text().await?;
261
262        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
263            serde_json::from_str(&local_var_content).map_err(Error::from)
264        } else {
265            let local_var_entity: Option<RetrieveAllRequisitionsError> =
266                serde_json::from_str(&local_var_content).ok();
267            let local_var_error = ResponseContent {
268                status: local_var_status,
269                content: local_var_content,
270                entity: local_var_entity,
271            };
272            Err(Error::ResponseError(local_var_error))
273        }
274    }
275}
276
277/// struct for typed errors of method [`create_requisition`]
278#[derive(Debug, Clone, Serialize, Deserialize)]
279#[serde(untagged)]
280pub enum CreateRequisitionError {
281    Status400(models::ErrorResponse),
282    Status404(models::ErrorResponse),
283    Status429(models::ErrorResponse),
284    Status402(models::ErrorResponse),
285    Status401(models::ErrorResponse),
286    Status403(models::ErrorResponse),
287    UnknownValue(serde_json::Value),
288}
289
290/// struct for typed errors of method [`delete_requisition_by_id`]
291#[derive(Debug, Clone, Serialize, Deserialize)]
292#[serde(untagged)]
293pub enum DeleteRequisitionByIdError {
294    Status400(models::ErrorResponse),
295    Status404(models::ErrorResponse),
296    Status429(models::ErrorResponse),
297    Status401(models::ErrorResponse),
298    Status403(models::ErrorResponse),
299    UnknownValue(serde_json::Value),
300}
301
302/// struct for typed errors of method [`requisition_by_id`]
303#[derive(Debug, Clone, Serialize, Deserialize)]
304#[serde(untagged)]
305pub enum RequisitionByIdError {
306    Status404(models::ErrorResponse),
307    Status400(models::ErrorResponse),
308    Status429(models::ErrorResponse),
309    Status401(models::ErrorResponse),
310    Status403(models::ErrorResponse),
311    UnknownValue(serde_json::Value),
312}
313
314/// struct for typed errors of method [`retrieve_all_requisitions`]
315#[derive(Debug, Clone, Serialize, Deserialize)]
316#[serde(untagged)]
317pub enum RetrieveAllRequisitionsError {
318    Status404(models::ErrorResponse),
319    Status400(models::ErrorResponse),
320    Status429(models::ErrorResponse),
321    Status401(models::ErrorResponse),
322    Status403(models::ErrorResponse),
323    UnknownValue(serde_json::Value),
324}