1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
// ======================================
// This file was automatically generated.
// ======================================
use crate::client::{Client, Response};
use crate::ids::{AccountId};
use crate::params::{Expand, Object, Timestamp};
use serde::{Deserialize, Serialize};
/// The resource representing a Stripe "ConnectEmbeddedMethodAccountSessionCreateMethodAccountSession".
///
/// For more details see <https://stripe.com/docs/api/account_sessions/object>
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct AccountSession {
/// The ID of the account the AccountSession was created for.
pub account: String,
/// The client secret of this AccountSession.
///
/// Used on the client to set up secure access to the given `account`. The client secret can be used to provide access to `account` from your frontend.
/// It should not be stored, logged, or exposed to anyone other than the connected account.
/// Make sure that you have TLS enabled on any page that includes the client secret. Refer to our docs to [setup Connect embedded components](https://stripe.com/docs/connect/get-started-connect-embedded-components) and learn about how `client_secret` should be handled.
pub client_secret: String,
pub components: ConnectEmbeddedAccountSessionCreateComponents,
/// The timestamp at which this AccountSession will expire.
pub expires_at: Timestamp,
/// Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
pub livemode: bool,
}
impl AccountSession {
/// Creates a AccountSession object that includes a single-use token that the platform can use on their front-end to grant client-side API access.
pub fn create(client: &Client, params: CreateAccountSession<'_>) -> Response<AccountSession> {
#[allow(clippy::needless_borrows_for_generic_args)]
client.post_form("/account_sessions", ¶ms)
}
}
impl Object for AccountSession {
type Id = ();
fn id(&self) -> Self::Id {}
fn object(&self) -> &'static str {
"account_session"
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ConnectEmbeddedAccountSessionCreateComponents {
pub account_onboarding: ConnectEmbeddedBaseConfigClaim,
pub payment_details: ConnectEmbeddedPaymentsConfig,
pub payments: ConnectEmbeddedPaymentsConfig,
pub payouts: ConnectEmbeddedPayoutsConfig,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ConnectEmbeddedBaseConfigClaim {
/// Whether the embedded component is enabled.
pub enabled: bool,
pub features: ConnectEmbeddedBaseFeatures,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ConnectEmbeddedBaseFeatures {
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ConnectEmbeddedPaymentsConfig {
/// Whether the embedded component is enabled.
pub enabled: bool,
pub features: ConnectEmbeddedPaymentsFeatures,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ConnectEmbeddedPaymentsFeatures {
/// Whether to allow capturing and cancelling payment intents.
///
/// This is `true` by default.
pub capture_payments: bool,
/// Whether to allow responding to disputes, including submitting evidence and accepting disputes.
///
/// This is `true` by default.
pub dispute_management: bool,
/// Whether to allow sending refunds.
///
/// This is `true` by default.
pub refund_management: bool,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ConnectEmbeddedPayoutsConfig {
/// Whether the embedded component is enabled.
pub enabled: bool,
pub features: ConnectEmbeddedPayoutsFeatures,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ConnectEmbeddedPayoutsFeatures {
/// Whether to allow payout schedule to be changed.
///
/// Default `true` when Stripe owns Loss Liability, default `false` otherwise.
pub edit_payout_schedule: bool,
/// Whether to allow creation of instant payouts.
///
/// Default `true` when Stripe owns Loss Liability, default `false` otherwise.
pub instant_payouts: bool,
/// Whether to allow creation of standard payouts.
///
/// Default `true` when Stripe owns Loss Liability, default `false` otherwise.
pub standard_payouts: bool,
}
/// The parameters for `AccountSession::create`.
#[derive(Clone, Debug, Serialize)]
pub struct CreateAccountSession<'a> {
/// The identifier of the account to create an Account Session for.
pub account: AccountId,
/// Each key of the dictionary represents an embedded component, and each embedded component maps to its configuration (e.g.
///
/// whether it has been enabled or not).
pub components: CreateAccountSessionComponents,
/// Specifies which fields in the response should be expanded.
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
}
impl<'a> CreateAccountSession<'a> {
pub fn new(account: AccountId, components: CreateAccountSessionComponents) -> Self {
CreateAccountSession {
account,
components,
expand: Default::default(),
}
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponents {
/// Configuration for the account onboarding embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub account_onboarding: Option<CreateAccountSessionComponentsAccountOnboarding>,
/// Configuration for the payment details embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_details: Option<CreateAccountSessionComponentsPaymentDetails>,
/// Configuration for the payments embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub payments: Option<CreateAccountSessionComponentsPayments>,
/// Configuration for the payouts embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub payouts: Option<CreateAccountSessionComponentsPayouts>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsAccountOnboarding {
/// Whether the embedded component is enabled.
pub enabled: bool,
/// The list of features enabled in the embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub features: Option<CreateAccountSessionComponentsAccountOnboardingFeatures>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsPaymentDetails {
/// Whether the embedded component is enabled.
pub enabled: bool,
/// The list of features enabled in the embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub features: Option<CreateAccountSessionComponentsPaymentDetailsFeatures>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsPayments {
/// Whether the embedded component is enabled.
pub enabled: bool,
/// The list of features enabled in the embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub features: Option<CreateAccountSessionComponentsPaymentsFeatures>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsPayouts {
/// Whether the embedded component is enabled.
pub enabled: bool,
/// The list of features enabled in the embedded component.
#[serde(skip_serializing_if = "Option::is_none")]
pub features: Option<CreateAccountSessionComponentsPayoutsFeatures>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsAccountOnboardingFeatures {
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsPaymentDetailsFeatures {
/// Whether to allow capturing and cancelling payment intents.
///
/// This is `true` by default.
#[serde(skip_serializing_if = "Option::is_none")]
pub capture_payments: Option<bool>,
/// Whether to allow responding to disputes, including submitting evidence and accepting disputes.
///
/// This is `true` by default.
#[serde(skip_serializing_if = "Option::is_none")]
pub dispute_management: Option<bool>,
/// Whether to allow sending refunds.
///
/// This is `true` by default.
#[serde(skip_serializing_if = "Option::is_none")]
pub refund_management: Option<bool>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsPaymentsFeatures {
/// Whether to allow capturing and cancelling payment intents.
///
/// This is `true` by default.
#[serde(skip_serializing_if = "Option::is_none")]
pub capture_payments: Option<bool>,
/// Whether to allow responding to disputes, including submitting evidence and accepting disputes.
///
/// This is `true` by default.
#[serde(skip_serializing_if = "Option::is_none")]
pub dispute_management: Option<bool>,
/// Whether to allow sending refunds.
///
/// This is `true` by default.
#[serde(skip_serializing_if = "Option::is_none")]
pub refund_management: Option<bool>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct CreateAccountSessionComponentsPayoutsFeatures {
/// Whether to allow payout schedule to be changed.
///
/// Default `true` when Stripe owns Loss Liability, default `false` otherwise.
#[serde(skip_serializing_if = "Option::is_none")]
pub edit_payout_schedule: Option<bool>,
/// Whether to allow creation of instant payouts.
///
/// Default `true` when Stripe owns Loss Liability, default `false` otherwise.
#[serde(skip_serializing_if = "Option::is_none")]
pub instant_payouts: Option<bool>,
/// Whether to allow creation of standard payouts.
///
/// Default `true` when Stripe owns Loss Liability, default `false` otherwise.
#[serde(skip_serializing_if = "Option::is_none")]
pub standard_payouts: Option<bool>,
}