libstripe/resources/connect/
applicationfees.rs

1use crate::resources::common::currency::Currency;
2use crate::resources::common::object::Object;
3
4use crate::resources::common::path::UrlPath;
5use crate::resources::core::refunds::Refund;
6use crate::util::{List, RangeQuery, Expandable};
7use crate::{Client};
8use crate::resources::connect::account::Account;
9use crate::resources::core::balance::BalanceTransaction;
10use crate::resources::core::charges::Charge;
11use crate::resources::connect::transfers::Transfer;
12
13#[derive(Serialize, Deserialize, Debug, PartialEq)]
14pub struct ApplicationFees {
15    pub id: String,
16    pub object: Object,
17    pub account: Expandable<Account>,
18    pub amount: i64,
19    pub amount_refunded: i64,
20    pub application: String,
21    pub balance_transaction: Expandable<BalanceTransaction>,
22    pub charge: Expandable<Charge>,
23    pub created: i64,
24    pub currency: Currency,
25    pub livemode: bool,
26    pub originating_transaction: Option<Expandable<OriginatingTransaction>>,
27    pub refunded: bool,
28    pub refunds: List<Refund>,
29}
30
31#[derive(Serialize, Deserialize, Debug, PartialEq)]
32#[serde(untagged)]
33pub enum OriginatingTransaction {
34    Charge(Charge),
35    Transfer(Transfer)
36}
37
38#[derive(Default, Debug, Serialize, PartialEq)]
39pub struct ApplicationFeesParam<'a>{
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub expand: Option<Vec<&'a str>>,
42}
43
44#[derive(Default, Serialize, Debug, PartialEq)]
45pub struct ApplicationFeesListParams<'a> {
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub ending_before: Option<&'a str>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub limit: Option<i64>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub starting_after: Option<&'a str>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub created: Option<RangeQuery>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub charge: Option<&'a str>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub expand: Option<Vec<&'a str>>,
58}
59
60impl ApplicationFees {
61    pub fn retrieve(client: &Client, id: &str) -> crate::Result<Self> {
62        client.get(UrlPath::ApplicationFees, vec![id], serde_json::Map::new())
63    }
64
65    pub fn list<B: serde::Serialize>(client: &Client, param: B) -> crate::Result<List<Self>> {
66        client.get(UrlPath::ApplicationFees, vec![], param)
67    }
68}