use crate::ids::{TreasuryFinancialAccountId};
use crate::params::{Metadata, Object, Timestamp};
use crate::resources::{TreasuryFinancialAccountFeatures};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TreasuryFinancialAccount {
pub id: TreasuryFinancialAccountId,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_features: Option<Vec<TreasuryFinancialAccountActiveFeatures>>,
pub balance: TreasuryFinancialAccountsResourceBalance,
pub country: String,
pub created: Timestamp,
#[serde(skip_serializing_if = "Option::is_none")]
pub features: Option<TreasuryFinancialAccountFeatures>,
pub financial_addresses: Vec<TreasuryFinancialAccountsResourceFinancialAddress>,
pub livemode: bool,
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pending_features: Option<Vec<TreasuryFinancialAccountPendingFeatures>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub platform_restrictions: Option<TreasuryFinancialAccountsResourcePlatformRestrictions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub restricted_features: Option<Vec<TreasuryFinancialAccountRestrictedFeatures>>,
pub status: TreasuryFinancialAccountStatus,
pub status_details: TreasuryFinancialAccountsResourceStatusDetails,
pub supported_currencies: Vec<String>,
}
impl Object for TreasuryFinancialAccount {
type Id = TreasuryFinancialAccountId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"treasury.financial_account"
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TreasuryFinancialAccountsResourceBalance {
pub cash: i64,
pub inbound_pending: i64,
pub outbound_pending: i64,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TreasuryFinancialAccountsResourceFinancialAddress {
#[serde(skip_serializing_if = "Option::is_none")]
pub aba: Option<TreasuryFinancialAccountsResourceAbaRecord>,
#[serde(skip_serializing_if = "Option::is_none")]
pub supported_networks: Option<Vec<TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks>>,
#[serde(rename = "type")]
pub type_: TreasuryFinancialAccountsResourceFinancialAddressType,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TreasuryFinancialAccountsResourceAbaRecord {
pub account_holder_name: String,
pub account_number: Option<String>,
pub account_number_last4: String,
pub bank_name: String,
pub routing_number: String,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TreasuryFinancialAccountsResourcePlatformRestrictions {
pub inbound_flows: Option<TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows>,
pub outbound_flows: Option<TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TreasuryFinancialAccountsResourceStatusDetails {
pub closed: Option<TreasuryFinancialAccountsResourceClosedStatusDetails>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TreasuryFinancialAccountsResourceClosedStatusDetails {
pub reasons: Vec<TreasuryFinancialAccountsResourceClosedStatusDetailsReasons>,
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountActiveFeatures {
CardIssuing,
DepositInsurance,
#[serde(rename = "financial_addresses.aba")]
FinancialAddressesAba,
#[serde(rename = "inbound_transfers.ach")]
InboundTransfersAch,
IntraStripeFlows,
#[serde(rename = "outbound_payments.ach")]
OutboundPaymentsAch,
#[serde(rename = "outbound_payments.us_domestic_wire")]
OutboundPaymentsUsDomesticWire,
#[serde(rename = "outbound_transfers.ach")]
OutboundTransfersAch,
#[serde(rename = "outbound_transfers.us_domestic_wire")]
OutboundTransfersUsDomesticWire,
RemoteDepositCapture,
}
impl TreasuryFinancialAccountActiveFeatures {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountActiveFeatures::CardIssuing => "card_issuing",
TreasuryFinancialAccountActiveFeatures::DepositInsurance => "deposit_insurance",
TreasuryFinancialAccountActiveFeatures::FinancialAddressesAba => "financial_addresses.aba",
TreasuryFinancialAccountActiveFeatures::InboundTransfersAch => "inbound_transfers.ach",
TreasuryFinancialAccountActiveFeatures::IntraStripeFlows => "intra_stripe_flows",
TreasuryFinancialAccountActiveFeatures::OutboundPaymentsAch => "outbound_payments.ach",
TreasuryFinancialAccountActiveFeatures::OutboundPaymentsUsDomesticWire => "outbound_payments.us_domestic_wire",
TreasuryFinancialAccountActiveFeatures::OutboundTransfersAch => "outbound_transfers.ach",
TreasuryFinancialAccountActiveFeatures::OutboundTransfersUsDomesticWire => "outbound_transfers.us_domestic_wire",
TreasuryFinancialAccountActiveFeatures::RemoteDepositCapture => "remote_deposit_capture",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountActiveFeatures {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountActiveFeatures {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountActiveFeatures {
fn default() -> Self {
Self::CardIssuing
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountPendingFeatures {
CardIssuing,
DepositInsurance,
#[serde(rename = "financial_addresses.aba")]
FinancialAddressesAba,
#[serde(rename = "inbound_transfers.ach")]
InboundTransfersAch,
IntraStripeFlows,
#[serde(rename = "outbound_payments.ach")]
OutboundPaymentsAch,
#[serde(rename = "outbound_payments.us_domestic_wire")]
OutboundPaymentsUsDomesticWire,
#[serde(rename = "outbound_transfers.ach")]
OutboundTransfersAch,
#[serde(rename = "outbound_transfers.us_domestic_wire")]
OutboundTransfersUsDomesticWire,
RemoteDepositCapture,
}
impl TreasuryFinancialAccountPendingFeatures {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountPendingFeatures::CardIssuing => "card_issuing",
TreasuryFinancialAccountPendingFeatures::DepositInsurance => "deposit_insurance",
TreasuryFinancialAccountPendingFeatures::FinancialAddressesAba => "financial_addresses.aba",
TreasuryFinancialAccountPendingFeatures::InboundTransfersAch => "inbound_transfers.ach",
TreasuryFinancialAccountPendingFeatures::IntraStripeFlows => "intra_stripe_flows",
TreasuryFinancialAccountPendingFeatures::OutboundPaymentsAch => "outbound_payments.ach",
TreasuryFinancialAccountPendingFeatures::OutboundPaymentsUsDomesticWire => "outbound_payments.us_domestic_wire",
TreasuryFinancialAccountPendingFeatures::OutboundTransfersAch => "outbound_transfers.ach",
TreasuryFinancialAccountPendingFeatures::OutboundTransfersUsDomesticWire => "outbound_transfers.us_domestic_wire",
TreasuryFinancialAccountPendingFeatures::RemoteDepositCapture => "remote_deposit_capture",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountPendingFeatures {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountPendingFeatures {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountPendingFeatures {
fn default() -> Self {
Self::CardIssuing
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountRestrictedFeatures {
CardIssuing,
DepositInsurance,
#[serde(rename = "financial_addresses.aba")]
FinancialAddressesAba,
#[serde(rename = "inbound_transfers.ach")]
InboundTransfersAch,
IntraStripeFlows,
#[serde(rename = "outbound_payments.ach")]
OutboundPaymentsAch,
#[serde(rename = "outbound_payments.us_domestic_wire")]
OutboundPaymentsUsDomesticWire,
#[serde(rename = "outbound_transfers.ach")]
OutboundTransfersAch,
#[serde(rename = "outbound_transfers.us_domestic_wire")]
OutboundTransfersUsDomesticWire,
RemoteDepositCapture,
}
impl TreasuryFinancialAccountRestrictedFeatures {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountRestrictedFeatures::CardIssuing => "card_issuing",
TreasuryFinancialAccountRestrictedFeatures::DepositInsurance => "deposit_insurance",
TreasuryFinancialAccountRestrictedFeatures::FinancialAddressesAba => "financial_addresses.aba",
TreasuryFinancialAccountRestrictedFeatures::InboundTransfersAch => "inbound_transfers.ach",
TreasuryFinancialAccountRestrictedFeatures::IntraStripeFlows => "intra_stripe_flows",
TreasuryFinancialAccountRestrictedFeatures::OutboundPaymentsAch => "outbound_payments.ach",
TreasuryFinancialAccountRestrictedFeatures::OutboundPaymentsUsDomesticWire => "outbound_payments.us_domestic_wire",
TreasuryFinancialAccountRestrictedFeatures::OutboundTransfersAch => "outbound_transfers.ach",
TreasuryFinancialAccountRestrictedFeatures::OutboundTransfersUsDomesticWire => "outbound_transfers.us_domestic_wire",
TreasuryFinancialAccountRestrictedFeatures::RemoteDepositCapture => "remote_deposit_capture",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountRestrictedFeatures {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountRestrictedFeatures {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountRestrictedFeatures {
fn default() -> Self {
Self::CardIssuing
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountStatus {
Closed,
Open,
}
impl TreasuryFinancialAccountStatus {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountStatus::Closed => "closed",
TreasuryFinancialAccountStatus::Open => "open",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountStatus {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountStatus {
fn default() -> Self {
Self::Closed
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountsResourceClosedStatusDetailsReasons {
AccountRejected,
ClosedByPlatform,
Other,
}
impl TreasuryFinancialAccountsResourceClosedStatusDetailsReasons {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountsResourceClosedStatusDetailsReasons::AccountRejected => "account_rejected",
TreasuryFinancialAccountsResourceClosedStatusDetailsReasons::ClosedByPlatform => "closed_by_platform",
TreasuryFinancialAccountsResourceClosedStatusDetailsReasons::Other => "other",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountsResourceClosedStatusDetailsReasons {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountsResourceClosedStatusDetailsReasons {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountsResourceClosedStatusDetailsReasons {
fn default() -> Self {
Self::AccountRejected
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks {
Ach,
UsDomesticWire,
}
impl TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks::Ach => "ach",
TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks::UsDomesticWire => "us_domestic_wire",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountsResourceFinancialAddressSupportedNetworks {
fn default() -> Self {
Self::Ach
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountsResourceFinancialAddressType {
Aba,
}
impl TreasuryFinancialAccountsResourceFinancialAddressType {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountsResourceFinancialAddressType::Aba => "aba",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountsResourceFinancialAddressType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountsResourceFinancialAddressType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountsResourceFinancialAddressType {
fn default() -> Self {
Self::Aba
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows {
Restricted,
Unrestricted,
}
impl TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows::Restricted => "restricted",
TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows::Unrestricted => "unrestricted",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountsResourcePlatformRestrictionsInboundFlows {
fn default() -> Self {
Self::Restricted
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows {
Restricted,
Unrestricted,
}
impl TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows {
pub fn as_str(self) -> &'static str {
match self {
TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows::Restricted => "restricted",
TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows::Unrestricted => "unrestricted",
}
}
}
impl AsRef<str> for TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
impl std::default::Default for TreasuryFinancialAccountsResourcePlatformRestrictionsOutboundFlows {
fn default() -> Self {
Self::Restricted
}
}