enbbox 1.0.1

Notification infrastructure API — open-source alternative to Novu/Courier
Documentation
/*
 * enbbox API
 *
 * Notification infrastructure API — open-source alternative to Novu/Courier
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 * Generated by: https://openapi-generator.tech
 */

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

/// Usage : Detailed usage data for the current billing period.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Usage {
    /// Events consumed in the current billing period.
    #[serde(rename = "events_current")]
    pub events_current: i64,
    /// Events included in the plan (null = unlimited).
    #[serde(rename = "events_included", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub events_included: Option<Option<i64>>,
    /// Overage event count beyond the included quota.
    #[serde(rename = "events_overage")]
    pub events_overage: i64,
    /// Total overage cost in dollars for this period.
    #[serde(rename = "overage_cost")]
    pub overage_cost: f64,
    /// Cost per 1,000 overage events in dollars.
    #[serde(rename = "overage_rate")]
    pub overage_rate: f64,
    /// Billing period end (ISO 8601).
    #[serde(rename = "period_end", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub period_end: Option<Option<String>>,
    /// Billing period start (ISO 8601).
    #[serde(rename = "period_start", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub period_start: Option<Option<String>>,
    /// Plan the usage applies to.
    #[serde(rename = "plan")]
    pub plan: models::Plan,
}

impl Usage {
    /// Detailed usage data for the current billing period.
    pub fn new(events_current: i64, events_overage: i64, overage_cost: f64, overage_rate: f64, plan: models::Plan) -> Usage {
        Usage {
            events_current,
            events_included: None,
            events_overage,
            overage_cost,
            overage_rate,
            period_end: None,
            period_start: None,
            plan,
        }
    }
}