use crate::models;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct AccountService {
#[serde(rename = "@odata.context")]
#[serde(skip_deserializing)]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub odata_context: Option<models::odata_v4::Context>,
#[serde(rename = "@odata.etag")]
#[serde(skip_deserializing)]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub odata_etag: Option<models::odata_v4::Etag>,
#[serde(rename = "@odata.id")]
#[serde(skip_deserializing)]
pub odata_id: models::odata_v4::Id,
#[serde(rename = "@odata.type")]
#[serde(skip_deserializing)]
#[derivative(Default(value = "models::odata_v4::Type(\"#AccountService.v1_12_0.AccountService\".to_string())"))]
pub odata_type: models::odata_v4::Type,
#[serde(rename = "AccountLockoutCounterResetAfter")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub account_lockout_counter_reset_after: Option<i64>,
#[serde(rename = "AccountLockoutCounterResetEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub account_lockout_counter_reset_enabled: Option<bool>,
#[serde(rename = "AccountLockoutDuration")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub account_lockout_duration: Option<i64>,
#[serde(rename = "AccountLockoutThreshold")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub account_lockout_threshold: Option<i64>,
#[serde(rename = "Accounts")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub accounts: Option<models::odata_v4::IdRef>,
#[serde(rename = "Actions")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub actions: Option<models::account_service::v1_12_0::Actions>,
#[serde(rename = "ActiveDirectory")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub active_directory: Option<models::account_service::v1_12_0::ExternalAccountProvider>,
#[serde(rename = "AdditionalExternalAccountProviders")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub additional_external_account_providers: Option<models::odata_v4::IdRef>,
#[serde(rename = "AuthFailureLoggingThreshold")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub auth_failure_logging_threshold: Option<i64>,
#[serde(rename = "Description")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<models::resource::Description>,
#[serde(rename = "Id")]
#[serde(skip_deserializing)]
pub id: models::resource::Id,
#[serde(rename = "LDAP")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ldap: Option<models::account_service::v1_12_0::ExternalAccountProvider>,
#[serde(rename = "LocalAccountAuth")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub local_account_auth: Option<models::account_service::v1_12_0::LocalAccountAuth>,
#[serde(rename = "MaxPasswordLength")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_password_length: Option<i64>,
#[serde(rename = "MinPasswordLength")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min_password_length: Option<i64>,
#[serde(rename = "MultiFactorAuth")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub multi_factor_auth: Option<models::account_service::v1_12_0::MultiFactorAuth>,
#[serde(rename = "Name")]
#[serde(skip_deserializing)]
pub name: models::resource::Name,
#[serde(rename = "OAuth2")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub o_auth_2: Option<models::account_service::v1_12_0::ExternalAccountProvider>,
#[serde(rename = "Oem")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub oem: Option<models::resource::Oem>,
#[serde(rename = "PasswordExpirationDays")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub password_expiration_days: Option<i64>,
#[serde(rename = "PrivilegeMap")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub privilege_map: Option<models::odata_v4::IdRef>,
#[serde(rename = "RestrictedOemPrivileges")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub restricted_oem_privileges: Option<Vec<String>>,
#[serde(rename = "RestrictedPrivileges")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub restricted_privileges: Option<Vec<models::privileges::PrivilegeType>>,
#[serde(rename = "Roles")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub roles: Option<models::odata_v4::IdRef>,
#[serde(rename = "ServiceEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub service_enabled: Option<bool>,
#[serde(rename = "Status")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<models::resource::Status>,
#[serde(rename = "SupportedAccountTypes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supported_account_types: Option<Vec<models::manager_account::AccountTypes>>,
#[serde(rename = "SupportedOEMAccountTypes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supported_oem_account_types: Option<Vec<String>>,
#[serde(rename = "TACACSplus")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tacac_splus: Option<models::account_service::v1_12_0::ExternalAccountProvider>,
}
impl crate::Metadata<'static> for AccountService {
const JSON_SCHEMA: &'static str = "AccountService.v1_12_0.json";
}