#![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 Addon {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    pub kind: addon::Kind,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
}
pub mod addon {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Kind {
        IotEdge,
        ArcForKubernetes,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AddonList {
    #[serde(skip_serializing)]
    pub value: Vec<Addon>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Address {
    #[serde(rename = "addressLine1", skip_serializing_if = "Option::is_none")]
    pub address_line1: Option<String>,
    #[serde(rename = "addressLine2", skip_serializing_if = "Option::is_none")]
    pub address_line2: Option<String>,
    #[serde(rename = "addressLine3", skip_serializing_if = "Option::is_none")]
    pub address_line3: Option<String>,
    #[serde(rename = "postalCode", skip_serializing_if = "Option::is_none")]
    pub postal_code: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub city: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub state: Option<String>,
    pub country: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Alert {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<AlertProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertErrorDetails {
    #[serde(rename = "errorCode", skip_serializing)]
    pub error_code: Option<String>,
    #[serde(rename = "errorMessage", skip_serializing)]
    pub error_message: Option<String>,
    #[serde(skip_serializing)]
    pub occurrences: Option<i32>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertList {
    #[serde(skip_serializing)]
    pub value: Vec<Alert>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertProperties {
    #[serde(skip_serializing)]
    pub title: Option<String>,
    #[serde(rename = "alertType", skip_serializing)]
    pub alert_type: Option<String>,
    #[serde(rename = "appearedAtDateTime", skip_serializing)]
    pub appeared_at_date_time: Option<String>,
    #[serde(skip_serializing)]
    pub recommendation: Option<String>,
    #[serde(skip_serializing)]
    pub severity: Option<alert_properties::Severity>,
    #[serde(rename = "errorDetails", skip_serializing_if = "Option::is_none")]
    pub error_details: Option<AlertErrorDetails>,
    #[serde(rename = "detailedInformation", skip_serializing)]
    pub detailed_information: Option<serde_json::Value>,
}
pub mod alert_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Severity {
        Informational,
        Warning,
        Critical,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ArcAddon {
    #[serde(flatten)]
    pub addon: Addon,
    pub properties: ArcAddonProperties,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ArcAddonProperties {
    #[serde(rename = "subscriptionId")]
    pub subscription_id: String,
    #[serde(rename = "resourceGroupName")]
    pub resource_group_name: String,
    #[serde(rename = "resourceName")]
    pub resource_name: String,
    #[serde(rename = "resourceLocation")]
    pub resource_location: String,
    #[serde(skip_serializing)]
    pub version: Option<String>,
    #[serde(rename = "hostPlatform", skip_serializing)]
    pub host_platform: Option<arc_addon_properties::HostPlatform>,
    #[serde(rename = "hostPlatformType", skip_serializing)]
    pub host_platform_type: Option<arc_addon_properties::HostPlatformType>,
    #[serde(rename = "provisioningState", skip_serializing)]
    pub provisioning_state: Option<arc_addon_properties::ProvisioningState>,
}
pub mod arc_addon_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatform {
        Windows,
        Linux,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatformType {
        KubernetesCluster,
        #[serde(rename = "LinuxVM")]
        LinuxVm,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ProvisioningState {
        Invalid,
        Creating,
        Created,
        Updating,
        Reconfiguring,
        Failed,
        Deleting,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ArmBaseModel {
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AsymmetricEncryptedSecret {
    pub value: String,
    #[serde(rename = "encryptionCertThumbprint", 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 Authentication {
    #[serde(rename = "symmetricKey", skip_serializing_if = "Option::is_none")]
    pub symmetric_key: Option<SymmetricKey>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AzureContainerInfo {
    #[serde(rename = "storageAccountCredentialId")]
    pub storage_account_credential_id: String,
    #[serde(rename = "containerName")]
    pub container_name: String,
    #[serde(rename = "dataFormat")]
    pub data_format: azure_container_info::DataFormat,
}
pub mod azure_container_info {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DataFormat {
        BlockBlob,
        PageBlob,
        AzureFile,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BandwidthSchedule {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    pub properties: BandwidthScheduleProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BandwidthScheduleProperties {
    pub start: String,
    pub stop: String,
    #[serde(rename = "rateInMbps")]
    pub rate_in_mbps: i32,
    pub days: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BandwidthSchedulesList {
    #[serde(skip_serializing)]
    pub value: Vec<BandwidthSchedule>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ClientAccessRight {
    pub client: String,
    #[serde(rename = "accessPermission")]
    pub access_permission: client_access_right::AccessPermission,
}
pub mod client_access_right {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AccessPermission {
        NoAccess,
        ReadOnly,
        ReadWrite,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudEdgeManagementRole {
    #[serde(flatten)]
    pub role: Role,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<CloudEdgeManagementRoleProperties>,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudEdgeManagementRoleProperties {
    #[serde(rename = "localManagementStatus", skip_serializing)]
    pub local_management_status: Option<cloud_edge_management_role_properties::LocalManagementStatus>,
    #[serde(rename = "edgeProfile", skip_serializing_if = "Option::is_none")]
    pub edge_profile: Option<EdgeProfile>,
    #[serde(rename = "roleStatus")]
    pub role_status: cloud_edge_management_role_properties::RoleStatus,
}
pub mod cloud_edge_management_role_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum LocalManagementStatus {
        Enabled,
        Disabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RoleStatus {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudError {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub error: Option<CloudErrorBody>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudErrorBody {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub code: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub message: Option<String>,
    #[serde(skip_serializing_if = "Vec::is_empty")]
    pub details: Vec<CloudErrorBody>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CniConfig {
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
    #[serde(skip_serializing)]
    pub version: Option<String>,
    #[serde(rename = "podSubnet", skip_serializing)]
    pub pod_subnet: Option<String>,
    #[serde(rename = "serviceSubnet", skip_serializing)]
    pub service_subnet: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ComputeResource {
    #[serde(rename = "processorCount")]
    pub processor_count: i32,
    #[serde(rename = "memoryInGB")]
    pub memory_in_gb: i64,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ContactDetails {
    #[serde(rename = "contactPerson")]
    pub contact_person: String,
    #[serde(rename = "companyName")]
    pub company_name: String,
    pub phone: String,
    #[serde(rename = "emailList")]
    pub email_list: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Container {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    pub properties: ContainerProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ContainerList {
    #[serde(skip_serializing)]
    pub value: Vec<Container>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ContainerProperties {
    #[serde(rename = "containerStatus", skip_serializing)]
    pub container_status: Option<container_properties::ContainerStatus>,
    #[serde(rename = "dataFormat")]
    pub data_format: container_properties::DataFormat,
    #[serde(rename = "refreshDetails", skip_serializing_if = "Option::is_none")]
    pub refresh_details: Option<RefreshDetails>,
    #[serde(rename = "createdDateTime", skip_serializing)]
    pub created_date_time: Option<String>,
}
pub mod container_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ContainerStatus {
        #[serde(rename = "OK")]
        Ok,
        Offline,
        Unknown,
        Updating,
        NeedsAttention,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DataFormat {
        BlockBlob,
        PageBlob,
        AzureFile,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDevice {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    pub location: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub tags: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub sku: Option<Sku>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub etag: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub identity: Option<ResourceIdentity>,
    #[serde(skip_serializing)]
    pub kind: Option<data_box_edge_device::Kind>,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<DataBoxEdgeDeviceProperties>,
}
pub mod data_box_edge_device {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Kind {
        AzureDataBoxGateway,
        AzureStackEdge,
        AzureStackHub,
        AzureModularDataCentre,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDeviceExtendedInfo {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<DataBoxEdgeDeviceExtendedInfoProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDeviceExtendedInfoPatch {
    #[serde(rename = "clientSecretStoreId", skip_serializing_if = "Option::is_none")]
    pub client_secret_store_id: Option<String>,
    #[serde(rename = "clientSecretStoreUrl", skip_serializing_if = "Option::is_none")]
    pub client_secret_store_url: Option<String>,
    #[serde(rename = "channelIntegrityKeyName", skip_serializing_if = "Option::is_none")]
    pub channel_integrity_key_name: Option<String>,
    #[serde(rename = "channelIntegrityKeyVersion", skip_serializing_if = "Option::is_none")]
    pub channel_integrity_key_version: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDeviceExtendedInfoProperties {
    #[serde(rename = "encryptionKeyThumbprint", skip_serializing_if = "Option::is_none")]
    pub encryption_key_thumbprint: Option<String>,
    #[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
    pub encryption_key: Option<String>,
    #[serde(rename = "resourceKey", skip_serializing)]
    pub resource_key: Option<String>,
    #[serde(rename = "clientSecretStoreId", skip_serializing_if = "Option::is_none")]
    pub client_secret_store_id: Option<String>,
    #[serde(rename = "clientSecretStoreUrl", skip_serializing_if = "Option::is_none")]
    pub client_secret_store_url: Option<String>,
    #[serde(rename = "channelIntegrityKeyName", skip_serializing_if = "Option::is_none")]
    pub channel_integrity_key_name: Option<String>,
    #[serde(rename = "channelIntegrityKeyVersion", skip_serializing_if = "Option::is_none")]
    pub channel_integrity_key_version: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDeviceList {
    #[serde(skip_serializing)]
    pub value: Vec<DataBoxEdgeDevice>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDevicePatch {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub tags: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub identity: Option<ResourceIdentity>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<DataBoxEdgeDevicePropertiesPatch>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDeviceProperties {
    #[serde(rename = "dataBoxEdgeDeviceStatus", skip_serializing_if = "Option::is_none")]
    pub data_box_edge_device_status: Option<data_box_edge_device_properties::DataBoxEdgeDeviceStatus>,
    #[serde(rename = "serialNumber", skip_serializing)]
    pub serial_number: Option<String>,
    #[serde(skip_serializing)]
    pub description: Option<String>,
    #[serde(rename = "modelDescription", skip_serializing)]
    pub model_description: Option<String>,
    #[serde(rename = "deviceType", skip_serializing)]
    pub device_type: Option<data_box_edge_device_properties::DeviceType>,
    #[serde(rename = "friendlyName", skip_serializing)]
    pub friendly_name: Option<String>,
    #[serde(skip_serializing)]
    pub culture: Option<String>,
    #[serde(rename = "deviceModel", skip_serializing)]
    pub device_model: Option<String>,
    #[serde(rename = "deviceSoftwareVersion", skip_serializing)]
    pub device_software_version: Option<String>,
    #[serde(rename = "deviceLocalCapacity", skip_serializing)]
    pub device_local_capacity: Option<i64>,
    #[serde(rename = "timeZone", skip_serializing)]
    pub time_zone: Option<String>,
    #[serde(rename = "deviceHcsVersion", skip_serializing)]
    pub device_hcs_version: Option<String>,
    #[serde(rename = "configuredRoleTypes", skip_serializing)]
    pub configured_role_types: Vec<String>,
    #[serde(rename = "nodeCount", skip_serializing)]
    pub node_count: Option<i32>,
    #[serde(rename = "resourceMoveDetails", skip_serializing_if = "Option::is_none")]
    pub resource_move_details: Option<ResourceMoveDetails>,
    #[serde(rename = "edgeProfile", skip_serializing_if = "Option::is_none")]
    pub edge_profile: Option<EdgeProfile>,
}
pub mod data_box_edge_device_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DataBoxEdgeDeviceStatus {
        ReadyToSetup,
        Online,
        Offline,
        NeedsAttention,
        Disconnected,
        PartiallyDisconnected,
        Maintenance,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DeviceType {
        DataBoxEdgeDevice,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeDevicePropertiesPatch {
    #[serde(rename = "edgeProfile", skip_serializing_if = "Option::is_none")]
    pub edge_profile: Option<EdgeProfilePatch>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeMoveRequest {
    #[serde(rename = "targetResourceGroup")]
    pub target_resource_group: String,
    pub resources: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeSku {
    #[serde(rename = "resourceType", skip_serializing)]
    pub resource_type: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<data_box_edge_sku::Name>,
    #[serde(skip_serializing)]
    pub kind: Option<String>,
    #[serde(skip_serializing)]
    pub tier: Option<data_box_edge_sku::Tier>,
    #[serde(skip_serializing)]
    pub size: Option<String>,
    #[serde(skip_serializing)]
    pub family: Option<String>,
    #[serde(skip_serializing)]
    pub locations: Vec<String>,
    #[serde(rename = "apiVersions", skip_serializing)]
    pub api_versions: Vec<String>,
    #[serde(rename = "locationInfo", skip_serializing)]
    pub location_info: Vec<SkuLocationInfo>,
    #[serde(skip_serializing)]
    pub costs: Vec<SkuCost>,
    #[serde(rename = "signupOption", skip_serializing)]
    pub signup_option: Option<data_box_edge_sku::SignupOption>,
    #[serde(skip_serializing)]
    pub version: Option<data_box_edge_sku::Version>,
    #[serde(skip_serializing)]
    pub availability: Option<data_box_edge_sku::Availability>,
    #[serde(rename = "shipmentTypes", skip_serializing)]
    pub shipment_types: Vec<String>,
}
pub mod data_box_edge_sku {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Name {
        Gateway,
        Edge,
        #[serde(rename = "TEA_1Node")]
        Tea1node,
        #[serde(rename = "TEA_1Node_UPS")]
        Tea1nodeUps,
        #[serde(rename = "TEA_1Node_Heater")]
        Tea1nodeHeater,
        #[serde(rename = "TEA_1Node_UPS_Heater")]
        Tea1nodeUpsHeater,
        #[serde(rename = "TEA_4Node_Heater")]
        Tea4nodeHeater,
        #[serde(rename = "TEA_4Node_UPS_Heater")]
        Tea4nodeUpsHeater,
        #[serde(rename = "TMA")]
        Tma,
        #[serde(rename = "TDC")]
        Tdc,
        #[serde(rename = "TCA_Small")]
        TcaSmall,
        #[serde(rename = "GPU")]
        Gpu,
        #[serde(rename = "TCA_Large")]
        TcaLarge,
        #[serde(rename = "EdgeP_Base")]
        EdgePBase,
        #[serde(rename = "EdgeP_High")]
        EdgePHigh,
        #[serde(rename = "EdgePR_Base")]
        EdgePrBase,
        #[serde(rename = "EdgePR_Base_UPS")]
        EdgePrBaseUps,
        #[serde(rename = "EdgeMR_Mini")]
        EdgeMrMini,
        #[serde(rename = "RCA_Small")]
        RcaSmall,
        #[serde(rename = "RCA_Large")]
        RcaLarge,
        #[serde(rename = "RDC")]
        Rdc,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Tier {
        Standard,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum SignupOption {
        None,
        Available,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Version {
        Stable,
        Preview,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Availability {
        Available,
        Unavailable,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataBoxEdgeSkuList {
    #[serde(skip_serializing)]
    pub value: Vec<DataBoxEdgeSku>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DcAccessCode {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<DcAccessCodeProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DcAccessCodeProperties {
    #[serde(rename = "authCode", skip_serializing_if = "Option::is_none")]
    pub auth_code: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EdgeProfile {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub subscription: Option<EdgeProfileSubscription>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EdgeProfilePatch {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub subscription: Option<EdgeProfileSubscriptionPatch>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EdgeProfileSubscription {
    #[serde(rename = "registrationId", skip_serializing_if = "Option::is_none")]
    pub registration_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub state: Option<edge_profile_subscription::State>,
    #[serde(rename = "registrationDate", skip_serializing_if = "Option::is_none")]
    pub registration_date: Option<String>,
    #[serde(rename = "subscriptionId", skip_serializing_if = "Option::is_none")]
    pub subscription_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<SubscriptionProperties>,
}
pub mod edge_profile_subscription {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum State {
        Registered,
        Warned,
        Suspended,
        Deleted,
        Unregistered,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EdgeProfileSubscriptionPatch {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EtcdInfo {
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
    #[serde(skip_serializing)]
    pub version: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FileEventTrigger {
    #[serde(flatten)]
    pub trigger: Trigger,
    pub properties: FileTriggerProperties,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FileSourceInfo {
    #[serde(rename = "shareId")]
    pub share_id: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FileTriggerProperties {
    #[serde(rename = "sourceInfo")]
    pub source_info: FileSourceInfo,
    #[serde(rename = "sinkInfo")]
    pub sink_info: RoleSinkInfo,
    #[serde(rename = "customContextTag", skip_serializing_if = "Option::is_none")]
    pub custom_context_tag: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct GenerateCertResponse {
    #[serde(rename = "publicKey", skip_serializing_if = "Option::is_none")]
    pub public_key: Option<String>,
    #[serde(rename = "privateKey", skip_serializing_if = "Option::is_none")]
    pub private_key: Option<String>,
    #[serde(rename = "expiryTimeInUTC", skip_serializing_if = "Option::is_none")]
    pub expiry_time_in_utc: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ImageRepositoryCredential {
    #[serde(rename = "imageRepositoryUrl")]
    pub image_repository_url: String,
    #[serde(rename = "userName")]
    pub user_name: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub password: Option<AsymmetricEncryptedSecret>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTAddon {
    #[serde(flatten)]
    pub addon: Addon,
    pub properties: IoTAddonProperties,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTAddonProperties {
    #[serde(rename = "ioTDeviceDetails")]
    pub io_t_device_details: IoTDeviceInfo,
    #[serde(rename = "ioTEdgeDeviceDetails")]
    pub io_t_edge_device_details: IoTDeviceInfo,
    #[serde(skip_serializing)]
    pub version: Option<String>,
    #[serde(rename = "hostPlatform", skip_serializing)]
    pub host_platform: Option<io_t_addon_properties::HostPlatform>,
    #[serde(rename = "hostPlatformType", skip_serializing)]
    pub host_platform_type: Option<io_t_addon_properties::HostPlatformType>,
    #[serde(rename = "provisioningState", skip_serializing)]
    pub provisioning_state: Option<io_t_addon_properties::ProvisioningState>,
}
pub mod io_t_addon_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatform {
        Windows,
        Linux,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatformType {
        KubernetesCluster,
        #[serde(rename = "LinuxVM")]
        LinuxVm,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ProvisioningState {
        Invalid,
        Creating,
        Created,
        Updating,
        Reconfiguring,
        Failed,
        Deleting,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTDeviceInfo {
    #[serde(rename = "deviceId")]
    pub device_id: String,
    #[serde(rename = "ioTHostHub")]
    pub io_t_host_hub: String,
    #[serde(rename = "ioTHostHubId", skip_serializing_if = "Option::is_none")]
    pub io_t_host_hub_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub authentication: Option<Authentication>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTEdgeAgentInfo {
    #[serde(rename = "imageName")]
    pub image_name: String,
    pub tag: String,
    #[serde(rename = "imageRepository", skip_serializing_if = "Option::is_none")]
    pub image_repository: Option<ImageRepositoryCredential>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTRole {
    #[serde(flatten)]
    pub role: Role,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<IoTRoleProperties>,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTRoleProperties {
    #[serde(rename = "hostPlatform")]
    pub host_platform: io_t_role_properties::HostPlatform,
    #[serde(rename = "ioTDeviceDetails")]
    pub io_t_device_details: IoTDeviceInfo,
    #[serde(rename = "ioTEdgeDeviceDetails")]
    pub io_t_edge_device_details: IoTDeviceInfo,
    #[serde(rename = "shareMappings", skip_serializing_if = "Vec::is_empty")]
    pub share_mappings: Vec<MountPointMap>,
    #[serde(rename = "ioTEdgeAgentInfo", skip_serializing_if = "Option::is_none")]
    pub io_t_edge_agent_info: Option<IoTEdgeAgentInfo>,
    #[serde(rename = "hostPlatformType", skip_serializing)]
    pub host_platform_type: Option<io_t_role_properties::HostPlatformType>,
    #[serde(rename = "computeResource", skip_serializing_if = "Option::is_none")]
    pub compute_resource: Option<ComputeResource>,
    #[serde(rename = "roleStatus")]
    pub role_status: io_t_role_properties::RoleStatus,
}
pub mod io_t_role_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatform {
        Windows,
        Linux,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatformType {
        KubernetesCluster,
        #[serde(rename = "LinuxVM")]
        LinuxVm,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RoleStatus {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Ipv4Config {
    #[serde(rename = "ipAddress", skip_serializing)]
    pub ip_address: Option<String>,
    #[serde(skip_serializing)]
    pub subnet: Option<String>,
    #[serde(skip_serializing)]
    pub gateway: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Ipv6Config {
    #[serde(rename = "ipAddress", skip_serializing)]
    pub ip_address: Option<String>,
    #[serde(rename = "prefixLength", skip_serializing)]
    pub prefix_length: Option<i32>,
    #[serde(skip_serializing)]
    pub gateway: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Job {
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
    #[serde(skip_serializing)]
    pub status: Option<job::Status>,
    #[serde(rename = "startTime", skip_serializing)]
    pub start_time: Option<String>,
    #[serde(rename = "endTime", skip_serializing)]
    pub end_time: Option<String>,
    #[serde(rename = "percentComplete", skip_serializing)]
    pub percent_complete: Option<i32>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub error: Option<JobErrorDetails>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<JobProperties>,
}
pub mod job {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Invalid,
        Running,
        Succeeded,
        Failed,
        Canceled,
        Paused,
        Scheduled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobErrorDetails {
    #[serde(rename = "errorDetails", skip_serializing)]
    pub error_details: Vec<JobErrorItem>,
    #[serde(skip_serializing)]
    pub code: Option<String>,
    #[serde(skip_serializing)]
    pub message: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobErrorItem {
    #[serde(skip_serializing)]
    pub recommendations: Vec<String>,
    #[serde(skip_serializing)]
    pub code: Option<String>,
    #[serde(skip_serializing)]
    pub message: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JobProperties {
    #[serde(rename = "jobType", skip_serializing)]
    pub job_type: Option<job_properties::JobType>,
    #[serde(rename = "currentStage", skip_serializing)]
    pub current_stage: Option<job_properties::CurrentStage>,
    #[serde(rename = "downloadProgress", skip_serializing_if = "Option::is_none")]
    pub download_progress: Option<UpdateDownloadProgress>,
    #[serde(rename = "installProgress", skip_serializing_if = "Option::is_none")]
    pub install_progress: Option<UpdateInstallProgress>,
    #[serde(rename = "totalRefreshErrors", skip_serializing)]
    pub total_refresh_errors: Option<i32>,
    #[serde(rename = "errorManifestFile", skip_serializing)]
    pub error_manifest_file: Option<String>,
    #[serde(rename = "refreshedEntityId", skip_serializing)]
    pub refreshed_entity_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub folder: Option<String>,
}
pub mod job_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum JobType {
        Invalid,
        ScanForUpdates,
        DownloadUpdates,
        InstallUpdates,
        RefreshShare,
        RefreshContainer,
        Backup,
        Restore,
        TriggerSupportPackage,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum CurrentStage {
        Unknown,
        Initial,
        ScanStarted,
        ScanComplete,
        ScanFailed,
        DownloadStarted,
        DownloadComplete,
        DownloadFailed,
        InstallStarted,
        InstallComplete,
        InstallFailed,
        RebootInitiated,
        Success,
        Failure,
        RescanStarted,
        RescanComplete,
        RescanFailed,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesClusterInfo {
    #[serde(rename = "etcdInfo", skip_serializing_if = "Option::is_none")]
    pub etcd_info: Option<EtcdInfo>,
    #[serde(skip_serializing)]
    pub nodes: Vec<NodeInfo>,
    pub version: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesIpConfiguration {
    #[serde(skip_serializing)]
    pub port: Option<String>,
    #[serde(rename = "ipAddress", skip_serializing_if = "Option::is_none")]
    pub ip_address: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesRole {
    #[serde(flatten)]
    pub role: Role,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<KubernetesRoleProperties>,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesRoleCompute {
    #[serde(rename = "vmProfile")]
    pub vm_profile: String,
    #[serde(rename = "memoryInBytes", skip_serializing)]
    pub memory_in_bytes: Option<i64>,
    #[serde(rename = "processorCount", skip_serializing)]
    pub processor_count: Option<i32>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesRoleNetwork {
    #[serde(rename = "cniConfig", skip_serializing_if = "Option::is_none")]
    pub cni_config: Option<CniConfig>,
    #[serde(rename = "loadBalancerConfig", skip_serializing_if = "Option::is_none")]
    pub load_balancer_config: Option<LoadBalancerConfig>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesRoleProperties {
    #[serde(rename = "hostPlatform")]
    pub host_platform: kubernetes_role_properties::HostPlatform,
    #[serde(rename = "provisioningState", skip_serializing)]
    pub provisioning_state: Option<kubernetes_role_properties::ProvisioningState>,
    #[serde(rename = "hostPlatformType", skip_serializing)]
    pub host_platform_type: Option<kubernetes_role_properties::HostPlatformType>,
    #[serde(rename = "kubernetesClusterInfo")]
    pub kubernetes_cluster_info: KubernetesClusterInfo,
    #[serde(rename = "kubernetesRoleResources")]
    pub kubernetes_role_resources: KubernetesRoleResources,
    #[serde(rename = "roleStatus")]
    pub role_status: kubernetes_role_properties::RoleStatus,
}
pub mod kubernetes_role_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatform {
        Windows,
        Linux,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ProvisioningState {
        Invalid,
        Creating,
        Created,
        Updating,
        Reconfiguring,
        Failed,
        Deleting,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum HostPlatformType {
        KubernetesCluster,
        #[serde(rename = "LinuxVM")]
        LinuxVm,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RoleStatus {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesRoleResources {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub storage: Option<KubernetesRoleStorage>,
    pub compute: KubernetesRoleCompute,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub network: Option<KubernetesRoleNetwork>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesRoleStorage {
    #[serde(rename = "storageClasses", skip_serializing)]
    pub storage_classes: Vec<KubernetesRoleStorageClassInfo>,
    #[serde(skip_serializing_if = "Vec::is_empty")]
    pub endpoints: Vec<MountPointMap>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct KubernetesRoleStorageClassInfo {
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
    #[serde(rename = "posixCompliant", skip_serializing)]
    pub posix_compliant: Option<kubernetes_role_storage_class_info::PosixCompliant>,
}
pub mod kubernetes_role_storage_class_info {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum PosixCompliant {
        Invalid,
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct LoadBalancerConfig {
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
    #[serde(skip_serializing)]
    pub version: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MecRole {
    #[serde(flatten)]
    pub role: Role,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<MecRoleProperties>,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MecRoleProperties {
    #[serde(rename = "connectionString", skip_serializing_if = "Option::is_none")]
    pub connection_string: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "roleStatus")]
    pub role_status: mec_role_properties::RoleStatus,
}
pub mod mec_role_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RoleStatus {
        Enabled,
        Disabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricConfiguration {
    #[serde(rename = "resourceId")]
    pub resource_id: String,
    #[serde(rename = "mdmAccount", skip_serializing_if = "Option::is_none")]
    pub mdm_account: Option<String>,
    #[serde(rename = "metricNameSpace", skip_serializing_if = "Option::is_none")]
    pub metric_name_space: Option<String>,
    #[serde(rename = "counterSets")]
    pub counter_sets: Vec<MetricCounterSet>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricCounter {
    pub name: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub instance: Option<String>,
    #[serde(rename = "dimensionFilter", skip_serializing_if = "Vec::is_empty")]
    pub dimension_filter: Vec<MetricDimension>,
    #[serde(rename = "additionalDimensions", skip_serializing_if = "Vec::is_empty")]
    pub additional_dimensions: Vec<MetricDimension>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricCounterSet {
    pub counters: Vec<MetricCounter>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricDimension {
    #[serde(rename = "sourceType")]
    pub source_type: String,
    #[serde(rename = "sourceName")]
    pub source_name: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricDimensionV1 {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "displayName", skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
    #[serde(rename = "toBeExportedForShoebox", skip_serializing_if = "Option::is_none")]
    pub to_be_exported_for_shoebox: Option<bool>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MetricSpecificationV1 {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "displayName", skip_serializing_if = "Option::is_none")]
    pub display_name: Option<String>,
    #[serde(rename = "displayDescription", skip_serializing_if = "Option::is_none")]
    pub display_description: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub unit: Option<metric_specification_v1::Unit>,
    #[serde(rename = "aggregationType", skip_serializing_if = "Option::is_none")]
    pub aggregation_type: Option<metric_specification_v1::AggregationType>,
    #[serde(skip_serializing_if = "Vec::is_empty")]
    pub dimensions: Vec<MetricDimensionV1>,
    #[serde(rename = "fillGapWithZero", skip_serializing_if = "Option::is_none")]
    pub fill_gap_with_zero: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub category: Option<metric_specification_v1::Category>,
    #[serde(rename = "resourceIdDimensionNameOverride", skip_serializing_if = "Option::is_none")]
    pub resource_id_dimension_name_override: Option<String>,
    #[serde(rename = "supportedTimeGrainTypes", skip_serializing_if = "Vec::is_empty")]
    pub supported_time_grain_types: Vec<String>,
    #[serde(rename = "supportedAggregationTypes", skip_serializing_if = "Vec::is_empty")]
    pub supported_aggregation_types: Vec<String>,
}
pub mod metric_specification_v1 {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Unit {
        NotSpecified,
        Percent,
        Count,
        Seconds,
        Milliseconds,
        Bytes,
        BytesPerSecond,
        CountPerSecond,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AggregationType {
        NotSpecified,
        None,
        Average,
        Minimum,
        Maximum,
        Total,
        Count,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Category {
        Capacity,
        Transaction,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MonitoringMetricConfiguration {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    pub properties: MonitoringMetricConfigurationProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MonitoringMetricConfigurationList {
    #[serde(skip_serializing)]
    pub value: Vec<MonitoringMetricConfiguration>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MonitoringMetricConfigurationProperties {
    #[serde(rename = "metricConfigurations")]
    pub metric_configurations: Vec<MetricConfiguration>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MountPointMap {
    #[serde(rename = "shareId")]
    pub share_id: String,
    #[serde(rename = "roleId", skip_serializing)]
    pub role_id: Option<String>,
    #[serde(rename = "mountPoint", skip_serializing)]
    pub mount_point: Option<String>,
    #[serde(rename = "mountType", skip_serializing)]
    pub mount_type: Option<mount_point_map::MountType>,
    #[serde(rename = "roleType", skip_serializing)]
    pub role_type: Option<mount_point_map::RoleType>,
}
pub mod mount_point_map {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum MountType {
        Volume,
        HostPath,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RoleType {
        #[serde(rename = "IOT")]
        Iot,
        #[serde(rename = "ASA")]
        Asa,
        Functions,
        Cognitive,
        #[serde(rename = "MEC")]
        Mec,
        CloudEdgeManagement,
        Kubernetes,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkAdapter {
    #[serde(rename = "adapterId", skip_serializing)]
    pub adapter_id: Option<String>,
    #[serde(rename = "adapterPosition", skip_serializing_if = "Option::is_none")]
    pub adapter_position: Option<NetworkAdapterPosition>,
    #[serde(skip_serializing)]
    pub index: Option<i32>,
    #[serde(rename = "nodeId", skip_serializing)]
    pub node_id: Option<String>,
    #[serde(rename = "networkAdapterName", skip_serializing)]
    pub network_adapter_name: Option<String>,
    #[serde(skip_serializing)]
    pub label: Option<String>,
    #[serde(rename = "macAddress", skip_serializing)]
    pub mac_address: Option<String>,
    #[serde(rename = "linkSpeed", skip_serializing)]
    pub link_speed: Option<i64>,
    #[serde(skip_serializing)]
    pub status: Option<network_adapter::Status>,
    #[serde(rename = "rdmaStatus", skip_serializing_if = "Option::is_none")]
    pub rdma_status: Option<network_adapter::RdmaStatus>,
    #[serde(rename = "dhcpStatus", skip_serializing_if = "Option::is_none")]
    pub dhcp_status: Option<network_adapter::DhcpStatus>,
    #[serde(rename = "ipv4Configuration", skip_serializing_if = "Option::is_none")]
    pub ipv4_configuration: Option<Ipv4Config>,
    #[serde(rename = "ipv6Configuration", skip_serializing_if = "Option::is_none")]
    pub ipv6_configuration: Option<Ipv6Config>,
    #[serde(rename = "ipv6LinkLocalAddress", skip_serializing)]
    pub ipv6_link_local_address: Option<String>,
    #[serde(rename = "dnsServers", skip_serializing)]
    pub dns_servers: Vec<String>,
}
pub mod network_adapter {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Inactive,
        Active,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RdmaStatus {
        Incapable,
        Capable,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DhcpStatus {
        Disabled,
        Enabled,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkAdapterPosition {
    #[serde(rename = "networkGroup", skip_serializing)]
    pub network_group: Option<network_adapter_position::NetworkGroup>,
    #[serde(skip_serializing)]
    pub port: Option<i32>,
}
pub mod network_adapter_position {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum NetworkGroup {
        None,
        #[serde(rename = "NonRDMA")]
        NonRdma,
        #[serde(rename = "RDMA")]
        Rdma,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkSettings {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<NetworkSettingsProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetworkSettingsProperties {
    #[serde(rename = "networkAdapters", skip_serializing)]
    pub network_adapters: Vec<NetworkAdapter>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Node {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<NodeProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NodeInfo {
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<node_info::Type>,
    #[serde(rename = "ipConfiguration", skip_serializing_if = "Vec::is_empty")]
    pub ip_configuration: Vec<KubernetesIpConfiguration>,
}
pub mod node_info {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Type {
        Invalid,
        Master,
        Worker,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NodeList {
    #[serde(skip_serializing)]
    pub value: Vec<Node>,
    #[serde(rename = "nextLink", skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NodeProperties {
    #[serde(rename = "nodeStatus", skip_serializing)]
    pub node_status: Option<node_properties::NodeStatus>,
    #[serde(rename = "nodeChassisSerialNumber", skip_serializing)]
    pub node_chassis_serial_number: Option<String>,
    #[serde(rename = "nodeSerialNumber", skip_serializing)]
    pub node_serial_number: Option<String>,
    #[serde(rename = "nodeDisplayName", skip_serializing)]
    pub node_display_name: Option<String>,
    #[serde(rename = "nodeFriendlySoftwareVersion", skip_serializing)]
    pub node_friendly_software_version: Option<String>,
    #[serde(rename = "nodeHcsVersion", skip_serializing)]
    pub node_hcs_version: Option<String>,
    #[serde(rename = "nodeInstanceId", skip_serializing)]
    pub node_instance_id: Option<String>,
}
pub mod node_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum NodeStatus {
        Unknown,
        Up,
        Down,
        Rebooting,
        ShuttingDown,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Operation {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub display: Option<OperationDisplay>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub origin: Option<String>,
    #[serde(rename = "isDataAction", skip_serializing_if = "Option::is_none")]
    pub is_data_action: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<OperationProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct OperationDisplay {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub provider: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub resource: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub operation: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct OperationProperties {
    #[serde(rename = "serviceSpecification", skip_serializing_if = "Option::is_none")]
    pub service_specification: Option<ServiceSpecification>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct OperationsList {
    pub value: Vec<Operation>,
    #[serde(rename = "nextLink", skip_serializing_if = "Option::is_none")]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Order {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<OrderProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct OrderList {
    #[serde(skip_serializing)]
    pub value: Vec<Order>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct OrderProperties {
    #[serde(rename = "contactInformation")]
    pub contact_information: ContactDetails,
    #[serde(rename = "shippingAddress", skip_serializing_if = "Option::is_none")]
    pub shipping_address: Option<Address>,
    #[serde(rename = "currentStatus", skip_serializing_if = "Option::is_none")]
    pub current_status: Option<OrderStatus>,
    #[serde(rename = "orderHistory", skip_serializing)]
    pub order_history: Vec<OrderStatus>,
    #[serde(rename = "serialNumber", skip_serializing)]
    pub serial_number: Option<String>,
    #[serde(rename = "deliveryTrackingInfo", skip_serializing)]
    pub delivery_tracking_info: Vec<TrackingInfo>,
    #[serde(rename = "returnTrackingInfo", skip_serializing)]
    pub return_tracking_info: Vec<TrackingInfo>,
    #[serde(rename = "shipmentType", skip_serializing_if = "Option::is_none")]
    pub shipment_type: Option<order_properties::ShipmentType>,
}
pub mod order_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ShipmentType {
        NotApplicable,
        ShippedToCustomer,
        SelfPickup,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct OrderStatus {
    pub status: order_status::Status,
    #[serde(rename = "updateDateTime", skip_serializing)]
    pub update_date_time: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub comments: Option<String>,
    #[serde(rename = "trackingInformation", skip_serializing_if = "Option::is_none")]
    pub tracking_information: Option<TrackingInfo>,
    #[serde(rename = "additionalOrderDetails", skip_serializing)]
    pub additional_order_details: Option<serde_json::Value>,
}
pub mod order_status {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Status {
        Untracked,
        AwaitingFulfilment,
        AwaitingPreparation,
        AwaitingShipment,
        Shipped,
        Arriving,
        Delivered,
        ReplacementRequested,
        LostDevice,
        Declined,
        ReturnInitiated,
        AwaitingReturnShipment,
        ShippedBack,
        CollectedAtMicrosoft,
        AwaitingPickup,
        PickupCompleted,
        AwaitingDrop,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PeriodicTimerEventTrigger {
    #[serde(flatten)]
    pub trigger: Trigger,
    pub properties: PeriodicTimerProperties,
    #[serde(skip_serializing)]
    pub id: Option<String>,
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing)]
    pub type_: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PeriodicTimerProperties {
    #[serde(rename = "sourceInfo")]
    pub source_info: PeriodicTimerSourceInfo,
    #[serde(rename = "sinkInfo")]
    pub sink_info: RoleSinkInfo,
    #[serde(rename = "customContextTag", skip_serializing_if = "Option::is_none")]
    pub custom_context_tag: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PeriodicTimerSourceInfo {
    #[serde(rename = "startTime")]
    pub start_time: String,
    pub schedule: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub topic: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RawCertificateData {
    #[serde(rename = "authenticationType", skip_serializing_if = "Option::is_none")]
    pub authentication_type: Option<raw_certificate_data::AuthenticationType>,
    pub certificate: String,
}
pub mod raw_certificate_data {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AuthenticationType {
        Invalid,
        AzureActiveDirectory,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RefreshDetails {
    #[serde(rename = "inProgressRefreshJobId", skip_serializing_if = "Option::is_none")]
    pub in_progress_refresh_job_id: Option<String>,
    #[serde(rename = "lastCompletedRefreshJobTimeInUTC", skip_serializing_if = "Option::is_none")]
    pub last_completed_refresh_job_time_in_utc: Option<String>,
    #[serde(rename = "errorManifestFile", skip_serializing_if = "Option::is_none")]
    pub error_manifest_file: Option<String>,
    #[serde(rename = "lastJob", skip_serializing_if = "Option::is_none")]
    pub last_job: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ResourceIdentity {
    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
    pub type_: Option<resource_identity::Type>,
    #[serde(rename = "principalId", skip_serializing)]
    pub principal_id: Option<String>,
    #[serde(rename = "tenantId", skip_serializing)]
    pub tenant_id: Option<String>,
}
pub mod resource_identity {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Type {
        None,
        SystemAssigned,
        UserAssigned,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ResourceMoveDetails {
    #[serde(rename = "operationInProgress", skip_serializing_if = "Option::is_none")]
    pub operation_in_progress: Option<resource_move_details::OperationInProgress>,
    #[serde(rename = "operationInProgressLockTimeoutInUTC", skip_serializing_if = "Option::is_none")]
    pub operation_in_progress_lock_timeout_in_utc: Option<String>,
}
pub mod resource_move_details {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum OperationInProgress {
        None,
        ResourceMoveInProgress,
        ResourceMoveFailed,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ResourceTypeSku {
    #[serde(rename = "resourceType", skip_serializing)]
    pub resource_type: Option<String>,
    #[serde(skip_serializing)]
    pub skus: Vec<SkuInformation>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Role {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    pub kind: role::Kind,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
}
pub mod role {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Kind {
        #[serde(rename = "IOT")]
        Iot,
        #[serde(rename = "ASA")]
        Asa,
        Functions,
        Cognitive,
        #[serde(rename = "MEC")]
        Mec,
        CloudEdgeManagement,
        Kubernetes,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RoleList {
    #[serde(skip_serializing)]
    pub value: Vec<Role>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RoleSinkInfo {
    #[serde(rename = "roleId")]
    pub role_id: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecuritySettings {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    pub properties: SecuritySettingsProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecuritySettingsProperties {
    #[serde(rename = "deviceAdminPassword")]
    pub device_admin_password: AsymmetricEncryptedSecret,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ServiceSpecification {
    #[serde(rename = "metricSpecifications", skip_serializing_if = "Vec::is_empty")]
    pub metric_specifications: Vec<MetricSpecificationV1>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Share {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    pub properties: ShareProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ShareAccessRight {
    #[serde(rename = "shareId")]
    pub share_id: String,
    #[serde(rename = "accessType")]
    pub access_type: share_access_right::AccessType,
}
pub mod share_access_right {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AccessType {
        Change,
        Read,
        Custom,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ShareList {
    #[serde(skip_serializing)]
    pub value: Vec<Share>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ShareProperties {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(rename = "shareStatus")]
    pub share_status: share_properties::ShareStatus,
    #[serde(rename = "monitoringStatus")]
    pub monitoring_status: share_properties::MonitoringStatus,
    #[serde(rename = "azureContainerInfo", skip_serializing_if = "Option::is_none")]
    pub azure_container_info: Option<AzureContainerInfo>,
    #[serde(rename = "accessProtocol")]
    pub access_protocol: share_properties::AccessProtocol,
    #[serde(rename = "userAccessRights", skip_serializing_if = "Vec::is_empty")]
    pub user_access_rights: Vec<UserAccessRight>,
    #[serde(rename = "clientAccessRights", skip_serializing_if = "Vec::is_empty")]
    pub client_access_rights: Vec<ClientAccessRight>,
    #[serde(rename = "refreshDetails", skip_serializing_if = "Option::is_none")]
    pub refresh_details: Option<RefreshDetails>,
    #[serde(rename = "shareMappings", skip_serializing)]
    pub share_mappings: Vec<MountPointMap>,
    #[serde(rename = "dataPolicy", skip_serializing_if = "Option::is_none")]
    pub data_policy: Option<share_properties::DataPolicy>,
}
pub mod share_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum ShareStatus {
        Offline,
        Unknown,
        #[serde(rename = "OK")]
        Ok,
        Updating,
        NeedsAttention,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum MonitoringStatus {
        Enabled,
        Disabled,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AccessProtocol {
        #[serde(rename = "SMB")]
        Smb,
        #[serde(rename = "NFS")]
        Nfs,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DataPolicy {
        Cloud,
        Local,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Sku {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<sku::Name>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub tier: Option<sku::Tier>,
}
pub mod sku {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Name {
        Gateway,
        Edge,
        #[serde(rename = "TEA_1Node")]
        Tea1node,
        #[serde(rename = "TEA_1Node_UPS")]
        Tea1nodeUps,
        #[serde(rename = "TEA_1Node_Heater")]
        Tea1nodeHeater,
        #[serde(rename = "TEA_1Node_UPS_Heater")]
        Tea1nodeUpsHeater,
        #[serde(rename = "TEA_4Node_Heater")]
        Tea4nodeHeater,
        #[serde(rename = "TEA_4Node_UPS_Heater")]
        Tea4nodeUpsHeater,
        #[serde(rename = "TMA")]
        Tma,
        #[serde(rename = "TDC")]
        Tdc,
        #[serde(rename = "TCA_Small")]
        TcaSmall,
        #[serde(rename = "GPU")]
        Gpu,
        #[serde(rename = "TCA_Large")]
        TcaLarge,
        #[serde(rename = "EdgeP_Base")]
        EdgePBase,
        #[serde(rename = "EdgeP_High")]
        EdgePHigh,
        #[serde(rename = "EdgePR_Base")]
        EdgePrBase,
        #[serde(rename = "EdgePR_Base_UPS")]
        EdgePrBaseUps,
        #[serde(rename = "EdgeMR_Mini")]
        EdgeMrMini,
        #[serde(rename = "RCA_Small")]
        RcaSmall,
        #[serde(rename = "RCA_Large")]
        RcaLarge,
        #[serde(rename = "RDC")]
        Rdc,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Tier {
        Standard,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SkuCost {
    #[serde(rename = "meterId", skip_serializing)]
    pub meter_id: Option<String>,
    #[serde(skip_serializing)]
    pub quantity: Option<i64>,
    #[serde(rename = "extendedUnit", skip_serializing)]
    pub extended_unit: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SkuInformation {
    #[serde(skip_serializing)]
    pub name: Option<String>,
    #[serde(skip_serializing)]
    pub tier: Option<String>,
    #[serde(skip_serializing)]
    pub kind: Option<String>,
    #[serde(skip_serializing)]
    pub family: Option<String>,
    #[serde(skip_serializing)]
    pub costs: Vec<SkuCost>,
    #[serde(skip_serializing)]
    pub locations: Vec<String>,
    #[serde(rename = "locationInfo", skip_serializing)]
    pub location_info: Vec<SkuLocationInfo>,
    #[serde(rename = "requiredQuotaIds", skip_serializing)]
    pub required_quota_ids: Vec<String>,
    #[serde(rename = "requiredFeatures", skip_serializing)]
    pub required_features: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SkuInformationList {
    #[serde(skip_serializing)]
    pub value: Vec<ResourceTypeSku>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SkuLocationInfo {
    #[serde(skip_serializing)]
    pub location: Option<String>,
    #[serde(skip_serializing)]
    pub zones: Vec<String>,
    #[serde(skip_serializing)]
    pub sites: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccount {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    pub properties: StorageAccountProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountCredential {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    pub properties: StorageAccountCredentialProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountCredentialList {
    #[serde(skip_serializing)]
    pub value: Vec<StorageAccountCredential>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountCredentialProperties {
    pub alias: String,
    #[serde(rename = "userName", skip_serializing_if = "Option::is_none")]
    pub user_name: Option<String>,
    #[serde(rename = "accountKey", skip_serializing_if = "Option::is_none")]
    pub account_key: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "connectionString", skip_serializing_if = "Option::is_none")]
    pub connection_string: Option<String>,
    #[serde(rename = "sslStatus")]
    pub ssl_status: storage_account_credential_properties::SslStatus,
    #[serde(rename = "blobDomainName", skip_serializing_if = "Option::is_none")]
    pub blob_domain_name: Option<String>,
    #[serde(rename = "accountType")]
    pub account_type: storage_account_credential_properties::AccountType,
    #[serde(rename = "storageAccountId", skip_serializing_if = "Option::is_none")]
    pub storage_account_id: Option<String>,
}
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 enum AccountType {
        GeneralPurposeStorage,
        BlobStorage,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountList {
    #[serde(skip_serializing)]
    pub value: Vec<StorageAccount>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StorageAccountProperties {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(rename = "storageAccountStatus", skip_serializing_if = "Option::is_none")]
    pub storage_account_status: Option<storage_account_properties::StorageAccountStatus>,
    #[serde(rename = "dataPolicy")]
    pub data_policy: storage_account_properties::DataPolicy,
    #[serde(rename = "storageAccountCredentialId", skip_serializing_if = "Option::is_none")]
    pub storage_account_credential_id: Option<String>,
    #[serde(rename = "blobEndpoint", skip_serializing)]
    pub blob_endpoint: Option<String>,
    #[serde(rename = "containerCount", skip_serializing)]
    pub container_count: Option<i32>,
}
pub mod storage_account_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum StorageAccountStatus {
        #[serde(rename = "OK")]
        Ok,
        Offline,
        Unknown,
        Updating,
        NeedsAttention,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DataPolicy {
        Cloud,
        Local,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SubscriptionProperties {
    #[serde(rename = "tenantId", skip_serializing_if = "Option::is_none")]
    pub tenant_id: Option<String>,
    #[serde(rename = "locationPlacementId", skip_serializing_if = "Option::is_none")]
    pub location_placement_id: Option<String>,
    #[serde(rename = "quotaId", skip_serializing_if = "Option::is_none")]
    pub quota_id: Option<String>,
    #[serde(rename = "serializedDetails", skip_serializing_if = "Option::is_none")]
    pub serialized_details: Option<String>,
    #[serde(rename = "registeredFeatures", skip_serializing_if = "Vec::is_empty")]
    pub registered_features: Vec<SubscriptionRegisteredFeatures>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SubscriptionRegisteredFeatures {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub state: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SymmetricKey {
    #[serde(rename = "connectionString", skip_serializing_if = "Option::is_none")]
    pub connection_string: Option<AsymmetricEncryptedSecret>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SystemData {
    #[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
    pub created_by: Option<String>,
    #[serde(rename = "createdByType", skip_serializing_if = "Option::is_none")]
    pub created_by_type: Option<system_data::CreatedByType>,
    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
    pub created_at: Option<String>,
    #[serde(rename = "lastModifiedBy", skip_serializing_if = "Option::is_none")]
    pub last_modified_by: Option<String>,
    #[serde(rename = "lastModifiedByType", skip_serializing_if = "Option::is_none")]
    pub last_modified_by_type: Option<system_data::LastModifiedByType>,
    #[serde(rename = "lastModifiedAt", skip_serializing_if = "Option::is_none")]
    pub last_modified_at: Option<String>,
}
pub mod system_data {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum CreatedByType {
        User,
        Application,
        ManagedIdentity,
        Key,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum LastModifiedByType {
        User,
        Application,
        ManagedIdentity,
        Key,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TrackingInfo {
    #[serde(rename = "serialNumber", skip_serializing_if = "Option::is_none")]
    pub serial_number: Option<String>,
    #[serde(rename = "carrierName", skip_serializing_if = "Option::is_none")]
    pub carrier_name: Option<String>,
    #[serde(rename = "trackingId", skip_serializing_if = "Option::is_none")]
    pub tracking_id: Option<String>,
    #[serde(rename = "trackingUrl", skip_serializing_if = "Option::is_none")]
    pub tracking_url: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Trigger {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    pub kind: trigger::Kind,
}
pub mod trigger {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum Kind {
        FileEvent,
        PeriodicTimerEvent,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TriggerList {
    #[serde(skip_serializing)]
    pub value: Vec<Trigger>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UpdateDownloadProgress {
    #[serde(rename = "downloadPhase", skip_serializing)]
    pub download_phase: Option<update_download_progress::DownloadPhase>,
    #[serde(rename = "percentComplete", skip_serializing)]
    pub percent_complete: Option<i32>,
    #[serde(rename = "totalBytesToDownload", skip_serializing)]
    pub total_bytes_to_download: Option<f64>,
    #[serde(rename = "totalBytesDownloaded", skip_serializing)]
    pub total_bytes_downloaded: Option<f64>,
    #[serde(rename = "numberOfUpdatesToDownload", skip_serializing)]
    pub number_of_updates_to_download: Option<i32>,
    #[serde(rename = "numberOfUpdatesDownloaded", skip_serializing)]
    pub number_of_updates_downloaded: Option<i32>,
}
pub mod update_download_progress {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum DownloadPhase {
        Unknown,
        Initializing,
        Downloading,
        Verifying,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UpdateInstallProgress {
    #[serde(rename = "percentComplete", skip_serializing)]
    pub percent_complete: Option<i32>,
    #[serde(rename = "numberOfUpdatesToInstall", skip_serializing)]
    pub number_of_updates_to_install: Option<i32>,
    #[serde(rename = "numberOfUpdatesInstalled", skip_serializing)]
    pub number_of_updates_installed: Option<i32>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UpdateSummary {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub properties: Option<UpdateSummaryProperties>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UpdateSummaryProperties {
    #[serde(rename = "deviceVersionNumber", skip_serializing_if = "Option::is_none")]
    pub device_version_number: Option<String>,
    #[serde(rename = "friendlyDeviceVersionName", skip_serializing_if = "Option::is_none")]
    pub friendly_device_version_name: Option<String>,
    #[serde(rename = "deviceLastScannedDateTime", skip_serializing_if = "Option::is_none")]
    pub device_last_scanned_date_time: Option<String>,
    #[serde(rename = "lastCompletedScanJobDateTime", skip_serializing_if = "Option::is_none")]
    pub last_completed_scan_job_date_time: Option<String>,
    #[serde(rename = "lastCompletedDownloadJobDateTime", skip_serializing)]
    pub last_completed_download_job_date_time: Option<String>,
    #[serde(rename = "lastCompletedInstallJobDateTime", skip_serializing)]
    pub last_completed_install_job_date_time: Option<String>,
    #[serde(rename = "totalNumberOfUpdatesAvailable", skip_serializing)]
    pub total_number_of_updates_available: Option<i32>,
    #[serde(rename = "totalNumberOfUpdatesPendingDownload", skip_serializing)]
    pub total_number_of_updates_pending_download: Option<i32>,
    #[serde(rename = "totalNumberOfUpdatesPendingInstall", skip_serializing)]
    pub total_number_of_updates_pending_install: Option<i32>,
    #[serde(rename = "rebootBehavior", skip_serializing)]
    pub reboot_behavior: Option<update_summary_properties::RebootBehavior>,
    #[serde(rename = "ongoingUpdateOperation", skip_serializing)]
    pub ongoing_update_operation: Option<update_summary_properties::OngoingUpdateOperation>,
    #[serde(rename = "inProgressDownloadJobId", skip_serializing)]
    pub in_progress_download_job_id: Option<String>,
    #[serde(rename = "inProgressInstallJobId", skip_serializing)]
    pub in_progress_install_job_id: Option<String>,
    #[serde(rename = "inProgressDownloadJobStartedDateTime", skip_serializing)]
    pub in_progress_download_job_started_date_time: Option<String>,
    #[serde(rename = "inProgressInstallJobStartedDateTime", skip_serializing)]
    pub in_progress_install_job_started_date_time: Option<String>,
    #[serde(rename = "updateTitles", skip_serializing)]
    pub update_titles: Vec<String>,
    #[serde(rename = "totalUpdateSizeInBytes", skip_serializing)]
    pub total_update_size_in_bytes: Option<f64>,
}
pub mod update_summary_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum RebootBehavior {
        NeverReboots,
        RequiresReboot,
        RequestReboot,
    }
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum OngoingUpdateOperation {
        None,
        Scan,
        Download,
        Install,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UploadCertificateRequest {
    pub properties: RawCertificateData,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UploadCertificateResponse {
    #[serde(rename = "authType", skip_serializing_if = "Option::is_none")]
    pub auth_type: Option<upload_certificate_response::AuthType>,
    #[serde(rename = "resourceId", skip_serializing)]
    pub resource_id: Option<String>,
    #[serde(rename = "aadAuthority", skip_serializing)]
    pub aad_authority: Option<String>,
    #[serde(rename = "aadTenantId", skip_serializing)]
    pub aad_tenant_id: Option<String>,
    #[serde(rename = "servicePrincipalClientId", skip_serializing)]
    pub service_principal_client_id: Option<String>,
    #[serde(rename = "servicePrincipalObjectId", skip_serializing)]
    pub service_principal_object_id: Option<String>,
    #[serde(rename = "azureManagementEndpointAudience", skip_serializing)]
    pub azure_management_endpoint_audience: Option<String>,
    #[serde(rename = "aadAudience", skip_serializing)]
    pub aad_audience: Option<String>,
}
pub mod upload_certificate_response {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AuthType {
        Invalid,
        AzureActiveDirectory,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct User {
    #[serde(flatten)]
    pub arm_base_model: ArmBaseModel,
    #[serde(rename = "systemData", skip_serializing)]
    pub system_data: Option<SystemData>,
    pub properties: UserProperties,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UserAccessRight {
    #[serde(rename = "userId")]
    pub user_id: String,
    #[serde(rename = "accessType")]
    pub access_type: user_access_right::AccessType,
}
pub mod user_access_right {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum AccessType {
        Change,
        Read,
        Custom,
    }
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UserList {
    #[serde(skip_serializing)]
    pub value: Vec<User>,
    #[serde(rename = "nextLink", skip_serializing)]
    pub next_link: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UserProperties {
    #[serde(rename = "encryptedPassword", skip_serializing_if = "Option::is_none")]
    pub encrypted_password: Option<AsymmetricEncryptedSecret>,
    #[serde(rename = "shareAccessRights", skip_serializing)]
    pub share_access_rights: Vec<ShareAccessRight>,
    #[serde(rename = "userType", skip_serializing_if = "Option::is_none")]
    pub user_type: Option<user_properties::UserType>,
}
pub mod user_properties {
    use super::*;
    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
    pub enum UserType {
        Share,
        LocalManagement,
        #[serde(rename = "ARM")]
        Arm,
    }
}
