mercury_rust/resources/
accounts.rs
1use chrono::{DateTime, Utc};
2use crate::client::Client;
3use crate::resources::List;
4
5#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
6#[serde(rename_all="camelCase")]
7pub struct Account {
8 pub account_number: String,
9 pub available_balance: f32,
10 pub created_at: DateTime<Utc>,
11 pub current_balance: f32,
12 pub id: String,
13 pub kind: AccountKind,
14 pub name: String,
15 pub routing_number: String,
16 pub status: AccountStatus,
17 pub r#type: AccountType,
18 pub can_receive_transactions: Option<bool>,
19 pub nickname: Option<String>,
20 pub legal_business_name: String,
21}
22
23#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
24#[serde(rename_all="lowercase")]
25pub enum AccountKind {
26 Checking,
27 Savings
28}
29
30#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
31#[serde(rename_all="lowercase")]
32pub enum AccountStatus {
33 Active,
34 Deleted,
35 Pending
36}
37
38#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq)]
39#[serde(rename_all="lowercase")]
40pub enum AccountType {
41 Mercury,
42 External,
43 Recipient
44}
45
46impl Account {
47
48 pub async fn list(client: &Client) -> crate::Result<List<Self>> {
49 client.get("/accounts", vec![], serde_json::Map::new()).await
50 }
51
52 pub async fn retrieve(client: &Client, id: &str) -> crate::Result<Self> {
53 client.get("/account", vec![id], serde_json::Map::new()).await
54 }
55
56}