#![doc = "generated by AutoRust"]
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessedDisk {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
    #[serde(rename = "gigabytesProvisioned", default, skip_serializing_if = "Option::is_none")]
    pub gigabytes_provisioned: Option<f64>,
    #[serde(rename = "megabytesPerSecondOfRead", default, skip_serializing_if = "Option::is_none")]
    pub megabytes_per_second_of_read: Option<f64>,
    #[serde(rename = "megabytesPerSecondOfWrite", default, skip_serializing_if = "Option::is_none")]
    pub megabytes_per_second_of_write: Option<f64>,
    #[serde(rename = "numberOfReadOperationsPerSecond", default, skip_serializing_if = "Option::is_none")]
    pub number_of_read_operations_per_second: Option<f64>,
    #[serde(rename = "numberOfWriteOperationsPerSecond", default, skip_serializing_if = "Option::is_none")]
    pub number_of_write_operations_per_second: Option<f64>,
    #[serde(rename = "monthlyStorageCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_storage_cost: Option<f64>,
    #[serde(rename = "recommendedDiskType", default, skip_serializing_if = "Option::is_none")]
    pub recommended_disk_type: Option<assessed_disk::RecommendedDiskType>,
    #[serde(rename = "recommendedDiskSize", default, skip_serializing_if = "Option::is_none")]
    pub recommended_disk_size: Option<assessed_disk::RecommendedDiskSize>,
    #[serde(rename = "gigabytesForRecommendedDiskSize", default, skip_serializing_if = "Option::is_none")]
    pub gigabytes_for_recommended_disk_size: Option<i32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub suitability: Option<assessed_disk::Suitability>,
    #[serde(rename = "suitabilityExplanation", default, skip_serializing_if = "Option::is_none")]
    pub suitability_explanation: Option<assessed_disk::SuitabilityExplanation>,
    #[serde(rename = "suitabilityDetail", default, skip_serializing_if = "Option::is_none")]
    pub suitability_detail: Option<assessed_disk::SuitabilityDetail>,
}
impl AssessedDisk {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod assessed_disk {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RecommendedDiskType {
        Unknown,
        Standard,
        Premium,
        #[serde(rename = "StandardSSD")]
        StandardSsd,
        StandardOrPremium,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RecommendedDiskSize {
        Unknown,
        #[serde(rename = "Standard_S4")]
        StandardS4,
        #[serde(rename = "Standard_S6")]
        StandardS6,
        #[serde(rename = "Standard_S10")]
        StandardS10,
        #[serde(rename = "Standard_S15")]
        StandardS15,
        #[serde(rename = "Standard_S20")]
        StandardS20,
        #[serde(rename = "Standard_S30")]
        StandardS30,
        #[serde(rename = "Standard_S40")]
        StandardS40,
        #[serde(rename = "Standard_S50")]
        StandardS50,
        #[serde(rename = "Premium_P4")]
        PremiumP4,
        #[serde(rename = "Premium_P6")]
        PremiumP6,
        #[serde(rename = "Premium_P10")]
        PremiumP10,
        #[serde(rename = "Premium_P15")]
        PremiumP15,
        #[serde(rename = "Premium_P20")]
        PremiumP20,
        #[serde(rename = "Premium_P30")]
        PremiumP30,
        #[serde(rename = "Premium_P40")]
        PremiumP40,
        #[serde(rename = "Premium_P50")]
        PremiumP50,
        #[serde(rename = "Standard_S60")]
        StandardS60,
        #[serde(rename = "Standard_S70")]
        StandardS70,
        #[serde(rename = "Standard_S80")]
        StandardS80,
        #[serde(rename = "Premium_P60")]
        PremiumP60,
        #[serde(rename = "Premium_P70")]
        PremiumP70,
        #[serde(rename = "Premium_P80")]
        PremiumP80,
        #[serde(rename = "StandardSSD_E10")]
        StandardSsdE10,
        #[serde(rename = "StandardSSD_E15")]
        StandardSsdE15,
        #[serde(rename = "StandardSSD_E20")]
        StandardSsdE20,
        #[serde(rename = "StandardSSD_E30")]
        StandardSsdE30,
        #[serde(rename = "StandardSSD_E40")]
        StandardSsdE40,
        #[serde(rename = "StandardSSD_E50")]
        StandardSsdE50,
        #[serde(rename = "StandardSSD_E60")]
        StandardSsdE60,
        #[serde(rename = "StandardSSD_E70")]
        StandardSsdE70,
        #[serde(rename = "StandardSSD_E80")]
        StandardSsdE80,
        #[serde(rename = "StandardSSD_E4")]
        StandardSsdE4,
        #[serde(rename = "StandardSSD_E6")]
        StandardSsdE6,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Suitability {
        Unknown,
        NotSuitable,
        Suitable,
        ConditionallySuitable,
        ReadinessUnknown,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SuitabilityExplanation {
        Unknown,
        NotApplicable,
        DiskSizeGreaterThanSupported,
        NoSuitableDiskSizeForIops,
        NoSuitableDiskSizeForThroughput,
        NoDiskSizeFoundInSelectedLocation,
        NoDiskSizeFoundForSelectedRedundancy,
        InternalErrorOccurredForDiskEvaluation,
        NoEaPriceFoundForDiskSize,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SuitabilityDetail {
        None,
        NumberOfReadOperationsPerSecondMissing,
        NumberOfWriteOperationsPerSecondMissing,
        MegabytesPerSecondOfReadMissing,
        MegabytesPerSecondOfWriteMissing,
        DiskGigabytesConsumedMissing,
        DiskGigabytesProvisionedMissing,
        NumberOfReadOperationsPerSecondOutOfRange,
        NumberOfWriteOperationsPerSecondOutOfRange,
        MegabytesPerSecondOfReadOutOfRange,
        MegabytesPerSecondOfWriteOutOfRange,
        DiskGigabytesConsumedOutOfRange,
        DiskGigabytesProvisionedOutOfRange,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessedMachine {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<AssessedMachineProperties>,
}
impl AssessedMachine {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessedMachineProperties {
    #[serde(rename = "bootType", default, skip_serializing_if = "Option::is_none")]
    pub boot_type: Option<assessed_machine_properties::BootType>,
    #[serde(rename = "datacenterMachineArmId", default, skip_serializing_if = "Option::is_none")]
    pub datacenter_machine_arm_id: Option<String>,
    #[serde(rename = "datacenterManagementServerArmId", default, skip_serializing_if = "Option::is_none")]
    pub datacenter_management_server_arm_id: Option<String>,
    #[serde(rename = "datacenterManagementServerName", default, skip_serializing_if = "Option::is_none")]
    pub datacenter_management_server_name: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
    #[serde(rename = "megabytesOfMemory", default, skip_serializing_if = "Option::is_none")]
    pub megabytes_of_memory: Option<f64>,
    #[serde(rename = "numberOfCores", default, skip_serializing_if = "Option::is_none")]
    pub number_of_cores: Option<i32>,
    #[serde(rename = "operatingSystemType", default, skip_serializing_if = "Option::is_none")]
    pub operating_system_type: Option<String>,
    #[serde(rename = "operatingSystemName", default, skip_serializing_if = "Option::is_none")]
    pub operating_system_name: Option<String>,
    #[serde(rename = "operatingSystemVersion", default, skip_serializing_if = "Option::is_none")]
    pub operating_system_version: Option<String>,
    #[serde(rename = "monthlyBandwidthCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_bandwidth_cost: Option<f64>,
    #[serde(rename = "monthlyStorageCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_storage_cost: Option<f64>,
    #[serde(rename = "monthlyPremiumStorageCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_premium_storage_cost: Option<f64>,
    #[serde(rename = "monthlyStandardSSDStorageCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_standard_ssd_storage_cost: Option<f64>,
    #[serde(rename = "confidenceRatingInPercentage", default, skip_serializing_if = "Option::is_none")]
    pub confidence_rating_in_percentage: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub disks: Option<serde_json::Value>,
    #[serde(rename = "networkAdapters", default, skip_serializing_if = "Option::is_none")]
    pub network_adapters: Option<serde_json::Value>,
    #[serde(rename = "recommendedSize", default, skip_serializing_if = "Option::is_none")]
    pub recommended_size: Option<assessed_machine_properties::RecommendedSize>,
    #[serde(rename = "numberOfCoresForRecommendedSize", default, skip_serializing_if = "Option::is_none")]
    pub number_of_cores_for_recommended_size: Option<i32>,
    #[serde(rename = "megabytesOfMemoryForRecommendedSize", default, skip_serializing_if = "Option::is_none")]
    pub megabytes_of_memory_for_recommended_size: Option<f64>,
    #[serde(rename = "monthlyComputeCostForRecommendedSize", default, skip_serializing_if = "Option::is_none")]
    pub monthly_compute_cost_for_recommended_size: Option<f64>,
    #[serde(rename = "percentageCoresUtilization", default, skip_serializing_if = "Option::is_none")]
    pub percentage_cores_utilization: Option<f64>,
    #[serde(rename = "percentageMemoryUtilization", default, skip_serializing_if = "Option::is_none")]
    pub percentage_memory_utilization: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub suitability: Option<assessed_machine_properties::Suitability>,
    #[serde(rename = "suitabilityExplanation", default, skip_serializing_if = "Option::is_none")]
    pub suitability_explanation: Option<assessed_machine_properties::SuitabilityExplanation>,
    #[serde(rename = "suitabilityDetail", default, skip_serializing_if = "Option::is_none")]
    pub suitability_detail: Option<assessed_machine_properties::SuitabilityDetail>,
    #[serde(rename = "createdTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub created_timestamp: Option<String>,
    #[serde(rename = "updatedTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub updated_timestamp: Option<String>,
}
impl AssessedMachineProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod assessed_machine_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BootType {
        Unknown,
        #[serde(rename = "EFI")]
        Efi,
        #[serde(rename = "BIOS")]
        Bios,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RecommendedSize {
        Unknown,
        #[serde(rename = "Basic_A0")]
        BasicA0,
        #[serde(rename = "Basic_A1")]
        BasicA1,
        #[serde(rename = "Basic_A2")]
        BasicA2,
        #[serde(rename = "Basic_A3")]
        BasicA3,
        #[serde(rename = "Basic_A4")]
        BasicA4,
        #[serde(rename = "Standard_A0")]
        StandardA0,
        #[serde(rename = "Standard_A1")]
        StandardA1,
        #[serde(rename = "Standard_A2")]
        StandardA2,
        #[serde(rename = "Standard_A3")]
        StandardA3,
        #[serde(rename = "Standard_A4")]
        StandardA4,
        #[serde(rename = "Standard_A5")]
        StandardA5,
        #[serde(rename = "Standard_A6")]
        StandardA6,
        #[serde(rename = "Standard_A7")]
        StandardA7,
        #[serde(rename = "Standard_A8")]
        StandardA8,
        #[serde(rename = "Standard_A9")]
        StandardA9,
        #[serde(rename = "Standard_A10")]
        StandardA10,
        #[serde(rename = "Standard_A11")]
        StandardA11,
        #[serde(rename = "Standard_A1_v2")]
        StandardA1V2,
        #[serde(rename = "Standard_A2_v2")]
        StandardA2V2,
        #[serde(rename = "Standard_A4_v2")]
        StandardA4V2,
        #[serde(rename = "Standard_A8_v2")]
        StandardA8V2,
        #[serde(rename = "Standard_A2m_v2")]
        StandardA2mV2,
        #[serde(rename = "Standard_A4m_v2")]
        StandardA4mV2,
        #[serde(rename = "Standard_A8m_v2")]
        StandardA8mV2,
        #[serde(rename = "Standard_D1")]
        StandardD1,
        #[serde(rename = "Standard_D2")]
        StandardD2,
        #[serde(rename = "Standard_D3")]
        StandardD3,
        #[serde(rename = "Standard_D4")]
        StandardD4,
        #[serde(rename = "Standard_D11")]
        StandardD11,
        #[serde(rename = "Standard_D12")]
        StandardD12,
        #[serde(rename = "Standard_D13")]
        StandardD13,
        #[serde(rename = "Standard_D14")]
        StandardD14,
        #[serde(rename = "Standard_D1_v2")]
        StandardD1V2,
        #[serde(rename = "Standard_D2_v2")]
        StandardD2V2,
        #[serde(rename = "Standard_D3_v2")]
        StandardD3V2,
        #[serde(rename = "Standard_D4_v2")]
        StandardD4V2,
        #[serde(rename = "Standard_D5_v2")]
        StandardD5V2,
        #[serde(rename = "Standard_D11_v2")]
        StandardD11V2,
        #[serde(rename = "Standard_D12_v2")]
        StandardD12V2,
        #[serde(rename = "Standard_D13_v2")]
        StandardD13V2,
        #[serde(rename = "Standard_D14_v2")]
        StandardD14V2,
        #[serde(rename = "Standard_D15_v2")]
        StandardD15V2,
        #[serde(rename = "Standard_DS1")]
        StandardDs1,
        #[serde(rename = "Standard_DS2")]
        StandardDs2,
        #[serde(rename = "Standard_DS3")]
        StandardDs3,
        #[serde(rename = "Standard_DS4")]
        StandardDs4,
        #[serde(rename = "Standard_DS11")]
        StandardDs11,
        #[serde(rename = "Standard_DS12")]
        StandardDs12,
        #[serde(rename = "Standard_DS13")]
        StandardDs13,
        #[serde(rename = "Standard_DS14")]
        StandardDs14,
        #[serde(rename = "Standard_DS1_v2")]
        StandardDs1V2,
        #[serde(rename = "Standard_DS2_v2")]
        StandardDs2V2,
        #[serde(rename = "Standard_DS3_v2")]
        StandardDs3V2,
        #[serde(rename = "Standard_DS4_v2")]
        StandardDs4V2,
        #[serde(rename = "Standard_DS5_v2")]
        StandardDs5V2,
        #[serde(rename = "Standard_DS11_v2")]
        StandardDs11V2,
        #[serde(rename = "Standard_DS12_v2")]
        StandardDs12V2,
        #[serde(rename = "Standard_DS13_v2")]
        StandardDs13V2,
        #[serde(rename = "Standard_DS14_v2")]
        StandardDs14V2,
        #[serde(rename = "Standard_DS15_v2")]
        StandardDs15V2,
        #[serde(rename = "Standard_F1")]
        StandardF1,
        #[serde(rename = "Standard_F2")]
        StandardF2,
        #[serde(rename = "Standard_F4")]
        StandardF4,
        #[serde(rename = "Standard_F8")]
        StandardF8,
        #[serde(rename = "Standard_F16")]
        StandardF16,
        #[serde(rename = "Standard_F1s")]
        StandardF1s,
        #[serde(rename = "Standard_F2s")]
        StandardF2s,
        #[serde(rename = "Standard_F4s")]
        StandardF4s,
        #[serde(rename = "Standard_F8s")]
        StandardF8s,
        #[serde(rename = "Standard_F16s")]
        StandardF16s,
        #[serde(rename = "Standard_G1")]
        StandardG1,
        #[serde(rename = "Standard_G2")]
        StandardG2,
        #[serde(rename = "Standard_G3")]
        StandardG3,
        #[serde(rename = "Standard_G4")]
        StandardG4,
        #[serde(rename = "Standard_G5")]
        StandardG5,
        #[serde(rename = "Standard_GS1")]
        StandardGs1,
        #[serde(rename = "Standard_GS2")]
        StandardGs2,
        #[serde(rename = "Standard_GS3")]
        StandardGs3,
        #[serde(rename = "Standard_GS4")]
        StandardGs4,
        #[serde(rename = "Standard_GS5")]
        StandardGs5,
        #[serde(rename = "Standard_H8")]
        StandardH8,
        #[serde(rename = "Standard_H16")]
        StandardH16,
        #[serde(rename = "Standard_H8m")]
        StandardH8m,
        #[serde(rename = "Standard_H16m")]
        StandardH16m,
        #[serde(rename = "Standard_H16r")]
        StandardH16r,
        #[serde(rename = "Standard_H16mr")]
        StandardH16mr,
        #[serde(rename = "Standard_L4s")]
        StandardL4s,
        #[serde(rename = "Standard_L8s")]
        StandardL8s,
        #[serde(rename = "Standard_L16s")]
        StandardL16s,
        #[serde(rename = "Standard_L32s")]
        StandardL32s,
        #[serde(rename = "Standard_D2s_v3")]
        StandardD2sV3,
        #[serde(rename = "Standard_D4s_v3")]
        StandardD4sV3,
        #[serde(rename = "Standard_D8s_v3")]
        StandardD8sV3,
        #[serde(rename = "Standard_D16s_v3")]
        StandardD16sV3,
        #[serde(rename = "Standard_D32s_v3")]
        StandardD32sV3,
        #[serde(rename = "Standard_D64s_v3")]
        StandardD64sV3,
        #[serde(rename = "Standard_D2_v3")]
        StandardD2V3,
        #[serde(rename = "Standard_D4_v3")]
        StandardD4V3,
        #[serde(rename = "Standard_D8_v3")]
        StandardD8V3,
        #[serde(rename = "Standard_D16_v3")]
        StandardD16V3,
        #[serde(rename = "Standard_D32_v3")]
        StandardD32V3,
        #[serde(rename = "Standard_D64_v3")]
        StandardD64V3,
        #[serde(rename = "Standard_F2s_v2")]
        StandardF2sV2,
        #[serde(rename = "Standard_F4s_v2")]
        StandardF4sV2,
        #[serde(rename = "Standard_F8s_v2")]
        StandardF8sV2,
        #[serde(rename = "Standard_F16s_v2")]
        StandardF16sV2,
        #[serde(rename = "Standard_F32s_v2")]
        StandardF32sV2,
        #[serde(rename = "Standard_F64s_v2")]
        StandardF64sV2,
        #[serde(rename = "Standard_F72s_v2")]
        StandardF72sV2,
        #[serde(rename = "Standard_E2_v3")]
        StandardE2V3,
        #[serde(rename = "Standard_E4_v3")]
        StandardE4V3,
        #[serde(rename = "Standard_E8_v3")]
        StandardE8V3,
        #[serde(rename = "Standard_E16_v3")]
        StandardE16V3,
        #[serde(rename = "Standard_E32_v3")]
        StandardE32V3,
        #[serde(rename = "Standard_E64_v3")]
        StandardE64V3,
        #[serde(rename = "Standard_E2s_v3")]
        StandardE2sV3,
        #[serde(rename = "Standard_E4s_v3")]
        StandardE4sV3,
        #[serde(rename = "Standard_E8s_v3")]
        StandardE8sV3,
        #[serde(rename = "Standard_E16s_v3")]
        StandardE16sV3,
        #[serde(rename = "Standard_E32s_v3")]
        StandardE32sV3,
        #[serde(rename = "Standard_E64s_v3")]
        StandardE64sV3,
        #[serde(rename = "Standard_M64s")]
        StandardM64s,
        #[serde(rename = "Standard_M64ms")]
        StandardM64ms,
        #[serde(rename = "Standard_M128s")]
        StandardM128s,
        #[serde(rename = "Standard_M128ms")]
        StandardM128ms,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Suitability {
        Unknown,
        NotSuitable,
        Suitable,
        ConditionallySuitable,
        ReadinessUnknown,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SuitabilityExplanation {
        Unknown,
        NotApplicable,
        GuestOperatingSystemArchitectureNotSupported,
        GuestOperatingSystemNotSupported,
        BootTypeNotSupported,
        MoreDisksThanSupported,
        NoSuitableVmSizeFound,
        OneOrMoreDisksNotSuitable,
        OneOrMoreAdaptersNotSuitable,
        InternalErrorOccurredDuringComputeEvaluation,
        InternalErrorOccurredDuringStorageEvaluation,
        InternalErrorOccurredDuringNetworkEvaluation,
        NoVmSizeSupportsStoragePerformance,
        NoVmSizeSupportsNetworkPerformance,
        NoVmSizeForSelectedPricingTier,
        NoVmSizeForSelectedAzureLocation,
        CheckRedHatLinuxVersion,
        CheckOpenSuseLinuxVersion,
        CheckWindowsServer2008R2Version,
        CheckCentOsVersion,
        CheckDebianLinuxVersion,
        CheckSuseLinuxVersion,
        CheckOracleLinuxVersion,
        CheckUbuntuLinuxVersion,
        CheckCoreOsLinuxVersion,
        WindowsServerVersionConditionallySupported,
        NoGuestOperatingSystemConditionallySupported,
        WindowsClientVersionsConditionallySupported,
        BootTypeUnknown,
        GuestOperatingSystemUnknown,
        WindowsServerVersionsSupportedWithCaveat,
        #[serde(rename = "WindowsOSNoLongerUnderMSSupport")]
        WindowsOsNoLongerUnderMsSupport,
        EndorsedWithConditionsLinuxDistributions,
        UnendorsedLinuxDistributions,
        NoVmSizeForStandardPricingTier,
        NoVmSizeForBasicPricingTier,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SuitabilityDetail {
        None,
        RecommendedSizeHasLessNetworkAdapters,
        CannotReportComputeCost,
        CannotReportStorageCost,
        CannotReportBandwidthCosts,
        PercentageOfCoresUtilizedMissing,
        PercentageOfMemoryUtilizedMissing,
        PercentageOfCoresUtilizedOutOfRange,
        PercentageOfMemoryUtilizedOutOfRange,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessedMachineResultList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<AssessedMachine>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
impl AssessedMachineResultList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessedNetworkAdapter {
    #[serde(rename = "macAddress", default, skip_serializing_if = "Option::is_none")]
    pub mac_address: Option<String>,
    #[serde(rename = "ipAddresses", default, skip_serializing_if = "Vec::is_empty")]
    pub ip_addresses: Vec<String>,
    #[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
    #[serde(rename = "monthlyBandwidthCosts", default, skip_serializing_if = "Option::is_none")]
    pub monthly_bandwidth_costs: Option<f64>,
    #[serde(rename = "megabytesPerSecondReceived", default, skip_serializing_if = "Option::is_none")]
    pub megabytes_per_second_received: Option<f64>,
    #[serde(rename = "megabytesPerSecondTransmitted", default, skip_serializing_if = "Option::is_none")]
    pub megabytes_per_second_transmitted: Option<f64>,
    #[serde(rename = "netGigabytesTransmittedPerMonth", default, skip_serializing_if = "Option::is_none")]
    pub net_gigabytes_transmitted_per_month: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub suitability: Option<assessed_network_adapter::Suitability>,
    #[serde(rename = "suitabilityExplanation", default, skip_serializing_if = "Option::is_none")]
    pub suitability_explanation: Option<assessed_network_adapter::SuitabilityExplanation>,
    #[serde(rename = "suitabilityDetail", default, skip_serializing_if = "Option::is_none")]
    pub suitability_detail: Option<assessed_network_adapter::SuitabilityDetail>,
}
impl AssessedNetworkAdapter {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod assessed_network_adapter {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Suitability {
        Unknown,
        NotSuitable,
        Suitable,
        ConditionallySuitable,
        ReadinessUnknown,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SuitabilityExplanation {
        Unknown,
        NotApplicable,
        InternalErrorOccurred,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SuitabilityDetail {
        None,
        MegabytesOfDataTransmittedMissing,
        MegabytesOfDataTransmittedOutOfRange,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Assessment {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    pub properties: AssessmentProperties,
}
impl Assessment {
    pub fn new(properties: AssessmentProperties) -> Self {
        Self {
            id: None,
            name: None,
            e_tag: None,
            type_: None,
            properties,
        }
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AssessmentOptions {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    pub properties: AssessmentOptionsProperties,
}
impl AssessmentOptions {
    pub fn new(properties: AssessmentOptionsProperties) -> Self {
        Self {
            name: None,
            id: None,
            properties,
        }
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessmentOptionsProperties {
    #[serde(rename = "vmFamilies", default, skip_serializing_if = "Vec::is_empty")]
    pub vm_families: Vec<VmFamily>,
    #[serde(rename = "reservedInstanceVmFamilies", default, skip_serializing_if = "Vec::is_empty")]
    pub reserved_instance_vm_families: Vec<String>,
    #[serde(rename = "reservedInstanceSupportedLocations", default, skip_serializing_if = "Vec::is_empty")]
    pub reserved_instance_supported_locations: Vec<String>,
    #[serde(rename = "reservedInstanceSupportedCurrencies", default, skip_serializing_if = "Vec::is_empty")]
    pub reserved_instance_supported_currencies: Vec<String>,
    #[serde(rename = "reservedInstanceSupportedOffers", default, skip_serializing_if = "Vec::is_empty")]
    pub reserved_instance_supported_offers: Vec<String>,
}
impl AssessmentOptionsProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessmentOptionsResultList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<AssessmentOptions>,
}
impl AssessmentOptionsResultList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AssessmentProperties {
    #[serde(rename = "azureLocation")]
    pub azure_location: assessment_properties::AzureLocation,
    #[serde(rename = "azureOfferCode")]
    pub azure_offer_code: assessment_properties::AzureOfferCode,
    #[serde(rename = "eaSubscriptionId", default, skip_serializing_if = "Option::is_none")]
    pub ea_subscription_id: Option<String>,
    #[serde(rename = "azurePricingTier")]
    pub azure_pricing_tier: assessment_properties::AzurePricingTier,
    #[serde(rename = "azureStorageRedundancy")]
    pub azure_storage_redundancy: assessment_properties::AzureStorageRedundancy,
    #[serde(rename = "scalingFactor")]
    pub scaling_factor: f64,
    pub percentile: assessment_properties::Percentile,
    #[serde(rename = "timeRange")]
    pub time_range: assessment_properties::TimeRange,
    #[serde(rename = "perfDataStartTime", default, skip_serializing_if = "Option::is_none")]
    pub perf_data_start_time: Option<String>,
    #[serde(rename = "perfDataEndTime", default, skip_serializing_if = "Option::is_none")]
    pub perf_data_end_time: Option<String>,
    pub stage: assessment_properties::Stage,
    pub currency: assessment_properties::Currency,
    #[serde(rename = "azureHybridUseBenefit")]
    pub azure_hybrid_use_benefit: assessment_properties::AzureHybridUseBenefit,
    #[serde(rename = "discountPercentage")]
    pub discount_percentage: f64,
    #[serde(rename = "confidenceRatingInPercentage", default, skip_serializing_if = "Option::is_none")]
    pub confidence_rating_in_percentage: Option<f64>,
    #[serde(rename = "sizingCriterion")]
    pub sizing_criterion: assessment_properties::SizingCriterion,
    #[serde(rename = "reservedInstance")]
    pub reserved_instance: assessment_properties::ReservedInstance,
    #[serde(rename = "azureVmFamilies")]
    pub azure_vm_families: Vec<String>,
    #[serde(rename = "azureDiskType")]
    pub azure_disk_type: assessment_properties::AzureDiskType,
    #[serde(rename = "vmUptime")]
    pub vm_uptime: VmUptime,
    #[serde(rename = "pricesTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub prices_timestamp: Option<String>,
    #[serde(rename = "createdTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub created_timestamp: Option<String>,
    #[serde(rename = "updatedTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub updated_timestamp: Option<String>,
    #[serde(rename = "monthlyComputeCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_compute_cost: Option<f64>,
    #[serde(rename = "monthlyBandwidthCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_bandwidth_cost: Option<f64>,
    #[serde(rename = "monthlyStorageCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_storage_cost: Option<f64>,
    #[serde(rename = "monthlyPremiumStorageCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_premium_storage_cost: Option<f64>,
    #[serde(rename = "monthlyStandardSSDStorageCost", default, skip_serializing_if = "Option::is_none")]
    pub monthly_standard_ssd_storage_cost: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub status: Option<assessment_properties::Status>,
    #[serde(rename = "numberOfMachines", default, skip_serializing_if = "Option::is_none")]
    pub number_of_machines: Option<i32>,
}
impl AssessmentProperties {
    pub fn new(
        azure_location: assessment_properties::AzureLocation,
        azure_offer_code: assessment_properties::AzureOfferCode,
        azure_pricing_tier: assessment_properties::AzurePricingTier,
        azure_storage_redundancy: assessment_properties::AzureStorageRedundancy,
        scaling_factor: f64,
        percentile: assessment_properties::Percentile,
        time_range: assessment_properties::TimeRange,
        stage: assessment_properties::Stage,
        currency: assessment_properties::Currency,
        azure_hybrid_use_benefit: assessment_properties::AzureHybridUseBenefit,
        discount_percentage: f64,
        sizing_criterion: assessment_properties::SizingCriterion,
        reserved_instance: assessment_properties::ReservedInstance,
        azure_vm_families: Vec<String>,
        azure_disk_type: assessment_properties::AzureDiskType,
        vm_uptime: VmUptime,
    ) -> Self {
        Self {
            azure_location,
            azure_offer_code,
            ea_subscription_id: None,
            azure_pricing_tier,
            azure_storage_redundancy,
            scaling_factor,
            percentile,
            time_range,
            perf_data_start_time: None,
            perf_data_end_time: None,
            stage,
            currency,
            azure_hybrid_use_benefit,
            discount_percentage,
            confidence_rating_in_percentage: None,
            sizing_criterion,
            reserved_instance,
            azure_vm_families,
            azure_disk_type,
            vm_uptime,
            prices_timestamp: None,
            created_timestamp: None,
            updated_timestamp: None,
            monthly_compute_cost: None,
            monthly_bandwidth_cost: None,
            monthly_storage_cost: None,
            monthly_premium_storage_cost: None,
            monthly_standard_ssd_storage_cost: None,
            status: None,
            number_of_machines: None,
        }
    }
}
pub mod assessment_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AzureLocation {
        Unknown,
        EastAsia,
        SoutheastAsia,
        AustraliaEast,
        AustraliaSoutheast,
        BrazilSouth,
        CanadaCentral,
        CanadaEast,
        WestEurope,
        NorthEurope,
        CentralIndia,
        SouthIndia,
        WestIndia,
        JapanEast,
        JapanWest,
        KoreaCentral,
        KoreaSouth,
        UkWest,
        UkSouth,
        NorthCentralUs,
        EastUs,
        WestUs2,
        SouthCentralUs,
        CentralUs,
        EastUs2,
        WestUs,
        WestCentralUs,
        GermanyCentral,
        GermanyNortheast,
        ChinaNorth,
        ChinaEast,
        #[serde(rename = "USGovArizona")]
        UsGovArizona,
        #[serde(rename = "USGovTexas")]
        UsGovTexas,
        #[serde(rename = "USGovIowa")]
        UsGovIowa,
        #[serde(rename = "USGovVirginia")]
        UsGovVirginia,
        #[serde(rename = "USDoDCentral")]
        UsDoDCentral,
        #[serde(rename = "USDoDEast")]
        UsDoDEast,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AzureOfferCode {
        Unknown,
        #[serde(rename = "MSAZR0003P")]
        Msazr0003p,
        #[serde(rename = "MSAZR0044P")]
        Msazr0044p,
        #[serde(rename = "MSAZR0059P")]
        Msazr0059p,
        #[serde(rename = "MSAZR0060P")]
        Msazr0060p,
        #[serde(rename = "MSAZR0062P")]
        Msazr0062p,
        #[serde(rename = "MSAZR0063P")]
        Msazr0063p,
        #[serde(rename = "MSAZR0064P")]
        Msazr0064p,
        #[serde(rename = "MSAZR0029P")]
        Msazr0029p,
        #[serde(rename = "MSAZR0022P")]
        Msazr0022p,
        #[serde(rename = "MSAZR0023P")]
        Msazr0023p,
        #[serde(rename = "MSAZR0148P")]
        Msazr0148p,
        #[serde(rename = "MSAZR0025P")]
        Msazr0025p,
        #[serde(rename = "MSAZR0036P")]
        Msazr0036p,
        #[serde(rename = "MSAZR0120P")]
        Msazr0120p,
        #[serde(rename = "MSAZR0121P")]
        Msazr0121p,
        #[serde(rename = "MSAZR0122P")]
        Msazr0122p,
        #[serde(rename = "MSAZR0123P")]
        Msazr0123p,
        #[serde(rename = "MSAZR0124P")]
        Msazr0124p,
        #[serde(rename = "MSAZR0125P")]
        Msazr0125p,
        #[serde(rename = "MSAZR0126P")]
        Msazr0126p,
        #[serde(rename = "MSAZR0127P")]
        Msazr0127p,
        #[serde(rename = "MSAZR0128P")]
        Msazr0128p,
        #[serde(rename = "MSAZR0129P")]
        Msazr0129p,
        #[serde(rename = "MSAZR0130P")]
        Msazr0130p,
        #[serde(rename = "MSAZR0111P")]
        Msazr0111p,
        #[serde(rename = "MSAZR0144P")]
        Msazr0144p,
        #[serde(rename = "MSAZR0149P")]
        Msazr0149p,
        #[serde(rename = "MSMCAZR0044P")]
        Msmcazr0044p,
        #[serde(rename = "MSMCAZR0059P")]
        Msmcazr0059p,
        #[serde(rename = "MSMCAZR0060P")]
        Msmcazr0060p,
        #[serde(rename = "MSMCAZR0063P")]
        Msmcazr0063p,
        #[serde(rename = "MSMCAZR0120P")]
        Msmcazr0120p,
        #[serde(rename = "MSMCAZR0121P")]
        Msmcazr0121p,
        #[serde(rename = "MSMCAZR0125P")]
        Msmcazr0125p,
        #[serde(rename = "MSMCAZR0128P")]
        Msmcazr0128p,
        #[serde(rename = "MSAZRDE0003P")]
        Msazrde0003p,
        #[serde(rename = "MSAZRDE0044P")]
        Msazrde0044p,
        #[serde(rename = "MSAZRUSGOV0003P")]
        Msazrusgov0003p,
        #[serde(rename = "EA")]
        Ea,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AzurePricingTier {
        Standard,
        Basic,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AzureStorageRedundancy {
        Unknown,
        LocallyRedundant,
        ZoneRedundant,
        GeoRedundant,
        ReadAccessGeoRedundant,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Percentile {
        Percentile50,
        Percentile90,
        Percentile95,
        Percentile99,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum TimeRange {
        Day,
        Week,
        Month,
        Custom,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Stage {
        InProgress,
        UnderReview,
        Approved,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Currency {
        Unknown,
        #[serde(rename = "USD")]
        Usd,
        #[serde(rename = "DKK")]
        Dkk,
        #[serde(rename = "CAD")]
        Cad,
        #[serde(rename = "IDR")]
        Idr,
        #[serde(rename = "JPY")]
        Jpy,
        #[serde(rename = "KRW")]
        Krw,
        #[serde(rename = "NZD")]
        Nzd,
        #[serde(rename = "NOK")]
        Nok,
        #[serde(rename = "RUB")]
        Rub,
        #[serde(rename = "SAR")]
        Sar,
        #[serde(rename = "ZAR")]
        Zar,
        #[serde(rename = "SEK")]
        Sek,
        #[serde(rename = "TRY")]
        Try,
        #[serde(rename = "GBP")]
        Gbp,
        #[serde(rename = "MXN")]
        Mxn,
        #[serde(rename = "MYR")]
        Myr,
        #[serde(rename = "INR")]
        Inr,
        #[serde(rename = "HKD")]
        Hkd,
        #[serde(rename = "BRL")]
        Brl,
        #[serde(rename = "TWD")]
        Twd,
        #[serde(rename = "EUR")]
        Eur,
        #[serde(rename = "CHF")]
        Chf,
        #[serde(rename = "ARS")]
        Ars,
        #[serde(rename = "AUD")]
        Aud,
        #[serde(rename = "CNY")]
        Cny,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AzureHybridUseBenefit {
        Unknown,
        Yes,
        No,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SizingCriterion {
        PerformanceBased,
        AsOnPremises,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ReservedInstance {
        None,
        #[serde(rename = "RI1Year")]
        Ri1Year,
        #[serde(rename = "RI3Year")]
        Ri3Year,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AzureDiskType {
        Unknown,
        Standard,
        Premium,
        #[serde(rename = "StandardSSD")]
        StandardSsd,
        StandardOrPremium,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Created,
        Updated,
        Running,
        Completed,
        Invalid,
        OutOfSync,
        OutDated,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AssessmentResultList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<Assessment>,
}
impl AssessmentResultList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CloudError {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub error: Option<CloudErrorBody>,
}
impl CloudError {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CloudErrorBody {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub code: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub message: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub target: Option<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub details: Vec<CloudErrorBody>,
}
impl CloudErrorBody {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CollectorAgentProperties {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub version: Option<String>,
    #[serde(rename = "lastHeartbeatUtc", default, skip_serializing_if = "Option::is_none")]
    pub last_heartbeat_utc: Option<String>,
    #[serde(rename = "spnDetails", default, skip_serializing_if = "Option::is_none")]
    pub spn_details: Option<CollectorBodyAgentSpnProperties>,
}
impl CollectorAgentProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CollectorBodyAgentSpnProperties {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub authority: Option<String>,
    #[serde(rename = "applicationId", default, skip_serializing_if = "Option::is_none")]
    pub application_id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub audience: Option<String>,
    #[serde(rename = "objectId", default, skip_serializing_if = "Option::is_none")]
    pub object_id: Option<String>,
    #[serde(rename = "tenantId", default, skip_serializing_if = "Option::is_none")]
    pub tenant_id: Option<String>,
}
impl CollectorBodyAgentSpnProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CollectorProperties {
    #[serde(rename = "discoverySiteId", default, skip_serializing_if = "Option::is_none")]
    pub discovery_site_id: Option<String>,
    #[serde(rename = "createdTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub created_timestamp: Option<String>,
    #[serde(rename = "updatedTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub updated_timestamp: Option<String>,
    #[serde(rename = "agentProperties", default, skip_serializing_if = "Option::is_none")]
    pub agent_properties: Option<CollectorAgentProperties>,
}
impl CollectorProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Disk {
    #[serde(rename = "gigabytesAllocated", default, skip_serializing_if = "Option::is_none")]
    pub gigabytes_allocated: Option<f64>,
    #[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
}
impl Disk {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DownloadUrl {
    #[serde(rename = "assessmentReportUrl", default, skip_serializing_if = "Option::is_none")]
    pub assessment_report_url: Option<String>,
    #[serde(rename = "expirationTime", default, skip_serializing_if = "Option::is_none")]
    pub expiration_time: Option<String>,
}
impl DownloadUrl {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Group {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    pub properties: GroupProperties,
}
impl Group {
    pub fn new(properties: GroupProperties) -> Self {
        Self {
            id: None,
            name: None,
            e_tag: None,
            type_: None,
            properties,
        }
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct GroupBodyProperties {
    #[serde(rename = "operationType", default, skip_serializing_if = "Option::is_none")]
    pub operation_type: Option<group_body_properties::OperationType>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub machines: Vec<String>,
}
impl GroupBodyProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod group_body_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum OperationType {
        Add,
        Remove,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct GroupProperties {
    #[serde(rename = "groupStatus", default, skip_serializing_if = "Option::is_none")]
    pub group_status: Option<group_properties::GroupStatus>,
    #[serde(rename = "machineCount", default, skip_serializing_if = "Option::is_none")]
    pub machine_count: Option<i32>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub assessments: Vec<String>,
    #[serde(rename = "areAssessmentsRunning", default, skip_serializing_if = "Option::is_none")]
    pub are_assessments_running: Option<bool>,
    #[serde(rename = "createdTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub created_timestamp: Option<String>,
    #[serde(rename = "updatedTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub updated_timestamp: Option<String>,
    #[serde(rename = "groupType", default, skip_serializing_if = "Option::is_none")]
    pub group_type: Option<String>,
}
impl GroupProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod group_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum GroupStatus {
        Created,
        Updated,
        Running,
        Completed,
        Invalid,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct GroupResultList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<Group>,
}
impl GroupResultList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct HyperVCollector {
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<CollectorProperties>,
}
impl HyperVCollector {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct HyperVCollectorList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<HyperVCollector>,
}
impl HyperVCollectorList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ImportCollector {
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<ImportCollectorProperties>,
}
impl ImportCollector {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ImportCollectorList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<ImportCollector>,
}
impl ImportCollectorList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ImportCollectorProperties {
    #[serde(rename = "discoverySiteId", default, skip_serializing_if = "Option::is_none")]
    pub discovery_site_id: Option<String>,
    #[serde(rename = "createdTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub created_timestamp: Option<String>,
    #[serde(rename = "updatedTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub updated_timestamp: Option<String>,
}
impl ImportCollectorProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Machine {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<MachineProperties>,
}
impl Machine {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct MachineProperties {
    #[serde(rename = "bootType", default, skip_serializing_if = "Option::is_none")]
    pub boot_type: Option<machine_properties::BootType>,
    #[serde(rename = "datacenterManagementServerArmId", default, skip_serializing_if = "Option::is_none")]
    pub datacenter_management_server_arm_id: Option<String>,
    #[serde(rename = "discoveryMachineArmId", default, skip_serializing_if = "Option::is_none")]
    pub discovery_machine_arm_id: Option<String>,
    #[serde(rename = "datacenterManagementServerName", default, skip_serializing_if = "Option::is_none")]
    pub datacenter_management_server_name: Option<String>,
    #[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
    #[serde(rename = "megabytesOfMemory", default, skip_serializing_if = "Option::is_none")]
    pub megabytes_of_memory: Option<f64>,
    #[serde(rename = "numberOfCores", default, skip_serializing_if = "Option::is_none")]
    pub number_of_cores: Option<i64>,
    #[serde(rename = "operatingSystemType", default, skip_serializing_if = "Option::is_none")]
    pub operating_system_type: Option<String>,
    #[serde(rename = "operatingSystemName", default, skip_serializing_if = "Option::is_none")]
    pub operating_system_name: Option<String>,
    #[serde(rename = "operatingSystemVersion", default, skip_serializing_if = "Option::is_none")]
    pub operating_system_version: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub groups: Vec<String>,
    #[serde(rename = "createdTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub created_timestamp: Option<String>,
    #[serde(rename = "updatedTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub updated_timestamp: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub disks: Option<serde_json::Value>,
    #[serde(rename = "networkAdapters", default, skip_serializing_if = "Option::is_none")]
    pub network_adapters: Option<serde_json::Value>,
}
impl MachineProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod machine_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum BootType {
        Unknown,
        #[serde(rename = "EFI")]
        Efi,
        #[serde(rename = "BIOS")]
        Bios,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct MachineResultList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<Machine>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
impl MachineResultList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct NetworkAdapter {
    #[serde(rename = "macAddress", default, skip_serializing_if = "Option::is_none")]
    pub mac_address: Option<String>,
    #[serde(rename = "ipAddresses", default, skip_serializing_if = "Vec::is_empty")]
    pub ip_addresses: Vec<String>,
    #[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
}
impl NetworkAdapter {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Operation {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub display: Option<OperationDisplay>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub origin: Option<String>,
}
impl Operation {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct OperationDisplay {
    #[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>,
}
impl OperationDisplay {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct OperationResultList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<Operation>,
}
impl OperationResultList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PrivateEndpointConnection {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    pub properties: PrivateEndpointConnectionProperties,
}
impl PrivateEndpointConnection {
    pub fn new(properties: PrivateEndpointConnectionProperties) -> Self {
        Self {
            name: None,
            type_: None,
            e_tag: None,
            id: None,
            properties,
        }
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PrivateEndpointConnectionCollection {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<PrivateEndpointConnection>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
impl PrivateEndpointConnectionCollection {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PrivateEndpointConnectionProperties {
    #[serde(rename = "provisioningState", default, skip_serializing_if = "Option::is_none")]
    pub provisioning_state: Option<private_endpoint_connection_properties::ProvisioningState>,
    #[serde(rename = "privateEndpoint", default, skip_serializing_if = "Option::is_none")]
    pub private_endpoint: Option<ResourceId>,
    #[serde(rename = "privateLinkServiceConnectionState", default, skip_serializing_if = "Option::is_none")]
    pub private_link_service_connection_state: Option<PrivateLinkServiceConnectionState>,
}
impl PrivateEndpointConnectionProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod private_endpoint_connection_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ProvisioningState {
        Accepted,
        InProgress,
        Succeeded,
        Failed,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PrivateLinkResource {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<PrivateLinkResourceProperties>,
}
impl PrivateLinkResource {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PrivateLinkResourceCollection {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<PrivateLinkResource>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
impl PrivateLinkResourceCollection {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PrivateLinkResourceProperties {
    #[serde(rename = "requiredMembers", default, skip_serializing_if = "Vec::is_empty")]
    pub required_members: Vec<String>,
    #[serde(rename = "requiredZoneNames", default, skip_serializing_if = "Vec::is_empty")]
    pub required_zone_names: Vec<String>,
    #[serde(rename = "groupId", default, skip_serializing_if = "Option::is_none")]
    pub group_id: Option<String>,
}
impl PrivateLinkResourceProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PrivateLinkServiceConnectionState {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub status: Option<private_link_service_connection_state::Status>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(rename = "actionsRequired", default, skip_serializing_if = "Option::is_none")]
    pub actions_required: Option<String>,
}
impl PrivateLinkServiceConnectionState {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod private_link_service_connection_state {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Approved,
        Pending,
        Rejected,
        Disconnected,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Project {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub location: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub tags: Option<serde_json::Value>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<ProjectProperties>,
}
impl Project {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ProjectProperties {
    #[serde(rename = "createdTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub created_timestamp: Option<String>,
    #[serde(rename = "updatedTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub updated_timestamp: Option<String>,
    #[serde(rename = "serviceEndpoint", default, skip_serializing_if = "Option::is_none")]
    pub service_endpoint: Option<String>,
    #[serde(rename = "assessmentSolutionId", default, skip_serializing_if = "Option::is_none")]
    pub assessment_solution_id: Option<String>,
    #[serde(rename = "projectStatus", default, skip_serializing_if = "Option::is_none")]
    pub project_status: Option<project_properties::ProjectStatus>,
    #[serde(rename = "customerWorkspaceId", default, skip_serializing_if = "Option::is_none")]
    pub customer_workspace_id: Option<String>,
    #[serde(rename = "customerWorkspaceLocation", default, skip_serializing_if = "Option::is_none")]
    pub customer_workspace_location: Option<String>,
    #[serde(rename = "numberOfGroups", default, skip_serializing_if = "Option::is_none")]
    pub number_of_groups: Option<i32>,
    #[serde(rename = "numberOfMachines", default, skip_serializing_if = "Option::is_none")]
    pub number_of_machines: Option<i32>,
    #[serde(rename = "numberOfAssessments", default, skip_serializing_if = "Option::is_none")]
    pub number_of_assessments: Option<i32>,
    #[serde(rename = "lastAssessmentTimestamp", default, skip_serializing_if = "Option::is_none")]
    pub last_assessment_timestamp: Option<String>,
    #[serde(rename = "publicNetworkAccess", default, skip_serializing_if = "Option::is_none")]
    pub public_network_access: Option<String>,
    #[serde(rename = "privateEndpointConnections", default, skip_serializing_if = "Vec::is_empty")]
    pub private_endpoint_connections: Vec<PrivateEndpointConnection>,
    #[serde(rename = "customerStorageAccountArmId", default, skip_serializing_if = "Option::is_none")]
    pub customer_storage_account_arm_id: Option<String>,
    #[serde(rename = "provisioningState", default, skip_serializing_if = "Option::is_none")]
    pub provisioning_state: Option<project_properties::ProvisioningState>,
}
impl ProjectProperties {
    pub fn new() -> Self {
        Self::default()
    }
}
pub mod project_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ProjectStatus {
        Active,
        Inactive,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ProvisioningState {
        Accepted,
        Creating,
        Deleting,
        Failed,
        Moving,
        Succeeded,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ProjectResultList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<Project>,
    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
impl ProjectResultList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ResourceId {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
}
impl ResourceId {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ServerCollector {
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<CollectorProperties>,
}
impl ServerCollector {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ServerCollectorList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<ServerCollector>,
}
impl ServerCollectorList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct UpdateGroupBody {
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<GroupBodyProperties>,
}
impl UpdateGroupBody {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VMwareCollector {
    #[serde(rename = "eTag", default, skip_serializing_if = "Option::is_none")]
    pub e_tag: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
    pub type_: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub properties: Option<CollectorProperties>,
}
impl VMwareCollector {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VMwareCollectorList {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub value: Vec<VMwareCollector>,
}
impl VMwareCollectorList {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VmFamily {
    #[serde(rename = "familyName", default, skip_serializing_if = "Option::is_none")]
    pub family_name: Option<String>,
    #[serde(rename = "targetLocations", default, skip_serializing_if = "Vec::is_empty")]
    pub target_locations: Vec<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub category: Vec<String>,
}
impl VmFamily {
    pub fn new() -> Self {
        Self::default()
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VmUptime {
    #[serde(rename = "daysPerMonth", default, skip_serializing_if = "Option::is_none")]
    pub days_per_month: Option<f64>,
    #[serde(rename = "hoursPerDay", default, skip_serializing_if = "Option::is_none")]
    pub hours_per_day: Option<f64>,
}
impl VmUptime {
    pub fn new() -> Self {
        Self::default()
    }
}
