stripe/
resources.rs

1//! resources module
2//!
3//! This module exposes various elements of the
4//! stripe api depending on the features exposed.
5//!
6//! Some of these modules are hand-written, and
7//! some are generated.
8
9mod currency;
10#[allow(clippy::module_inception)]
11#[allow(clippy::new_without_default)]
12pub mod generated;
13mod types;
14
15#[path = "resources"]
16mod core {
17    pub mod account_ext;
18    pub mod balance_ext;
19    pub mod balance_transaction_ext;
20    pub mod charge_ext;
21    pub mod customer_ext;
22    pub mod payment_intent_ext;
23    pub mod payment_source;
24    pub mod payout_ext;
25    pub mod placeholders;
26    pub mod setup_intent_ext;
27    pub mod test_clock_ext;
28    pub mod token_ext;
29    pub mod transfer_reversal_ext;
30}
31
32#[path = "resources"]
33mod payment {
34    pub mod bank_account_ext;
35    pub mod card;
36    pub mod payment_method_ext;
37    pub mod source_ext;
38}
39
40#[cfg(feature = "events")]
41mod webhook_events;
42
43#[path = "resources"]
44#[cfg(feature = "billing")]
45mod billing {
46    pub mod credit_note_ext;
47    pub mod customer_balance_transaction_ext;
48    pub mod invoice_ext;
49    pub mod line_item_ext;
50    pub mod subscription_ext;
51    pub mod usage_record_ext;
52}
53
54#[path = "resources"]
55#[cfg(feature = "products")]
56mod products {
57    pub mod price_ext;
58    pub mod product_ext;
59    pub mod promotion_code_ext;
60}
61
62#[path = "resources"]
63#[cfg(feature = "checkout")]
64mod checkout {
65    pub mod checkout_session_ext;
66}
67
68#[path = "resources"]
69#[cfg(feature = "connect")]
70mod connect {
71    pub mod login_links_ext;
72}
73
74#[path = "resources"]
75#[cfg(feature = "fraud")]
76mod fraud {
77    pub mod review_ext;
78}
79
80#[path = "resources"]
81#[cfg(feature = "issuing")]
82mod issuing {
83    pub mod issuing_authorization_ext;
84    pub mod issuing_card_ext;
85    pub mod issuing_dispute_ext;
86    pub mod issuing_merchant_data;
87    pub mod issuing_transaction_ext;
88}
89
90#[path = "resources"]
91#[cfg(feature = "orders")]
92mod orders {
93    pub mod order_ext;
94}
95
96#[path = "resources"]
97#[cfg(feature = "webhook-endpoints")]
98mod webhook_endpoints {
99    pub mod webhook_endpoint_ext;
100}
101
102#[rustfmt::skip]
103pub use {
104    currency::*,
105    types::*,
106
107    self::core::{
108        account_ext::*,
109        balance_transaction_ext::*,
110        charge_ext::*,
111        transfer_reversal_ext::*,
112        customer_ext::*,
113        payment_intent_ext::*,
114        payment_source::*,
115        placeholders::*,
116        payout_ext::*,
117        test_clock_ext::*,
118        token_ext::*,
119        setup_intent_ext::*,
120    },
121    generated::core::{
122        address::*,
123        balance::*,
124        balance_amount_by_source_type::*,
125        balance_transaction::*,
126        billing_details::*,
127        charge::*,
128        connect_account_reference::*,
129        customer::*,
130        customer_session::*,
131        custom_unit_amount::*,
132        cash_balance::*,
133        dispute::*,
134        ephemeral_key::*,
135        file::*,
136        file_link::*,
137        invoice_setting_rendering_options::*,
138        mandate::*,
139        payment_intent::*,
140        payment_intent_next_action_cashapp_handle_redirect_or_display_qr_code::*,
141        linked_account_options_us_bank_account::*,
142        payment_method_details_card_wallet_apple_pay::*,
143        payment_method_details_card_wallet_google_pay::*,
144        payment_method_options_customer_balance_eu_bank_account::*,
145        payment_method_options_us_bank_account_mandate_options::*,
146        payment_method_config_biz_payment_method_configuration_details::*,
147        payout::*,
148        platform_tax_fee::*,
149        price::*,
150        product::*,
151        radar_radar_options::*,
152        refund::*,
153        reserve_transaction::*,
154        setup_attempt::*,
155        setup_intent::*,
156        shipping::*,
157        shipping_rate::*,
158        tax_code::*,
159        tax_deducted_at_source::*,
160        test_helpers_test_clock::*,
161        token::*,
162        api_errors::*,
163    },
164
165    payment::{
166        bank_account_ext::*,
167        card::*,
168        payment_method_ext::*,
169        source_ext::*
170    },
171    generated::payment::{
172        card::*,
173        bank_account::*,
174        payment_method::*,
175        payment_method_card_present_networks::*,
176        source::*,
177    },
178};
179
180#[rustfmt::skip]
181#[cfg(feature = "events")]
182pub use {
183    webhook_events::*,
184    webhook_events::NotificationEventData,
185    generated::event::*,
186};
187
188#[rustfmt::skip]
189#[cfg(feature = "checkout")]
190pub use {
191    checkout::checkout_session_ext::*,
192    generated::checkout::{
193        checkout_session::*,
194        payment_link::*,
195        item::*
196    },
197};
198
199#[rustfmt::skip]
200#[cfg(feature = "products")]
201pub use {
202    products::{
203        product_ext::*,
204        price_ext::*,
205        promotion_code_ext::*,
206    }
207};
208
209#[rustfmt::skip]
210#[cfg(feature = "billing")]
211pub use {
212    billing::{
213        customer_balance_transaction_ext::*,
214        invoice_ext::*,
215        line_item_ext::*,
216        subscription_ext::*,
217        usage_record_ext::*,
218    },
219    generated::billing::{
220        billing_portal_session::*,
221        billing_portal_configuration::*,
222        coupon::*,
223        credit_note::*,
224        credit_note_line_item::*,
225        customer_balance_transaction::*,
226        discount::*,
227        invoice::*,
228        invoice_payment_method_options_acss_debit::*,
229        invoice_payment_method_options_bancontact::*,
230        invoice_payment_method_options_konbini::*,
231        invoice_payment_method_options_customer_balance::*,
232        invoice_payment_method_options_us_bank_account::*,
233        invoiceitem::*,
234        invoices_shipping_cost::*,
235        line_item::*,
236        plan::*,
237        plan::PlanInterval,
238        promotion_code::*,
239        quote::*,
240        quotes_resource_total_details::*,
241        subscription_item::*,
242        subscription_item::PlanInterval as SubscriptionItemInterval,
243        subscription_item::SubscriptionItemPriceDataRecurring as SubscriptionItemPriceDataRecurring,
244        subscription_item::SubscriptionItemPriceData as SubscriptionItemPriceData,
245        subscription_item::SubscriptionPaymentBehavior as SubscriptionItemPaymentBehavior,
246        // need to import this afterwards so that the SubscriptionItemPriceDataRecurring
247        // isn't silently ignored
248        subscription::*,
249        subscriptions_trials_resource_trial_settings::*,
250        subscription::PlanInterval as SubscriptionInterval,
251        subscription::SubscriptionItemPriceDataRecurring as SubscriptionPriceDataRecurring,
252        subscription::SubscriptionItemPriceData as SubscriptionPriceData,
253        subscription::SubscriptionPaymentBehavior as SubscriptionPaymentBehavior,
254        subscription_schedule::*,
255        subscription_billing_thresholds::*,
256        subscription_item_billing_thresholds::*,
257        tax_id::*,
258        tax_rate::*,
259        usage_record::*,
260        usage_record_summary::*,
261    },
262};
263
264#[rustfmt::skip]
265#[cfg(feature = "tax-calculation")]
266pub use {
267    generated::tax_calculation::{
268        tax_calculation::*,
269        tax_calculation_line_item::*,
270        tax_product_resource_customer_details::*,
271    }
272};
273
274#[rustfmt::skip]
275#[cfg(feature = "connect")]
276pub use {
277    connect::{
278        login_links_ext::*,
279    },
280    generated::connect::{
281        account_link::*,
282        account::*,
283        application::*,
284        application_fee::*,
285        connect_collection_transfer::*,
286        fee_refund::*,
287        login_link::*,
288        person::*,
289        topup::*,
290        transfer::*,
291        transfer_reversal::*,
292    }
293};
294
295#[rustfmt::skip]
296#[cfg(feature = "fraud")]
297pub use {
298    fraud::review_ext::*,
299    generated::fraud::review::*
300};
301
302#[rustfmt::skip]
303#[cfg(feature = "issuing")]
304pub use {
305    issuing::{
306        issuing_authorization_ext::*,
307        issuing_card_ext::*,
308        issuing_dispute_ext::*,
309        issuing_merchant_data::*,
310        issuing_transaction_ext::*,
311    },
312    generated::issuing::{
313        issuing_authorization::*,
314        issuing_card::*,
315        issuing_token::*,
316        issuing_cardholder::*,
317        issuing_dispute::*,
318        issuing_transaction::*,
319    },
320};
321
322#[rustfmt::skip]
323#[cfg(feature = "orders")]
324pub use {
325    orders::order_ext::*,
326};
327
328#[rustfmt::skip]
329#[cfg(feature = "sigma")]
330pub use {
331    generated::scheduled_query_run::*,
332};
333
334#[rustfmt::skip]
335#[cfg(feature = "terminal")]
336pub use {
337    generated::terminal::{
338        terminal_configuration::*,
339        terminal_connection_token::*,
340        terminal_location::*,
341        terminal_reader::*,
342    },
343};
344
345#[rustfmt::skip]
346#[cfg(feature = "webhook-endpoints")]
347pub use {
348    webhook_endpoints::webhook_endpoint_ext::*,
349    generated::webhook_endpoints::webhook_endpoint::*,
350};
351
352#[cfg(not(feature = "full"))]
353pub use generated::placeholders::*;
354
355/// this struct is just a stub for code not using the "connect" feature
356/// see https://github.com/arlyon/async-stripe/issues/49 for more context
357/// if there are more features that requires a fully fledged CompanyParams
358/// we probably need to update the code generation and move to a shared place
359#[cfg(not(feature = "connect"))]
360#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
361pub struct CompanyParams {
362    #[serde(default)]
363    pub metadata: crate::params::Metadata,
364}
365
366/// this struct is just a stub for code not using the "connect" feature
367/// see https://github.com/arlyon/async-stripe/issues/49 for more context
368/// if there are more features that requires a fully fledged PersonParams
369/// we probably need to update the code generation and move to a shared place
370#[cfg(not(feature = "connect"))]
371#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
372pub struct PersonParams {
373    #[serde(default)]
374    pub metadata: crate::params::Metadata,
375}