use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Subscription {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(rename = "type")]
pub r#type: TypeTrue,
#[serde(rename = "status")]
pub status: StatusTrue,
#[serde(rename = "credits")]
pub credits: String,
#[serde(rename = "concurrencyCounter")]
pub concurrency_counter: f64,
#[serde(rename = "concurrencyLimitIncluded")]
pub concurrency_limit_included: f64,
#[serde(
rename = "phoneNumbersCounter",
skip_serializing_if = "Option::is_none"
)]
pub phone_numbers_counter: Option<f64>,
#[serde(
rename = "phoneNumbersIncluded",
skip_serializing_if = "Option::is_none"
)]
pub phone_numbers_included: Option<f64>,
#[serde(rename = "concurrencyLimitPurchased")]
pub concurrency_limit_purchased: f64,
#[serde(
rename = "monthlyChargeScheduleId",
skip_serializing_if = "Option::is_none"
)]
pub monthly_charge_schedule_id: Option<f64>,
#[serde(
rename = "monthlyCreditCheckScheduleId",
skip_serializing_if = "Option::is_none"
)]
pub monthly_credit_check_schedule_id: Option<f64>,
#[serde(rename = "stripeCustomerId", skip_serializing_if = "Option::is_none")]
pub stripe_customer_id: Option<String>,
#[serde(
rename = "stripePaymentMethodId",
skip_serializing_if = "Option::is_none"
)]
pub stripe_payment_method_id: Option<String>,
#[serde(
rename = "slackSupportEnabled",
skip_serializing_if = "Option::is_none"
)]
pub slack_support_enabled: Option<bool>,
#[serde(rename = "slackChannelId", skip_serializing_if = "Option::is_none")]
pub slack_channel_id: Option<String>,
#[serde(rename = "hipaaEnabled", skip_serializing_if = "Option::is_none")]
pub hipaa_enabled: Option<bool>,
#[serde(
rename = "hipaaCommonPaperAgreementId",
skip_serializing_if = "Option::is_none"
)]
pub hipaa_common_paper_agreement_id: Option<String>,
#[serde(
rename = "stripePaymentMethodFingerprint",
skip_serializing_if = "Option::is_none"
)]
pub stripe_payment_method_fingerprint: Option<String>,
#[serde(
rename = "stripeCustomerEmail",
skip_serializing_if = "Option::is_none"
)]
pub stripe_customer_email: Option<String>,
#[serde(rename = "referredByEmail", skip_serializing_if = "Option::is_none")]
pub referred_by_email: Option<String>,
#[serde(rename = "autoReloadPlan", skip_serializing_if = "Option::is_none")]
pub auto_reload_plan: Option<models::AutoReloadPlan>,
#[serde(rename = "minutesIncluded", skip_serializing_if = "Option::is_none")]
pub minutes_included: Option<f64>,
#[serde(rename = "minutesUsed", skip_serializing_if = "Option::is_none")]
pub minutes_used: Option<f64>,
#[serde(
rename = "minutesUsedNextResetAt",
skip_serializing_if = "Option::is_none"
)]
pub minutes_used_next_reset_at: Option<String>,
#[serde(rename = "minutesOverageCost", skip_serializing_if = "Option::is_none")]
pub minutes_overage_cost: Option<f64>,
#[serde(rename = "providersIncluded", skip_serializing_if = "Option::is_none")]
pub providers_included: Option<Vec<String>>,
#[serde(
rename = "outboundCallsDailyLimit",
skip_serializing_if = "Option::is_none"
)]
pub outbound_calls_daily_limit: Option<f64>,
#[serde(
rename = "outboundCallsCounter",
skip_serializing_if = "Option::is_none"
)]
pub outbound_calls_counter: Option<f64>,
#[serde(
rename = "outboundCallsCounterNextResetAt",
skip_serializing_if = "Option::is_none"
)]
pub outbound_calls_counter_next_reset_at: Option<String>,
#[serde(rename = "couponIds", skip_serializing_if = "Option::is_none")]
pub coupon_ids: Option<Vec<String>>,
#[serde(rename = "couponUsageLeft", skip_serializing_if = "Option::is_none")]
pub coupon_usage_left: Option<String>,
#[serde(rename = "invoicePlan", skip_serializing_if = "Option::is_none")]
pub invoice_plan: Option<models::InvoicePlan>,
#[serde(rename = "pciEnabled", skip_serializing_if = "Option::is_none")]
pub pci_enabled: Option<bool>,
#[serde(
rename = "pciCommonPaperAgreementId",
skip_serializing_if = "Option::is_none"
)]
pub pci_common_paper_agreement_id: Option<String>,
}
impl Subscription {
pub fn new(
id: String,
created_at: String,
updated_at: String,
r#type: TypeTrue,
status: StatusTrue,
credits: String,
concurrency_counter: f64,
concurrency_limit_included: f64,
concurrency_limit_purchased: f64,
) -> Subscription {
Subscription {
id,
created_at,
updated_at,
r#type,
status,
credits,
concurrency_counter,
concurrency_limit_included,
phone_numbers_counter: None,
phone_numbers_included: None,
concurrency_limit_purchased,
monthly_charge_schedule_id: None,
monthly_credit_check_schedule_id: None,
stripe_customer_id: None,
stripe_payment_method_id: None,
slack_support_enabled: None,
slack_channel_id: None,
hipaa_enabled: None,
hipaa_common_paper_agreement_id: None,
stripe_payment_method_fingerprint: None,
stripe_customer_email: None,
referred_by_email: None,
auto_reload_plan: None,
minutes_included: None,
minutes_used: None,
minutes_used_next_reset_at: None,
minutes_overage_cost: None,
providers_included: None,
outbound_calls_daily_limit: None,
outbound_calls_counter: None,
outbound_calls_counter_next_reset_at: None,
coupon_ids: None,
coupon_usage_left: None,
invoice_plan: None,
pci_enabled: None,
pci_common_paper_agreement_id: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TypeTrue {
#[serde(rename = "trial")]
Trial,
#[serde(rename = "pay-as-you-go")]
PayAsYouGo,
#[serde(rename = "enterprise")]
Enterprise,
#[serde(rename = "agency")]
Agency,
#[serde(rename = "startup")]
Startup,
#[serde(rename = "growth")]
Growth,
#[serde(rename = "scale")]
Scale,
}
impl Default for TypeTrue {
fn default() -> TypeTrue {
Self::Trial
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum StatusTrue {
#[serde(rename = "active")]
Active,
#[serde(rename = "frozen")]
Frozen,
}
impl Default for StatusTrue {
fn default() -> StatusTrue {
Self::Active
}
}