use crate::models;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct ExternalAccountProvider {
#[serde(rename = "AccountProviderType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub account_provider_type: Option<models::account_service::v1_12_0::AccountProviderTypes>,
#[serde(rename = "Authentication")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub authentication: Option<models::account_service::v1_12_0::Authentication>,
#[serde(rename = "Certificates")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub certificates: Option<models::odata_v4::IdRef>,
#[serde(rename = "LDAPService")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ldap_service: Option<models::account_service::v1_12_0::LDAPService>,
#[serde(rename = "OAuth2Service")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub o_auth_2s: Option<models::account_service::v1_12_0::OAuth2S>,
#[serde(rename = "PasswordSet")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub password_set: Option<bool>,
#[serde(rename = "Priority")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub priority: Option<i64>,
#[serde(rename = "RemoteRoleMapping")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remote_role_mapping: Option<Vec<models::account_service::v1_12_0::RoleMapping>>,
#[serde(rename = "ServiceAddresses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub service_addresses: Option<Vec<String>>,
#[serde(rename = "ServiceEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub service_enabled: Option<bool>,
#[serde(rename = "TACACSplusService")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tacac_splus_service: Option<models::account_service::v1_12_0::TACACSplusService>,
}
impl crate::Metadata<'static> for ExternalAccountProvider {
const JSON_SCHEMA: &'static str = "AccountService.v1_12_0.json";
}