1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct Subscription {
16 #[serde(rename = "id")]
18 pub id: String,
19 #[serde(rename = "createdAt")]
21 pub created_at: String,
22 #[serde(rename = "updatedAt")]
24 pub updated_at: String,
25 #[serde(rename = "type")]
27 pub r#type: TypeTrue,
28 #[serde(rename = "status")]
30 pub status: StatusTrue,
31 #[serde(rename = "credits")]
33 pub credits: String,
34 #[serde(rename = "concurrencyCounter")]
36 pub concurrency_counter: f64,
37 #[serde(rename = "concurrencyLimitIncluded")]
39 pub concurrency_limit_included: f64,
40 #[serde(
42 rename = "phoneNumbersCounter",
43 skip_serializing_if = "Option::is_none"
44 )]
45 pub phone_numbers_counter: Option<f64>,
46 #[serde(
48 rename = "phoneNumbersIncluded",
49 skip_serializing_if = "Option::is_none"
50 )]
51 pub phone_numbers_included: Option<f64>,
52 #[serde(rename = "concurrencyLimitPurchased")]
54 pub concurrency_limit_purchased: f64,
55 #[serde(
57 rename = "monthlyChargeScheduleId",
58 skip_serializing_if = "Option::is_none"
59 )]
60 pub monthly_charge_schedule_id: Option<f64>,
61 #[serde(
63 rename = "monthlyCreditCheckScheduleId",
64 skip_serializing_if = "Option::is_none"
65 )]
66 pub monthly_credit_check_schedule_id: Option<f64>,
67 #[serde(rename = "stripeCustomerId", skip_serializing_if = "Option::is_none")]
69 pub stripe_customer_id: Option<String>,
70 #[serde(
72 rename = "stripePaymentMethodId",
73 skip_serializing_if = "Option::is_none"
74 )]
75 pub stripe_payment_method_id: Option<String>,
76 #[serde(
78 rename = "slackSupportEnabled",
79 skip_serializing_if = "Option::is_none"
80 )]
81 pub slack_support_enabled: Option<bool>,
82 #[serde(rename = "slackChannelId", skip_serializing_if = "Option::is_none")]
84 pub slack_channel_id: Option<String>,
85 #[serde(rename = "hipaaEnabled", skip_serializing_if = "Option::is_none")]
87 pub hipaa_enabled: Option<bool>,
88 #[serde(
90 rename = "hipaaCommonPaperAgreementId",
91 skip_serializing_if = "Option::is_none"
92 )]
93 pub hipaa_common_paper_agreement_id: Option<String>,
94 #[serde(
96 rename = "stripePaymentMethodFingerprint",
97 skip_serializing_if = "Option::is_none"
98 )]
99 pub stripe_payment_method_fingerprint: Option<String>,
100 #[serde(
102 rename = "stripeCustomerEmail",
103 skip_serializing_if = "Option::is_none"
104 )]
105 pub stripe_customer_email: Option<String>,
106 #[serde(rename = "referredByEmail", skip_serializing_if = "Option::is_none")]
108 pub referred_by_email: Option<String>,
109 #[serde(rename = "autoReloadPlan", skip_serializing_if = "Option::is_none")]
111 pub auto_reload_plan: Option<models::AutoReloadPlan>,
112 #[serde(rename = "minutesIncluded", skip_serializing_if = "Option::is_none")]
114 pub minutes_included: Option<f64>,
115 #[serde(rename = "minutesUsed", skip_serializing_if = "Option::is_none")]
117 pub minutes_used: Option<f64>,
118 #[serde(
120 rename = "minutesUsedNextResetAt",
121 skip_serializing_if = "Option::is_none"
122 )]
123 pub minutes_used_next_reset_at: Option<String>,
124 #[serde(rename = "minutesOverageCost", skip_serializing_if = "Option::is_none")]
126 pub minutes_overage_cost: Option<f64>,
127 #[serde(rename = "providersIncluded", skip_serializing_if = "Option::is_none")]
129 pub providers_included: Option<Vec<String>>,
130 #[serde(
132 rename = "outboundCallsDailyLimit",
133 skip_serializing_if = "Option::is_none"
134 )]
135 pub outbound_calls_daily_limit: Option<f64>,
136 #[serde(
138 rename = "outboundCallsCounter",
139 skip_serializing_if = "Option::is_none"
140 )]
141 pub outbound_calls_counter: Option<f64>,
142 #[serde(
144 rename = "outboundCallsCounterNextResetAt",
145 skip_serializing_if = "Option::is_none"
146 )]
147 pub outbound_calls_counter_next_reset_at: Option<String>,
148 #[serde(rename = "couponIds", skip_serializing_if = "Option::is_none")]
150 pub coupon_ids: Option<Vec<String>>,
151 #[serde(rename = "couponUsageLeft", skip_serializing_if = "Option::is_none")]
153 pub coupon_usage_left: Option<String>,
154 #[serde(rename = "invoicePlan", skip_serializing_if = "Option::is_none")]
156 pub invoice_plan: Option<models::InvoicePlan>,
157 #[serde(rename = "pciEnabled", skip_serializing_if = "Option::is_none")]
159 pub pci_enabled: Option<bool>,
160 #[serde(
162 rename = "pciCommonPaperAgreementId",
163 skip_serializing_if = "Option::is_none"
164 )]
165 pub pci_common_paper_agreement_id: Option<String>,
166}
167
168impl Subscription {
169 pub fn new(
170 id: String,
171 created_at: String,
172 updated_at: String,
173 r#type: TypeTrue,
174 status: StatusTrue,
175 credits: String,
176 concurrency_counter: f64,
177 concurrency_limit_included: f64,
178 concurrency_limit_purchased: f64,
179 ) -> Subscription {
180 Subscription {
181 id,
182 created_at,
183 updated_at,
184 r#type,
185 status,
186 credits,
187 concurrency_counter,
188 concurrency_limit_included,
189 phone_numbers_counter: None,
190 phone_numbers_included: None,
191 concurrency_limit_purchased,
192 monthly_charge_schedule_id: None,
193 monthly_credit_check_schedule_id: None,
194 stripe_customer_id: None,
195 stripe_payment_method_id: None,
196 slack_support_enabled: None,
197 slack_channel_id: None,
198 hipaa_enabled: None,
199 hipaa_common_paper_agreement_id: None,
200 stripe_payment_method_fingerprint: None,
201 stripe_customer_email: None,
202 referred_by_email: None,
203 auto_reload_plan: None,
204 minutes_included: None,
205 minutes_used: None,
206 minutes_used_next_reset_at: None,
207 minutes_overage_cost: None,
208 providers_included: None,
209 outbound_calls_daily_limit: None,
210 outbound_calls_counter: None,
211 outbound_calls_counter_next_reset_at: None,
212 coupon_ids: None,
213 coupon_usage_left: None,
214 invoice_plan: None,
215 pci_enabled: None,
216 pci_common_paper_agreement_id: None,
217 }
218 }
219}
220#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
222pub enum TypeTrue {
223 #[serde(rename = "trial")]
224 Trial,
225 #[serde(rename = "pay-as-you-go")]
226 PayAsYouGo,
227 #[serde(rename = "enterprise")]
228 Enterprise,
229 #[serde(rename = "agency")]
230 Agency,
231 #[serde(rename = "startup")]
232 Startup,
233 #[serde(rename = "growth")]
234 Growth,
235 #[serde(rename = "scale")]
236 Scale,
237}
238
239impl Default for TypeTrue {
240 fn default() -> TypeTrue {
241 Self::Trial
242 }
243}
244#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
246pub enum StatusTrue {
247 #[serde(rename = "active")]
248 Active,
249 #[serde(rename = "frozen")]
250 Frozen,
251}
252
253impl Default for StatusTrue {
254 fn default() -> StatusTrue {
255 Self::Active
256 }
257}