#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct PlanResponseModel {
    #[serde(rename = "object", skip_serializing_if = "Option::is_none")]
    pub object: Option<String>,
    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
    pub r#type: Option<crate::models::PlanType>,
    #[serde(rename = "product", skip_serializing_if = "Option::is_none")]
    pub product: Option<crate::models::ProductType>,
    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "isAnnual", skip_serializing_if = "Option::is_none")]
    pub is_annual: Option<bool>,
    #[serde(
        rename = "nameLocalizationKey",
        skip_serializing_if = "Option::is_none"
    )]
    pub name_localization_key: Option<String>,
    #[serde(
        rename = "descriptionLocalizationKey",
        skip_serializing_if = "Option::is_none"
    )]
    pub description_localization_key: Option<String>,
    #[serde(
        rename = "canBeUsedByBusiness",
        skip_serializing_if = "Option::is_none"
    )]
    pub can_be_used_by_business: Option<bool>,
    #[serde(rename = "baseSeats", skip_serializing_if = "Option::is_none")]
    pub base_seats: Option<i32>,
    #[serde(rename = "baseStorageGb", skip_serializing_if = "Option::is_none")]
    pub base_storage_gb: Option<i32>,
    #[serde(rename = "maxCollections", skip_serializing_if = "Option::is_none")]
    pub max_collections: Option<i32>,
    #[serde(rename = "maxUsers", skip_serializing_if = "Option::is_none")]
    pub max_users: Option<i32>,
    #[serde(
        rename = "hasAdditionalSeatsOption",
        skip_serializing_if = "Option::is_none"
    )]
    pub has_additional_seats_option: Option<bool>,
    #[serde(rename = "maxAdditionalSeats", skip_serializing_if = "Option::is_none")]
    pub max_additional_seats: Option<i32>,
    #[serde(
        rename = "hasAdditionalStorageOption",
        skip_serializing_if = "Option::is_none"
    )]
    pub has_additional_storage_option: Option<bool>,
    #[serde(
        rename = "maxAdditionalStorage",
        skip_serializing_if = "Option::is_none"
    )]
    pub max_additional_storage: Option<i32>,
    #[serde(
        rename = "hasPremiumAccessOption",
        skip_serializing_if = "Option::is_none"
    )]
    pub has_premium_access_option: Option<bool>,
    #[serde(rename = "trialPeriodDays", skip_serializing_if = "Option::is_none")]
    pub trial_period_days: Option<i32>,
    #[serde(rename = "hasSelfHost", skip_serializing_if = "Option::is_none")]
    pub has_self_host: Option<bool>,
    #[serde(rename = "hasPolicies", skip_serializing_if = "Option::is_none")]
    pub has_policies: Option<bool>,
    #[serde(rename = "hasGroups", skip_serializing_if = "Option::is_none")]
    pub has_groups: Option<bool>,
    #[serde(rename = "hasDirectory", skip_serializing_if = "Option::is_none")]
    pub has_directory: Option<bool>,
    #[serde(rename = "hasEvents", skip_serializing_if = "Option::is_none")]
    pub has_events: Option<bool>,
    #[serde(rename = "hasTotp", skip_serializing_if = "Option::is_none")]
    pub has_totp: Option<bool>,
    #[serde(rename = "has2fa", skip_serializing_if = "Option::is_none")]
    pub has2fa: Option<bool>,
    #[serde(rename = "hasApi", skip_serializing_if = "Option::is_none")]
    pub has_api: Option<bool>,
    #[serde(rename = "hasSso", skip_serializing_if = "Option::is_none")]
    pub has_sso: Option<bool>,
    #[serde(rename = "hasResetPassword", skip_serializing_if = "Option::is_none")]
    pub has_reset_password: Option<bool>,
    #[serde(rename = "usersGetPremium", skip_serializing_if = "Option::is_none")]
    pub users_get_premium: Option<bool>,
    #[serde(rename = "upgradeSortOrder", skip_serializing_if = "Option::is_none")]
    pub upgrade_sort_order: Option<i32>,
    #[serde(rename = "displaySortOrder", skip_serializing_if = "Option::is_none")]
    pub display_sort_order: Option<i32>,
    #[serde(rename = "legacyYear", skip_serializing_if = "Option::is_none")]
    pub legacy_year: Option<i32>,
    #[serde(rename = "disabled", skip_serializing_if = "Option::is_none")]
    pub disabled: Option<bool>,
    #[serde(rename = "stripePlanId", skip_serializing_if = "Option::is_none")]
    pub stripe_plan_id: Option<String>,
    #[serde(rename = "stripeSeatPlanId", skip_serializing_if = "Option::is_none")]
    pub stripe_seat_plan_id: Option<String>,
    #[serde(
        rename = "stripeStoragePlanId",
        skip_serializing_if = "Option::is_none"
    )]
    pub stripe_storage_plan_id: Option<String>,
    #[serde(
        rename = "stripePremiumAccessPlanId",
        skip_serializing_if = "Option::is_none"
    )]
    pub stripe_premium_access_plan_id: Option<String>,
    #[serde(rename = "basePrice", skip_serializing_if = "Option::is_none")]
    pub base_price: Option<f64>,
    #[serde(rename = "seatPrice", skip_serializing_if = "Option::is_none")]
    pub seat_price: Option<f64>,
    #[serde(
        rename = "additionalStoragePricePerGb",
        skip_serializing_if = "Option::is_none"
    )]
    pub additional_storage_price_per_gb: Option<f64>,
    #[serde(
        rename = "premiumAccessOptionPrice",
        skip_serializing_if = "Option::is_none"
    )]
    pub premium_access_option_price: Option<f64>,
    #[serde(
        rename = "stripeServiceAccountPlanId",
        skip_serializing_if = "Option::is_none"
    )]
    pub stripe_service_account_plan_id: Option<String>,
    #[serde(
        rename = "additionalPricePerServiceAccount",
        skip_serializing_if = "Option::is_none"
    )]
    pub additional_price_per_service_account: Option<f64>,
    #[serde(rename = "baseServiceAccount", skip_serializing_if = "Option::is_none")]
    pub base_service_account: Option<i32>,
    #[serde(rename = "maxServiceAccounts", skip_serializing_if = "Option::is_none")]
    pub max_service_accounts: Option<i32>,
    #[serde(
        rename = "maxAdditionalServiceAccounts",
        skip_serializing_if = "Option::is_none"
    )]
    pub max_additional_service_accounts: Option<i32>,
    #[serde(
        rename = "hasAdditionalServiceAccountOption",
        skip_serializing_if = "Option::is_none"
    )]
    pub has_additional_service_account_option: Option<bool>,
    #[serde(rename = "maxProjects", skip_serializing_if = "Option::is_none")]
    pub max_projects: Option<i32>,
    #[serde(rename = "bitwardenProduct", skip_serializing_if = "Option::is_none")]
    pub bitwarden_product: Option<crate::models::BitwardenProductType>,
}
impl PlanResponseModel {
    pub fn new() -> PlanResponseModel {
        PlanResponseModel {
            object: None,
            r#type: None,
            product: None,
            name: None,
            is_annual: None,
            name_localization_key: None,
            description_localization_key: None,
            can_be_used_by_business: None,
            base_seats: None,
            base_storage_gb: None,
            max_collections: None,
            max_users: None,
            has_additional_seats_option: None,
            max_additional_seats: None,
            has_additional_storage_option: None,
            max_additional_storage: None,
            has_premium_access_option: None,
            trial_period_days: None,
            has_self_host: None,
            has_policies: None,
            has_groups: None,
            has_directory: None,
            has_events: None,
            has_totp: None,
            has2fa: None,
            has_api: None,
            has_sso: None,
            has_reset_password: None,
            users_get_premium: None,
            upgrade_sort_order: None,
            display_sort_order: None,
            legacy_year: None,
            disabled: None,
            stripe_plan_id: None,
            stripe_seat_plan_id: None,
            stripe_storage_plan_id: None,
            stripe_premium_access_plan_id: None,
            base_price: None,
            seat_price: None,
            additional_storage_price_per_gb: None,
            premium_access_option_price: None,
            stripe_service_account_plan_id: None,
            additional_price_per_service_account: None,
            base_service_account: None,
            max_service_accounts: None,
            max_additional_service_accounts: None,
            has_additional_service_account_option: None,
            max_projects: None,
            bitwarden_product: None,
        }
    }
}