1use serde::{Deserialize, Serialize};
2
3#[derive(Default, Deserialize, Serialize)]
4#[serde(rename_all = "snake_case")]
5pub enum AmountType {
6 #[default]
7 Fixed,
8 Custom,
9 Free,
10 MeteredUnit,
11}
12
13#[derive(Deserialize)]
14#[serde(rename_all = "snake_case")]
15pub enum BenefitType {
16 Custom,
17 Discord,
18 GithubRepository,
19 Downloadables,
20 LicenseKeys,
21 MeterCredit,
22}
23
24#[derive(Deserialize)]
25#[serde(rename_all = "lowercase")]
26pub enum BillingAddressField {
27 Required,
28 Optional,
29 Disabled,
30}
31
32#[derive(Serialize)]
33#[serde(rename_all = "snake_case")]
34pub enum CheckoutSessionsSorting {
35 CreatedAt,
36 #[serde(rename = "-created_at")]
37 CreatedAtDesc,
38 ExpiresAt,
39 #[serde(rename = "-expires_at")]
40 ExpiresAtDesc,
41 Status,
42 #[serde(rename = "-status")]
43 StatusDesc,
44}
45
46#[derive(Deserialize, PartialEq, Serialize)]
47#[serde(rename_all = "lowercase")]
48pub enum CheckoutSessionStatus {
49 Open,
50 Expired,
51 Confirmed,
52 Succeeded,
53 Failed,
54}
55
56impl CheckoutSessionStatus {
57 pub fn is_succeeded(&self) -> bool {
58 *self == Self::Succeeded
59 }
60}
61
62#[derive(Deserialize, Serialize)]
63#[serde(rename_all = "snake_case")]
64pub enum CustomerCancellationReason {
65 CustomerService,
66 LowQuality,
67 MissingFeatures,
68 SwitchedService,
69 TooComplex,
70 TooExpensive,
71 Unused,
72 Other,
73}
74
75#[derive(Deserialize)]
76#[serde(rename_all = "lowercase")]
77pub enum CustomFieldType {
78 Text,
79 Number,
80 Date,
81 Checkbox,
82 Select,
83}
84
85#[derive(Deserialize)]
86#[serde(rename_all = "lowercase")]
87pub enum DiscountDuration {
88 Once,
89 Forever,
90 Repeating,
91}
92
93#[derive(Deserialize)]
94#[serde(rename_all = "lowercase")]
95pub enum DiscountType {
96 Fixed,
97 Percentage,
98}
99
100#[derive(Deserialize, PartialEq, Serialize)]
101#[serde(rename_all = "lowercase")]
102pub enum Interval {
103 Year,
104 Month,
105 Week,
106 Day,
107 Hour,
108}
109
110#[derive(Deserialize, Serialize)]
111#[serde(rename_all = "lowercase")]
112pub enum MeterAggregationFunc {
113 Count,
114 Sum,
115 Max,
116 Min,
117 Avg,
118}
119
120#[derive(Deserialize, Serialize)]
121#[serde(rename_all = "lowercase")]
122pub enum MeterFilterConjunction {
123 And,
124 Or,
125}
126
127#[derive(Deserialize, Serialize)]
128#[serde(rename_all = "snake_case")]
129pub enum MeterFilterOperator {
130 Eq,
131 Ne,
132 Gt,
133 Gte,
134 Lt,
135 Lte,
136 Like,
137 NotLike,
138}
139
140#[derive(Serialize)]
141#[serde(rename_all = "snake_case")]
142pub enum MetersSorting {
143 CreatedAt,
144 #[serde(rename = "-created_at")]
145 CreatedAtDesc,
146 Name,
147 #[serde(rename = "-name")]
148 NameDesc,
149}
150
151#[derive(Deserialize)]
152#[serde(rename_all = "lowercase")]
153pub enum PaymentProcessor {
154 Stripe,
155}
156
157#[derive(Deserialize)]
158#[serde(rename_all = "snake_case")]
159pub enum PriceType {
160 OneTime,
161 Recurring,
162}
163
164#[derive(Serialize)]
165#[serde(rename_all = "snake_case")]
166pub enum ProductsSorting {
167 CreatedAt,
168 #[serde(rename = "-created_at")]
169 CreatedAtDesc,
170 Name,
171 #[serde(rename = "-name")]
172 NameDesc,
173 PriceAmountType,
174 #[serde(rename = "-price_amount_type")]
175 PriceAmountTypeDesc,
176 PriceAmount,
177 #[serde(rename = "-price_amount")]
178 PriceAmountDesc,
179}
180
181#[derive(Deserialize, Serialize)]
182#[serde(rename_all = "lowercase")]
183pub enum ProrationBehavior {
184 Invoice,
185 Prorate,
186}
187
188#[derive(Deserialize, PartialEq, Serialize)]
189#[serde(rename_all = "lowercase")]
190pub enum RecurringInterval {
191 Month,
192 Year,
193}
194
195#[derive(Serialize)]
196#[serde(rename_all = "snake_case")]
197pub enum SubscriptionsSorting {
198 Customer,
199 #[serde(rename = "-customer")]
200 CustomerDesc,
201 Status,
202 #[serde(rename = "-status")]
203 StatusDesc,
204 StartedAt,
205 #[serde(rename = "-started_at")]
206 StartedAtDesc,
207 CurrentPeriodEnd,
208 #[serde(rename = "-current_period_end")]
209 CurrentPeriodEndDesc,
210 Amount,
211 #[serde(rename = "-amount")]
212 AmountDesc,
213 Product,
214 #[serde(rename = "-product")]
215 ProductDesc,
216 Discount,
217 #[serde(rename = "-discount")]
218 DiscountDesc,
219}
220
221#[derive(Deserialize)]
222#[serde(rename_all = "snake_case")]
223pub enum SubscriptionStatus {
224 Incomplete,
225 IncompleteExpired,
226 Trialing,
227 Active,
228 PastDue,
229 Cancelled,
230 Unpaid,
231}