#![doc = "generated by AutoRust 0.1.0"]
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AccessControlRecord {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: AccessControlRecordProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AccessControlRecordList {
    pub value: Vec<AccessControlRecord>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AccessControlRecordProperties {
    #[serde(rename = "initiatorName")]
    pub initiator_name: String,
    #[serde(rename = "volumeCount", skip_serializing)]
    pub volume_count: Option<i32>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AcsConfiguration {
    pub namespace: String,
    pub realm: String,
    #[serde(rename = "serviceUrl")]
    pub service_url: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Alert {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: AlertProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertErrorDetails {
    #[serde(rename = "errorCode", default, skip_serializing_if = "Option::is_none")]
    pub error_code: Option<String>,
    #[serde(rename = "errorMessage", default, skip_serializing_if = "Option::is_none")]
    pub error_message: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub occurences: Option<i32>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertFilter {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub status: Option<alert_filter::Status>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub severity: Option<alert_filter::Severity>,
    #[serde(rename = "sourceType", default, skip_serializing_if = "Option::is_none")]
    pub source_type: Option<alert_filter::SourceType>,
    #[serde(rename = "sourceName", default, skip_serializing_if = "Option::is_none")]
    pub source_name: Option<String>,
    #[serde(rename = "appearedOnTime", default, skip_serializing_if = "Option::is_none")]
    pub appeared_on_time: Option<String>,
}
pub mod alert_filter {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Active,
        Cleared,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Severity {
        Informational,
        Warning,
        Critical,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SourceType {
        Resource,
        Device,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertList {
    pub value: Vec<Alert>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertNotificationProperties {
    #[serde(rename = "emailNotification")]
    pub email_notification: alert_notification_properties::EmailNotification,
    #[serde(rename = "alertNotificationCulture", default, skip_serializing_if = "Option::is_none")]
    pub alert_notification_culture: Option<String>,
    #[serde(rename = "notificationToServiceOwners", default, skip_serializing_if = "Option::is_none")]
    pub notification_to_service_owners: Option<alert_notification_properties::NotificationToServiceOwners>,
    #[serde(rename = "additionalRecipientEmailList", default, skip_serializing_if = "Vec::is_empty")]
    pub additional_recipient_email_list: Vec<String>,
}
pub mod alert_notification_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum EmailNotification {
        Enabled,
        Disabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum NotificationToServiceOwners {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertProperties {
    pub title: String,
    pub scope: alert_properties::Scope,
    #[serde(rename = "alertType")]
    pub alert_type: String,
    #[serde(rename = "appearedAtTime")]
    pub appeared_at_time: String,
    #[serde(rename = "appearedAtSourceTime")]
    pub appeared_at_source_time: String,
    #[serde(rename = "clearedAtTime", default, skip_serializing_if = "Option::is_none")]
    pub cleared_at_time: Option<String>,
    #[serde(rename = "clearedAtSourceTime", default, skip_serializing_if = "Option::is_none")]
    pub cleared_at_source_time: Option<String>,
    pub source: AlertSource,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub recommendation: Option<String>,
    #[serde(rename = "resolutionReason", default, skip_serializing_if = "Option::is_none")]
    pub resolution_reason: Option<String>,
    pub severity: alert_properties::Severity,
    pub status: alert_properties::Status,
    #[serde(rename = "errorDetails", default, skip_serializing_if = "Option::is_none")]
    pub error_details: Option<AlertErrorDetails>,
    #[serde(rename = "detailedInformation", default, skip_serializing_if = "Option::is_none")]
    pub detailed_information: Option<serde_json::Value>,
}
pub mod alert_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Scope {
        Resource,
        Device,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Severity {
        Informational,
        Warning,
        Critical,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Active,
        Cleared,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertSettings {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: AlertNotificationProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertSource {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "timeZone", default, skip_serializing_if = "Option::is_none")]
    pub time_zone: Option<String>,
    #[serde(rename = "alertSourceType", default, skip_serializing_if = "Option::is_none")]
    pub alert_source_type: Option<alert_source::AlertSourceType>,
}
pub mod alert_source {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AlertSourceType {
        Resource,
        Device,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AsymmetricEncryptedSecret {
    pub value: String,
    #[serde(rename = "encryptionCertThumbprint", default, skip_serializing_if = "Option::is_none")]
    pub encryption_cert_thumbprint: Option<String>,
    #[serde(rename = "encryptionAlgorithm")]
    pub encryption_algorithm: asymmetric_encrypted_secret::EncryptionAlgorithm,
}
pub mod asymmetric_encrypted_secret {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum EncryptionAlgorithm {
        None,
        #[serde(rename = "AES256")]
        Aes256,
        #[serde(rename = "RSAES_PKCS1_v_1_5")]
        RsaesPkcs1V15,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AvailableProviderOperation {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub display: Option<AvailableProviderOperationDisplay>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub origin: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<AvailableProviderOperationProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AvailableProviderOperationDisplay {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub provider: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub resource: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub operation: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AvailableProviderOperationList {
    pub value: Vec<AvailableProviderOperation>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AvailableProviderOperationProperties {}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Backup {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: BackupProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupElement {
    #[serde(rename = "elementId")]
    pub element_id: String,
    #[serde(rename = "elementName")]
    pub element_name: String,
    #[serde(rename = "elementType")]
    pub element_type: String,
    #[serde(rename = "sizeInBytes")]
    pub size_in_bytes: i64,
    #[serde(rename = "volumeName")]
    pub volume_name: String,
    #[serde(rename = "volumeContainerId")]
    pub volume_container_id: String,
    #[serde(rename = "volumeType", default, skip_serializing_if = "Option::is_none")]
    pub volume_type: Option<backup_element::VolumeType>,
}
pub mod backup_element {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum VolumeType {
        Tiered,
        Archival,
        LocallyPinned,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupFilter {
    #[serde(rename = "backupPolicyId", default, skip_serializing_if = "Option::is_none")]
    pub backup_policy_id: Option<String>,
    #[serde(rename = "volumeId", default, skip_serializing_if = "Option::is_none")]
    pub volume_id: Option<String>,
    #[serde(rename = "createdTime", default, skip_serializing_if = "Option::is_none")]
    pub created_time: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupList {
    pub value: Vec<Backup>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupPolicy {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: BackupPolicyProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupPolicyList {
    pub value: Vec<BackupPolicy>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupPolicyProperties {
    #[serde(rename = "volumeIds")]
    pub volume_ids: Vec<String>,
    #[serde(rename = "nextBackupTime", skip_serializing)]
    pub next_backup_time: Option<String>,
    #[serde(rename = "lastBackupTime", skip_serializing)]
    pub last_backup_time: Option<String>,
    #[serde(rename = "schedulesCount", skip_serializing)]
    pub schedules_count: Option<i64>,
    #[serde(rename = "scheduledBackupStatus", skip_serializing)]
    pub scheduled_backup_status: Option<backup_policy_properties::ScheduledBackupStatus>,
    #[serde(rename = "backupPolicyCreationType", skip_serializing)]
    pub backup_policy_creation_type: Option<backup_policy_properties::BackupPolicyCreationType>,
    #[serde(rename = "ssmHostName", skip_serializing)]
    pub ssm_host_name: Option<String>,
}
pub mod backup_policy_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ScheduledBackupStatus {
        Disabled,
        Enabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BackupPolicyCreationType {
        BySaaS,
        #[serde(rename = "BySSM")]
        BySsm,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupProperties {
    #[serde(rename = "createdOn")]
    pub created_on: String,
    #[serde(rename = "sizeInBytes")]
    pub size_in_bytes: i64,
    #[serde(rename = "backupType", default, skip_serializing_if = "Option::is_none")]
    pub backup_type: Option<backup_properties::BackupType>,
    #[serde(rename = "backupJobCreationType", default, skip_serializing_if = "Option::is_none")]
    pub backup_job_creation_type: Option<backup_properties::BackupJobCreationType>,
    #[serde(rename = "backupPolicyId", default, skip_serializing_if = "Option::is_none")]
    pub backup_policy_id: Option<String>,
    #[serde(rename = "ssmHostName", default, skip_serializing_if = "Option::is_none")]
    pub ssm_host_name: Option<String>,
    pub elements: Vec<BackupElement>,
}
pub mod backup_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BackupType {
        LocalSnapshot,
        CloudSnapshot,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BackupJobCreationType {
        Adhoc,
        BySchedule,
        #[serde(rename = "BySSM")]
        BySsm,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupSchedule {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: BackupScheduleProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupScheduleList {
    pub value: Vec<BackupSchedule>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BackupScheduleProperties {
    #[serde(rename = "scheduleRecurrence")]
    pub schedule_recurrence: ScheduleRecurrence,
    #[serde(rename = "backupType")]
    pub backup_type: backup_schedule_properties::BackupType,
    #[serde(rename = "retentionCount")]
    pub retention_count: i64,
    #[serde(rename = "startTime")]
    pub start_time: String,
    #[serde(rename = "scheduleStatus")]
    pub schedule_status: backup_schedule_properties::ScheduleStatus,
    #[serde(rename = "lastSuccessfulRun", skip_serializing)]
    pub last_successful_run: Option<String>,
}
pub mod backup_schedule_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BackupType {
        LocalSnapshot,
        CloudSnapshot,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ScheduleStatus {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BandwidthRateSettingProperties {
    pub schedules: Vec<BandwidthSchedule>,
    #[serde(rename = "volumeCount", skip_serializing)]
    pub volume_count: Option<i32>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BandwidthSchedule {
    pub start: Time,
    pub stop: Time,
    #[serde(rename = "rateInMbps")]
    pub rate_in_mbps: i32,
    pub days: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BandwidthSetting {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: BandwidthRateSettingProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BandwidthSettingList {
    pub value: Vec<BandwidthSetting>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BaseModel {
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub kind: Option<base_model::Kind>,
}
pub mod base_model {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Kind {
        Series8000,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ChapSettings {
    #[serde(rename = "initiatorUser", default, skip_serializing_if = "Option::is_none")]
    pub initiator_user: Option<String>,
    #[serde(rename = "initiatorSecret", default, skip_serializing_if = "Option::is_none")]
    pub initiator_secret: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "targetUser", default, skip_serializing_if = "Option::is_none")]
    pub target_user: Option<String>,
    #[serde(rename = "targetSecret", default, skip_serializing_if = "Option::is_none")]
    pub target_secret: Option<AsymmetricEncryptedSecret>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ClearAlertRequest {
    #[serde(rename = "resolutionMessage", default, skip_serializing_if = "Option::is_none")]
    pub resolution_message: Option<String>,
    pub alerts: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloneRequest {
    #[serde(rename = "targetDeviceId")]
    pub target_device_id: String,
    #[serde(rename = "targetVolumeName")]
    pub target_volume_name: String,
    #[serde(rename = "targetAccessControlRecordIds")]
    pub target_access_control_record_ids: Vec<String>,
    #[serde(rename = "backupElement")]
    pub backup_element: BackupElement,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudAppliance {
    pub name: String,
    #[serde(rename = "vnetName", default, skip_serializing_if = "Option::is_none")]
    pub vnet_name: Option<String>,
    #[serde(rename = "vnetRegion")]
    pub vnet_region: String,
    #[serde(rename = "isVnetDnsConfigured", default, skip_serializing_if = "Option::is_none")]
    pub is_vnet_dns_configured: Option<bool>,
    #[serde(rename = "isVnetExpressConfigured", default, skip_serializing_if = "Option::is_none")]
    pub is_vnet_express_configured: Option<bool>,
    #[serde(rename = "subnetName", default, skip_serializing_if = "Option::is_none")]
    pub subnet_name: Option<String>,
    #[serde(rename = "storageAccountName", default, skip_serializing_if = "Option::is_none")]
    pub storage_account_name: Option<String>,
    #[serde(rename = "storageAccountType", default, skip_serializing_if = "Option::is_none")]
    pub storage_account_type: Option<String>,
    #[serde(rename = "vmType", default, skip_serializing_if = "Option::is_none")]
    pub vm_type: Option<String>,
    #[serde(rename = "vmImageName", default, skip_serializing_if = "Option::is_none")]
    pub vm_image_name: Option<String>,
    #[serde(rename = "modelNumber", default, skip_serializing_if = "Option::is_none")]
    pub model_number: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudApplianceConfiguration {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: CloudApplianceConfigurationProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudApplianceConfigurationList {
    pub value: Vec<CloudApplianceConfiguration>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudApplianceConfigurationProperties {
    #[serde(rename = "modelNumber")]
    pub model_number: String,
    #[serde(rename = "cloudPlatform")]
    pub cloud_platform: String,
    #[serde(rename = "acsConfiguration")]
    pub acs_configuration: AcsConfiguration,
    #[serde(rename = "supportedStorageAccountTypes")]
    pub supported_storage_account_types: Vec<String>,
    #[serde(rename = "supportedRegions")]
    pub supported_regions: Vec<String>,
    #[serde(rename = "supportedVmTypes")]
    pub supported_vm_types: Vec<String>,
    #[serde(rename = "supportedVmImages")]
    pub supported_vm_images: Vec<VmImage>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudApplianceSettings {
    #[serde(rename = "serviceDataEncryptionKey", default, skip_serializing_if = "Option::is_none")]
    pub service_data_encryption_key: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "channelIntegrityKey", default, skip_serializing_if = "Option::is_none")]
    pub channel_integrity_key: Option<AsymmetricEncryptedSecret>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ConfigureDeviceRequest {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: ConfigureDeviceRequestProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ConfigureDeviceRequestProperties {
    #[serde(rename = "friendlyName")]
    pub friendly_name: String,
    #[serde(rename = "currentDeviceName")]
    pub current_device_name: String,
    #[serde(rename = "timeZone")]
    pub time_zone: String,
    #[serde(rename = "dnsSettings", default, skip_serializing_if = "Option::is_none")]
    pub dns_settings: Option<SecondaryDnsSettings>,
    #[serde(rename = "networkInterfaceData0Settings", default, skip_serializing_if = "Option::is_none")]
    pub network_interface_data0_settings: Option<NetworkInterfaceData0Settings>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ControllerPowerStateChangeRequest {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: ControllerPowerStateChangeRequestProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ControllerPowerStateChangeRequestProperties {
    pub action: controller_power_state_change_request_properties::Action,
    #[serde(rename = "activeController")]
    pub active_controller: controller_power_state_change_request_properties::ActiveController,
    #[serde(rename = "controller0State")]
    pub controller0_state: controller_power_state_change_request_properties::Controller0State,
    #[serde(rename = "controller1State")]
    pub controller1_state: controller_power_state_change_request_properties::Controller1State,
}
pub mod controller_power_state_change_request_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Action {
        Start,
        Restart,
        Shutdown,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ActiveController {
        Unknown,
        None,
        Controller0,
        Controller1,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Controller0State {
        NotPresent,
        PoweredOff,
        Ok,
        Recovering,
        Warning,
        Failure,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Controller1State {
        NotPresent,
        PoweredOff,
        Ok,
        Recovering,
        Warning,
        Failure,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataStatistics {
    #[serde(rename = "totalData", default, skip_serializing_if = "Option::is_none")]
    pub total_data: Option<i64>,
    #[serde(rename = "processedData", default, skip_serializing_if = "Option::is_none")]
    pub processed_data: Option<i64>,
    #[serde(rename = "cloudData", default, skip_serializing_if = "Option::is_none")]
    pub cloud_data: Option<i64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub throughput: Option<i64>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Device {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: DeviceProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DeviceDetails {
    #[serde(rename = "endpointCount", default, skip_serializing_if = "Option::is_none")]
    pub endpoint_count: Option<i32>,
    #[serde(rename = "volumeContainerCount", default, skip_serializing_if = "Option::is_none")]
    pub volume_container_count: Option<i32>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DeviceList {
    pub value: Vec<Device>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DevicePatch {
    pub properties: DevicePatchProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DevicePatchProperties {
    #[serde(rename = "deviceDescription", default, skip_serializing_if = "Option::is_none")]
    pub device_description: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DeviceProperties {
    #[serde(rename = "friendlyName")]
    pub friendly_name: String,
    #[serde(rename = "activationTime")]
    pub activation_time: String,
    pub culture: String,
    #[serde(rename = "deviceDescription")]
    pub device_description: String,
    #[serde(rename = "deviceSoftwareVersion")]
    pub device_software_version: String,
    #[serde(rename = "friendlySoftwareName", default, skip_serializing_if = "Option::is_none")]
    pub friendly_software_name: Option<String>,
    #[serde(rename = "deviceConfigurationStatus")]
    pub device_configuration_status: device_properties::DeviceConfigurationStatus,
    #[serde(rename = "targetIqn")]
    pub target_iqn: String,
    #[serde(rename = "modelDescription")]
    pub model_description: String,
    pub status: device_properties::Status,
    #[serde(rename = "serialNumber")]
    pub serial_number: String,
    #[serde(rename = "deviceType")]
    pub device_type: device_properties::DeviceType,
    #[serde(rename = "activeController")]
    pub active_controller: device_properties::ActiveController,
    #[serde(rename = "friendlySoftwareVersion")]
    pub friendly_software_version: String,
    #[serde(rename = "availableLocalStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub available_local_storage_in_bytes: Option<i64>,
    #[serde(rename = "availableTieredStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub available_tiered_storage_in_bytes: Option<i64>,
    #[serde(rename = "provisionedTieredStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub provisioned_tiered_storage_in_bytes: Option<i64>,
    #[serde(rename = "provisionedLocalStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub provisioned_local_storage_in_bytes: Option<i64>,
    #[serde(rename = "provisionedVolumeSizeInBytes", default, skip_serializing_if = "Option::is_none")]
    pub provisioned_volume_size_in_bytes: Option<i64>,
    #[serde(rename = "usingStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub using_storage_in_bytes: Option<i64>,
    #[serde(rename = "totalTieredStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub total_tiered_storage_in_bytes: Option<i64>,
    #[serde(rename = "agentGroupVersion", default, skip_serializing_if = "Option::is_none")]
    pub agent_group_version: Option<i32>,
    #[serde(rename = "networkInterfaceCardCount", default, skip_serializing_if = "Option::is_none")]
    pub network_interface_card_count: Option<i32>,
    #[serde(rename = "deviceLocation", default, skip_serializing_if = "Option::is_none")]
    pub device_location: Option<String>,
    #[serde(rename = "virtualMachineApiType", skip_serializing)]
    pub virtual_machine_api_type: Option<device_properties::VirtualMachineApiType>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub details: Option<DeviceDetails>,
    #[serde(rename = "rolloverDetails", default, skip_serializing_if = "Option::is_none")]
    pub rollover_details: Option<DeviceRolloverDetails>,
}
pub mod device_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DeviceConfigurationStatus {
        Complete,
        Pending,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Unknown,
        Online,
        Offline,
        Deactivated,
        RequiresAttention,
        MaintenanceMode,
        Creating,
        Provisioning,
        Deactivating,
        Deleted,
        ReadyToSetup,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DeviceType {
        Invalid,
        Series8000VirtualAppliance,
        Series8000PhysicalAppliance,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ActiveController {
        Unknown,
        None,
        Controller0,
        Controller1,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum VirtualMachineApiType {
        Classic,
        Arm,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DeviceRolloverDetails {
    #[serde(rename = "authorizationEligibility", default, skip_serializing_if = "Option::is_none")]
    pub authorization_eligibility: Option<device_rollover_details::AuthorizationEligibility>,
    #[serde(rename = "authorizationStatus", default, skip_serializing_if = "Option::is_none")]
    pub authorization_status: Option<device_rollover_details::AuthorizationStatus>,
    #[serde(rename = "inEligibilityReason", default, skip_serializing_if = "Option::is_none")]
    pub in_eligibility_reason: Option<device_rollover_details::InEligibilityReason>,
}
pub mod device_rollover_details {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AuthorizationEligibility {
        InEligible,
        Eligible,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AuthorizationStatus {
        Disabled,
        Enabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum InEligibilityReason {
        DeviceNotOnline,
        NotSupportedAppliance,
        RolloverPending,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DimensionFilter {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub values: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DnsSettings {
    #[serde(rename = "primaryDnsServer", default, skip_serializing_if = "Option::is_none")]
    pub primary_dns_server: Option<String>,
    #[serde(rename = "primaryIpv6DnsServer", default, skip_serializing_if = "Option::is_none")]
    pub primary_ipv6_dns_server: Option<String>,
    #[serde(rename = "secondaryDnsServers", default, skip_serializing_if = "Vec::is_empty")]
    pub secondary_dns_servers: Vec<String>,
    #[serde(rename = "secondaryIpv6DnsServers", default, skip_serializing_if = "Vec::is_empty")]
    pub secondary_ipv6_dns_servers: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EncryptionSettings {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: EncryptionSettingsProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EncryptionSettingsProperties {
    #[serde(rename = "encryptionStatus")]
    pub encryption_status: encryption_settings_properties::EncryptionStatus,
    #[serde(rename = "keyRolloverStatus")]
    pub key_rollover_status: encryption_settings_properties::KeyRolloverStatus,
}
pub mod encryption_settings_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum EncryptionStatus {
        Enabled,
        Disabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum KeyRolloverStatus {
        Required,
        NotRequired,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FailoverRequest {
    #[serde(rename = "targetDeviceId", default, skip_serializing_if = "Option::is_none")]
    pub target_device_id: Option<String>,
    #[serde(rename = "volumeContainers", default, skip_serializing_if = "Vec::is_empty")]
    pub volume_containers: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FailoverSet {
    #[serde(rename = "volumeContainers", default, skip_serializing_if = "Vec::is_empty")]
    pub volume_containers: Vec<VolumeContainerFailoverMetadata>,
    #[serde(rename = "eligibilityResult", default, skip_serializing_if = "Option::is_none")]
    pub eligibility_result: Option<FailoverSetEligibilityResult>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FailoverSetEligibilityResult {
    #[serde(rename = "isEligibleForFailover", default, skip_serializing_if = "Option::is_none")]
    pub is_eligible_for_failover: Option<bool>,
    #[serde(rename = "errorMessage", default, skip_serializing_if = "Option::is_none")]
    pub error_message: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FailoverSetsList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<FailoverSet>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FailoverTarget {
    #[serde(rename = "deviceId", default, skip_serializing_if = "Option::is_none")]
    pub device_id: Option<String>,
    #[serde(rename = "deviceStatus", default, skip_serializing_if = "Option::is_none")]
    pub device_status: Option<failover_target::DeviceStatus>,
    #[serde(rename = "modelDescription", default, skip_serializing_if = "Option::is_none")]
    pub model_description: Option<String>,
    #[serde(rename = "deviceSoftwareVersion", default, skip_serializing_if = "Option::is_none")]
    pub device_software_version: Option<String>,
    #[serde(rename = "dataContainersCount", default, skip_serializing_if = "Option::is_none")]
    pub data_containers_count: Option<i32>,
    #[serde(rename = "volumesCount", default, skip_serializing_if = "Option::is_none")]
    pub volumes_count: Option<i32>,
    #[serde(rename = "availableLocalStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub available_local_storage_in_bytes: Option<i64>,
    #[serde(rename = "availableTieredStorageInBytes", default, skip_serializing_if = "Option::is_none")]
    pub available_tiered_storage_in_bytes: Option<i64>,
    #[serde(rename = "deviceLocation", default, skip_serializing_if = "Option::is_none")]
    pub device_location: Option<String>,
    #[serde(rename = "friendlyDeviceSoftwareVersion", default, skip_serializing_if = "Option::is_none")]
    pub friendly_device_software_version: Option<String>,
    #[serde(rename = "eligibilityResult", default, skip_serializing_if = "Option::is_none")]
    pub eligibility_result: Option<TargetEligibilityResult>,
}
pub mod failover_target {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DeviceStatus {
        Unknown,
        Online,
        Offline,
        Deactivated,
        RequiresAttention,
        MaintenanceMode,
        Creating,
        Provisioning,
        Deactivating,
        Deleted,
        ReadyToSetup,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FailoverTargetsList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<FailoverTarget>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Feature {
    pub name: String,
    pub status: feature::Status,
}
pub mod feature {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        NotAvailable,
        UnsupportedDeviceVersion,
        Supported,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FeatureFilter {
    #[serde(rename = "deviceId", default, skip_serializing_if = "Option::is_none")]
    pub device_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FeatureList {
    pub value: Vec<Feature>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HardwareComponent {
    #[serde(rename = "componentId")]
    pub component_id: String,
    #[serde(rename = "displayName")]
    pub display_name: String,
    pub status: hardware_component::Status,
    #[serde(rename = "statusDisplayName")]
    pub status_display_name: String,
}
pub mod hardware_component {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Unknown,
        NotPresent,
        PoweredOff,
        Ok,
        Recovering,
        Warning,
        Failure,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HardwareComponentGroup {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: HardwareComponentGroupProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HardwareComponentGroupList {
    pub value: Vec<HardwareComponentGroup>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HardwareComponentGroupProperties {
    #[serde(rename = "displayName")]
    pub display_name: String,
    #[serde(rename = "lastUpdatedTime")]
    pub last_updated_time: String,
    pub components: Vec<HardwareComponent>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Job {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub status: job::Status,
    #[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
    pub start_time: Option<String>,
    #[serde(rename = "endTime", default, skip_serializing_if = "Option::is_none")]
    pub end_time: Option<String>,
    #[serde(rename = "percentComplete")]
    pub percent_complete: i32,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub error: Option<JobErrorDetails>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<JobProperties>,
}
pub mod job {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Running,
        Succeeded,
        Failed,
        Canceled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobErrorDetails {
    #[serde(rename = "errorDetails", default, skip_serializing_if = "Vec::is_empty")]
    pub error_details: Vec<JobErrorItem>,
    pub code: String,
    pub message: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobErrorItem {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub recommendations: Vec<String>,
    pub code: String,
    pub message: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobFilter {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub status: Option<String>,
    #[serde(rename = "jobType", default, skip_serializing_if = "Option::is_none")]
    pub job_type: Option<String>,
    #[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
    pub start_time: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobList {
    pub value: Vec<Job>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobProperties {
    #[serde(rename = "jobType")]
    pub job_type: job_properties::JobType,
    #[serde(rename = "dataStats", default, skip_serializing_if = "Option::is_none")]
    pub data_stats: Option<DataStatistics>,
    #[serde(rename = "entityLabel", default, skip_serializing_if = "Option::is_none")]
    pub entity_label: Option<String>,
    #[serde(rename = "entityType", default, skip_serializing_if = "Option::is_none")]
    pub entity_type: Option<String>,
    #[serde(rename = "jobStages", default, skip_serializing_if = "Vec::is_empty")]
    pub job_stages: Vec<JobStage>,
    #[serde(rename = "deviceId", default, skip_serializing_if = "Option::is_none")]
    pub device_id: Option<String>,
    #[serde(rename = "isCancellable", default, skip_serializing_if = "Option::is_none")]
    pub is_cancellable: Option<bool>,
    #[serde(rename = "backupType", default, skip_serializing_if = "Option::is_none")]
    pub backup_type: Option<job_properties::BackupType>,
    #[serde(rename = "sourceDeviceId", default, skip_serializing_if = "Option::is_none")]
    pub source_device_id: Option<String>,
    #[serde(rename = "backupPointInTime", default, skip_serializing_if = "Option::is_none")]
    pub backup_point_in_time: Option<String>,
}
pub mod job_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum JobType {
        ScheduledBackup,
        ManualBackup,
        RestoreBackup,
        CloneVolume,
        FailoverVolumeContainers,
        CreateLocallyPinnedVolume,
        ModifyVolume,
        InstallUpdates,
        SupportPackageLogs,
        CreateCloudAppliance,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BackupType {
        LocalSnapshot,
        CloudSnapshot,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobStage {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub message: Option<String>,
    #[serde(rename = "stageStatus")]
    pub stage_status: job_stage::StageStatus,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub detail: Option<String>,
    #[serde(rename = "errorCode", default, skip_serializing_if = "Option::is_none")]
    pub error_code: Option<String>,
}
pub mod job_stage {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum StageStatus {
        Running,
        Succeeded,
        Failed,
        Canceled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Key {
    #[serde(rename = "activationKey")]
    pub activation_key: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ListFailoverTargetsRequest {
    #[serde(rename = "volumeContainers", default, skip_serializing_if = "Vec::is_empty")]
    pub volume_containers: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Manager {
    #[serde(flatten)]
    pub resource: Resource,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<ManagerProperties>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub etag: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ManagerExtendedInfo {
    #[serde(flatten)]
    pub base_model: BaseModel,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<ManagerExtendedInfoProperties>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub etag: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ManagerExtendedInfoProperties {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub version: Option<String>,
    #[serde(rename = "integrityKey")]
    pub integrity_key: String,
    #[serde(rename = "encryptionKey", default, skip_serializing_if = "Option::is_none")]
    pub encryption_key: Option<String>,
    #[serde(rename = "encryptionKeyThumbprint", default, skip_serializing_if = "Option::is_none")]
    pub encryption_key_thumbprint: Option<String>,
    #[serde(rename = "portalCertificateThumbprint", default, skip_serializing_if = "Option::is_none")]
    pub portal_certificate_thumbprint: Option<String>,
    pub algorithm: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ManagerIntrinsicSettings {
    #[serde(rename = "type")]
    pub type_: manager_intrinsic_settings::Type,
}
pub mod manager_intrinsic_settings {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Type {
        GardaV1,
        HelsinkiV1,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ManagerList {
    pub value: Vec<Manager>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ManagerPatch {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub tags: Option<serde_json::Value>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ManagerProperties {
    #[serde(rename = "cisIntrinsicSettings", default, skip_serializing_if = "Option::is_none")]
    pub cis_intrinsic_settings: Option<ManagerIntrinsicSettings>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub sku: Option<ManagerSku>,
    #[serde(rename = "provisioningState", default, skip_serializing_if = "Option::is_none")]
    pub provisioning_state: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ManagerSku {
    pub name: manager_sku::Name,
}
pub mod manager_sku {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Name {
        Standard,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricAvailablity {
    #[serde(rename = "timeGrain", default, skip_serializing_if = "Option::is_none")]
    pub time_grain: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub retention: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricData {
    #[serde(rename = "timeStamp", default, skip_serializing_if = "Option::is_none")]
    pub time_stamp: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub sum: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub count: Option<i32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub average: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub minimum: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub maximum: Option<f64>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricDefinition {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<MetricName>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub unit: Option<metric_definition::Unit>,
    #[serde(rename = "primaryAggregationType", default, skip_serializing_if = "Option::is_none")]
    pub primary_aggregation_type: Option<metric_definition::PrimaryAggregationType>,
    #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")]
    pub resource_id: Option<String>,
    #[serde(rename = "metricAvailabilities", default, skip_serializing_if = "Vec::is_empty")]
    pub metric_availabilities: Vec<MetricAvailablity>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub dimensions: Vec<MetricDimension>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub category: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
}
pub mod metric_definition {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Unit {
        Bytes,
        BytesPerSecond,
        Count,
        CountPerSecond,
        Percent,
        Seconds,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum PrimaryAggregationType {
        Average,
        Last,
        Maximum,
        Minimum,
        None,
        Total,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricDefinitionList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<MetricDefinition>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricDimension {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub value: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricFilter {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<MetricNameFilter>,
    #[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
    pub start_time: Option<String>,
    #[serde(rename = "endTime", default, skip_serializing_if = "Option::is_none")]
    pub end_time: Option<String>,
    #[serde(rename = "timeGrain", default, skip_serializing_if = "Option::is_none")]
    pub time_grain: Option<String>,
    pub category: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub dimensions: Option<DimensionFilter>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<Metrics>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricName {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub value: Option<String>,
    #[serde(rename = "localizedValue", default, skip_serializing_if = "Option::is_none")]
    pub localized_value: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricNameFilter {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub value: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Metrics {
    #[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")]
    pub resource_id: Option<String>,
    #[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
    pub start_time: Option<String>,
    #[serde(rename = "endTime", default, skip_serializing_if = "Option::is_none")]
    pub end_time: Option<String>,
    #[serde(rename = "timeGrain", default, skip_serializing_if = "Option::is_none")]
    pub time_grain: Option<String>,
    #[serde(rename = "primaryAggregation", default, skip_serializing_if = "Option::is_none")]
    pub primary_aggregation: Option<metrics::PrimaryAggregation>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<MetricName>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub dimensions: Vec<MetricDimension>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub unit: Option<metrics::Unit>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub values: Vec<MetricData>,
}
pub mod metrics {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum PrimaryAggregation {
        Average,
        Last,
        Maximum,
        Minimum,
        None,
        Total,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Unit {
        Bytes,
        BytesPerSecond,
        Count,
        CountPerSecond,
        Percent,
        Seconds,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkAdapterList {
    pub value: Vec<NetworkAdapters>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkAdapters {
    #[serde(rename = "interfaceId")]
    pub interface_id: network_adapters::InterfaceId,
    #[serde(rename = "netInterfaceStatus")]
    pub net_interface_status: network_adapters::NetInterfaceStatus,
    #[serde(rename = "isDefault", default, skip_serializing_if = "Option::is_none")]
    pub is_default: Option<bool>,
    #[serde(rename = "iscsiAndCloudStatus")]
    pub iscsi_and_cloud_status: network_adapters::IscsiAndCloudStatus,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub speed: Option<i64>,
    pub mode: network_adapters::Mode,
    #[serde(rename = "nicIpv4Settings", default, skip_serializing_if = "Option::is_none")]
    pub nic_ipv4_settings: Option<NicIPv4>,
    #[serde(rename = "nicIpv6Settings", default, skip_serializing_if = "Option::is_none")]
    pub nic_ipv6_settings: Option<NicIPv6>,
}
pub mod network_adapters {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum InterfaceId {
        Invalid,
        Data0,
        Data1,
        Data2,
        Data3,
        Data4,
        Data5,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum NetInterfaceStatus {
        Enabled,
        Disabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum IscsiAndCloudStatus {
        Disabled,
        IscsiEnabled,
        CloudEnabled,
        IscsiAndCloudEnabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Mode {
        Invalid,
        #[serde(rename = "IPV4")]
        Ipv4,
        #[serde(rename = "IPV6")]
        Ipv6,
        #[serde(rename = "BOTH")]
        Both,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkInterfaceData0Settings {
    #[serde(rename = "controllerZeroIp", default, skip_serializing_if = "Option::is_none")]
    pub controller_zero_ip: Option<String>,
    #[serde(rename = "controllerOneIp", default, skip_serializing_if = "Option::is_none")]
    pub controller_one_ip: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkSettings {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: NetworkSettingsProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkSettingsPatch {
    pub properties: NetworkSettingsPatchProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkSettingsPatchProperties {
    #[serde(rename = "dnsSettings", default, skip_serializing_if = "Option::is_none")]
    pub dns_settings: Option<DnsSettings>,
    #[serde(rename = "networkAdapters", default, skip_serializing_if = "Option::is_none")]
    pub network_adapters: Option<NetworkAdapterList>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkSettingsProperties {
    #[serde(rename = "dnsSettings")]
    pub dns_settings: DnsSettings,
    #[serde(rename = "networkAdapters")]
    pub network_adapters: NetworkAdapterList,
    #[serde(rename = "webproxySettings")]
    pub webproxy_settings: WebproxySettings,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NicIPv4 {
    #[serde(rename = "ipv4Address", default, skip_serializing_if = "Option::is_none")]
    pub ipv4_address: Option<String>,
    #[serde(rename = "ipv4Netmask", default, skip_serializing_if = "Option::is_none")]
    pub ipv4_netmask: Option<String>,
    #[serde(rename = "ipv4Gateway", default, skip_serializing_if = "Option::is_none")]
    pub ipv4_gateway: Option<String>,
    #[serde(rename = "controller0Ipv4Address", default, skip_serializing_if = "Option::is_none")]
    pub controller0_ipv4_address: Option<String>,
    #[serde(rename = "controller1Ipv4Address", default, skip_serializing_if = "Option::is_none")]
    pub controller1_ipv4_address: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NicIPv6 {
    #[serde(rename = "ipv6Address", default, skip_serializing_if = "Option::is_none")]
    pub ipv6_address: Option<String>,
    #[serde(rename = "ipv6Prefix", default, skip_serializing_if = "Option::is_none")]
    pub ipv6_prefix: Option<String>,
    #[serde(rename = "ipv6Gateway", default, skip_serializing_if = "Option::is_none")]
    pub ipv6_gateway: Option<String>,
    #[serde(rename = "controller0Ipv6Address", default, skip_serializing_if = "Option::is_none")]
    pub controller0_ipv6_address: Option<String>,
    #[serde(rename = "controller1Ipv6Address", default, skip_serializing_if = "Option::is_none")]
    pub controller1_ipv6_address: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PublicKey {
    pub key: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RemoteManagementSettings {
    #[serde(rename = "remoteManagementMode")]
    pub remote_management_mode: remote_management_settings::RemoteManagementMode,
    #[serde(rename = "remoteManagementCertificate", default, skip_serializing_if = "Option::is_none")]
    pub remote_management_certificate: Option<String>,
}
pub mod remote_management_settings {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RemoteManagementMode {
        Unknown,
        Disabled,
        HttpsEnabled,
        HttpsAndHttpEnabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RemoteManagementSettingsPatch {
    #[serde(rename = "remoteManagementMode")]
    pub remote_management_mode: remote_management_settings_patch::RemoteManagementMode,
}
pub mod remote_management_settings_patch {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RemoteManagementMode {
        Unknown,
        Disabled,
        HttpsEnabled,
        HttpsAndHttpEnabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Resource {
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
    pub location: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub tags: Option<serde_json::Value>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ScheduleRecurrence {
    #[serde(rename = "recurrenceType")]
    pub recurrence_type: schedule_recurrence::RecurrenceType,
    #[serde(rename = "recurrenceValue")]
    pub recurrence_value: i32,
    #[serde(rename = "weeklyDaysList", default, skip_serializing_if = "Vec::is_empty")]
    pub weekly_days_list: Vec<String>,
}
pub mod schedule_recurrence {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RecurrenceType {
        Minutes,
        Hourly,
        Daily,
        Weekly,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecondaryDnsSettings {
    #[serde(rename = "secondaryDnsServers", default, skip_serializing_if = "Vec::is_empty")]
    pub secondary_dns_servers: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecuritySettings {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: SecuritySettingsProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecuritySettingsPatch {
    pub properties: SecuritySettingsPatchProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecuritySettingsPatchProperties {
    #[serde(rename = "remoteManagementSettings", default, skip_serializing_if = "Option::is_none")]
    pub remote_management_settings: Option<RemoteManagementSettingsPatch>,
    #[serde(rename = "deviceAdminPassword", default, skip_serializing_if = "Option::is_none")]
    pub device_admin_password: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "snapshotPassword", default, skip_serializing_if = "Option::is_none")]
    pub snapshot_password: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "chapSettings", default, skip_serializing_if = "Option::is_none")]
    pub chap_settings: Option<ChapSettings>,
    #[serde(rename = "cloudApplianceSettings", default, skip_serializing_if = "Option::is_none")]
    pub cloud_appliance_settings: Option<CloudApplianceSettings>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecuritySettingsProperties {
    #[serde(rename = "remoteManagementSettings")]
    pub remote_management_settings: RemoteManagementSettings,
    #[serde(rename = "chapSettings")]
    pub chap_settings: ChapSettings,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SendTestAlertEmailRequest {
    #[serde(rename = "emailList")]
    pub email_list: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountCredential {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: StorageAccountCredentialProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountCredentialList {
    pub value: Vec<StorageAccountCredential>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountCredentialProperties {
    #[serde(rename = "endPoint")]
    pub end_point: String,
    #[serde(rename = "sslStatus")]
    pub ssl_status: storage_account_credential_properties::SslStatus,
    #[serde(rename = "accessKey", default, skip_serializing_if = "Option::is_none")]
    pub access_key: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "volumesCount", skip_serializing)]
    pub volumes_count: Option<i32>,
}
pub mod storage_account_credential_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SslStatus {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SymmetricEncryptedSecret {
    pub value: String,
    #[serde(rename = "valueCertificateThumbprint", default, skip_serializing_if = "Option::is_none")]
    pub value_certificate_thumbprint: Option<String>,
    #[serde(rename = "encryptionAlgorithm")]
    pub encryption_algorithm: symmetric_encrypted_secret::EncryptionAlgorithm,
}
pub mod symmetric_encrypted_secret {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum EncryptionAlgorithm {
        None,
        #[serde(rename = "AES256")]
        Aes256,
        #[serde(rename = "RSAES_PKCS1_v_1_5")]
        RsaesPkcs1V15,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TargetEligibilityErrorMessage {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub message: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub resolution: Option<String>,
    #[serde(rename = "resultCode", default, skip_serializing_if = "Option::is_none")]
    pub result_code: Option<target_eligibility_error_message::ResultCode>,
}
pub mod target_eligibility_error_message {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ResultCode {
        TargetAndSourceCannotBeSameError,
        TargetIsNotOnlineError,
        TargetSourceIncompatibleVersionError,
        LocalToTieredVolumesConversionWarning,
        TargetInsufficientCapacityError,
        TargetInsufficientLocalVolumeMemoryError,
        TargetInsufficientTieredVolumeMemoryError,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TargetEligibilityResult {
    #[serde(rename = "eligibilityStatus", default, skip_serializing_if = "Option::is_none")]
    pub eligibility_status: Option<target_eligibility_result::EligibilityStatus>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub messages: Vec<TargetEligibilityErrorMessage>,
}
pub mod target_eligibility_result {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum EligibilityStatus {
        NotEligible,
        Eligible,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Time {
    pub hours: i32,
    pub minutes: i32,
    pub seconds: i32,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TimeSettings {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: TimeSettingsProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TimeSettingsProperties {
    #[serde(rename = "timeZone")]
    pub time_zone: String,
    #[serde(rename = "primaryTimeServer", default, skip_serializing_if = "Option::is_none")]
    pub primary_time_server: Option<String>,
    #[serde(rename = "secondaryTimeServer", default, skip_serializing_if = "Vec::is_empty")]
    pub secondary_time_server: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Updates {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: UpdatesProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UpdatesProperties {
    #[serde(rename = "regularUpdatesAvailable", default, skip_serializing_if = "Option::is_none")]
    pub regular_updates_available: Option<bool>,
    #[serde(rename = "maintenanceModeUpdatesAvailable", default, skip_serializing_if = "Option::is_none")]
    pub maintenance_mode_updates_available: Option<bool>,
    #[serde(rename = "isUpdateInProgress", default, skip_serializing_if = "Option::is_none")]
    pub is_update_in_progress: Option<bool>,
    #[serde(rename = "lastUpdatedTime", default, skip_serializing_if = "Option::is_none")]
    pub last_updated_time: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VmImage {
    pub name: String,
    pub version: String,
    pub offer: String,
    pub publisher: String,
    pub sku: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Volume {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: VolumeProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VolumeContainer {
    #[serde(flatten)]
    pub base_model: BaseModel,
    pub properties: VolumeContainerProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VolumeContainerFailoverMetadata {
    #[serde(rename = "volumeContainerId", default, skip_serializing_if = "Option::is_none")]
    pub volume_container_id: Option<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub volumes: Vec<VolumeFailoverMetadata>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VolumeContainerList {
    pub value: Vec<VolumeContainer>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VolumeContainerProperties {
    #[serde(rename = "encryptionKey", default, skip_serializing_if = "Option::is_none")]
    pub encryption_key: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "encryptionStatus", skip_serializing)]
    pub encryption_status: Option<volume_container_properties::EncryptionStatus>,
    #[serde(rename = "volumeCount", skip_serializing)]
    pub volume_count: Option<i32>,
    #[serde(rename = "storageAccountCredentialId")]
    pub storage_account_credential_id: String,
    #[serde(rename = "ownerShipStatus", skip_serializing)]
    pub owner_ship_status: Option<volume_container_properties::OwnerShipStatus>,
    #[serde(rename = "bandWidthRateInMbps", default, skip_serializing_if = "Option::is_none")]
    pub band_width_rate_in_mbps: Option<i32>,
    #[serde(rename = "bandwidthSettingId", default, skip_serializing_if = "Option::is_none")]
    pub bandwidth_setting_id: Option<String>,
    #[serde(rename = "totalCloudStorageUsageInBytes", skip_serializing)]
    pub total_cloud_storage_usage_in_bytes: Option<i64>,
}
pub mod volume_container_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum EncryptionStatus {
        Enabled,
        Disabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum OwnerShipStatus {
        Owned,
        NotOwned,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VolumeFailoverMetadata {
    #[serde(rename = "volumeId", default, skip_serializing_if = "Option::is_none")]
    pub volume_id: Option<String>,
    #[serde(rename = "volumeType", default, skip_serializing_if = "Option::is_none")]
    pub volume_type: Option<volume_failover_metadata::VolumeType>,
    #[serde(rename = "sizeInBytes", default, skip_serializing_if = "Option::is_none")]
    pub size_in_bytes: Option<i64>,
    #[serde(rename = "backupCreatedDate", default, skip_serializing_if = "Option::is_none")]
    pub backup_created_date: Option<String>,
    #[serde(rename = "backupElementId", default, skip_serializing_if = "Option::is_none")]
    pub backup_element_id: Option<String>,
    #[serde(rename = "backupId", default, skip_serializing_if = "Option::is_none")]
    pub backup_id: Option<String>,
    #[serde(rename = "backupPolicyId", default, skip_serializing_if = "Option::is_none")]
    pub backup_policy_id: Option<String>,
}
pub mod volume_failover_metadata {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum VolumeType {
        Tiered,
        Archival,
        LocallyPinned,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VolumeList {
    pub value: Vec<Volume>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct VolumeProperties {
    #[serde(rename = "sizeInBytes")]
    pub size_in_bytes: i64,
    #[serde(rename = "volumeType")]
    pub volume_type: volume_properties::VolumeType,
    #[serde(rename = "volumeContainerId", skip_serializing)]
    pub volume_container_id: Option<String>,
    #[serde(rename = "accessControlRecordIds")]
    pub access_control_record_ids: Vec<String>,
    #[serde(rename = "volumeStatus")]
    pub volume_status: volume_properties::VolumeStatus,
    #[serde(rename = "operationStatus", skip_serializing)]
    pub operation_status: Option<volume_properties::OperationStatus>,
    #[serde(rename = "backupStatus", skip_serializing)]
    pub backup_status: Option<volume_properties::BackupStatus>,
    #[serde(rename = "monitoringStatus")]
    pub monitoring_status: volume_properties::MonitoringStatus,
    #[serde(rename = "backupPolicyIds", skip_serializing)]
    pub backup_policy_ids: Vec<String>,
}
pub mod volume_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum VolumeType {
        Tiered,
        Archival,
        LocallyPinned,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum VolumeStatus {
        Online,
        Offline,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum OperationStatus {
        None,
        Updating,
        Deleting,
        Restoring,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BackupStatus {
        Enabled,
        Disabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum MonitoringStatus {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct WebproxySettings {
    #[serde(rename = "connectionUri", default, skip_serializing_if = "Option::is_none")]
    pub connection_uri: Option<String>,
    pub authentication: webproxy_settings::Authentication,
    pub username: String,
}
pub mod webproxy_settings {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Authentication {
        Invalid,
        None,
        Basic,
        #[serde(rename = "NTLM")]
        Ntlm,
    }
}
