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 Unknown(String),
122}
123impl ApiVersion {
124 pub fn as_str(&self) -> &str {
125 use ApiVersion::*;
126 match self {
127 V2011_01_01 => "2011-01-01",
128 V2011_06_21 => "2011-06-21",
129 V2011_06_28 => "2011-06-28",
130 V2011_08_01 => "2011-08-01",
131 V2011_09_15 => "2011-09-15",
132 V2011_11_17 => "2011-11-17",
133 V2012_02_23 => "2012-02-23",
134 V2012_03_25 => "2012-03-25",
135 V2012_06_18 => "2012-06-18",
136 V2012_06_28 => "2012-06-28",
137 V2012_07_09 => "2012-07-09",
138 V2012_09_24 => "2012-09-24",
139 V2012_10_26 => "2012-10-26",
140 V2012_11_07 => "2012-11-07",
141 V2013_02_11 => "2013-02-11",
142 V2013_02_13 => "2013-02-13",
143 V2013_07_05 => "2013-07-05",
144 V2013_08_12 => "2013-08-12",
145 V2013_08_13 => "2013-08-13",
146 V2013_10_29 => "2013-10-29",
147 V2013_12_03 => "2013-12-03",
148 V2014_01_31 => "2014-01-31",
149 V2014_03_13 => "2014-03-13",
150 V2014_03_28 => "2014-03-28",
151 V2014_05_19 => "2014-05-19",
152 V2014_06_13 => "2014-06-13",
153 V2014_06_17 => "2014-06-17",
154 V2014_07_22 => "2014-07-22",
155 V2014_07_26 => "2014-07-26",
156 V2014_08_04 => "2014-08-04",
157 V2014_08_20 => "2014-08-20",
158 V2014_09_08 => "2014-09-08",
159 V2014_10_07 => "2014-10-07",
160 V2014_11_05 => "2014-11-05",
161 V2014_11_20 => "2014-11-20",
162 V2014_12_08 => "2014-12-08",
163 V2014_12_17 => "2014-12-17",
164 V2014_12_22 => "2014-12-22",
165 V2015_01_11 => "2015-01-11",
166 V2015_01_26 => "2015-01-26",
167 V2015_02_10 => "2015-02-10",
168 V2015_02_16 => "2015-02-16",
169 V2015_02_18 => "2015-02-18",
170 V2015_03_24 => "2015-03-24",
171 V2015_04_07 => "2015-04-07",
172 V2015_06_15 => "2015-06-15",
173 V2015_07_07 => "2015-07-07",
174 V2015_07_13 => "2015-07-13",
175 V2015_07_28 => "2015-07-28",
176 V2015_08_07 => "2015-08-07",
177 V2015_08_19 => "2015-08-19",
178 V2015_09_03 => "2015-09-03",
179 V2015_09_08 => "2015-09-08",
180 V2015_09_23 => "2015-09-23",
181 V2015_10_01 => "2015-10-01",
182 V2015_10_12 => "2015-10-12",
183 V2015_10_16 => "2015-10-16",
184 V2016_02_03 => "2016-02-03",
185 V2016_02_19 => "2016-02-19",
186 V2016_02_22 => "2016-02-22",
187 V2016_02_23 => "2016-02-23",
188 V2016_02_29 => "2016-02-29",
189 V2016_03_07 => "2016-03-07",
190 V2016_06_15 => "2016-06-15",
191 V2016_07_06 => "2016-07-06",
192 V2016_10_19 => "2016-10-19",
193 V2017_01_27 => "2017-01-27",
194 V2017_02_14 => "2017-02-14",
195 V2017_04_06 => "2017-04-06",
196 V2017_05_25 => "2017-05-25",
197 V2017_06_05 => "2017-06-05",
198 V2017_08_15 => "2017-08-15",
199 V2017_12_14 => "2017-12-14",
200 V2018_01_23 => "2018-01-23",
201 V2018_02_05 => "2018-02-05",
202 V2018_02_06 => "2018-02-06",
203 V2018_02_28 => "2018-02-28",
204 V2018_05_21 => "2018-05-21",
205 V2018_07_27 => "2018-07-27",
206 V2018_08_23 => "2018-08-23",
207 V2018_09_06 => "2018-09-06",
208 V2018_09_24 => "2018-09-24",
209 V2018_10_31 => "2018-10-31",
210 V2018_11_08 => "2018-11-08",
211 V2019_02_11 => "2019-02-11",
212 V2019_02_19 => "2019-02-19",
213 V2019_03_14 => "2019-03-14",
214 V2019_05_16 => "2019-05-16",
215 V2019_08_14 => "2019-08-14",
216 V2019_09_09 => "2019-09-09",
217 V2019_10_08 => "2019-10-08",
218 V2019_10_17 => "2019-10-17",
219 V2019_11_05 => "2019-11-05",
220 V2019_12_03 => "2019-12-03",
221 V2020_03_02 => "2020-03-02",
222 V2020_08_27 => "2020-08-27",
223 V2022_08_01 => "2022-08-01",
224 V2022_11_15 => "2022-11-15",
225 V2023_08_16 => "2023-08-16",
226 V2023_10_16 => "2023-10-16",
227 V2024_04_10 => "2024-04-10",
228 V2024_06_20 => "2024-06-20",
229 V2024_09_30_acacia => "2024-09-30.acacia",
230 V2024_10_28_acacia => "2024-10-28.acacia",
231 V2024_11_20_acacia => "2024-11-20.acacia",
232 V2024_12_18_acacia => "2024-12-18.acacia",
233 V2025_01_27_acacia => "2025-01-27.acacia",
234 V2025_02_24_acacia => "2025-02-24.acacia",
235 V2025_03_01_dashboard => "2025-03-01.dashboard",
236 V2025_03_31_basil => "2025-03-31.basil",
237 V2025_04_30_basil => "2025-04-30.basil",
238 V2025_05_28_basil => "2025-05-28.basil",
239 V2025_06_30_basil => "2025-06-30.basil",
240 V2025_07_30_basil => "2025-07-30.basil",
241 V2025_08_27_basil => "2025-08-27.basil",
242 V2025_09_30_clover => "2025-09-30.clover",
243 Unknown(v) => v,
244 }
245 }
246}
247
248impl std::str::FromStr for ApiVersion {
249 type Err = std::convert::Infallible;
250 fn from_str(s: &str) -> Result<Self, Self::Err> {
251 use ApiVersion::*;
252 match s {
253 "2011-01-01" => Ok(V2011_01_01),
254 "2011-06-21" => Ok(V2011_06_21),
255 "2011-06-28" => Ok(V2011_06_28),
256 "2011-08-01" => Ok(V2011_08_01),
257 "2011-09-15" => Ok(V2011_09_15),
258 "2011-11-17" => Ok(V2011_11_17),
259 "2012-02-23" => Ok(V2012_02_23),
260 "2012-03-25" => Ok(V2012_03_25),
261 "2012-06-18" => Ok(V2012_06_18),
262 "2012-06-28" => Ok(V2012_06_28),
263 "2012-07-09" => Ok(V2012_07_09),
264 "2012-09-24" => Ok(V2012_09_24),
265 "2012-10-26" => Ok(V2012_10_26),
266 "2012-11-07" => Ok(V2012_11_07),
267 "2013-02-11" => Ok(V2013_02_11),
268 "2013-02-13" => Ok(V2013_02_13),
269 "2013-07-05" => Ok(V2013_07_05),
270 "2013-08-12" => Ok(V2013_08_12),
271 "2013-08-13" => Ok(V2013_08_13),
272 "2013-10-29" => Ok(V2013_10_29),
273 "2013-12-03" => Ok(V2013_12_03),
274 "2014-01-31" => Ok(V2014_01_31),
275 "2014-03-13" => Ok(V2014_03_13),
276 "2014-03-28" => Ok(V2014_03_28),
277 "2014-05-19" => Ok(V2014_05_19),
278 "2014-06-13" => Ok(V2014_06_13),
279 "2014-06-17" => Ok(V2014_06_17),
280 "2014-07-22" => Ok(V2014_07_22),
281 "2014-07-26" => Ok(V2014_07_26),
282 "2014-08-04" => Ok(V2014_08_04),
283 "2014-08-20" => Ok(V2014_08_20),
284 "2014-09-08" => Ok(V2014_09_08),
285 "2014-10-07" => Ok(V2014_10_07),
286 "2014-11-05" => Ok(V2014_11_05),
287 "2014-11-20" => Ok(V2014_11_20),
288 "2014-12-08" => Ok(V2014_12_08),
289 "2014-12-17" => Ok(V2014_12_17),
290 "2014-12-22" => Ok(V2014_12_22),
291 "2015-01-11" => Ok(V2015_01_11),
292 "2015-01-26" => Ok(V2015_01_26),
293 "2015-02-10" => Ok(V2015_02_10),
294 "2015-02-16" => Ok(V2015_02_16),
295 "2015-02-18" => Ok(V2015_02_18),
296 "2015-03-24" => Ok(V2015_03_24),
297 "2015-04-07" => Ok(V2015_04_07),
298 "2015-06-15" => Ok(V2015_06_15),
299 "2015-07-07" => Ok(V2015_07_07),
300 "2015-07-13" => Ok(V2015_07_13),
301 "2015-07-28" => Ok(V2015_07_28),
302 "2015-08-07" => Ok(V2015_08_07),
303 "2015-08-19" => Ok(V2015_08_19),
304 "2015-09-03" => Ok(V2015_09_03),
305 "2015-09-08" => Ok(V2015_09_08),
306 "2015-09-23" => Ok(V2015_09_23),
307 "2015-10-01" => Ok(V2015_10_01),
308 "2015-10-12" => Ok(V2015_10_12),
309 "2015-10-16" => Ok(V2015_10_16),
310 "2016-02-03" => Ok(V2016_02_03),
311 "2016-02-19" => Ok(V2016_02_19),
312 "2016-02-22" => Ok(V2016_02_22),
313 "2016-02-23" => Ok(V2016_02_23),
314 "2016-02-29" => Ok(V2016_02_29),
315 "2016-03-07" => Ok(V2016_03_07),
316 "2016-06-15" => Ok(V2016_06_15),
317 "2016-07-06" => Ok(V2016_07_06),
318 "2016-10-19" => Ok(V2016_10_19),
319 "2017-01-27" => Ok(V2017_01_27),
320 "2017-02-14" => Ok(V2017_02_14),
321 "2017-04-06" => Ok(V2017_04_06),
322 "2017-05-25" => Ok(V2017_05_25),
323 "2017-06-05" => Ok(V2017_06_05),
324 "2017-08-15" => Ok(V2017_08_15),
325 "2017-12-14" => Ok(V2017_12_14),
326 "2018-01-23" => Ok(V2018_01_23),
327 "2018-02-05" => Ok(V2018_02_05),
328 "2018-02-06" => Ok(V2018_02_06),
329 "2018-02-28" => Ok(V2018_02_28),
330 "2018-05-21" => Ok(V2018_05_21),
331 "2018-07-27" => Ok(V2018_07_27),
332 "2018-08-23" => Ok(V2018_08_23),
333 "2018-09-06" => Ok(V2018_09_06),
334 "2018-09-24" => Ok(V2018_09_24),
335 "2018-10-31" => Ok(V2018_10_31),
336 "2018-11-08" => Ok(V2018_11_08),
337 "2019-02-11" => Ok(V2019_02_11),
338 "2019-02-19" => Ok(V2019_02_19),
339 "2019-03-14" => Ok(V2019_03_14),
340 "2019-05-16" => Ok(V2019_05_16),
341 "2019-08-14" => Ok(V2019_08_14),
342 "2019-09-09" => Ok(V2019_09_09),
343 "2019-10-08" => Ok(V2019_10_08),
344 "2019-10-17" => Ok(V2019_10_17),
345 "2019-11-05" => Ok(V2019_11_05),
346 "2019-12-03" => Ok(V2019_12_03),
347 "2020-03-02" => Ok(V2020_03_02),
348 "2020-08-27" => Ok(V2020_08_27),
349 "2022-08-01" => Ok(V2022_08_01),
350 "2022-11-15" => Ok(V2022_11_15),
351 "2023-08-16" => Ok(V2023_08_16),
352 "2023-10-16" => Ok(V2023_10_16),
353 "2024-04-10" => Ok(V2024_04_10),
354 "2024-06-20" => Ok(V2024_06_20),
355 "2024-09-30.acacia" => Ok(V2024_09_30_acacia),
356 "2024-10-28.acacia" => Ok(V2024_10_28_acacia),
357 "2024-11-20.acacia" => Ok(V2024_11_20_acacia),
358 "2024-12-18.acacia" => Ok(V2024_12_18_acacia),
359 "2025-01-27.acacia" => Ok(V2025_01_27_acacia),
360 "2025-02-24.acacia" => Ok(V2025_02_24_acacia),
361 "2025-03-01.dashboard" => Ok(V2025_03_01_dashboard),
362 "2025-03-31.basil" => Ok(V2025_03_31_basil),
363 "2025-04-30.basil" => Ok(V2025_04_30_basil),
364 "2025-05-28.basil" => Ok(V2025_05_28_basil),
365 "2025-06-30.basil" => Ok(V2025_06_30_basil),
366 "2025-07-30.basil" => Ok(V2025_07_30_basil),
367 "2025-08-27.basil" => Ok(V2025_08_27_basil),
368 "2025-09-30.clover" => Ok(V2025_09_30_clover),
369 v => Ok(Unknown(v.to_owned())),
370 }
371 }
372}
373impl std::fmt::Display for ApiVersion {
374 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
375 f.write_str(self.as_str())
376 }
377}
378
379impl std::fmt::Debug for ApiVersion {
380 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
381 f.write_str(self.as_str())
382 }
383}
384impl serde::Serialize for ApiVersion {
385 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
386 where
387 S: serde::Serializer,
388 {
389 serializer.serialize_str(self.as_str())
390 }
391}
392impl miniserde::Deserialize for ApiVersion {
393 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
394 crate::Place::new(out)
395 }
396}
397
398impl miniserde::de::Visitor for crate::Place<ApiVersion> {
399 fn string(&mut self, s: &str) -> miniserde::Result<()> {
400 use std::str::FromStr;
401 self.out = Some(ApiVersion::from_str(s).unwrap());
402 Ok(())
403 }
404}
405
406stripe_types::impl_from_val_with_from_str!(ApiVersion);
407#[cfg(feature = "deserialize")]
408impl<'de> serde::Deserialize<'de> for ApiVersion {
409 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
410 use std::str::FromStr;
411 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
412 Ok(Self::from_str(&s).unwrap())
413 }
414}