dodopayments_rust 2.1.0

Rust SDK for Dodo Payments API
Documentation
/*
 * public
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.87.0
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// CreditEntitlementMappingResponse : Response struct for credit entitlement mapping
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreditEntitlementMappingResponse {
    /// ID of the credit entitlement
    #[serde(rename = "credit_entitlement_id")]
    pub credit_entitlement_id: String,
    /// Name of the credit entitlement
    #[serde(rename = "credit_entitlement_name")]
    pub credit_entitlement_name: String,
    /// Unit label for the credit entitlement
    #[serde(rename = "credit_entitlement_unit")]
    pub credit_entitlement_unit: String,
    /// Number of credits granted
    #[serde(rename = "credits_amount")]
    pub credits_amount: String,
    /// Currency
    #[serde(rename = "currency", skip_serializing_if = "Option::is_none")]
    pub currency: Option<models::Currency>,
    /// Days until credits expire
    #[serde(rename = "expires_after_days", skip_serializing_if = "Option::is_none")]
    pub expires_after_days: Option<i32>,
    /// Unique ID of this mapping
    #[serde(rename = "id")]
    pub id: uuid::Uuid,
    /// Low balance threshold percentage
    #[serde(rename = "low_balance_threshold_percent", skip_serializing_if = "Option::is_none")]
    pub low_balance_threshold_percent: Option<i32>,
    /// Maximum rollover cycles
    #[serde(rename = "max_rollover_count", skip_serializing_if = "Option::is_none")]
    pub max_rollover_count: Option<i32>,
    /// Controls how overage is handled at billing cycle end.
    #[serde(rename = "overage_behavior")]
    pub overage_behavior: models::CbbOverageBehavior,
    /// Whether overage is enabled
    #[serde(rename = "overage_enabled")]
    pub overage_enabled: bool,
    /// Overage limit
    #[serde(rename = "overage_limit", skip_serializing_if = "Option::is_none")]
    pub overage_limit: Option<String>,
    /// Price per unit
    #[serde(rename = "price_per_unit", skip_serializing_if = "Option::is_none")]
    pub price_per_unit: Option<String>,
    /// Proration behavior for credit grants during plan changes
    #[serde(rename = "proration_behavior")]
    pub proration_behavior: models::CbbProrationBehavior,
    /// Whether rollover is enabled
    #[serde(rename = "rollover_enabled")]
    pub rollover_enabled: bool,
    /// Rollover percentage
    #[serde(rename = "rollover_percentage", skip_serializing_if = "Option::is_none")]
    pub rollover_percentage: Option<i32>,
    /// Rollover timeframe count
    #[serde(rename = "rollover_timeframe_count", skip_serializing_if = "Option::is_none")]
    pub rollover_timeframe_count: Option<i32>,
    /// Rollover timeframe interval
    #[serde(rename = "rollover_timeframe_interval", skip_serializing_if = "Option::is_none")]
    pub rollover_timeframe_interval: Option<models::TimeInterval>,
    /// Trial credits
    #[serde(rename = "trial_credits", skip_serializing_if = "Option::is_none")]
    pub trial_credits: Option<String>,
    /// Whether trial credits expire after trial
    #[serde(rename = "trial_credits_expire_after_trial")]
    pub trial_credits_expire_after_trial: bool,
}

impl CreditEntitlementMappingResponse {
    /// Response struct for credit entitlement mapping
    pub fn new(credit_entitlement_id: String, credit_entitlement_name: String, credit_entitlement_unit: String, credits_amount: String, id: uuid::Uuid, overage_behavior: models::CbbOverageBehavior, overage_enabled: bool, proration_behavior: models::CbbProrationBehavior, rollover_enabled: bool, trial_credits_expire_after_trial: bool) -> CreditEntitlementMappingResponse {
        CreditEntitlementMappingResponse {
            credit_entitlement_id,
            credit_entitlement_name,
            credit_entitlement_unit,
            credits_amount,
            currency: None,
            expires_after_days: None,
            id,
            low_balance_threshold_percent: None,
            max_rollover_count: None,
            overage_behavior,
            overage_enabled,
            overage_limit: None,
            price_per_unit: None,
            proration_behavior,
            rollover_enabled,
            rollover_percentage: None,
            rollover_timeframe_count: None,
            rollover_timeframe_interval: None,
            trial_credits: None,
            trial_credits_expire_after_trial,
        }
    }
}