/*
 * Orvanta API
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.2.0
 * Contact: contact@orvanta.cloud
 * Generated by: https://openapi-generator.tech
 */

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

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct GetEntitlements200Response {
    #[serde(rename = "tier")]
    pub tier: Tier,
    #[serde(rename = "edition")]
    pub edition: Edition,
    #[serde(rename = "expires_at", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub expires_at: Option<Option<String>>,
    #[serde(rename = "limits", skip_serializing_if = "Option::is_none")]
    pub limits: Option<serde_json::Value>,
}

impl GetEntitlements200Response {
    pub fn new(tier: Tier, edition: Edition) -> GetEntitlements200Response {
        GetEntitlements200Response {
            tier,
            edition,
            expires_at: None,
            limits: None,
        }
    }
}
/// 
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Tier {
    #[serde(rename = "trial")]
    Trial,
    #[serde(rename = "teams")]
    Teams,
    #[serde(rename = "enterprise")]
    Enterprise,
}

impl Default for Tier {
    fn default() -> Tier {
        Self::Trial
    }
}
/// 
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Edition {
    #[serde(rename = "ote")]
    Ote,
    #[serde(rename = "oee")]
    Oee,
}

impl Default for Edition {
    fn default() -> Edition {
        Self::Ote
    }
}

