use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct DeploymentRestrictionsUpdates {
#[serde(rename = "allowlist_enabled", skip_serializing_if = "Option::is_none")]
pub allowlist_enabled: Option<bool>,
#[serde(rename = "blocklist_enabled", skip_serializing_if = "Option::is_none")]
pub blocklist_enabled: Option<bool>,
#[serde(rename = "block_subaddresses", skip_serializing_if = "Option::is_none")]
pub block_subaddresses: Option<bool>,
#[serde(
rename = "block_disposable_emails",
skip_serializing_if = "Option::is_none"
)]
pub block_disposable_emails: Option<bool>,
#[serde(rename = "block_voip_numbers", skip_serializing_if = "Option::is_none")]
pub block_voip_numbers: Option<bool>,
#[serde(
rename = "country_restrictions",
skip_serializing_if = "Option::is_none"
)]
pub country_restrictions: Option<CountryRestrictions>,
#[serde(rename = "banned_keywords", skip_serializing_if = "Option::is_none")]
pub banned_keywords: Option<Vec<String>>,
#[serde(
rename = "allowlisted_resources",
skip_serializing_if = "Option::is_none"
)]
pub allowlisted_resources: Option<Vec<String>>,
#[serde(
rename = "blocklisted_resources",
skip_serializing_if = "Option::is_none"
)]
pub blocklisted_resources: Option<Vec<String>>,
#[serde(rename = "sign_up_mode", skip_serializing_if = "Option::is_none")]
pub sign_up_mode: Option<DeploymentRestrictionsSignUpMode>,
#[serde(
rename = "waitlist_collect_names",
skip_serializing_if = "Option::is_none"
)]
pub waitlist_collect_names: Option<bool>,
#[serde(
rename = "multi_session_support",
skip_serializing_if = "Option::is_none"
)]
pub multi_session_support: Option<MultiSessionSupport>,
#[serde(
rename = "session_token_lifetime",
skip_serializing_if = "Option::is_none"
)]
pub session_token_lifetime: Option<i64>,
#[serde(
rename = "session_validity_period",
skip_serializing_if = "Option::is_none"
)]
pub session_validity_period: Option<i64>,
#[serde(
rename = "session_inactive_timeout",
skip_serializing_if = "Option::is_none"
)]
pub session_inactive_timeout: Option<i64>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CountryRestrictions {
pub enabled: bool,
#[serde(default)]
pub country_codes: Vec<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub struct MultiSessionSupport {
pub enabled: bool,
pub max_accounts_per_session: i64,
pub max_sessions_per_account: i64,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DeploymentRestrictionsSignUpMode {
Public,
Restricted,
Waitlist,
}
impl Default for DeploymentRestrictionsSignUpMode {
fn default() -> Self {
DeploymentRestrictionsSignUpMode::Public
}
}
impl DeploymentRestrictionsUpdates {
pub fn new() -> DeploymentRestrictionsUpdates {
DeploymentRestrictionsUpdates::default()
}
}