stripe/resources/
types.rs

1use serde::{Deserialize, Serialize};
2
3use crate::params::Timestamp;
4
5/// An enum representing the versions of the Stripe API.
6#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
7#[serde(rename_all = "snake_case")]
8pub enum ApiVersion {
9    #[serde(rename = "2011-01-01")]
10    V2011_01_01,
11    #[serde(rename = "2011-06-21")]
12    V2011_06_21,
13    #[serde(rename = "2011-06-28")]
14    V2011_06_28,
15    #[serde(rename = "2011-08-01")]
16    V2011_08_01,
17    #[serde(rename = "2011-09-15")]
18    V2011_09_15,
19    #[serde(rename = "2011-11-17")]
20    V2011_11_17,
21    #[serde(rename = "2012-02-23")]
22    V2012_02_23,
23    #[serde(rename = "2012-03-25")]
24    V2012_03_25,
25    #[serde(rename = "2012-06-18")]
26    V2012_06_18,
27    #[serde(rename = "2012-06-28")]
28    V2012_06_28,
29    #[serde(rename = "2012-07-09")]
30    V2012_07_09,
31    #[serde(rename = "2012-09-24")]
32    V2012_09_24,
33    #[serde(rename = "2012-10-26")]
34    V2012_10_26,
35    #[serde(rename = "2012-11-07")]
36    V2012_11_07,
37    #[serde(rename = "2013-02-11")]
38    V2013_02_11,
39    #[serde(rename = "2013-02-13")]
40    V2013_02_13,
41    #[serde(rename = "2013-07-05")]
42    V2013_07_05,
43    #[serde(rename = "2013-08-12")]
44    V2013_08_12,
45    #[serde(rename = "2013-08-13")]
46    V2013_08_13,
47    #[serde(rename = "2013-10-29")]
48    V2013_10_29,
49    #[serde(rename = "2013-12-03")]
50    V2013_12_03,
51    #[serde(rename = "2014-01-31")]
52    V2014_01_31,
53    #[serde(rename = "2014-03-13")]
54    V2014_03_13,
55    #[serde(rename = "2014-03-28")]
56    V2014_03_28,
57    #[serde(rename = "2014-05-19")]
58    V2014_05_19,
59    #[serde(rename = "2014-06-13")]
60    V2014_06_13,
61    #[serde(rename = "2014-06-17")]
62    V2014_06_17,
63    #[serde(rename = "2014-07-22")]
64    V2014_07_22,
65    #[serde(rename = "2014-07-26")]
66    V2014_07_26,
67    #[serde(rename = "2014-08-04")]
68    V2014_08_04,
69    #[serde(rename = "2014-08-20")]
70    V2014_08_20,
71    #[serde(rename = "2014-09-08")]
72    V2014_09_08,
73    #[serde(rename = "2014-10-07")]
74    V2014_10_07,
75    #[serde(rename = "2014-11-05")]
76    V2014_11_05,
77    #[serde(rename = "2014-11-20")]
78    V2014_11_20,
79    #[serde(rename = "2014-12-08")]
80    V2014_12_08,
81    #[serde(rename = "2014-12-17")]
82    V2014_12_17,
83    #[serde(rename = "2014-12-22")]
84    V2014_12_22,
85    #[serde(rename = "2015-01-11")]
86    V2015_01_11,
87    #[serde(rename = "2015-01-26")]
88    V2015_01_26,
89    #[serde(rename = "2015-02-10")]
90    V2015_02_10,
91    #[serde(rename = "2015-02-16")]
92    V2015_02_16,
93    #[serde(rename = "2015-02-18")]
94    V2015_02_18,
95    #[serde(rename = "2015-03-24")]
96    V2015_03_24,
97    #[serde(rename = "2015-04-07")]
98    V2015_04_07,
99    #[serde(rename = "2015-06-15")]
100    V2015_06_15,
101    #[serde(rename = "2015-07-07")]
102    V2015_07_07,
103    #[serde(rename = "2015-07-13")]
104    V2015_07_13,
105    #[serde(rename = "2015-07-28")]
106    V2015_07_28,
107    #[serde(rename = "2015-08-07")]
108    V2015_08_07,
109    #[serde(rename = "2015-08-19")]
110    V2015_08_19,
111    #[serde(rename = "2015-09-03")]
112    V2015_09_03,
113    #[serde(rename = "2015-09-08")]
114    V2015_09_08,
115    #[serde(rename = "2015-09-23")]
116    V2015_09_23,
117    #[serde(rename = "2015-10-01")]
118    V2015_10_01,
119    #[serde(rename = "2015-10-12")]
120    V2015_10_12,
121    #[serde(rename = "2015-10-16")]
122    V2015_10_16,
123    #[serde(rename = "2016-02-03")]
124    V2016_02_03,
125    #[serde(rename = "2016-02-19")]
126    V2016_02_19,
127    #[serde(rename = "2016-02-22")]
128    V2016_02_22,
129    #[serde(rename = "2016-02-23")]
130    V2016_02_23,
131    #[serde(rename = "2016-02-29")]
132    V2016_02_29,
133    #[serde(rename = "2016-03-07")]
134    V2016_03_07,
135    #[serde(rename = "2016-06-15")]
136    V2016_06_15,
137    #[serde(rename = "2016-07-06")]
138    V2016_07_06,
139    #[serde(rename = "2016-10-19")]
140    V2016_10_19,
141    #[serde(rename = "2017-01-27")]
142    V2017_01_27,
143    #[serde(rename = "2017-02-14")]
144    V2017_02_14,
145    #[serde(rename = "2017-04-06")]
146    V2017_04_06,
147    #[serde(rename = "2017-05-25")]
148    V2017_05_25,
149    #[serde(rename = "2017-06-05")]
150    V2017_06_05,
151    #[serde(rename = "2017-08-15")]
152    V2017_08_15,
153    #[serde(rename = "2017-12-14")]
154    V2017_12_14,
155    #[serde(rename = "2018-01-23")]
156    V2018_01_23,
157    #[serde(rename = "2018-02-05")]
158    V2018_02_05,
159    #[serde(rename = "2018-02-06")]
160    V2018_02_06,
161    #[serde(rename = "2018-02-28")]
162    V2018_02_28,
163    #[serde(rename = "2018-05-21")]
164    V2018_05_21,
165    #[serde(rename = "2018-07-27")]
166    V2018_07_27,
167    #[serde(rename = "2018-08-23")]
168    V2018_08_23,
169    #[serde(rename = "2018-09-06")]
170    V2018_09_06,
171    #[serde(rename = "2018-09-24")]
172    V2018_09_24,
173    #[serde(rename = "2018-10-31")]
174    V2018_10_31,
175    #[serde(rename = "2018-11-08")]
176    V2018_11_08,
177    #[serde(rename = "2019-02-11")]
178    V2019_02_11,
179    #[serde(rename = "2019-02-19")]
180    V2019_02_19,
181    #[serde(rename = "2019-03-14")]
182    V2019_03_14,
183    #[serde(rename = "2019-05-16")]
184    V2019_05_16,
185    #[serde(rename = "2019-08-14")]
186    V2019_08_14,
187    #[serde(rename = "2019-09-09")]
188    V2019_09_09,
189    #[serde(rename = "2020-08-27")]
190    V2020_08_27,
191    #[serde(rename = "2022-08-01")]
192    V2022_08_01,
193    #[serde(rename = "2022-11-15")]
194    V2022_11_15,
195    #[serde(rename = "2023-08-16")]
196    V2023_08_16,
197    #[serde(rename = "2023-10-16")]
198    V2023_10_16,
199}
200
201impl ApiVersion {
202    pub fn as_str(self) -> &'static str {
203        match self {
204            ApiVersion::V2011_01_01 => "2011-01-01",
205            ApiVersion::V2011_06_21 => "2011-06-21",
206            ApiVersion::V2011_06_28 => "2011-06-28",
207            ApiVersion::V2011_08_01 => "2011-08-01",
208            ApiVersion::V2011_09_15 => "2011-09-15",
209            ApiVersion::V2011_11_17 => "2011-11-17",
210            ApiVersion::V2012_02_23 => "2012-02-23",
211            ApiVersion::V2012_03_25 => "2012-03-25",
212            ApiVersion::V2012_06_18 => "2012-06-18",
213            ApiVersion::V2012_06_28 => "2012-06-28",
214            ApiVersion::V2012_07_09 => "2012-07-09",
215            ApiVersion::V2012_09_24 => "2012-09-24",
216            ApiVersion::V2012_10_26 => "2012-10-26",
217            ApiVersion::V2012_11_07 => "2012-11-07",
218            ApiVersion::V2013_02_11 => "2013-02-11",
219            ApiVersion::V2013_02_13 => "2013-02-13",
220            ApiVersion::V2013_07_05 => "2013-07-05",
221            ApiVersion::V2013_08_12 => "2013-08-12",
222            ApiVersion::V2013_08_13 => "2013-08-13",
223            ApiVersion::V2013_10_29 => "2013-10-29",
224            ApiVersion::V2013_12_03 => "2013-12-03",
225            ApiVersion::V2014_01_31 => "2014-01-31",
226            ApiVersion::V2014_03_13 => "2014-03-13",
227            ApiVersion::V2014_03_28 => "2014-03-28",
228            ApiVersion::V2014_05_19 => "2014-05-19",
229            ApiVersion::V2014_06_13 => "2014-06-13",
230            ApiVersion::V2014_06_17 => "2014-06-17",
231            ApiVersion::V2014_07_22 => "2014-07-22",
232            ApiVersion::V2014_07_26 => "2014-07-26",
233            ApiVersion::V2014_08_04 => "2014-08-04",
234            ApiVersion::V2014_08_20 => "2014-08-20",
235            ApiVersion::V2014_09_08 => "2014-09-08",
236            ApiVersion::V2014_10_07 => "2014-10-07",
237            ApiVersion::V2014_11_05 => "2014-11-05",
238            ApiVersion::V2014_11_20 => "2014-11-20",
239            ApiVersion::V2014_12_08 => "2014-12-08",
240            ApiVersion::V2014_12_17 => "2014-12-17",
241            ApiVersion::V2014_12_22 => "2014-12-22",
242            ApiVersion::V2015_01_11 => "2015-01-11",
243            ApiVersion::V2015_01_26 => "2015-01-26",
244            ApiVersion::V2015_02_10 => "2015-02-10",
245            ApiVersion::V2015_02_16 => "2015-02-16",
246            ApiVersion::V2015_02_18 => "2015-02-18",
247            ApiVersion::V2015_03_24 => "2015-03-24",
248            ApiVersion::V2015_04_07 => "2015-04-07",
249            ApiVersion::V2015_06_15 => "2015-06-15",
250            ApiVersion::V2015_07_07 => "2015-07-07",
251            ApiVersion::V2015_07_13 => "2015-07-13",
252            ApiVersion::V2015_07_28 => "2015-07-28",
253            ApiVersion::V2015_08_07 => "2015-08-07",
254            ApiVersion::V2015_08_19 => "2015-08-19",
255            ApiVersion::V2015_09_03 => "2015-09-03",
256            ApiVersion::V2015_09_08 => "2015-09-08",
257            ApiVersion::V2015_09_23 => "2015-09-23",
258            ApiVersion::V2015_10_01 => "2015-10-01",
259            ApiVersion::V2015_10_12 => "2015-10-12",
260            ApiVersion::V2015_10_16 => "2015-10-16",
261            ApiVersion::V2016_02_03 => "2016-02-03",
262            ApiVersion::V2016_02_19 => "2016-02-19",
263            ApiVersion::V2016_02_22 => "2016-02-22",
264            ApiVersion::V2016_02_23 => "2016-02-23",
265            ApiVersion::V2016_02_29 => "2016-02-29",
266            ApiVersion::V2016_03_07 => "2016-03-07",
267            ApiVersion::V2016_06_15 => "2016-06-15",
268            ApiVersion::V2016_07_06 => "2016-07-06",
269            ApiVersion::V2016_10_19 => "2016-10-19",
270            ApiVersion::V2017_01_27 => "2017-01-27",
271            ApiVersion::V2017_02_14 => "2017-02-14",
272            ApiVersion::V2017_04_06 => "2017-04-06",
273            ApiVersion::V2017_05_25 => "2017-05-25",
274            ApiVersion::V2017_06_05 => "2017-06-05",
275            ApiVersion::V2017_08_15 => "2017-08-15",
276            ApiVersion::V2017_12_14 => "2017-12-14",
277            ApiVersion::V2018_01_23 => "2018-01-23",
278            ApiVersion::V2018_02_05 => "2018-02-05",
279            ApiVersion::V2018_02_06 => "2018-02-06",
280            ApiVersion::V2018_02_28 => "2018-02-28",
281            ApiVersion::V2018_05_21 => "2018-05-21",
282            ApiVersion::V2018_07_27 => "2018-07-27",
283            ApiVersion::V2018_08_23 => "2018-08-23",
284            ApiVersion::V2018_09_06 => "2018-09-06",
285            ApiVersion::V2018_09_24 => "2018-09-24",
286            ApiVersion::V2018_10_31 => "2018-10-31",
287            ApiVersion::V2018_11_08 => "2018-11-08",
288            ApiVersion::V2019_02_11 => "2019-02-11",
289            ApiVersion::V2019_02_19 => "2019-02-19",
290            ApiVersion::V2019_03_14 => "2019-03-14",
291            ApiVersion::V2019_05_16 => "2019-05-16",
292            ApiVersion::V2019_08_14 => "2019-08-14",
293            ApiVersion::V2019_09_09 => "2019-09-09",
294            ApiVersion::V2020_08_27 => "2020-08-27",
295            ApiVersion::V2022_08_01 => "2022-08-01",
296            ApiVersion::V2022_11_15 => "2022-11-15",
297            ApiVersion::V2023_08_16 => "2023-08-16",
298            ApiVersion::V2023_10_16 => "2023-10-16",
299        }
300    }
301}
302
303impl AsRef<str> for ApiVersion {
304    fn as_ref(&self) -> &str {
305        self.as_str()
306    }
307}
308
309impl std::fmt::Display for ApiVersion {
310    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
311        self.as_str().fmt(f)
312    }
313}
314
315/* Developers note -- DelayDays and DelayDaysOther are not worth the trouble
316 * to automate.  Recommend letting the mapping stand*/
317#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
318#[serde(untagged)]
319pub enum DelayDays {
320    Days(u32),
321    Other(DelayDaysOther),
322}
323
324#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
325#[serde(rename_all = "snake_case")]
326pub enum DelayDaysOther {
327    Minimum,
328}
329
330impl DelayDays {
331    pub fn days(n: u32) -> Self {
332        DelayDays::Days(n)
333    }
334    pub fn minimum() -> Self {
335        DelayDays::Other(DelayDaysOther::Minimum)
336    }
337}
338
339#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
340#[serde(untagged)]
341pub enum Scheduled {
342    Timestamp(Timestamp),
343    Other(ScheduledOther),
344}
345
346#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
347#[serde(rename_all = "snake_case")]
348pub enum ScheduledOther {
349    Now,
350}
351
352impl Scheduled {
353    pub fn at(ts: Timestamp) -> Self {
354        Scheduled::Timestamp(ts)
355    }
356    pub fn now() -> Self {
357        Scheduled::Other(ScheduledOther::Now)
358    }
359}
360
361#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
362#[serde(untagged)]
363pub enum UpTo {
364    Max(u64),
365    Other(UpToOther),
366}
367
368#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
369#[serde(rename_all = "snake_case")]
370pub enum UpToOther {
371    Inf,
372}
373
374impl UpTo {
375    pub fn max(n: u64) -> Self {
376        UpTo::Max(n)
377    }
378    pub fn now() -> Self {
379        UpTo::Other(UpToOther::Inf)
380    }
381}
382
383#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
384#[serde(untagged)]
385pub enum PaymentIntentOffSession {
386    Exists(bool),
387    Other(OffSessionOther),
388}
389
390#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
391#[serde(rename_all = "snake_case")]
392pub enum OffSessionOther {
393    #[serde(rename = "one_off")]
394    OneOff,
395    #[serde(rename = "recurring")]
396    Recurring,
397}
398
399impl PaymentIntentOffSession {
400    pub fn exists(n: bool) -> Self {
401        PaymentIntentOffSession::Exists(n)
402    }
403    pub fn frequency(n: OffSessionOther) -> Self {
404        match n {
405            OffSessionOther::OneOff => PaymentIntentOffSession::Other(OffSessionOther::OneOff),
406            OffSessionOther::Recurring => {
407                PaymentIntentOffSession::Other(OffSessionOther::Recurring)
408            }
409        }
410    }
411}