libstripe/resources/connect/
applicationfees.rs1use 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}