use serde_derive::{Deserialize, Serialize};
use crate::config::{Client, Response};
use crate::ids::{CustomerId, SubscriptionScheduleId};
use crate::params::{Expand, Expandable, List, Metadata, Object, RangeQuery, Timestamp};
use crate::resources::{
CollectionMethod, Coupon, Currency, Customer, PaymentMethod, Price, Scheduled, Subscription,
SubscriptionBillingThresholds, SubscriptionItemBillingThresholds, SubscriptionTransferData,
TaxRate,
};
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionSchedule {
pub id: SubscriptionScheduleId,
#[serde(skip_serializing_if = "Option::is_none")]
pub canceled_at: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option<Timestamp>,
pub created: Timestamp,
#[serde(skip_serializing_if = "Option::is_none")]
pub current_phase: Option<SubscriptionScheduleCurrentPhase>,
pub customer: Expandable<Customer>,
pub default_settings: SubscriptionScheduleDefaultSettings,
pub end_behavior: SubscriptionScheduleEndBehavior,
pub livemode: bool,
#[serde(default)]
pub metadata: Metadata,
pub phases: Vec<SubscriptionSchedulePhaseConfiguration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub released_at: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub released_subscription: Option<String>,
pub status: SubscriptionScheduleStatus,
#[serde(skip_serializing_if = "Option::is_none")]
pub subscription: Option<Expandable<Subscription>>,
}
impl SubscriptionSchedule {
pub fn list(
client: &Client,
params: ListSubscriptionSchedules<'_>,
) -> Response<List<SubscriptionSchedule>> {
client.get_query("/subscription_schedules", ¶ms)
}
pub fn create(
client: &Client,
params: CreateSubscriptionSchedule<'_>,
) -> Response<SubscriptionSchedule> {
client.post_form("/subscription_schedules", ¶ms)
}
pub fn retrieve(
client: &Client,
id: &SubscriptionScheduleId,
expand: &[&str],
) -> Response<SubscriptionSchedule> {
client.get_query(&format!("/subscription_schedules/{}", id), &Expand { expand })
}
pub fn update(
client: &Client,
id: &SubscriptionScheduleId,
params: UpdateSubscriptionSchedule<'_>,
) -> Response<SubscriptionSchedule> {
client.post_form(&format!("/subscription_schedules/{}", id), ¶ms)
}
}
impl Object for SubscriptionSchedule {
type Id = SubscriptionScheduleId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"subscription_schedule"
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleCurrentPhase {
pub end_date: Timestamp,
pub start_date: Timestamp,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionSchedulePhaseConfiguration {
pub add_invoice_items: Vec<SubscriptionScheduleAddInvoiceItem>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_percent: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_cycle_anchor: Option<SubscriptionSchedulePhaseConfigurationBillingCycleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<SubscriptionBillingThresholds>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collection_method: Option<CollectionMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coupon: Option<Expandable<Coupon>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_payment_method: Option<Expandable<PaymentMethod>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_tax_rates: Option<Vec<TaxRate>>,
pub end_date: Timestamp,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_settings: Option<SubscriptionScheduleInvoiceSettings>,
pub items: Vec<SubscriptionScheduleConfigurationItem>,
pub proration_behavior: SubscriptionProrationBehavior,
pub start_date: Timestamp,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<SubscriptionTransferData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trial_end: Option<Timestamp>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleAddInvoiceItem {
pub price: Expandable<Price>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_rates: Option<Vec<TaxRate>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleConfigurationItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<SubscriptionItemBillingThresholds>,
pub price: Expandable<Price>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_rates: Option<Vec<TaxRate>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleDefaultSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_percent: Option<f64>,
pub billing_cycle_anchor: SubscriptionScheduleDefaultSettingsBillingCycleAnchor,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<SubscriptionBillingThresholds>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collection_method: Option<SubscriptionScheduleDefaultSettingsCollectionMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_payment_method: Option<Expandable<PaymentMethod>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_settings: Option<SubscriptionScheduleInvoiceSettings>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<SubscriptionTransferData>,
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct CreateSubscriptionSchedule<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<CustomerId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_settings: Option<SubscriptionScheduleDefaultSettingsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_behavior: Option<SubscriptionScheduleEndBehavior>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub from_subscription: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phases: Option<Vec<CreateSubscriptionSchedulePhases>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_date: Option<Scheduled>,
}
impl<'a> CreateSubscriptionSchedule<'a> {
pub fn new() -> Self {
CreateSubscriptionSchedule {
customer: Default::default(),
default_settings: Default::default(),
end_behavior: Default::default(),
expand: Default::default(),
from_subscription: Default::default(),
metadata: Default::default(),
phases: Default::default(),
start_date: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct ListSubscriptionSchedules<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub canceled_at: Option<RangeQuery<Timestamp>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option<RangeQuery<Timestamp>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<RangeQuery<Timestamp>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<CustomerId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ending_before: Option<SubscriptionScheduleId>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub released_at: Option<RangeQuery<Timestamp>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scheduled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub starting_after: Option<SubscriptionScheduleId>,
}
impl<'a> ListSubscriptionSchedules<'a> {
pub fn new() -> Self {
ListSubscriptionSchedules {
canceled_at: Default::default(),
completed_at: Default::default(),
created: Default::default(),
customer: Default::default(),
ending_before: Default::default(),
expand: Default::default(),
limit: Default::default(),
released_at: Default::default(),
scheduled: Default::default(),
starting_after: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct UpdateSubscriptionSchedule<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub default_settings: Option<SubscriptionScheduleDefaultSettingsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_behavior: Option<SubscriptionScheduleEndBehavior>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phases: Option<Vec<UpdateSubscriptionSchedulePhases>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proration_behavior: Option<SubscriptionProrationBehavior>,
}
impl<'a> UpdateSubscriptionSchedule<'a> {
pub fn new() -> Self {
UpdateSubscriptionSchedule {
default_settings: Default::default(),
end_behavior: Default::default(),
expand: Default::default(),
metadata: Default::default(),
phases: Default::default(),
proration_behavior: Default::default(),
}
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSubscriptionSchedulePhases {
#[serde(skip_serializing_if = "Option::is_none")]
pub add_invoice_items: Option<Vec<AddInvoiceItems>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_percent: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_cycle_anchor: Option<CreateSubscriptionSchedulePhasesBillingCycleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<SubscriptionBillingThresholds>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collection_method: Option<CollectionMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coupon: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_payment_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_tax_rates: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_date: Option<Scheduled>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_settings: Option<SubscriptionScheduleInvoiceSettings>,
pub items: Vec<CreateSubscriptionSchedulePhasesItems>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iterations: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proration_behavior: Option<SubscriptionProrationBehavior>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<CreateSubscriptionSchedulePhasesTransferData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trial: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trial_end: Option<Scheduled>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleDefaultSettingsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_percent: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_cycle_anchor: Option<SubscriptionScheduleDefaultSettingsParamsBillingCycleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<SubscriptionScheduleBillingThresholds>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collection_method: Option<CollectionMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_payment_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_settings: Option<SubscriptionScheduleInvoiceSettings>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<SubscriptionScheduleDefaultSettingsParamsTransferData>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSubscriptionSchedulePhases {
#[serde(skip_serializing_if = "Option::is_none")]
pub add_invoice_items: Option<Vec<AddInvoiceItems>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_percent: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_cycle_anchor: Option<UpdateSubscriptionSchedulePhasesBillingCycleAnchor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<SubscriptionBillingThresholds>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collection_method: Option<CollectionMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coupon: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_payment_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_tax_rates: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_date: Option<Scheduled>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_settings: Option<SubscriptionScheduleInvoiceSettings>,
pub items: Vec<UpdateSubscriptionSchedulePhasesItems>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iterations: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proration_behavior: Option<SubscriptionProrationBehavior>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_date: Option<Scheduled>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<UpdateSubscriptionSchedulePhasesTransferData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trial: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trial_end: Option<Scheduled>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AddInvoiceItems {
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_data: Option<InvoiceItemPriceData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_rates: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSubscriptionSchedulePhasesItems {
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<CreateSubscriptionSchedulePhasesItemsBillingThresholds>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_data: Option<CreateSubscriptionSchedulePhasesItemsPriceData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_rates: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSubscriptionSchedulePhasesTransferData {
#[serde(skip_serializing_if = "Option::is_none")]
pub amount_percent: Option<f64>,
pub destination: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleBillingThresholds {
#[serde(skip_serializing_if = "Option::is_none")]
pub amount_gte: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reset_billing_cycle_anchor: Option<bool>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleDefaultSettingsParamsTransferData {
#[serde(skip_serializing_if = "Option::is_none")]
pub amount_percent: Option<f64>,
pub destination: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SubscriptionScheduleInvoiceSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub days_until_due: Option<u32>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSubscriptionSchedulePhasesItems {
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_thresholds: Option<UpdateSubscriptionSchedulePhasesItemsBillingThresholds>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_data: Option<UpdateSubscriptionSchedulePhasesItemsPriceData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_rates: Option<Vec<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSubscriptionSchedulePhasesTransferData {
#[serde(skip_serializing_if = "Option::is_none")]
pub amount_percent: Option<f64>,
pub destination: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSubscriptionSchedulePhasesItemsBillingThresholds {
pub usage_gte: i64,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSubscriptionSchedulePhasesItemsPriceData {
pub currency: Currency,
pub product: String,
pub recurring: CreateSubscriptionSchedulePhasesItemsPriceDataRecurring,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_amount: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_amount_decimal: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct InvoiceItemPriceData {
pub currency: Currency,
pub product: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_amount: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_amount_decimal: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSubscriptionSchedulePhasesItemsBillingThresholds {
pub usage_gte: i64,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSubscriptionSchedulePhasesItemsPriceData {
pub currency: Currency,
pub product: String,
pub recurring: UpdateSubscriptionSchedulePhasesItemsPriceDataRecurring,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_amount: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit_amount_decimal: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSubscriptionSchedulePhasesItemsPriceDataRecurring {
pub interval: CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_count: Option<u64>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSubscriptionSchedulePhasesItemsPriceDataRecurring {
pub interval: UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_count: Option<u64>,
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSubscriptionSchedulePhasesBillingCycleAnchor {
Automatic,
PhaseStart,
}
impl CreateSubscriptionSchedulePhasesBillingCycleAnchor {
pub fn as_str(self) -> &'static str {
match self {
CreateSubscriptionSchedulePhasesBillingCycleAnchor::Automatic => "automatic",
CreateSubscriptionSchedulePhasesBillingCycleAnchor::PhaseStart => "phase_start",
}
}
}
impl AsRef<str> for CreateSubscriptionSchedulePhasesBillingCycleAnchor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CreateSubscriptionSchedulePhasesBillingCycleAnchor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
Day,
Month,
Week,
Year,
}
impl CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
pub fn as_str(self) -> &'static str {
match self {
CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Day => "day",
CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Month => "month",
CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Week => "week",
CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Year => "year",
}
}
}
impl AsRef<str> for CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CreateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionProrationBehavior {
AlwaysInvoice,
CreateProrations,
None,
}
impl SubscriptionProrationBehavior {
pub fn as_str(self) -> &'static str {
match self {
SubscriptionProrationBehavior::AlwaysInvoice => "always_invoice",
SubscriptionProrationBehavior::CreateProrations => "create_prorations",
SubscriptionProrationBehavior::None => "none",
}
}
}
impl AsRef<str> for SubscriptionProrationBehavior {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SubscriptionProrationBehavior {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionScheduleDefaultSettingsBillingCycleAnchor {
Automatic,
PhaseStart,
}
impl SubscriptionScheduleDefaultSettingsBillingCycleAnchor {
pub fn as_str(self) -> &'static str {
match self {
SubscriptionScheduleDefaultSettingsBillingCycleAnchor::Automatic => "automatic",
SubscriptionScheduleDefaultSettingsBillingCycleAnchor::PhaseStart => "phase_start",
}
}
}
impl AsRef<str> for SubscriptionScheduleDefaultSettingsBillingCycleAnchor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SubscriptionScheduleDefaultSettingsBillingCycleAnchor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionScheduleDefaultSettingsCollectionMethod {
ChargeAutomatically,
SendInvoice,
}
impl SubscriptionScheduleDefaultSettingsCollectionMethod {
pub fn as_str(self) -> &'static str {
match self {
SubscriptionScheduleDefaultSettingsCollectionMethod::ChargeAutomatically => {
"charge_automatically"
}
SubscriptionScheduleDefaultSettingsCollectionMethod::SendInvoice => "send_invoice",
}
}
}
impl AsRef<str> for SubscriptionScheduleDefaultSettingsCollectionMethod {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SubscriptionScheduleDefaultSettingsCollectionMethod {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionScheduleDefaultSettingsParamsBillingCycleAnchor {
Automatic,
PhaseStart,
}
impl SubscriptionScheduleDefaultSettingsParamsBillingCycleAnchor {
pub fn as_str(self) -> &'static str {
match self {
SubscriptionScheduleDefaultSettingsParamsBillingCycleAnchor::Automatic => "automatic",
SubscriptionScheduleDefaultSettingsParamsBillingCycleAnchor::PhaseStart => {
"phase_start"
}
}
}
}
impl AsRef<str> for SubscriptionScheduleDefaultSettingsParamsBillingCycleAnchor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SubscriptionScheduleDefaultSettingsParamsBillingCycleAnchor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionScheduleEndBehavior {
Cancel,
None,
Release,
Renew,
}
impl SubscriptionScheduleEndBehavior {
pub fn as_str(self) -> &'static str {
match self {
SubscriptionScheduleEndBehavior::Cancel => "cancel",
SubscriptionScheduleEndBehavior::None => "none",
SubscriptionScheduleEndBehavior::Release => "release",
SubscriptionScheduleEndBehavior::Renew => "renew",
}
}
}
impl AsRef<str> for SubscriptionScheduleEndBehavior {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SubscriptionScheduleEndBehavior {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionSchedulePhaseConfigurationBillingCycleAnchor {
Automatic,
PhaseStart,
}
impl SubscriptionSchedulePhaseConfigurationBillingCycleAnchor {
pub fn as_str(self) -> &'static str {
match self {
SubscriptionSchedulePhaseConfigurationBillingCycleAnchor::Automatic => "automatic",
SubscriptionSchedulePhaseConfigurationBillingCycleAnchor::PhaseStart => "phase_start",
}
}
}
impl AsRef<str> for SubscriptionSchedulePhaseConfigurationBillingCycleAnchor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SubscriptionSchedulePhaseConfigurationBillingCycleAnchor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionScheduleStatus {
Active,
Canceled,
Completed,
NotStarted,
Released,
}
impl SubscriptionScheduleStatus {
pub fn as_str(self) -> &'static str {
match self {
SubscriptionScheduleStatus::Active => "active",
SubscriptionScheduleStatus::Canceled => "canceled",
SubscriptionScheduleStatus::Completed => "completed",
SubscriptionScheduleStatus::NotStarted => "not_started",
SubscriptionScheduleStatus::Released => "released",
}
}
}
impl AsRef<str> for SubscriptionScheduleStatus {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SubscriptionScheduleStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum UpdateSubscriptionSchedulePhasesBillingCycleAnchor {
Automatic,
PhaseStart,
}
impl UpdateSubscriptionSchedulePhasesBillingCycleAnchor {
pub fn as_str(self) -> &'static str {
match self {
UpdateSubscriptionSchedulePhasesBillingCycleAnchor::Automatic => "automatic",
UpdateSubscriptionSchedulePhasesBillingCycleAnchor::PhaseStart => "phase_start",
}
}
}
impl AsRef<str> for UpdateSubscriptionSchedulePhasesBillingCycleAnchor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for UpdateSubscriptionSchedulePhasesBillingCycleAnchor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
Day,
Month,
Week,
Year,
}
impl UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
pub fn as_str(self) -> &'static str {
match self {
UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Day => "day",
UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Month => "month",
UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Week => "week",
UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval::Year => "year",
}
}
}
impl AsRef<str> for UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for UpdateSubscriptionSchedulePhasesItemsPriceDataRecurringInterval {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}