Skip to main content

stripe_shared/
api_version.rs

1#[derive(Clone, Eq, PartialEq)]
2#[non_exhaustive]
3pub enum ApiVersion {
4    V2011_01_01,
5    V2011_06_21,
6    V2011_06_28,
7    V2011_08_01,
8    V2011_09_15,
9    V2011_11_17,
10    V2012_02_23,
11    V2012_03_25,
12    V2012_06_18,
13    V2012_06_28,
14    V2012_07_09,
15    V2012_09_24,
16    V2012_10_26,
17    V2012_11_07,
18    V2013_02_11,
19    V2013_02_13,
20    V2013_07_05,
21    V2013_08_12,
22    V2013_08_13,
23    V2013_10_29,
24    V2013_12_03,
25    V2014_01_31,
26    V2014_03_13,
27    V2014_03_28,
28    V2014_05_19,
29    V2014_06_13,
30    V2014_06_17,
31    V2014_07_22,
32    V2014_07_26,
33    V2014_08_04,
34    V2014_08_20,
35    V2014_09_08,
36    V2014_10_07,
37    V2014_11_05,
38    V2014_11_20,
39    V2014_12_08,
40    V2014_12_17,
41    V2014_12_22,
42    V2015_01_11,
43    V2015_01_26,
44    V2015_02_10,
45    V2015_02_16,
46    V2015_02_18,
47    V2015_03_24,
48    V2015_04_07,
49    V2015_06_15,
50    V2015_07_07,
51    V2015_07_13,
52    V2015_07_28,
53    V2015_08_07,
54    V2015_08_19,
55    V2015_09_03,
56    V2015_09_08,
57    V2015_09_23,
58    V2015_10_01,
59    V2015_10_12,
60    V2015_10_16,
61    V2016_02_03,
62    V2016_02_19,
63    V2016_02_22,
64    V2016_02_23,
65    V2016_02_29,
66    V2016_03_07,
67    V2016_06_15,
68    V2016_07_06,
69    V2016_10_19,
70    V2017_01_27,
71    V2017_02_14,
72    V2017_04_06,
73    V2017_05_25,
74    V2017_06_05,
75    V2017_08_15,
76    V2017_12_14,
77    V2018_01_23,
78    V2018_02_05,
79    V2018_02_06,
80    V2018_02_28,
81    V2018_05_21,
82    V2018_07_27,
83    V2018_08_23,
84    V2018_09_06,
85    V2018_09_24,
86    V2018_10_31,
87    V2018_11_08,
88    V2019_02_11,
89    V2019_02_19,
90    V2019_03_14,
91    V2019_05_16,
92    V2019_08_14,
93    V2019_09_09,
94    V2019_10_08,
95    V2019_10_17,
96    V2019_11_05,
97    V2019_12_03,
98    V2020_03_02,
99    V2020_08_27,
100    V2022_08_01,
101    V2022_11_15,
102    V2023_08_16,
103    V2023_10_16,
104    V2024_04_10,
105    V2024_06_20,
106    V2024_09_30_acacia,
107    V2024_10_28_acacia,
108    V2024_11_20_acacia,
109    V2024_12_18_acacia,
110    V2025_01_27_acacia,
111    V2025_02_24_acacia,
112    V2025_03_01_dashboard,
113    V2025_03_31_basil,
114    V2025_04_30_basil,
115    V2025_05_28_basil,
116    V2025_06_30_basil,
117    V2025_07_30_basil,
118    V2025_08_27_basil,
119    V2025_09_30_clover,
120    V2025_10_29_clover,
121    V2025_11_17_clover,
122    V2025_12_15_clover,
123    V2026_01_28_clover,
124    V2026_02_25_clover,
125    V2026_03_25_dahlia,
126    V2026_04_22_dahlia,
127    /// An unrecognized value from Stripe. Should not be used as a request parameter.
128    Unknown(String),
129}
130impl ApiVersion {
131    pub fn as_str(&self) -> &str {
132        use ApiVersion::*;
133        match self {
134            V2011_01_01 => "2011-01-01",
135            V2011_06_21 => "2011-06-21",
136            V2011_06_28 => "2011-06-28",
137            V2011_08_01 => "2011-08-01",
138            V2011_09_15 => "2011-09-15",
139            V2011_11_17 => "2011-11-17",
140            V2012_02_23 => "2012-02-23",
141            V2012_03_25 => "2012-03-25",
142            V2012_06_18 => "2012-06-18",
143            V2012_06_28 => "2012-06-28",
144            V2012_07_09 => "2012-07-09",
145            V2012_09_24 => "2012-09-24",
146            V2012_10_26 => "2012-10-26",
147            V2012_11_07 => "2012-11-07",
148            V2013_02_11 => "2013-02-11",
149            V2013_02_13 => "2013-02-13",
150            V2013_07_05 => "2013-07-05",
151            V2013_08_12 => "2013-08-12",
152            V2013_08_13 => "2013-08-13",
153            V2013_10_29 => "2013-10-29",
154            V2013_12_03 => "2013-12-03",
155            V2014_01_31 => "2014-01-31",
156            V2014_03_13 => "2014-03-13",
157            V2014_03_28 => "2014-03-28",
158            V2014_05_19 => "2014-05-19",
159            V2014_06_13 => "2014-06-13",
160            V2014_06_17 => "2014-06-17",
161            V2014_07_22 => "2014-07-22",
162            V2014_07_26 => "2014-07-26",
163            V2014_08_04 => "2014-08-04",
164            V2014_08_20 => "2014-08-20",
165            V2014_09_08 => "2014-09-08",
166            V2014_10_07 => "2014-10-07",
167            V2014_11_05 => "2014-11-05",
168            V2014_11_20 => "2014-11-20",
169            V2014_12_08 => "2014-12-08",
170            V2014_12_17 => "2014-12-17",
171            V2014_12_22 => "2014-12-22",
172            V2015_01_11 => "2015-01-11",
173            V2015_01_26 => "2015-01-26",
174            V2015_02_10 => "2015-02-10",
175            V2015_02_16 => "2015-02-16",
176            V2015_02_18 => "2015-02-18",
177            V2015_03_24 => "2015-03-24",
178            V2015_04_07 => "2015-04-07",
179            V2015_06_15 => "2015-06-15",
180            V2015_07_07 => "2015-07-07",
181            V2015_07_13 => "2015-07-13",
182            V2015_07_28 => "2015-07-28",
183            V2015_08_07 => "2015-08-07",
184            V2015_08_19 => "2015-08-19",
185            V2015_09_03 => "2015-09-03",
186            V2015_09_08 => "2015-09-08",
187            V2015_09_23 => "2015-09-23",
188            V2015_10_01 => "2015-10-01",
189            V2015_10_12 => "2015-10-12",
190            V2015_10_16 => "2015-10-16",
191            V2016_02_03 => "2016-02-03",
192            V2016_02_19 => "2016-02-19",
193            V2016_02_22 => "2016-02-22",
194            V2016_02_23 => "2016-02-23",
195            V2016_02_29 => "2016-02-29",
196            V2016_03_07 => "2016-03-07",
197            V2016_06_15 => "2016-06-15",
198            V2016_07_06 => "2016-07-06",
199            V2016_10_19 => "2016-10-19",
200            V2017_01_27 => "2017-01-27",
201            V2017_02_14 => "2017-02-14",
202            V2017_04_06 => "2017-04-06",
203            V2017_05_25 => "2017-05-25",
204            V2017_06_05 => "2017-06-05",
205            V2017_08_15 => "2017-08-15",
206            V2017_12_14 => "2017-12-14",
207            V2018_01_23 => "2018-01-23",
208            V2018_02_05 => "2018-02-05",
209            V2018_02_06 => "2018-02-06",
210            V2018_02_28 => "2018-02-28",
211            V2018_05_21 => "2018-05-21",
212            V2018_07_27 => "2018-07-27",
213            V2018_08_23 => "2018-08-23",
214            V2018_09_06 => "2018-09-06",
215            V2018_09_24 => "2018-09-24",
216            V2018_10_31 => "2018-10-31",
217            V2018_11_08 => "2018-11-08",
218            V2019_02_11 => "2019-02-11",
219            V2019_02_19 => "2019-02-19",
220            V2019_03_14 => "2019-03-14",
221            V2019_05_16 => "2019-05-16",
222            V2019_08_14 => "2019-08-14",
223            V2019_09_09 => "2019-09-09",
224            V2019_10_08 => "2019-10-08",
225            V2019_10_17 => "2019-10-17",
226            V2019_11_05 => "2019-11-05",
227            V2019_12_03 => "2019-12-03",
228            V2020_03_02 => "2020-03-02",
229            V2020_08_27 => "2020-08-27",
230            V2022_08_01 => "2022-08-01",
231            V2022_11_15 => "2022-11-15",
232            V2023_08_16 => "2023-08-16",
233            V2023_10_16 => "2023-10-16",
234            V2024_04_10 => "2024-04-10",
235            V2024_06_20 => "2024-06-20",
236            V2024_09_30_acacia => "2024-09-30.acacia",
237            V2024_10_28_acacia => "2024-10-28.acacia",
238            V2024_11_20_acacia => "2024-11-20.acacia",
239            V2024_12_18_acacia => "2024-12-18.acacia",
240            V2025_01_27_acacia => "2025-01-27.acacia",
241            V2025_02_24_acacia => "2025-02-24.acacia",
242            V2025_03_01_dashboard => "2025-03-01.dashboard",
243            V2025_03_31_basil => "2025-03-31.basil",
244            V2025_04_30_basil => "2025-04-30.basil",
245            V2025_05_28_basil => "2025-05-28.basil",
246            V2025_06_30_basil => "2025-06-30.basil",
247            V2025_07_30_basil => "2025-07-30.basil",
248            V2025_08_27_basil => "2025-08-27.basil",
249            V2025_09_30_clover => "2025-09-30.clover",
250            V2025_10_29_clover => "2025-10-29.clover",
251            V2025_11_17_clover => "2025-11-17.clover",
252            V2025_12_15_clover => "2025-12-15.clover",
253            V2026_01_28_clover => "2026-01-28.clover",
254            V2026_02_25_clover => "2026-02-25.clover",
255            V2026_03_25_dahlia => "2026-03-25.dahlia",
256            V2026_04_22_dahlia => "2026-04-22.dahlia",
257            Unknown(v) => v,
258        }
259    }
260}
261
262impl std::str::FromStr for ApiVersion {
263    type Err = std::convert::Infallible;
264    fn from_str(s: &str) -> Result<Self, Self::Err> {
265        use ApiVersion::*;
266        match s {
267            "2011-01-01" => Ok(V2011_01_01),
268            "2011-06-21" => Ok(V2011_06_21),
269            "2011-06-28" => Ok(V2011_06_28),
270            "2011-08-01" => Ok(V2011_08_01),
271            "2011-09-15" => Ok(V2011_09_15),
272            "2011-11-17" => Ok(V2011_11_17),
273            "2012-02-23" => Ok(V2012_02_23),
274            "2012-03-25" => Ok(V2012_03_25),
275            "2012-06-18" => Ok(V2012_06_18),
276            "2012-06-28" => Ok(V2012_06_28),
277            "2012-07-09" => Ok(V2012_07_09),
278            "2012-09-24" => Ok(V2012_09_24),
279            "2012-10-26" => Ok(V2012_10_26),
280            "2012-11-07" => Ok(V2012_11_07),
281            "2013-02-11" => Ok(V2013_02_11),
282            "2013-02-13" => Ok(V2013_02_13),
283            "2013-07-05" => Ok(V2013_07_05),
284            "2013-08-12" => Ok(V2013_08_12),
285            "2013-08-13" => Ok(V2013_08_13),
286            "2013-10-29" => Ok(V2013_10_29),
287            "2013-12-03" => Ok(V2013_12_03),
288            "2014-01-31" => Ok(V2014_01_31),
289            "2014-03-13" => Ok(V2014_03_13),
290            "2014-03-28" => Ok(V2014_03_28),
291            "2014-05-19" => Ok(V2014_05_19),
292            "2014-06-13" => Ok(V2014_06_13),
293            "2014-06-17" => Ok(V2014_06_17),
294            "2014-07-22" => Ok(V2014_07_22),
295            "2014-07-26" => Ok(V2014_07_26),
296            "2014-08-04" => Ok(V2014_08_04),
297            "2014-08-20" => Ok(V2014_08_20),
298            "2014-09-08" => Ok(V2014_09_08),
299            "2014-10-07" => Ok(V2014_10_07),
300            "2014-11-05" => Ok(V2014_11_05),
301            "2014-11-20" => Ok(V2014_11_20),
302            "2014-12-08" => Ok(V2014_12_08),
303            "2014-12-17" => Ok(V2014_12_17),
304            "2014-12-22" => Ok(V2014_12_22),
305            "2015-01-11" => Ok(V2015_01_11),
306            "2015-01-26" => Ok(V2015_01_26),
307            "2015-02-10" => Ok(V2015_02_10),
308            "2015-02-16" => Ok(V2015_02_16),
309            "2015-02-18" => Ok(V2015_02_18),
310            "2015-03-24" => Ok(V2015_03_24),
311            "2015-04-07" => Ok(V2015_04_07),
312            "2015-06-15" => Ok(V2015_06_15),
313            "2015-07-07" => Ok(V2015_07_07),
314            "2015-07-13" => Ok(V2015_07_13),
315            "2015-07-28" => Ok(V2015_07_28),
316            "2015-08-07" => Ok(V2015_08_07),
317            "2015-08-19" => Ok(V2015_08_19),
318            "2015-09-03" => Ok(V2015_09_03),
319            "2015-09-08" => Ok(V2015_09_08),
320            "2015-09-23" => Ok(V2015_09_23),
321            "2015-10-01" => Ok(V2015_10_01),
322            "2015-10-12" => Ok(V2015_10_12),
323            "2015-10-16" => Ok(V2015_10_16),
324            "2016-02-03" => Ok(V2016_02_03),
325            "2016-02-19" => Ok(V2016_02_19),
326            "2016-02-22" => Ok(V2016_02_22),
327            "2016-02-23" => Ok(V2016_02_23),
328            "2016-02-29" => Ok(V2016_02_29),
329            "2016-03-07" => Ok(V2016_03_07),
330            "2016-06-15" => Ok(V2016_06_15),
331            "2016-07-06" => Ok(V2016_07_06),
332            "2016-10-19" => Ok(V2016_10_19),
333            "2017-01-27" => Ok(V2017_01_27),
334            "2017-02-14" => Ok(V2017_02_14),
335            "2017-04-06" => Ok(V2017_04_06),
336            "2017-05-25" => Ok(V2017_05_25),
337            "2017-06-05" => Ok(V2017_06_05),
338            "2017-08-15" => Ok(V2017_08_15),
339            "2017-12-14" => Ok(V2017_12_14),
340            "2018-01-23" => Ok(V2018_01_23),
341            "2018-02-05" => Ok(V2018_02_05),
342            "2018-02-06" => Ok(V2018_02_06),
343            "2018-02-28" => Ok(V2018_02_28),
344            "2018-05-21" => Ok(V2018_05_21),
345            "2018-07-27" => Ok(V2018_07_27),
346            "2018-08-23" => Ok(V2018_08_23),
347            "2018-09-06" => Ok(V2018_09_06),
348            "2018-09-24" => Ok(V2018_09_24),
349            "2018-10-31" => Ok(V2018_10_31),
350            "2018-11-08" => Ok(V2018_11_08),
351            "2019-02-11" => Ok(V2019_02_11),
352            "2019-02-19" => Ok(V2019_02_19),
353            "2019-03-14" => Ok(V2019_03_14),
354            "2019-05-16" => Ok(V2019_05_16),
355            "2019-08-14" => Ok(V2019_08_14),
356            "2019-09-09" => Ok(V2019_09_09),
357            "2019-10-08" => Ok(V2019_10_08),
358            "2019-10-17" => Ok(V2019_10_17),
359            "2019-11-05" => Ok(V2019_11_05),
360            "2019-12-03" => Ok(V2019_12_03),
361            "2020-03-02" => Ok(V2020_03_02),
362            "2020-08-27" => Ok(V2020_08_27),
363            "2022-08-01" => Ok(V2022_08_01),
364            "2022-11-15" => Ok(V2022_11_15),
365            "2023-08-16" => Ok(V2023_08_16),
366            "2023-10-16" => Ok(V2023_10_16),
367            "2024-04-10" => Ok(V2024_04_10),
368            "2024-06-20" => Ok(V2024_06_20),
369            "2024-09-30.acacia" => Ok(V2024_09_30_acacia),
370            "2024-10-28.acacia" => Ok(V2024_10_28_acacia),
371            "2024-11-20.acacia" => Ok(V2024_11_20_acacia),
372            "2024-12-18.acacia" => Ok(V2024_12_18_acacia),
373            "2025-01-27.acacia" => Ok(V2025_01_27_acacia),
374            "2025-02-24.acacia" => Ok(V2025_02_24_acacia),
375            "2025-03-01.dashboard" => Ok(V2025_03_01_dashboard),
376            "2025-03-31.basil" => Ok(V2025_03_31_basil),
377            "2025-04-30.basil" => Ok(V2025_04_30_basil),
378            "2025-05-28.basil" => Ok(V2025_05_28_basil),
379            "2025-06-30.basil" => Ok(V2025_06_30_basil),
380            "2025-07-30.basil" => Ok(V2025_07_30_basil),
381            "2025-08-27.basil" => Ok(V2025_08_27_basil),
382            "2025-09-30.clover" => Ok(V2025_09_30_clover),
383            "2025-10-29.clover" => Ok(V2025_10_29_clover),
384            "2025-11-17.clover" => Ok(V2025_11_17_clover),
385            "2025-12-15.clover" => Ok(V2025_12_15_clover),
386            "2026-01-28.clover" => Ok(V2026_01_28_clover),
387            "2026-02-25.clover" => Ok(V2026_02_25_clover),
388            "2026-03-25.dahlia" => Ok(V2026_03_25_dahlia),
389            "2026-04-22.dahlia" => Ok(V2026_04_22_dahlia),
390            v => {
391                tracing::warn!("Unknown value '{}' for enum '{}'", v, "ApiVersion");
392                Ok(Unknown(v.to_owned()))
393            }
394        }
395    }
396}
397impl std::fmt::Display for ApiVersion {
398    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
399        f.write_str(self.as_str())
400    }
401}
402
403#[cfg(not(feature = "redact-generated-debug"))]
404impl std::fmt::Debug for ApiVersion {
405    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
406        f.write_str(self.as_str())
407    }
408}
409#[cfg(feature = "redact-generated-debug")]
410impl std::fmt::Debug for ApiVersion {
411    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
412        f.debug_struct(stringify!(ApiVersion)).finish_non_exhaustive()
413    }
414}
415impl serde::Serialize for ApiVersion {
416    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
417    where
418        S: serde::Serializer,
419    {
420        serializer.serialize_str(self.as_str())
421    }
422}
423impl miniserde::Deserialize for ApiVersion {
424    fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
425        crate::Place::new(out)
426    }
427}
428
429impl miniserde::de::Visitor for crate::Place<ApiVersion> {
430    fn string(&mut self, s: &str) -> miniserde::Result<()> {
431        use std::str::FromStr;
432        self.out = Some(ApiVersion::from_str(s).expect("infallible"));
433        Ok(())
434    }
435}
436
437stripe_types::impl_from_val_with_from_str!(ApiVersion);
438#[cfg(feature = "deserialize")]
439impl<'de> serde::Deserialize<'de> for ApiVersion {
440    fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
441        use std::str::FromStr;
442        let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
443        Ok(Self::from_str(&s).expect("infallible"))
444    }
445}