ynab_api_async_fork/apis/
transactions_api.rs

1/*
2 * YNAB API Endpoints
3 *
4 * Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body.  API Documentation is at https://api.ynab.com
5 *
6 * The version of the OpenAPI document: 1.72.1
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11use std::rc::Rc;
12use std::borrow::Borrow;
13#[allow(unused_imports)]
14use std::option::Option;
15
16use reqwest;
17
18use super::{Error, configuration};
19
20pub struct TransactionsApiClient {
21    configuration: Rc<configuration::Configuration>,
22}
23
24impl TransactionsApiClient {
25    pub fn new(configuration: Rc<configuration::Configuration>) -> TransactionsApiClient {
26        TransactionsApiClient {
27            configuration,
28        }
29    }
30}
31
32pub trait TransactionsApi {
33    fn create_transaction(&self, budget_id: &str, data: crate::models::PostTransactionsWrapper) -> Result<crate::models::SaveTransactionsResponse, Error>;
34    fn delete_transaction(&self, budget_id: &str, transaction_id: &str) -> Result<crate::models::TransactionResponse, Error>;
35    fn get_transaction_by_id(&self, budget_id: &str, transaction_id: &str) -> Result<crate::models::TransactionResponse, Error>;
36    fn get_transactions(&self, budget_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::TransactionsResponse, Error>;
37    fn get_transactions_by_account(&self, budget_id: &str, account_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::TransactionsResponse, Error>;
38    fn get_transactions_by_category(&self, budget_id: &str, category_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::HybridTransactionsResponse, Error>;
39    fn get_transactions_by_month(&self, budget_id: &str, month: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::HybridTransactionsResponse, Error>;
40    fn get_transactions_by_payee(&self, budget_id: &str, payee_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::HybridTransactionsResponse, Error>;
41    fn import_transactions(&self, budget_id: &str) -> Result<crate::models::TransactionsImportResponse, Error>;
42    fn update_transaction(&self, budget_id: &str, transaction_id: &str, data: crate::models::PutTransactionWrapper) -> Result<crate::models::TransactionResponse, Error>;
43    fn update_transactions(&self, budget_id: &str, data: crate::models::PatchTransactionsWrapper) -> Result<crate::models::SaveTransactionsResponse, Error>;
44}
45
46impl TransactionsApi for TransactionsApiClient {
47    fn create_transaction(&self, budget_id: &str, data: crate::models::PostTransactionsWrapper) -> Result<crate::models::SaveTransactionsResponse, Error> {
48        let configuration: &configuration::Configuration = self.configuration.borrow();
49        let client = &configuration.client;
50
51        let uri_str = format!("{}/budgets/{budget_id}/transactions", configuration.base_path, budget_id=crate::apis::urlencode(budget_id));
52        let mut req_builder = client.post(uri_str.as_str());
53
54        if let Some(ref user_agent) = configuration.user_agent {
55            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
56        }
57        if let Some(ref token) = configuration.bearer_access_token {
58            req_builder = req_builder.bearer_auth(token.to_owned());
59        };
60        req_builder = req_builder.json(&data);
61
62        // send request
63        let req = req_builder.build()?;
64
65        Ok(client.execute(req)?.error_for_status()?.json()?)
66    }
67
68    fn delete_transaction(&self, budget_id: &str, transaction_id: &str) -> Result<crate::models::TransactionResponse, Error> {
69        let configuration: &configuration::Configuration = self.configuration.borrow();
70        let client = &configuration.client;
71
72        let uri_str = format!("{}/budgets/{budget_id}/transactions/{transaction_id}", configuration.base_path, budget_id=crate::apis::urlencode(budget_id), transaction_id=crate::apis::urlencode(transaction_id));
73        let mut req_builder = client.delete(uri_str.as_str());
74
75        if let Some(ref user_agent) = configuration.user_agent {
76            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
77        }
78        if let Some(ref token) = configuration.bearer_access_token {
79            req_builder = req_builder.bearer_auth(token.to_owned());
80        };
81
82        // send request
83        let req = req_builder.build()?;
84
85        Ok(client.execute(req)?.error_for_status()?.json()?)
86    }
87
88    fn get_transaction_by_id(&self, budget_id: &str, transaction_id: &str) -> Result<crate::models::TransactionResponse, Error> {
89        let configuration: &configuration::Configuration = self.configuration.borrow();
90        let client = &configuration.client;
91
92        let uri_str = format!("{}/budgets/{budget_id}/transactions/{transaction_id}", configuration.base_path, budget_id=crate::apis::urlencode(budget_id), transaction_id=crate::apis::urlencode(transaction_id));
93        let mut req_builder = client.get(uri_str.as_str());
94
95        if let Some(ref user_agent) = configuration.user_agent {
96            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
97        }
98        if let Some(ref token) = configuration.bearer_access_token {
99            req_builder = req_builder.bearer_auth(token.to_owned());
100        };
101
102        // send request
103        let req = req_builder.build()?;
104
105        Ok(client.execute(req)?.error_for_status()?.json()?)
106    }
107
108    fn get_transactions(&self, budget_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::TransactionsResponse, Error> {
109        let configuration: &configuration::Configuration = self.configuration.borrow();
110        let client = &configuration.client;
111
112        let uri_str = format!("{}/budgets/{budget_id}/transactions", configuration.base_path, budget_id=crate::apis::urlencode(budget_id));
113        let mut req_builder = client.get(uri_str.as_str());
114
115        if let Some(ref s) = since_date {
116            req_builder = req_builder.query(&[("since_date", &s.to_string())]);
117        }
118        if let Some(ref s) = _type {
119            req_builder = req_builder.query(&[("type", &s.to_string())]);
120        }
121        if let Some(ref s) = last_knowledge_of_server {
122            req_builder = req_builder.query(&[("last_knowledge_of_server", &s.to_string())]);
123        }
124        if let Some(ref user_agent) = configuration.user_agent {
125            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
126        }
127        if let Some(ref token) = configuration.bearer_access_token {
128            req_builder = req_builder.bearer_auth(token.to_owned());
129        };
130
131        // send request
132        let req = req_builder.build()?;
133
134        Ok(client.execute(req)?.error_for_status()?.json()?)
135    }
136
137    fn get_transactions_by_account(&self, budget_id: &str, account_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::TransactionsResponse, Error> {
138        let configuration: &configuration::Configuration = self.configuration.borrow();
139        let client = &configuration.client;
140
141        let uri_str = format!("{}/budgets/{budget_id}/accounts/{account_id}/transactions", configuration.base_path, budget_id=crate::apis::urlencode(budget_id), account_id=crate::apis::urlencode(account_id));
142        let mut req_builder = client.get(uri_str.as_str());
143
144        if let Some(ref s) = since_date {
145            req_builder = req_builder.query(&[("since_date", &s.to_string())]);
146        }
147        if let Some(ref s) = _type {
148            req_builder = req_builder.query(&[("type", &s.to_string())]);
149        }
150        if let Some(ref s) = last_knowledge_of_server {
151            req_builder = req_builder.query(&[("last_knowledge_of_server", &s.to_string())]);
152        }
153        if let Some(ref user_agent) = configuration.user_agent {
154            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
155        }
156        if let Some(ref token) = configuration.bearer_access_token {
157            req_builder = req_builder.bearer_auth(token.to_owned());
158        };
159
160        // send request
161        let req = req_builder.build()?;
162
163        Ok(client.execute(req)?.error_for_status()?.json()?)
164    }
165
166    fn get_transactions_by_category(&self, budget_id: &str, category_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::HybridTransactionsResponse, Error> {
167        let configuration: &configuration::Configuration = self.configuration.borrow();
168        let client = &configuration.client;
169
170        let uri_str = format!("{}/budgets/{budget_id}/categories/{category_id}/transactions", configuration.base_path, budget_id=crate::apis::urlencode(budget_id), category_id=crate::apis::urlencode(category_id));
171        let mut req_builder = client.get(uri_str.as_str());
172
173        if let Some(ref s) = since_date {
174            req_builder = req_builder.query(&[("since_date", &s.to_string())]);
175        }
176        if let Some(ref s) = _type {
177            req_builder = req_builder.query(&[("type", &s.to_string())]);
178        }
179        if let Some(ref s) = last_knowledge_of_server {
180            req_builder = req_builder.query(&[("last_knowledge_of_server", &s.to_string())]);
181        }
182        if let Some(ref user_agent) = configuration.user_agent {
183            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
184        }
185        if let Some(ref token) = configuration.bearer_access_token {
186            req_builder = req_builder.bearer_auth(token.to_owned());
187        };
188
189        // send request
190        let req = req_builder.build()?;
191
192        Ok(client.execute(req)?.error_for_status()?.json()?)
193    }
194
195    fn get_transactions_by_month(&self, budget_id: &str, month: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::HybridTransactionsResponse, Error> {
196        let configuration: &configuration::Configuration = self.configuration.borrow();
197        let client = &configuration.client;
198
199        let uri_str = format!("{}/budgets/{budget_id}/months/{month}/transactions", configuration.base_path, budget_id=crate::apis::urlencode(budget_id), month=crate::apis::urlencode(month));
200        let mut req_builder = client.get(uri_str.as_str());
201
202        if let Some(ref s) = since_date {
203            req_builder = req_builder.query(&[("since_date", &s.to_string())]);
204        }
205        if let Some(ref s) = _type {
206            req_builder = req_builder.query(&[("type", &s.to_string())]);
207        }
208        if let Some(ref s) = last_knowledge_of_server {
209            req_builder = req_builder.query(&[("last_knowledge_of_server", &s.to_string())]);
210        }
211        if let Some(ref user_agent) = configuration.user_agent {
212            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
213        }
214        if let Some(ref token) = configuration.bearer_access_token {
215            req_builder = req_builder.bearer_auth(token.to_owned());
216        };
217
218        // send request
219        let req = req_builder.build()?;
220
221        Ok(client.execute(req)?.error_for_status()?.json()?)
222    }
223
224    fn get_transactions_by_payee(&self, budget_id: &str, payee_id: &str, since_date: Option<String>, _type: Option<&str>, last_knowledge_of_server: Option<i64>) -> Result<crate::models::HybridTransactionsResponse, Error> {
225        let configuration: &configuration::Configuration = self.configuration.borrow();
226        let client = &configuration.client;
227
228        let uri_str = format!("{}/budgets/{budget_id}/payees/{payee_id}/transactions", configuration.base_path, budget_id=crate::apis::urlencode(budget_id), payee_id=crate::apis::urlencode(payee_id));
229        let mut req_builder = client.get(uri_str.as_str());
230
231        if let Some(ref s) = since_date {
232            req_builder = req_builder.query(&[("since_date", &s.to_string())]);
233        }
234        if let Some(ref s) = _type {
235            req_builder = req_builder.query(&[("type", &s.to_string())]);
236        }
237        if let Some(ref s) = last_knowledge_of_server {
238            req_builder = req_builder.query(&[("last_knowledge_of_server", &s.to_string())]);
239        }
240        if let Some(ref user_agent) = configuration.user_agent {
241            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
242        }
243        if let Some(ref token) = configuration.bearer_access_token {
244            req_builder = req_builder.bearer_auth(token.to_owned());
245        };
246
247        // send request
248        let req = req_builder.build()?;
249
250        Ok(client.execute(req)?.error_for_status()?.json()?)
251    }
252
253    fn import_transactions(&self, budget_id: &str) -> Result<crate::models::TransactionsImportResponse, Error> {
254        let configuration: &configuration::Configuration = self.configuration.borrow();
255        let client = &configuration.client;
256
257        let uri_str = format!("{}/budgets/{budget_id}/transactions/import", configuration.base_path, budget_id=crate::apis::urlencode(budget_id));
258        let mut req_builder = client.post(uri_str.as_str());
259
260        if let Some(ref user_agent) = configuration.user_agent {
261            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
262        }
263        if let Some(ref token) = configuration.bearer_access_token {
264            req_builder = req_builder.bearer_auth(token.to_owned());
265        };
266
267        // send request
268        let req = req_builder.build()?;
269
270        Ok(client.execute(req)?.error_for_status()?.json()?)
271    }
272
273    fn update_transaction(&self, budget_id: &str, transaction_id: &str, data: crate::models::PutTransactionWrapper) -> Result<crate::models::TransactionResponse, Error> {
274        let configuration: &configuration::Configuration = self.configuration.borrow();
275        let client = &configuration.client;
276
277        let uri_str = format!("{}/budgets/{budget_id}/transactions/{transaction_id}", configuration.base_path, budget_id=crate::apis::urlencode(budget_id), transaction_id=crate::apis::urlencode(transaction_id));
278        let mut req_builder = client.put(uri_str.as_str());
279
280        if let Some(ref user_agent) = configuration.user_agent {
281            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
282        }
283        if let Some(ref token) = configuration.bearer_access_token {
284            req_builder = req_builder.bearer_auth(token.to_owned());
285        };
286        req_builder = req_builder.json(&data);
287
288        // send request
289        let req = req_builder.build()?;
290
291        Ok(client.execute(req)?.error_for_status()?.json()?)
292    }
293
294    fn update_transactions(&self, budget_id: &str, data: crate::models::PatchTransactionsWrapper) -> Result<crate::models::SaveTransactionsResponse, Error> {
295        let configuration: &configuration::Configuration = self.configuration.borrow();
296        let client = &configuration.client;
297
298        let uri_str = format!("{}/budgets/{budget_id}/transactions", configuration.base_path, budget_id=crate::apis::urlencode(budget_id));
299        let mut req_builder = client.patch(uri_str.as_str());
300
301        if let Some(ref user_agent) = configuration.user_agent {
302            req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
303        }
304        if let Some(ref token) = configuration.bearer_access_token {
305            req_builder = req_builder.bearer_auth(token.to_owned());
306        };
307        req_builder = req_builder.json(&data);
308
309        // send request
310        let req = req_builder.build()?;
311
312        Ok(client.execute(req)?.error_for_status()?.json()?)
313    }
314
315}