// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

package armmigrationassessment

import "time"

// AKSAssessment - ARM model of AKS Assessment.
type AKSAssessment struct {
	// The resource-specific properties for this resource.
	Properties *AKSAssessmentProperties

	// READ-ONLY; If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.
	// Entity tags are used for comparing two or more entities from the same requested resource.
	// HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range
	// (section 14.27) header fields.
	ETag *string

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AKSAssessmentDetails - Data model of AKS Assessment Details.
type AKSAssessmentDetails struct {
	// READ-ONLY; Gets date and time when assessment was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Gets the number of machines.
	MachineCount *int32

	// READ-ONLY; Gets assessment status.
	Status *AssessmentStatus

	// READ-ONLY; Gets the total monthly cost.
	TotalMonthlyCost *float32

	// READ-ONLY; Gets date and time when assessment was last updated.
	UpdatedTimestamp *time.Time

	// READ-ONLY; Gets the number of web apps.
	WebAppCount *int32

	// READ-ONLY; Gets the number of web servers.
	WebServerCount *int32

	// READ-ONLY; Gets Confidence score.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; Gets last time when rates were queried.
	PricesTimestamp *time.Time
}

// AKSAssessmentListResult - The response of a AKSAssessment list operation.
type AKSAssessmentListResult struct {
	// REQUIRED; The AKSAssessment items on this page
	Value []*AKSAssessment

	// The link to the next page of items
	NextLink *string
}

// AKSAssessmentOptions - ARM model of AKS Assessment Options.
type AKSAssessmentOptions struct {
	// The resource-specific properties for this resource.
	Properties *AKSAssessmentOptionsProperties

	// READ-ONLY; If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.
	// Entity tags are used for comparing two or more entities from the same requested resource.
	// HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range
	// (section 14.27) header fields.
	ETag *string

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AKSAssessmentOptionsListResult - The response of a AKSAssessmentOptions list operation.
type AKSAssessmentOptionsListResult struct {
	// REQUIRED; The AKSAssessmentOptions items on this page
	Value []*AKSAssessmentOptions

	// The link to the next page of items
	NextLink *string
}

// AKSAssessmentOptionsProperties - ARM model of AKS Assessment Options Properties.
type AKSAssessmentOptionsProperties struct {
	// READ-ONLY; Gets the mapping of Assessment Options in graph representation.
	Edges map[string]map[string][]*string
}

// AKSAssessmentProperties - ARM model of AKS Assessment Properties.
type AKSAssessmentProperties struct {
	// REQUIRED; Gets or sets AKS Assessment Settings.
	Settings *AKSAssessmentSettings

	// Gets or sets scope parameters to identify inventory items for assessment.
	Scope *AssessmentScopeParameters

	// READ-ONLY; Gets AKS Assessment Details.
	Details *AKSAssessmentDetails

	// READ-ONLY; Gets the provisioning state.
	ProvisioningState *ProvisioningStatus
}

// AKSAssessmentSettings - Data model of AKS Assessment Settings.
type AKSAssessmentSettings struct {
	// REQUIRED; Gets or sets azure location.
	AzureLocation *string

	// REQUIRED; Gets or sets azure VM category.
	Category *AzureVMCategory

	// REQUIRED; Gets or sets consolidation type.
	Consolidation *ConsolidationType

	// REQUIRED; Gets or sets currency.
	Currency *AzureCurrency

	// REQUIRED; Gets or sets environment type.
	EnvironmentType *AzureEnvironmentType

	// REQUIRED; Gets or sets licensing program.
	LicensingProgram *LicensingProgram

	// REQUIRED; Gets or sets pricing tier.
	PricingTier *PricingTier

	// REQUIRED; Gets or sets savings options.
	SavingsOptions *SavingsOptions

	// REQUIRED; Gets or sets sizing criteria.
	SizingCriteria *AssessmentSizingCriterion

	// Gets or sets discount percentage.
	DiscountPercentage *float32

	// Gets or sets performance data settings.
	PerformanceData *PerfDataSettings

	// Gets or sets scaling factor.
	ScalingFactor *float32
}

// AKSAssessmentSummary - Data model of AKS Assessment Summary.
type AKSAssessmentSummary struct {
	// READ-ONLY; Gets the number of machines.
	MachineCount *int32

	// READ-ONLY; Gets SKU summary.
	SKUSummary map[string]*SummaryDetails

	// READ-ONLY; Gets the total monthly cost.
	TotalMonthlyCost *float32

	// READ-ONLY; Gets the number of web apps.
	WebAppCount *int32

	// READ-ONLY; Gets web app summary.
	WebAppSummary map[string]*SummaryDetails

	// READ-ONLY; Gets the number of web servers.
	WebServerCount *int32

	// READ-ONLY; Gets web server summary.
	WebServerSummary map[string]*int32
}

// AKSCluster - ARM model of AKS Cluster.
type AKSCluster struct {
	// The resource-specific properties for this resource.
	Properties *AKSClusterProperties

	// READ-ONLY; If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.
	// Entity tags are used for comparing two or more entities from the same requested resource.
	// HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range
	// (section 14.27) header fields.
	ETag *string

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AKSClusterListResult - The response of a AKSCluster list operation.
type AKSClusterListResult struct {
	// REQUIRED; The AKSCluster items on this page
	Value []*AKSCluster

	// The link to the next page of items
	NextLink *string
}

// AKSClusterProperties - ARM model of AKS Cluster Properties.
type AKSClusterProperties struct {
	// READ-ONLY; Gets monthly cost.
	MonthlyCost *float32

	// READ-ONLY; Gets name.
	Name *string

	// READ-ONLY; Gets list of node pools.
	NodePools []*NodePool

	// READ-ONLY; Gets pod count.
	PodCount *int32

	// READ-ONLY; Gets region.
	Region *string

	// READ-ONLY; Gets system node count.
	SystemNodeCount *int32

	// READ-ONLY; Gets system node pool count.
	SystemNodePoolCount *int32

	// READ-ONLY; Gets user node count.
	UserNodeCount *int32

	// READ-ONLY; Gets user node pool count.
	UserNodePoolCount *int32
}

// AKSCostDetail - ARM model of AKS Cost Detail.
type AKSCostDetail struct {
	// The resource-specific properties for this resource.
	Properties *AKSCostDetailProperties

	// READ-ONLY; If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.
	// Entity tags are used for comparing two or more entities from the same requested resource.
	// HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range
	// (section 14.27) header fields.
	ETag *string

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AKSCostDetailListResult - The response of a AKSCostDetail list operation.
type AKSCostDetailListResult struct {
	// REQUIRED; The AKSCostDetail items on this page
	Value []*AKSCostDetail

	// The link to the next page of items
	NextLink *string
}

// AKSCostDetailProperties - ARM model of AKS Cost Detail Properties.
type AKSCostDetailProperties struct {
	// READ-ONLY; Gets arm sku name.
	ArmSKUName *string

	// READ-ONLY; Gets cluster name.
	ClusterName *string

	// READ-ONLY; Gets id.
	ID *string

	// READ-ONLY; Gets mode.
	Mode *NodePoolMode

	// READ-ONLY; Gets monthly cost.
	MonthlyCost *float32

	// READ-ONLY; Gets name.
	Name *string

	// READ-ONLY; Gets node count.
	NodeCount *int32

	// READ-ONLY; Gets os type.
	OSType *OSType

	// READ-ONLY; Gets pod approximate monthly cost.
	PodApproxMonthlyCost *float32

	// READ-ONLY; Gets pod count.
	PodCount *int32
}

// AKSSummary - ARM model of AKS Summary.
type AKSSummary struct {
	// The resource-specific properties for this resource.
	Properties *AKSSummaryProperties

	// READ-ONLY; If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.
	// Entity tags are used for comparing two or more entities from the same requested resource.
	// HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range
	// (section 14.27) header fields.
	ETag *string

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AKSSummaryListResult - The response of a AKSSummary list operation.
type AKSSummaryListResult struct {
	// REQUIRED; The AKSSummary items on this page
	Value []*AKSSummary

	// The link to the next page of items
	NextLink *string
}

// AKSSummaryProperties - ARM model of AKS Summary Properties.
type AKSSummaryProperties struct {
	// READ-ONLY; Gets AKS assessment summary.
	AksAssessmentSummary *AKSAssessmentSummary

	// READ-ONLY; Gets the assessment name.
	AssessmentName *string

	// READ-ONLY; Gets the confidence score.
	ConfidenceScore *float32

	// READ-ONLY; Gets the monthly compute cost.
	MonthlyComputeCost *float32

	// READ-ONLY; Gets the monthly storage cost.
	MonthlyStorageCost *float32

	// READ-ONLY; Gets the cloud suitability summary for all entities in the assessment per target.
	SuitabilityPerTarget map[string]map[string]*int32

	// READ-ONLY; Gets the summary name.
	SummaryName *string
}

// AppServiceSKU - The app service SKU with corresponding cost.
type AppServiceSKU struct {
	// READ-ONLY; The cost details.
	Cost *float32

	// READ-ONLY; The number of service plans recommended.
	Count *int32

	// READ-ONLY; The SKU name.
	SKUName *string
}

// AppSvcContainerSettings - App service container settings.
type AppSvcContainerSettings struct {
	// REQUIRED; Gets or sets the isolation required.
	IsolationRequired *bool
}

// AppSvcNativeSettings - App service native settings.
type AppSvcNativeSettings struct {
	// REQUIRED; Gets or sets the isolation required.
	IsolationRequired *bool
}

// AssessedDisk - Assessed disk properties class.
type AssessedDisk struct {
	// Gets the machine display name.
	DisplayName *string

	// Gets the recommended disk size.
	GigabytesForRecommendedDiskSize *int32

	// Gets the gigabytes provisioned.
	GigabytesProvisioned *float32

	// Gets the megabytes per second of read.
	MegabytesPerSecondOfRead *float32

	// Gets the megabytes per second of write.
	MegabytesPerSecondOfWrite *float32

	// Gets the monthly storage cost.
	MonthlyStorageCost *float32

	// Gets the name.
	Name *string

	// Gets the number of read operations per second.
	NumberOfReadOperationsPerSecond *float32

	// Gets the number of write operations per second.
	NumberOfWriteOperationsPerSecond *float32

	// Gets the recommended disk throughput.
	RecommendDiskThroughputInMbps *float32

	// Gets the recommended disk iops.
	RecommendedDiskIops *float32

	// Gets the recommended disk size.
	RecommendedDiskSize *AzureDiskSize

	// Gets the recommended disk type.
	RecommendedDiskType *AzureDiskType

	// Gets the suitability.
	Suitability *CloudSuitability

	// Gets the suitability detail.
	SuitabilityDetail *AzureDiskSuitabilityDetail

	// Gets the suitability explanation.
	SuitabilityExplanation *AzureDiskSuitabilityExplanation
}

// AssessedDiskData - Assessed Disk data. Used in Assessed SQL machine DTO.
type AssessedDiskData struct {
	// Gets the machine display name.
	DisplayName *string

	// Gets the gigabytes provisioned.
	GigabytesProvisioned *float32

	// Gets the megabytes per second of read.
	MegabytesPerSecondOfRead *float32

	// Gets the megabytes per second of write.
	MegabytesPerSecondOfWrite *float32

	// Gets the monthly storage cost.
	MonthlyStorageCost *float32

	// Gets the name.
	Name *string

	// Gets the number of read operations per second.
	NumberOfReadOperationsPerSecond *float32

	// Gets the number of write operations per second.
	NumberOfWriteOperationsPerSecond *float32

	// Gets the recommended disk throughput.
	RecommendDiskThroughputInMbps *float32

	// Gets the recommended disk iops.
	RecommendedDiskIops *float32

	// Gets the recommended disk size.
	RecommendedDiskSize *AzureDiskSize

	// Gets the recommended disk size.
	RecommendedDiskSizeGigabytes *int32

	// Gets the recommended disk type.
	RecommendedDiskType *AzureDiskType

	// Gets the suitability.
	Suitability *CloudSuitability

	// Gets the suitability detail.
	SuitabilityDetail *AzureDiskSuitabilityDetail

	// Gets the suitability explanation.
	SuitabilityExplanation *AzureDiskSuitabilityExplanation
}

// AssessedMachine - Machine assessment Assessed Machine resource.
type AssessedMachine struct {
	// The resource-specific properties for this resource.
	Properties *AssessedMachineProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessedMachineListResult - The response of a AssessedMachine list operation.
type AssessedMachineListResult struct {
	// REQUIRED; The AssessedMachine items on this page
	Value []*AssessedMachine

	// The link to the next page of items
	NextLink *string
}

// AssessedMachineProperties - Assessed machine properties class.
type AssessedMachineProperties struct {
	// Gets or sets the collection of cost components.
	CostComponents []*CostComponent

	// Gets or sets the processor details of the host.
	HostProcessor *ProcessorInfo

	// READ-ONLY; Boot type of machine discovered in private data center.
	BootType *MachineBootType

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; When was machine first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Data center machine ARM id.
	DatacenterMachineArmID *string

	// READ-ONLY; Data center management server ARM id.
	DatacenterManagementServerArmID *string

	// READ-ONLY; Data center management server name.
	DatacenterManagementServerName *string

	// READ-ONLY; Description for the machine.
	Description *string

	// READ-ONLY; Dictionary of disks attached to the machine. Key is ID of disk. Value is a disk object.
	Disks map[string]*AssessedDisk

	// READ-ONLY; Display Name of the Machine.
	DisplayName *string

	// READ-ONLY; List of errors for this machine.
	Errors []*Error

	// READ-ONLY; Megabytes of memory found allocated for the machine in private data center.
	MegabytesOfMemory *float32

	// READ-ONLY; Megabytes of memory for recommended size. Read Only.
	MegabytesOfMemoryForRecommendedSize *float32

	// READ-ONLY; Monthly networking cost.
	MonthlyBandwidthCost *float32

	// READ-ONLY; Monthly Compute cost calculated for Recommended size, for a 31-day month.
	MonthlyComputeCostForRecommendedSize *float32

	// READ-ONLY; Monthly premium storage cost.
	MonthlyPremiumStorageCost *float32

	// READ-ONLY; Monthly standard SSD storage cost.
	MonthlyStandardSsdStorageCost *float32

	// READ-ONLY; Monthly storage cost.
	MonthlyStorageCost *float32

	// READ-ONLY; Monthly ultra storage cost.
	MonthlyUltraStorageCost *float32

	// READ-ONLY; List of Network Adapters that were assessed as part of this machine's assessment.
	NetworkAdapters map[string]*AssessedNetworkAdapter

	// READ-ONLY; Number of CPU cores found on the machine.
	NumberOfCores *int32

	// READ-ONLY; Number of cores for recommended size. Read Only.
	NumberOfCoresForRecommendedSize *int32

	// READ-ONLY; Operating system architecture as reported by datacenter management solution.
	OperatingSystemArchitecture *GuestOperatingSystemArchitecture

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemName *string

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemType *string

	// READ-ONLY; Operating system version as reported by datacenter management solution.
	OperatingSystemVersion *string

	// READ-ONLY; Percentile of Percentage of Cores Utilized noted during time period T.
	// Here N and T are settings on Assessment.
	PercentageCoresUtilization *float32

	// READ-ONLY; Percentile of Percentage of Memory Utilized noted during time period T.
	// Here N and T are settings on Assessment.
	PercentageMemoryUtilization *float32

	// READ-ONLY; Gets the product support status related details.
	ProductSupportStatus *ProductSupportStatus

	// READ-ONLY; Recommended Azure Size for the machine.
	RecommendedSize *AzureVMSize

	// READ-ONLY; Gets a value indicating whether machine is suitable for the cloud platform selected.
	Suitability *CloudSuitability

	// READ-ONLY; Gets the details if machine is not suitable for cloud.
	SuitabilityDetail *AzureVMSuitabilityDetail

	// READ-ONLY; Gets the explanation if machine is not suitable for cloud.
	SuitabilityExplanation *AzureVMSuitabilityExplanation

	// READ-ONLY; Assessed machine type.
	Type *AssessedMachineType

	// READ-ONLY; When was machine last updated.
	UpdatedTimestamp *time.Time
}

// AssessedNetworkAdapter - Assessed Network Adapter.
type AssessedNetworkAdapter struct {
	// Gets the display name.
	DisplayName *string

	// Gets the mac address.
	MacAddress *string

	// Gets the megabytes per second received.
	MegabytesPerSecondReceived *float32

	// Gets the megabytes per second transmitted.
	MegabytesPerSecondTransmitted *float32

	// Gets the monthly bandwidth costs.
	MonthlyBandwidthCosts *float32

	// Gets the net gigabytes transmitted per month.
	NetGigabytesTransmittedPerMonth *float32

	// Gets the suitability.
	Suitability *CloudSuitability

	// Gets the suitability detail.
	SuitabilityDetail *AzureNetworkAdapterSuitabilityDetail

	// Gets the suitability explanation.
	SuitabilityExplanation *AzureNetworkAdapterSuitabilityExplanation

	// READ-ONLY; Gets the ip addresses.
	IPAddresses []*string
}

// AssessedSQLDatabaseV2 - Assessed SQL database web model class.
type AssessedSQLDatabaseV2 struct {
	// The resource-specific properties for this resource.
	Properties *AssessedSQLDatabaseV2Properties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessedSQLDatabaseV2ListResult - The response of a AssessedSqlDatabaseV2 list operation.
type AssessedSQLDatabaseV2ListResult struct {
	// REQUIRED; The AssessedSqlDatabaseV2 items on this page
	Value []*AssessedSQLDatabaseV2

	// The link to the next page of items
	NextLink *string
}

// AssessedSQLDatabaseV2Properties - Assessed SQL database properties web model.
type AssessedSQLDatabaseV2Properties struct {
	// READ-ONLY; Assessed SQL instance arm id.
	AssessedSQLInstanceArmID *string

	// READ-ONLY; Gets or sets the azure SQL DB suitability details.
	AzureSQLDBSuitabilityDetails *SQLAssessmentV2PaasSuitabilityData

	// READ-ONLY; Gets or sets the azure SQL MI suitability details.
	AzureSQLMISuitabilityDetails *SQLAssessmentV2PaasSuitabilityData

	// READ-ONLY; Gets or sets the aggregated cache size of this database. This is a performance data metric for this DB.
	BufferCacheSizeInMB *float32

	// READ-ONLY; Database compatibility level.
	CompatibilityLevel *CompatibilityLevel

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; When was assessed SQL database first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; SQL database name.
	DatabaseName *string

	// READ-ONLY; SQL database size in megabytes.
	DatabaseSizeInMB *float32

	// READ-ONLY; SQL instance name.
	InstanceName *string

	// READ-ONLY; Gets a value indicating whether the assessed SQL database is highly available or not.
	IsDatabaseHighlyAvailable *bool

	// READ-ONLY; Gets the linked availability group overview if the database being assessed is highly available.
	LinkedAvailabilityGroupOverview *SQLAvailabilityGroupDataOverview

	// READ-ONLY; Machine arm id.
	MachineArmID *string

	// READ-ONLY; Machine display name.
	MachineName *string

	// READ-ONLY; The read throughput of the SQL database.
	MegabytesPerSecondOfRead *float32

	// READ-ONLY; The write throughput of the SQL database.
	MegabytesPerSecondOfWrite *float32

	// READ-ONLY; The read operations per second of the SQL database.
	NumberOfReadOperationsPerSecond *float32

	// READ-ONLY; The write operations per second of the SQL database.
	NumberOfWriteOperationsPerSecond *float32

	// READ-ONLY; The percentage of the total number of cores being utilized by the SQL database.
	PercentageCoresUtilization *float32

	// READ-ONLY; Gets the product support status related details.
	ProductSupportStatus *ProductSupportStatus

	// READ-ONLY; Gets or sets the recommended azure SQL target type.
	RecommendedAzureSQLTargetType *TargetType

	// READ-ONLY; Gets or sets the recommended azure SQL suitability.
	RecommendedSuitability *RecommendedSuitability

	// READ-ONLY; SQL database SDS arm id.
	SQLDatabaseSdsArmID *string

	// READ-ONLY; Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion

	// READ-ONLY; When was assessed SQL database last updated.
	UpdatedTimestamp *time.Time
}

// AssessedSQLInstanceDatabaseSummary - Assessed Sql Instance Database Summary.
type AssessedSQLInstanceDatabaseSummary struct {
	// Gets the largest database size in MB.
	LargestDatabaseSizeInMB *float32

	// Gets the number of user databases.
	NumberOfUserDatabases *int32

	// Gets the total database size in MB.
	TotalDatabaseSizeInMB *float32

	// Gets the total discovered user databases.
	TotalDiscoveredUserDatabases *int32
}

// AssessedSQLInstanceDiskDetails - Assessed Sql Instance Disk Details.
type AssessedSQLInstanceDiskDetails struct {
	// Gets the disk id.
	DiskID *string

	// Gets the disk size in mb.
	DiskSizeInMB *float32

	// Gets the megabytes per second of read.
	MegabytesPerSecondOfRead *float32

	// Gets the megabytes per second of write.
	MegabytesPerSecondOfWrite *float32

	// Gets the number of read operations per second.
	NumberOfReadOperationsPerSecond *float32

	// Gets the number of write operations per second.
	NumberOfWriteOperationsPerSecond *float32
}

// AssessedSQLInstanceStorageDetails - Assessed Sql Instance Storage Details.
type AssessedSQLInstanceStorageDetails struct {
	// Gets the disk size in mb.
	DiskSizeInMB *float32

	// Gets the megabytes per second of read.
	MegabytesPerSecondOfRead *float32

	// Gets the megabytes per second of read.
	MegabytesPerSecondOfWrite *float32

	// Gets the number of read operations per second.
	NumberOfReadOperationsPerSecond *float32

	// Gets the number of write operations per second.
	NumberOfWriteOperationsPerSecond *float32

	// Gets the storage type.
	StorageType *string
}

// AssessedSQLInstanceSummary - Assessed Sql Instance Summary.
type AssessedSQLInstanceSummary struct {
	// Gets the instance id.
	InstanceID *string

	// Gets the instance name.
	InstanceName *string

	// Gets whether Sql is clustered.
	IsClustered *bool

	// Gets whether Sql is highly available.
	IsHighAvailabilityEnabled *bool

	// Gets the Sql edition.
	SQLEdition *string

	// Gets the Sql Fci state.
	SQLFciState *SQLFCIState

	// Gets the instance entity id.
	SQLInstanceEntityID *string

	// Gets the instance arm id.
	SQLInstanceSdsArmID *string

	// Gets the Sql version.
	SQLVersion *string
}

// AssessedSQLInstanceV2 - Assessed SQL instance web model class.
type AssessedSQLInstanceV2 struct {
	// The resource-specific properties for this resource.
	Properties *AssessedSQLInstanceV2Properties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessedSQLInstanceV2ListResult - The response of a AssessedSqlInstanceV2 list operation.
type AssessedSQLInstanceV2ListResult struct {
	// REQUIRED; The AssessedSqlInstanceV2 items on this page
	Value []*AssessedSQLInstanceV2

	// The link to the next page of items
	NextLink *string
}

// AssessedSQLInstanceV2Properties - Assessed SQL instance properties web model.
type AssessedSQLInstanceV2Properties struct {
	// READ-ONLY; Gets the overview counts of availability replicas in the assessed instance, by commit mode and read type.
	AvailabilityReplicaSummary *SQLAvailabilityReplicaSummary

	// READ-ONLY; SQL instance azure SQL DB suitability details.
	AzureSQLDBSuitabilityDetails *SQLAssessmentV2PaasSuitabilityData

	// READ-ONLY; SQL instance azure SQL MI suitability details.
	AzureSQLMISuitabilityDetails *SQLAssessmentV2PaasSuitabilityData

	// READ-ONLY; SQL instance azure SQL VM suitability details.
	AzureSQLVMSuitabilityDetails *SQLAssessmentV2IaasSuitabilityData

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; When was assessed SQL instance first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; The databases summary.
	DatabaseSummary *AssessedSQLInstanceDatabaseSummary

	// READ-ONLY; Gets the FCI metadata if this instance represents an FCI instance.
	FciMetadata *SQLFCIMetadata

	// READ-ONLY; Gets or sets a value indicating whether SQL instance has been deep discovered.
	HasScanOccurred *bool

	// READ-ONLY; SQL instance name.
	InstanceName *string

	// READ-ONLY; Gets a value indicating whether the SQL instance is clustered or not.
	IsClustered *bool

	// READ-ONLY; Gets a value indicating whether the high availability is enabled or not.
	IsHighAvailabilityEnabled *bool

	// READ-ONLY; The logical disk details.
	LogicalDisks []*AssessedSQLInstanceDiskDetails

	// READ-ONLY; Machine arm id.
	MachineArmID *string

	// READ-ONLY; Machine display name.
	MachineName *string

	// READ-ONLY; Gets or sets the memory used by SQL instance in megabytes.
	MemoryInUseInMB *float32

	// READ-ONLY; Number of CPU cores assigned to the SQL instance.
	NumberOfCoresAllocated *int32

	// READ-ONLY; The percentage of the total number of cores being utilized by the SQL instance.
	PercentageCoresUtilization *float32

	// READ-ONLY; Gets the product support status related details.
	ProductSupportStatus *ProductSupportStatus

	// READ-ONLY; Gets or sets the recommended azure SQL target type.
	RecommendedAzureSQLTargetType *TargetType

	// READ-ONLY; Gets or sets the recommended azure SQL suitability.
	RecommendedSuitability *RecommendedSuitability

	// READ-ONLY; Gets the list of recommended target reasoning.
	RecommendedTargetReasonings []*SQLRecommendationReasoning

	// READ-ONLY; SQL instance edition.
	SQLEdition *string

	// READ-ONLY; SQL instance SDS arm id.
	SQLInstanceSdsArmID *string

	// READ-ONLY; SQL instance version.
	SQLVersion *string

	// READ-ONLY; Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion

	// READ-ONLY; Gets the storage details.
	StorageTypeBasedDetails []*AssessedSQLInstanceStorageDetails

	// READ-ONLY; When was assessed SQL instance last updated.
	UpdatedTimestamp *time.Time
}

// AssessedSQLMachine - SQL Assessment REST resource.
type AssessedSQLMachine struct {
	// The resource-specific properties for this resource.
	Properties *AssessedSQLMachineProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessedSQLMachineListResult - The response of a AssessedSqlMachine list operation.
type AssessedSQLMachineListResult struct {
	// REQUIRED; The AssessedSqlMachine items on this page
	Value []*AssessedSQLMachine

	// The link to the next page of items
	NextLink *string
}

// AssessedSQLMachineProperties - Assessed SQL machine properties.
type AssessedSQLMachineProperties struct {
	// Gets the collection of cost components.
	CostComponents []*CostComponent

	// READ-ONLY; Gets or sets the BIOS GUID for the machine.
	BiosGUID *string

	// READ-ONLY; Boot type of machine discovered in private data center.
	BootType *MachineBootType

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; When was machine first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Data center machine ARM id.
	DatacenterMachineArmID *string

	// READ-ONLY; Data center management server ARM id.
	DatacenterManagementServerArmID *string

	// READ-ONLY; Data center management server name.
	DatacenterManagementServerName *string

	// READ-ONLY; Description for the machine.
	Description *string

	// READ-ONLY; Gets the list of data disks that were assessed as part of this assessment.
	Disks map[string]*AssessedDiskData

	// READ-ONLY; Display Name of the Machine.
	DisplayName *string

	// READ-ONLY; Gets or sets the FQDN for the machine.
	Fqdn *string

	// READ-ONLY; Megabytes of memory found allocated for the machine in private data center.
	MegabytesOfMemory *float32

	// READ-ONLY; Gets the list of migration guidelines applicable.
	MigrationGuidelines []*SQLMigrationGuideline

	// READ-ONLY; Gets or sets the monthly networking cost.
	MonthlyBandwidthCost *float32

	// READ-ONLY; Gets or sets the monthly compute cost calculated for recommended size.
	MonthlyComputeCost *float32

	// READ-ONLY; Gets or sets the monthly total storage cost.
	MonthlyStorageCost *float32

	// READ-ONLY; Gets the list of network adapters that were assessed as part of this assessment.
	NetworkAdapters map[string]*SQLAssessedNetworkAdapter

	// READ-ONLY; Number of CPU cores found on the machine.
	NumberOfCores *int32

	// READ-ONLY; Operating system architecture as reported by datacenter management solution.
	OperatingSystemArchitecture *GuestOperatingSystemArchitecture

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemName *string

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemType *string

	// READ-ONLY; Operating system version as reported by datacenter management solution.
	OperatingSystemVersion *string

	// READ-ONLY; Percentile of Percentage of Cores Utilized noted during time period T.
	// Here N and T are settings on Assessment.
	PercentageCoresUtilization *float32

	// READ-ONLY; Percentile of Percentage of Memory Utilized noted during time period T.
	// Here N and T are settings on Assessment.
	PercentageMemoryUtilization *float32

	// READ-ONLY; Gets the product support status related details.
	ProductSupportStatus *ProductSupportStatus

	// READ-ONLY; Gets or sets the Recommended Azure VM Family for the machine.
	RecommendedVMFamily *AzureVMFamily

	// READ-ONLY; Gets or sets the Recommended Azure Size for the machine.
	RecommendedVMSize *AzureVMSize

	// READ-ONLY; Gets or sets the Megabytes of memory for recommended size.
	RecommendedVMSizeMegabytesOfMemory *float32

	// READ-ONLY; Gets or sets the Number of cores for recommended size.
	RecommendedVMSizeNumberOfCores *int32

	// READ-ONLY; Gets the list of SQL instances discovered on the machine.
	SQLInstances []*AssessedSQLInstanceSummary

	// READ-ONLY; Gets the suitability for Microsoft cloud defender.
	SecuritySuitability *CloudSuitability

	// READ-ONLY; Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion

	// READ-ONLY; Gets a value indicating whether machine is suitable for the cloud platform selected.
	Suitability *CloudSuitability

	// READ-ONLY; Gets or sets the detailed messages that were set on the machine during evaluation.
	SuitabilityDetail *AzureVMSuitabilityDetail

	// READ-ONLY; Gets or sets the explanation if machine is not suitable for cloud.
	SuitabilityExplanation *AzureVMSuitabilityExplanation

	// READ-ONLY; Assessed machine type.
	Type *AssessedMachineType

	// READ-ONLY; When was machine last updated.
	UpdatedTimestamp *time.Time
}

// AssessedSQLRecommendedEntity - SQL Assessment REST resource.
type AssessedSQLRecommendedEntity struct {
	// The resource-specific properties for this resource.
	Properties *AssessedSQLRecommendedEntityProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessedSQLRecommendedEntityListResult - The response of a AssessedSqlRecommendedEntity list operation.
type AssessedSQLRecommendedEntityListResult struct {
	// REQUIRED; The AssessedSqlRecommendedEntity items on this page
	Value []*AssessedSQLRecommendedEntity

	// The link to the next page of items
	NextLink *string
}

// AssessedSQLRecommendedEntityProperties - Assessed SQL recommended entity properties.
type AssessedSQLRecommendedEntityProperties struct {
	// Gets or sets Arm id of assessed entity.
	AssessedSQLEntityArmID *string

	// READ-ONLY; SQL instance azure SQL DB suitability details.
	AzureSQLDBSuitabilityDetails *SQLAssessmentV2PaasSuitabilityData

	// READ-ONLY; SQL instance azure SQL MI suitability details.
	AzureSQLMISuitabilityDetails *SQLAssessmentV2PaasSuitabilityData

	// READ-ONLY; SQL instance azure SQL VM suitability details.
	AzureSQLVMSuitabilityDetails *SQLAssessmentV2IaasSuitabilityData

	// READ-ONLY; Gets or sets assessed database count.
	DbCount *int32

	// READ-ONLY; Gets or sets the total discovered database count.
	DiscoveredDBCount *int32

	// READ-ONLY; Gets or sets a value indicating whether instance deep discovery has occurred or not.
	HasScanOccurred *bool

	// READ-ONLY; Gets or sets SQL instance name.
	InstanceName *string

	// READ-ONLY; Gets or sets a value indicating whether the SQL instance is clustered or not.
	IsClustered *bool

	// READ-ONLY; Gets or sets a value indicating whether the high availability is enabled or not.
	IsHighAvailabilityEnabled *bool

	// READ-ONLY; Gets or sets machine name.
	MachineName *string

	// READ-ONLY; Gets the product support status related details.
	ProductSupportStatus *ProductSupportStatus

	// READ-ONLY; Gets or sets the recommended azure SQL target type.
	RecommendedAzureSQLTargetType *TargetType

	// READ-ONLY; Gets or sets the recommended azure SQL suitability.
	RecommendedSuitability *RecommendedSuitability

	// READ-ONLY; Gets the SQL edition from the recommended entity if applicable.
	SQLEdition *string

	// READ-ONLY; Gets the SQL version from the recommended entity if applicable.
	SQLVersion *string

	// READ-ONLY; Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion
}

// AssessedWebAppV2 - Assessed Web app web model class.
type AssessedWebAppV2 struct {
	// The resource-specific properties for this resource.
	Properties *AssessedWebAppV2Properties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessedWebAppV2ListResult - The response of a AssessedWebAppV2 list operation.
type AssessedWebAppV2ListResult struct {
	// REQUIRED; The AssessedWebAppV2 items on this page
	Value []*AssessedWebAppV2

	// The link to the next page of items
	NextLink *string
}

// AssessedWebAppV2Properties - Assessed Web app database properties web model.
type AssessedWebAppV2Properties struct {
	// READ-ONLY; Gets or sets the app service plan name.
	AppServicePlanName *string

	// READ-ONLY; Gets the machine name.
	MachineName *string

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; When was assessed SQL database first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Machine arm id.
	DiscoveredMachineID *string

	// READ-ONLY; Gets the discovered web app ID.
	DiscoveredWebAppID *string

	// READ-ONLY; Gets or sets the server ARM Id.
	ServerArmID *string

	// READ-ONLY; Gets or sets the target specific result.
	TargetSpecificResult map[string]*TargetSpecificResult

	// READ-ONLY; When was assessed Web app database last updated.
	UpdatedTimestamp *time.Time

	// READ-ONLY; Gets or sets web app name.
	WebAppName *string

	// READ-ONLY; Gets or sets the web app type.
	WebAppType *WebAppType

	// READ-ONLY; Gets or sets the web server name.
	WebServerName *string
}

// AssessedWebApplication - ARM model of Assessed Web Application.
type AssessedWebApplication struct {
	// The resource-specific properties for this resource.
	Properties *AssessedWebApplicationProperties

	// READ-ONLY; If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.
	// Entity tags are used for comparing two or more entities from the same requested resource.
	// HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range
	// (section 14.27) header fields.
	ETag *string

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessedWebApplicationListResult - The response of a AssessedWebApplication list operation.
type AssessedWebApplicationListResult struct {
	// REQUIRED; The AssessedWebApplication items on this page
	Value []*AssessedWebApplication

	// The link to the next page of items
	NextLink *string
}

// AssessedWebApplicationProperties - ARM model of Assessed Web Application Properties.
type AssessedWebApplicationProperties struct {
	// READ-ONLY; Gets discovery arm id.
	DiscoveryArmID *string

	// READ-ONLY; Gets display name.
	DisplayName *string

	// READ-ONLY; Gets machine arm id.
	MachineArmID *string

	// READ-ONLY; Gets machine display name.
	MachineDisplayName *string

	// READ-ONLY; Gets web app type.
	WebAppType *WebAppType

	// READ-ONLY; Gets web server arm id.
	WebServerArmID *string

	// READ-ONLY; Gets web server display name.
	WebServerDisplayName *string

	// READ-ONLY; Gets recommendation result.
	RecommendationResult *RecommendationResult

	// READ-ONLY; Gets suitability result.
	SuitabilityResult *SuitabilityResult
}

// Assessment - Machine assessment resource.
type Assessment struct {
	// The resource-specific properties for this resource.
	Properties *MachineAssessmentProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessmentListResult - The response of a Assessment list operation.
type AssessmentListResult struct {
	// REQUIRED; The Assessment items on this page
	Value []*Assessment

	// The link to the next page of items
	NextLink *string
}

// AssessmentOptions - Assessment options resource.
type AssessmentOptions struct {
	// The resource-specific properties for this resource.
	Properties *AssessmentOptionsProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessmentOptionsListResult - The response of a AssessmentOptions list operation.
type AssessmentOptionsListResult struct {
	// REQUIRED; The AssessmentOptions items on this page
	Value []*AssessmentOptions

	// The link to the next page of items
	NextLink *string
}

// AssessmentOptionsProperties - Assessment options properties.
type AssessmentOptionsProperties struct {
	// READ-ONLY; List of VM Families that support premium disks for assessments.
	PremiumDiskVMFamilies []*string

	// READ-ONLY; List of Azure locations that support Premium SSD V2 disks for assessments.
	PremiumV2DiskSupportedLocations []*AzureLocation

	// READ-ONLY; List of supported currencies for reserved instances.
	ReservedInstanceSupportedCurrencies []*string

	// READ-ONLY; List of supported Azure regions for reserved instances.
	ReservedInstanceSupportedLocations []*string

	// READ-ONLY; List of supported Azure offer codes for reserved instances.
	ReservedInstanceSupportedOffers []*string

	// READ-ONLY; List of supported VM Families.
	ReservedInstanceVMFamilies []*string

	// READ-ONLY; List of Azure locations that support Savings plan offer for assessments.
	SavingsPlanSupportedLocations []*string

	// READ-ONLY; List of VM Families that support Savings plan offer for assessments.
	SavingsPlanVMFamilies []*string

	// READ-ONLY; Ultra disk related assessment options.
	UltraDiskVMFamilies []*UltraDiskAssessmentOptions

	// READ-ONLY; Dictionary of VM families grouped by vm family name describing the targeted azure locations of VM family and
	// the category of the family.
	VMFamilies []*VMFamilyOptions
}

// AssessmentProject - An Assessment project site resource.
type AssessmentProject struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties *ProjectProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessmentProjectListResult - The response of a AssessmentProject list operation.
type AssessmentProjectListResult struct {
	// REQUIRED; The AssessmentProject items on this page
	Value []*AssessmentProject

	// The link to the next page of items
	NextLink *string
}

// AssessmentProjectSummary - Assessment project summary resource.
type AssessmentProjectSummary struct {
	// The resource-specific properties for this resource.
	Properties *AssessmentProjectSummaryProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AssessmentProjectSummaryListResult - The response of a AssessmentProjectSummary list operation.
type AssessmentProjectSummaryListResult struct {
	// REQUIRED; The AssessmentProjectSummary items on this page
	Value []*AssessmentProjectSummary

	// The link to the next page of items
	NextLink *string
}

// AssessmentProjectSummaryProperties - Assessment project summary properties class.
type AssessmentProjectSummaryProperties struct {
	// READ-ONLY; Gets the Error summary by feature. Contains number of affected Entities per feature.
	ErrorSummaryAffectedEntities []*ErrorSummary

	// READ-ONLY; Gets the last assessment timestamp.
	LastAssessmentTimestamp *time.Time

	// READ-ONLY; Gets the number of assessments created in this project.
	NumberOfAssessments *int32

	// READ-ONLY; Gets the number of groups created in this project.
	NumberOfGroups *int32

	// READ-ONLY; Gets the number of import machines part of this project.
	NumberOfImportMachines *int32

	// READ-ONLY; Gets the number of machines part of this project.
	NumberOfMachines *int32

	// READ-ONLY; Gets the number of private endpoint connections.
	NumberOfPrivateEndpointConnections *int32
}

// AssessmentProjectUpdate - The type used for update operations of the AssessmentProject.
type AssessmentProjectUpdate struct {
	// The updatable properties of the AssessmentProject.
	Properties *AssessmentProjectUpdateProperties

	// Resource tags.
	Tags map[string]*string
}

// AssessmentProjectUpdateProperties - The updatable properties of the AssessmentProject.
type AssessmentProjectUpdateProperties struct {
	// Assessment solution ARM id tracked by Microsoft.Migrate/migrateProjects.
	AssessmentSolutionID *string

	// The ARM id of the storage account used for interactions when public access is disabled.
	CustomerStorageAccountArmID *string

	// The ARM id of service map workspace created by customer.
	CustomerWorkspaceID *string

	// Location of service map workspace created by customer.
	CustomerWorkspaceLocation *string

	// Assessment project status.
	ProjectStatus *ProjectStatus

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// This value can be set to 'enabled' to avoid breaking changes on existing customer resources and templates. If set to 'disabled',
	// traffic over public interface is not allowed, and private endpoint
	// connections would be the exclusive access method.
	PublicNetworkAccess *string
}

// AssessmentResult - Assessment results.
type AssessmentResult struct {
	// REQUIRED; Gets or sets the app service plan name.
	AppServicePlanName *string

	// REQUIRED; Gets or sets the security suitability.
	SecuritySuitability *CloudSuitability

	// REQUIRED; Gets or sets the suitability.
	Suitability *CloudSuitability

	// REQUIRED; Gets or sets the web app sku name.
	WebAppSKUName *string

	// REQUIRED; Gets or sets the web app sku size.
	WebAppSKUSize *string
}

// AssessmentScopeParameters - Data model of Assessment Scope Parameters.
type AssessmentScopeParameters struct {
	// Gets or sets the server group id.
	ServerGroupID *string
}

// AvsAssessedDisk - AVS assessed disk web model class.
type AvsAssessedDisk struct {
	// READ-ONLY; Associated storage Type recommended for Disk.
	AssessedExternalStorageType *ExternalStorageType

	// READ-ONLY; Gets the display name of the disk.
	DisplayName *string

	// READ-ONLY; Estimated Disk Size in GB.
	EstimatedDiskSizeInGB *float32

	// READ-ONLY; Gigabytes Provisioned for a disk in private data center.
	GigabytesProvisioned *float32

	// READ-ONLY; Disk Read Throughput in MB/s.
	MegabytesPerSecondOfRead *float32

	// READ-ONLY; Disk Write Throughput in MB/s.
	MegabytesPerSecondOfWrite *float32

	// READ-ONLY; Gets the ID of the disk.
	Name *string

	// READ-ONLY; Read Operations per second.
	NumberOfReadOperationsPerSecond *float32

	// READ-ONLY; Write Operations per second.
	NumberOfWriteOperationsPerSecond *float32

	// READ-ONLY; Gets the suitability detail.
	SuitabilityDetail *AzureDiskSuitabilityDetail
}

// AvsAssessedMachine - AVS assessment Assessed Machine resource.
type AvsAssessedMachine struct {
	// The resource-specific properties for this resource.
	Properties *AvsAssessedMachineProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AvsAssessedMachineListResult - The response of a AvsAssessedMachine list operation.
type AvsAssessedMachineListResult struct {
	// REQUIRED; The AvsAssessedMachine items on this page
	Value []*AvsAssessedMachine

	// The link to the next page of items
	NextLink *string
}

// AvsAssessedMachineProperties - AVS assessed machine properties web model.
type AvsAssessedMachineProperties struct {
	// READ-ONLY; Boot type of machine discovered in private data center.
	BootType *MachineBootType

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; When was machine first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Data center machine ARM id.
	DatacenterMachineArmID *string

	// READ-ONLY; Data center management server ARM id.
	DatacenterManagementServerArmID *string

	// READ-ONLY; Data center management server name.
	DatacenterManagementServerName *string

	// READ-ONLY; Description for the machine.
	Description *string

	// READ-ONLY; List of Disks that were assessed as part of this machine's assessment.
	Disks map[string]*AvsAssessedDisk

	// READ-ONLY; Display Name of the Machine.
	DisplayName *string

	// READ-ONLY; List of errors for this machine.
	Errors []*Error

	// READ-ONLY; Megabytes of memory found allocated for the machine in private data center.
	MegabytesOfMemory *float32

	// READ-ONLY; List of Network Adapters that were assessed as part of this machine's assessment.
	NetworkAdapters map[string]*AvsAssessedNetworkAdapter

	// READ-ONLY; Number of CPU cores found on the machine.
	NumberOfCores *int32

	// READ-ONLY; Operating system architecture as reported by datacenter management solution.
	OperatingSystemArchitecture *GuestOperatingSystemArchitecture

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemName *string

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemType *string

	// READ-ONLY; Operating system version as reported by datacenter management solution.
	OperatingSystemVersion *string

	// READ-ONLY; Percentile of Percentage of Cores Utilized noted during time period T.
	// Here N and T are settings on Assessment.
	PercentageCoresUtilization *float32

	// READ-ONLY; Percentile of Percentage of Memory Utilized noted during time period T.
	// Here N and T are settings on Assessment.
	PercentageMemoryUtilization *float32

	// READ-ONLY; Gets the storage in use.
	StorageInUseGB *float32

	// READ-ONLY; Gets a value indicating whether machine is suitable for the cloud platform selected.
	Suitability *CloudSuitability

	// READ-ONLY; Gets the details if machine is not suitable for cloud.
	SuitabilityDetail *AzureAvsVMSuitabilityDetail

	// READ-ONLY; Gets the explanation if machine is not suitable for cloud.
	SuitabilityExplanation *AzureAvsVMSuitabilityExplanation

	// READ-ONLY; Assessed machine type.
	Type *AssessedMachineType

	// READ-ONLY; When was machine last updated.
	UpdatedTimestamp *time.Time
}

// AvsAssessedNetworkAdapter - Second level object returned as part of AVS AssessedMachine REST resource.
type AvsAssessedNetworkAdapter struct {
	// READ-ONLY; Gets the display name of the network adapter.
	DisplayName *string

	// READ-ONLY; IP V4 addresses for the machine.
	IPAddresses []*string

	// READ-ONLY; Mac address of the NIC.
	MacAddress *string

	// READ-ONLY; Gets the Received data for Network Adapter in MB/s. This value is the percentile of historical data based on
	// options selected in Assessment.
	MegabytesPerSecondReceived *float32

	// READ-ONLY; Gets the Transmitted data for Network Adapter in MB/s. This value is the percentile of historical data based
	// on options selected in Assessment.
	MegabytesPerSecondTransmitted *float32
}

// AvsAssessment - AVS assessment resource.
type AvsAssessment struct {
	// The resource-specific properties for this resource.
	Properties *AvsAssessmentProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AvsAssessmentListResult - The response of a AvsAssessment list operation.
type AvsAssessmentListResult struct {
	// REQUIRED; The AvsAssessment items on this page
	Value []*AvsAssessment

	// The link to the next page of items
	NextLink *string
}

// AvsAssessmentOptions - AVS Assessment options resource.
type AvsAssessmentOptions struct {
	// The resource-specific properties for this resource.
	Properties *AvsAssessmentOptionsProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AvsAssessmentOptionsListResult - The response of a AvsAssessmentOptions list operation.
type AvsAssessmentOptionsListResult struct {
	// REQUIRED; The AvsAssessmentOptions items on this page
	Value []*AvsAssessmentOptions

	// The link to the next page of items
	NextLink *string
}

// AvsAssessmentOptionsProperties - AVS Assessment options properties.
type AvsAssessmentOptionsProperties struct {
	// AVS External Storage Types Supported.
	AvsExternalStorageTypes []*AvsExternalStorageOptions

	// AVS SKU Nodes.
	AvsNodes []*AvsSKUOptions

	// FTT and Raid level values.
	FailuresToTolerateAndRaidLevelValues []*FttAndRaidLevel

	// List of AVS nodes for RI.
	ReservedInstanceAvsNodes []*AzureAvsNodeType

	// List of supported currencies for reserved instances.
	ReservedInstanceSupportedCurrencies []*AzureCurrency

	// List of supported Azure regions for reserved instances.
	ReservedInstanceSupportedLocations []*AzureLocation

	// List of supported Azure offer codes for reserved instances.
	ReservedInstanceSupportedOffers []*AzureOfferCode
}

// AvsAssessmentProperties - Properties of the AVS assessment.
type AvsAssessmentProperties struct {
	// AVS Assessment Scenario.
	AvsAssessmentScenario *AvsAssessmentScenario

	// Azure Location or Azure region where to which the machines will be migrated.
	AzureLocation *AzureLocation

	// Azure Offer code according to which cost estimation is done.
	AzureOfferCode *AzureOfferCode

	// Percentage of CPU capacity reserved for processing additional workloads.
	CPUHeadroom *float32

	// Currency in which prices should be reported.
	Currency *AzureCurrency

	// De-duplication compression.
	DedupeCompression *float32

	// Custom discount percentage.
	DiscountPercentage *float32

	// List of AVS external storage types.
	ExternalStorageTypes []*ExternalStorageType

	// Failures to tolerate and RAID level in a common property.
	FailuresToTolerateAndRaidLevel *FttAndRaidLevel

	// List of Failures to tolerate and RAID levels in a common property.
	FailuresToTolerateAndRaidLevelList []*FttAndRaidLevel

	// Is Stretch Cluster Enabled.
	IsStretchClusterEnabled *bool

	// Is VCF license applied
	IsVcfByolEnabled *bool

	// Memory overcommit.
	MemOvercommit *float32

	// AVS node type.
	NodeType *AzureAvsNodeType

	// AVS node types.
	NodeTypes []*AzureAvsNodeType

	// Percentile of the utilization data values to be considered while assessing machines.
	Percentile *Percentile

	// Gets or sets the end time to consider performance data for assessment.
	PerfDataEndTime *time.Time

	// Gets or sets the start time to consider performance data for assessment.
	PerfDataStartTime *time.Time

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// Reserved instance.
	ReservedInstance *AzureReservedInstance

	// Percentage of buffer that user wants on performance metrics when recommending Azure sizes.
	ScalingFactor *float32

	// Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion

	// Time Range for which the historic utilization data should be considered for assessment.
	TimeRange *TimeRange

	// VCPU over subscription.
	VcpuOversubscription *float32

	// READ-ONLY; Gets the assessment error summary. This is the number of machines affected by each type of error in this assessment.
	AssessmentErrorSummary map[string]*int32

	// READ-ONLY; Assessment type of the assessment.
	AssessmentType *AssessmentType

	// READ-ONLY; Estimated External Storage for Assessment.
	AvsEstimatedExternalStorages []*AvsEstimatedExternalStorage

	// READ-ONLY; Estimated External Storage for Assessment.
	AvsEstimatedNetworks []*AvsEstimatedNetwork

	// READ-ONLY; Estimated AVS SKU for Assessment.
	AvsEstimatedNodes []*AvsEstimatedNode

	// READ-ONLY; Predicted CPU utilization.
	CPUUtilization *float32

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; collection of cost components.
	CostComponents []*CostComponent

	// READ-ONLY; Date and Time when assessment was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Gets the group type for the assessment.
	GroupType *GroupType

	// READ-ONLY; Limiting factor.
	LimitingFactor *string

	// READ-ONLY; Number of machines part of the assessment.
	NumberOfMachines *int32

	// READ-ONLY; Recommended number of nodes.
	NumberOfNodes *int32

	// READ-ONLY; Time when the Azure Prices were queried. Date-Time represented in ISO-8601 format.
	PricesTimestamp *time.Time

	// READ-ONLY; Predicted RAM utilization.
	RAMUtilization *float32

	// READ-ONLY; Schema version.
	SchemaVersion *string

	// READ-ONLY; User configurable setting to display the Stage of Assessment.
	Stage *AssessmentStage

	// READ-ONLY; Whether assessment is in valid state and all machines have been assessed.
	Status *AssessmentStatus

	// READ-ONLY; Predicted storage utilization.
	StorageUtilization *float32

	// READ-ONLY; Gets or sets the Assessment cloud suitability.
	Suitability *CloudSuitability

	// READ-ONLY; Gets or sets the Assessment suitability explanation.
	SuitabilityExplanation *AzureAvsSuitabilityExplanation

	// READ-ONLY; Cloud suitability summary for all the machines in the assessment.
	SuitabilitySummary map[string]*int32

	// READ-ONLY; Predicted total CPU cores used.
	TotalCPUCores *float32

	// READ-ONLY; Total monthly cost.
	TotalMonthlyCost *float32

	// READ-ONLY; Predicted total RAM used in GB.
	TotalRAMInGB *float32

	// READ-ONLY; Predicted total Storage used in GB.
	TotalStorageInGB *float32

	// READ-ONLY; Date and Time when assessment was last updated.
	UpdatedTimestamp *time.Time
}

// AvsEstimatedExternalStorage - Details on the Estimated External Storage for AVS Assessment.
type AvsEstimatedExternalStorage struct {
	// Total monthly cost for type of storage.
	MonthlyPrice *float32

	// Recommended External Storage.
	StorageType *ExternalStorageType

	// Predicted storage utilization.
	StorageUtilization *float32

	// Predicted total Storage used in GB.
	TotalStorageInGB *float32
}

// AvsEstimatedNetwork - Details on the Estimated Network Costs for AVS Assessment.
type AvsEstimatedNetwork struct {
	// Monthly cost for network type.
	MonthlyPrice *float32

	// Recommended Network Sku.
	NetworkType *NetworkSKUType
}

// AvsEstimatedNode - Details on the Estimated nodes for AVS Assessment.
type AvsEstimatedNode struct {
	// Predicted CPU utilization.
	CPUUtilization *float32

	// FttRaidLevel recommended for Node.
	FttRaidLevel *FttAndRaidLevel

	// Total monthly cost for type and number of nodes.
	MonthlyPrice *float32

	// Number of nodes that will be needed.
	NodeNumber *int32

	// Recommended SKU.
	NodeType *AzureAvsNodeType

	// Pricing model indicates what hour multiplier to use while estimating the Nodes cost.
	PricingModel *AzureReservedInstance

	// Predicted RAM utilization.
	RAMUtilization *float32

	// Predicted storage utilization.
	StorageUtilization *float32

	// Predicted total CPU cores across the set of nodes.
	TotalCPU *float32

	// Predicted total RAM used in GB.
	TotalRAM *float32

	// Predicted total Storage used in GB.
	TotalStorage *float32
}

// AvsExternalStorageOptions - AVS External Storage specific options.
type AvsExternalStorageOptions struct {
	// AVS external storage type.
	StorageType *ExternalStorageType

	// List of locations where this storage type is available.
	TargetLocations []*AzureLocation
}

// AvsNodeSummary - Azure Avs Node summary.
type AvsNodeSummary struct {
	// READ-ONLY; The on premises PaaS cost.
	AvsNodeCostDetails *CostDetails

	// READ-ONLY; The total number of Avs VM cores.
	Cores *int32

	// READ-ONLY; Represents errors which might have occurred while calculating AVS Node Summary
	Errors []*ErrorDetailAutoGenerated

	// READ-ONLY; Estimated cost.
	EstimatedCost *float32

	// READ-ONLY; Estimated cost by offer.
	EstimatedCostByRecommendedOffer []*EstimatedCostByOffer

	// READ-ONLY; Estimated Cost With VCF BYOL
	EstimatedCostWithVcfByol *float32

	// READ-ONLY; Estimated External Storage
	EstimatedExternalStorage []*EstimatedExternalStorage

	// READ-ONLY; Estimated Network
	EstimatedNetwork []*EstimatedNetwork

	// READ-ONLY; The total memory in GB.
	MemoryGb *float32

	// READ-ONLY; OS licensing cost.
	OSLicensingCost *float32

	// READ-ONLY; The recommended VM family summary.
	RecommendedAvsNodeTypeSummary []*RecommendedAvsNodeTypeSummary

	// READ-ONLY; Servers suitable for migration.
	ServersSuitableForMigration *int32

	// READ-ONLY; The total number of servers.
	TotalNumberOfServers *int32
}

// AvsSKUOptions - AVS SKU specific options.
type AvsSKUOptions struct {
	// AVS Node type.
	NodeType *AzureAvsNodeType

	// List of locations where this node type is available.
	TargetLocations []*AzureLocation
}

// AvsSummary - Avs summary REST resource.
type AvsSummary struct {
	// The resource-specific properties for this resource.
	Properties *AvsSummaryProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// AvsSummaryListResult - The response of a AvsSummary list operation.
type AvsSummaryListResult struct {
	// REQUIRED; The AvsSummary items on this page
	Value []*AvsSummary

	// The link to the next page of items
	NextLink *string
}

// AvsSummaryProperties - Avs summary properties class.
type AvsSummaryProperties struct {
	// READ-ONLY; The Azure Avs summary.
	AzureAvsSummary *AzureAvsSummary

	// READ-ONLY; The on premises IaaS summary.
	OnPremisesAvsSummary *OnPremisesIaasSummary
}

// AzureAppServiceContainerSummary - Shows Azure App Service Container summary.
type AzureAppServiceContainerSummary struct {
	// READ-ONLY; Distribution by application type.
	DistributionByApp []*WebAppDistribution

	// READ-ONLY; Distribution by SKU.
	DistributionBySKU []*WebAppTargetSKU

	// READ-ONLY; Estimated cost by recommendation offer.
	EstimatedCostByOffer []*EstimatedCostByOffer
}

// AzureAppServiceSummary - Shows Azure App Service summary.
type AzureAppServiceSummary struct {
	// READ-ONLY; Distribution by application type.
	DistributionByApp []*WebAppDistribution

	// READ-ONLY; Distribution by SKU.
	DistributionBySKU []*AppServiceSKU

	// READ-ONLY; Estimated cost by recommendation offer.
	EstimatedCostByOffer []*EstimatedCostByOffer
}

// AzureArcManagementSettings - Azure Arc Management settings.
type AzureArcManagementSettings struct {
	// REQUIRED; Gets the azure arc monitoring settings.
	MonitoringSettings *AzureArcMonitoringSettings
}

// AzureArcMonitoringSettings - Azure Arc Monitoring settings.
type AzureArcMonitoringSettings struct {
	// REQUIRED; Number of alert rules settings.
	AlertRulesCount *int32

	// REQUIRED; Logs volume settings.
	LogsVolumeInGB *float32
}

// AzureArcSettings - Azure arc settings for a business case.
type AzureArcSettings struct {
	// REQUIRED; AzureArc state indicates whether to include azure arc related costs in on-premises or not.
	AzureArcState *AzureArcState

	// Gets Azure arc labour cost percentage.
	LaborCostPercentage *float32

	// Management settings.
	ManagementSettings *AzureArcManagementSettings
}

// AzureAvsSummary - The Azure AVS summary.
type AzureAvsSummary struct {
	// READ-ONLY; The on premises PaaS cost.
	AvsCostDetails *CostDetails

	// READ-ONLY; Avs virtual machine summary.
	AvsNodeSummary *AvsNodeSummary

	// READ-ONLY; Shows the year-on-year cost overall.
	YearOnYearEstimates *YearOnYearEstimates
}

// AzureIaasSQLSummary - Azure Iaas sql server summary.
type AzureIaasSQLSummary struct {
	// READ-ONLY; The on premises PaaS cost.
	AzureSQLCostDetails *CostDetails

	// READ-ONLY; The cost by storage type.
	CostByStorageType []*CostByStorageType

	// READ-ONLY; Estimated cost.
	EstimatedCost *float32

	// READ-ONLY; Estimated cost by offer.
	EstimatedCostByRecommendedOffer []*EstimatedCostByOffer

	// READ-ONLY; OS licensing cost.
	OSLicensingCost *float32

	// READ-ONLY; The recommended VM family summary.
	RecommendedVMFamilySummary []*RecommendedVMFamilySummary

	// READ-ONLY; Suitable SQL entities.
	SuitableSQLEntities *int32

	// READ-ONLY; Total SQL entities.
	TotalSQLEntities *int32
}

// AzureIaasSummary - The Azure IaaS summary.
type AzureIaasSummary struct {
	// READ-ONLY; The on premises PaaS cost.
	AzureIaasCostDetails *CostDetails

	// READ-ONLY; Azure Iaas sql server summary.
	AzureIaasSQLSummary *AzureIaasSQLSummary

	// READ-ONLY; Azure Iaas virtual machine summary.
	AzureIaasVMSummary *AzureIaasVMSummary

	// READ-ONLY; Shows the year-on-year cost overall.
	YearOnYearEstimates *YearOnYearEstimates
}

// AzureIaasVMSummary - Azure Iaas virtual machine summary.
type AzureIaasVMSummary struct {
	// READ-ONLY; The on premises PaaS cost.
	AzureVMCostDetails *CostDetails

	// READ-ONLY; The total number of IaaS VM cores.
	Cores *int32

	// READ-ONLY; The cost by storage type.
	CostByStorageType []*CostByStorageType

	// READ-ONLY; Estimated cost.
	EstimatedCost *float32

	// READ-ONLY; Estimated cost by offer.
	EstimatedCostByRecommendedOffer []*EstimatedCostByOffer

	// READ-ONLY; The total memory in GB.
	MemoryGb *float32

	// READ-ONLY; OS licensing cost.
	OSLicensingCost *float32

	// READ-ONLY; The recommended VM family summary.
	RecommendedVMFamilySummary []*RecommendedVMFamilySummary

	// READ-ONLY; Servers suitable for migration.
	ServersSuitableForMigration *int32

	// READ-ONLY; The total number of servers.
	TotalNumberOfServers *int32
}

// AzureKubernetesServiceSummary - Shows Azure Kubernetes Service summary.
type AzureKubernetesServiceSummary struct {
	// READ-ONLY; Distribution by application type.
	DistributionByApp []*WebAppDistribution

	// READ-ONLY; Distribution by SKU.
	DistributionBySKU []*WebAppTargetSKU

	// READ-ONLY; Estimated cost by recommendation offer.
	EstimatedCostByOffer []*EstimatedCostByOffer
}

// AzureManagedDiskSKUDTO - Class representing an Azure Managed Disk SKU.
type AzureManagedDiskSKUDTO struct {
	// READ-ONLY; Gets disk redundancy - e.g. LRS, ZRS.
	DiskRedundancy *AzureManagedDiskSKUDTODiskRedundancy

	// READ-ONLY; Gets the Size of the managed disk - e.g. P30, P40.
	DiskSize *AzureDiskSize

	// READ-ONLY; Gets the Type ("tier") of disk - e.g. standard, premium, ultra.
	DiskType *AzureManagedDiskSKUDTODiskType

	// READ-ONLY; Gets the recommended IOPS of the managed disk.
	RecommendedIops *float32

	// READ-ONLY; Gets the recommended in GB of the managed disk.
	RecommendedSizeInGib *float32

	// READ-ONLY; Gets the recommended throughput in MBPS of the managed disk.
	RecommendedThroughputInMbps *float32

	// READ-ONLY; Gets the managed disk storage cost.
	StorageCost *float32
}

// AzurePaasSummary - Shows the PaaS Azure summary.
type AzurePaasSummary struct {
	// READ-ONLY; Shows Azure App Service Container summary.
	AzureAppServiceContainerSummary *AzureAppServiceContainerSummary

	// READ-ONLY; Shows Azure App Service summary.
	AzureAppServiceSummary *AzureAppServiceSummary

	// READ-ONLY; Shows Azure Kubernetes Service summary.
	AzureKubernetesServiceSummary *AzureKubernetesServiceSummary

	// READ-ONLY; Shows the Azure SQL details.
	AzureSQLSummary *AzureSQLSummary

	// READ-ONLY; Number of cores.
	Cores *int32

	// READ-ONLY; Shows the estimated cost by target.
	EstimatedCostByTarget *EstimatedCostByTarget

	// READ-ONLY; estimated SQL Server licensing cost.
	EstimatedSQLServerLicensingCost *float32

	// READ-ONLY; Memory Utilization.
	Memory *float32

	// READ-ONLY; Storage Utilization.
	Storage *float32

	// READ-ONLY; Suitable Sql instances.
	SuitableSQLEntities *int32

	// READ-ONLY; Suitable web applications.
	SuitableWebApps *int32

	// READ-ONLY; The on premises PaaS cost.
	TotalAzurePaasCost *CostDetails

	// READ-ONLY; Number of Sql instances.
	TotalSQLEntities *int32

	// READ-ONLY; Number of web applications.
	TotalWebApps *int32
}

// AzureQuorumWitnessDTO - Quorum Witness.
type AzureQuorumWitnessDTO struct {
	// READ-ONLY; Gets quorum witness type.
	QuorumWitnessType *AzureQuorumWitnessDTOQuorumWitnessType
}

// AzureSQLIaasSKUDTO - Class representing Azure SQL IAAS SKU.
type AzureSQLIaasSKUDTO struct {
	// READ-ONLY; Gets the target type.
	AzureSQLTargetType *TargetType

	// READ-ONLY; Gets the The list of data disk sizes.
	DataDiskSizes []*AzureManagedDiskSKUDTO

	// READ-ONLY; Gets the The list of log disk sizes.
	LogDiskSizes []*AzureManagedDiskSKUDTO

	// READ-ONLY; Gets the The Azure Compute Virtual Machine.
	VirtualMachineSize *AzureVirtualMachineSKUDTO
}

// AzureSQLPaasSKUDTO - Class representing Azure SQL PAAS SKU.
type AzureSQLPaasSKUDTO struct {
	// READ-ONLY; Gets the compute tier.
	AzureSQLComputeTier *ComputeTier

	// READ-ONLY; Gets the hardware generation.
	AzureSQLHardwareGeneration *HardwareGeneration

	// READ-ONLY; Gets the service tier.
	AzureSQLServiceTier *AzureSQLServiceTier

	// READ-ONLY; Gets the target type.
	AzureSQLTargetType *TargetType

	// READ-ONLY; Gets the number of cores.
	Cores *int32

	// READ-ONLY; Gets the predicted data size in megabytes in the Azure SQL, will impact the billing cost.
	PredictedDataSizeInMB *float32

	// READ-ONLY; Gets the predicted log size in megabytes in the Azure SQL, will impact the billing cost.
	PredictedLogSizeInMB *float32

	// READ-ONLY; Gets the storage maximum size in megabytes.
	StorageMaxSizeInMB *float32
}

// AzureSQLSummary - Shows the Azure SQL details.
type AzureSQLSummary struct {
	// READ-ONLY; Distribution by service tiers, retaining just to support older Business cases.
	DistributionByServiceTier []*SQLServiceTier

	// READ-ONLY; Distribution by service tiers for SQL DB.
	DistributionByServiceTierForSQLDb []*SQLServiceTier

	// READ-ONLY; Distribution by service tiers for SQL MI.
	DistributionByServiceTierForSQLMi []*SQLServiceTier

	// READ-ONLY; Estimated cost by recommended offer.
	EstimatedCostByOffer []*EstimatedCostByOffer
}

// AzureSettings - Azure settings for a business case.
type AzureSettings struct {
	// REQUIRED; Business case Currency.
	Currency *BusinessCaseCurrency

	// REQUIRED; Gets or sets azure location.
	TargetLocation *string

	// Gets Avs labour cost percentage.
	AvsLaborCostPercentage *float32

	// Migration Strategy.
	BusinessCaseType *MigrationStrategy

	// Gets comfort factor.
	ComfortFactor *float32

	// Gets azure Discount percentage.
	DiscountPercentage *float32

	// Gets IaaS labour cost percentage.
	IaasLaborCostPercentage *float32

	// Gets infrastructure growth rate.
	InfrastructureGrowthRate *float32

	// Gets network cost percentage.
	NetworkCostPercentage *float32

	// Gets PaaS labour cost percentage.
	PaasLaborCostPercentage *float32

	// Gets migration completion percentage per year.
	PerYearMigrationCompletionPercentage map[string]*float32

	// Gets end time to use for performance.
	PerformanceDataEndTime *time.Time

	// Gets start time to use for performance.
	PerformanceDataStartTime *time.Time

	// Gets utilization percentile for performance.
	PerformanceUtilizationPercentile *float32

	// Gets the business case savings option type.
	SavingsOption *SavingsOption

	// Gets wACC percentage.
	Wacc *float32

	// Workload discovery source.
	WorkloadDiscoverySource *DiscoverySource
}

// AzureVirtualMachineSKUDTO - Azure Virtual Machine SKU.
type AzureVirtualMachineSKUDTO struct {
	// READ-ONLY; Gets the Available vCores. This can be less than the vCores in the Constrained vCPU VM Sizes.
	AvailableCores *int32

	// READ-ONLY; Gets the Virtual Machine SKU name,: E.g. : Standard_F16s.
	AzureSKUName *AzureVMSize

	// READ-ONLY; Gets the Virtual Machine Family, for example : standardMSFamily.
	AzureVMFamily *AzureVMFamily

	// READ-ONLY; Gets the Compute Size in vCores.
	Cores *int32

	// READ-ONLY; Gets the Max network interfaces.
	MaxNetworkInterfaces *int32
}

// BusinessCase - Business case resource.
type BusinessCase struct {
	// The resource-specific properties for this resource.
	Properties *BusinessCaseProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// BusinessCaseListResult - The response of a BusinessCase list operation.
type BusinessCaseListResult struct {
	// REQUIRED; The BusinessCase items on this page
	Value []*BusinessCase

	// The link to the next page of items
	NextLink *string
}

// BusinessCaseProperties - Property bag for an Microsoft.Azure.Migrate.BusinessCaseService.Api.V20220202_preview.Resources.BusinessCase
// resource.
type BusinessCaseProperties struct {
	// Business case settings.
	Settings *Settings

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState2

	// READ-ONLY; Gets the state of business case reports.
	ReportStatusDetails []*ReportDetails

	// READ-ONLY; Business case state.
	State *BusinessCaseState
}

// Check - Data model of Check or Rule for Suitability Analysis.
type Check struct {
	// READ-ONLY; Gets behavior or check result.
	Behavior *CheckResult

	// READ-ONLY; Gets cause.
	Cause *string

	// READ-ONLY; Gets description.
	Description *string

	// READ-ONLY; Gets more information about check or rule.
	MoreInfo *MoreInfo

	// READ-ONLY; Gets name.
	Name *string

	// READ-ONLY; Gets recommendation.
	Recommendation *string
}

// CollectorAgentPropertiesBase - Collector agent property class.
type CollectorAgentPropertiesBase struct {
	// Gets the collector agent id.
	ID *string

	// Gets the collector last heartbeat time.
	LastHeartbeatUTC *time.Time

	// Gets or sets the SPN details.
	SpnDetails *CollectorAgentSpnPropertiesBase

	// Gets the collector agent version.
	Version *string
}

// CollectorAgentSpnPropertiesBase - Collector agent SPN details class.
type CollectorAgentSpnPropertiesBase struct {
	// Gets the AAD application id.
	ApplicationID *string

	// Gets the AAD audience url.
	Audience *string

	// Gets the AAD authority endpoint.
	Authority *string

	// Gets the object id of the AAD application.
	ObjectID *string

	// Gets the tenant id of the AAD application.
	TenantID *string
}

// CollectorPropertiesBase - Collector properties class.
type CollectorPropertiesBase struct {
	// Gets the discovery site id.
	DiscoverySiteID *string

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets the Timestamp when collector was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Timestamp when collector was last updated.
	UpdatedTimestamp *time.Time
}

// CollectorPropertiesBaseWithAgent - Collector properties class.
type CollectorPropertiesBaseWithAgent struct {
	// Gets or sets the collector agent properties.
	AgentProperties *CollectorAgentPropertiesBase

	// Gets the discovery site id.
	DiscoverySiteID *string

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Gets the Timestamp when collector was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Timestamp when collector was last updated.
	UpdatedTimestamp *time.Time
}

// CompareSummary - Compare summary class.
type CompareSummary struct {
	// READ-ONLY; The Azure arc enabled on-premises cost.
	AzureArcEnabledOnPremisesCostDetails *CostDetails

	// READ-ONLY; The AVS cost.
	AzureAvsCostDetails *CostDetails

	// READ-ONLY; The azure IaaS cost.
	AzureIaasCostDetails *CostDetails

	// READ-ONLY; The azure PaaS cost.
	AzurePaasCostDetails *CostDetails

	// READ-ONLY; The final azure arc enabled on-premises cost based on the final migration percentage.
	FutureAzureArcEnabledOnPremisesCostDetails *CostDetails

	// READ-ONLY; Future state cost which includes Azure cost and Arc enabled on-premises cost based on the final migration percentage.
	FutureCostDetails *CostDetails

	// READ-ONLY; The on premises AVS cost.
	OnPremisesAvsCostDetails *CostDetails

	// READ-ONLY; The on premises AVS decommissioned cost.
	OnPremisesAvsDecommissionedCostDetails *CostDetails

	// READ-ONLY; The on premises IaaS cost.
	OnPremisesIaasCostDetails *CostDetails

	// READ-ONLY; The on premises IaaS decommissioned cost.
	OnPremisesIaasDecommissionedCostDetails *CostDetails

	// READ-ONLY; The on premises PaaS cost.
	OnPremisesPaasCostDetails *CostDetails

	// READ-ONLY; The on premises PaaS decommissioned cost.
	OnPremisesPaasDecommissionedCostDetails *CostDetails
}

// ComputeResource - Data model of Cores and Memory Compute Resource.
type ComputeResource struct {
	// READ-ONLY; Gets cores.
	Cores *float32

	// READ-ONLY; Gets memory.
	Memory *float32
}

// ComputeSettings - Compute settings.
type ComputeSettings struct {
	// REQUIRED; Hyperthread core to memory ratio.
	HyperthreadCoreToMemoryRatio *float32

	// REQUIRED; Compute Price.
	Price *float32

	// REQUIRED; Linux Rhel Server licensing settings.
	RhelLinuxServerLicensing *LinuxServerLicensingSettings

	// REQUIRED; SQL Server licensing settings.
	SQLServerLicensing []*SQLServerLicensingSettings

	// REQUIRED; Linux Suse Server licensing settings.
	SuseLinuxServerLicensing *LinuxServerLicensingSettings

	// REQUIRED; Virtualization software settings.
	VirtualizationSoftwareSettings *VirtualizationSoftwareSettings

	// REQUIRED; Windows Server licensing settings.
	WindowsServerLicensing *WindowsServerLicensingSettings
}

// CostByStorageType - The cost by storage type.
type CostByStorageType struct {
	// READ-ONLY; Cost per storage type.
	Cost *float32

	// READ-ONLY; The storage type.
	StorageType *string
}

// CostComponent - Class to represent the component of the cost.
type CostComponent struct {
	// The textual description of the component.
	Description *string

	// The value of the component.
	Value *float32

	// READ-ONLY; Gets the name of the component.
	Name *CostComponentName
}

// CostDetails - The on premises PaaS cost.
type CostDetails struct {
	// READ-ONLY; The windows AhubSavings.
	AhubSavings *float32

	// READ-ONLY; The compute cost.
	ComputeCost *float32

	// READ-ONLY; esu savings.
	EsuSavings *float32

	// READ-ONLY; The facilities cost related to hosting customer workloads in a datacenter.
	FacilitiesCost *float32

	// READ-ONLY; The IT labor cost.
	ItLaborCost *float32

	// READ-ONLY; The linux AhubSavings.
	LinuxAhubSavings *float32

	// READ-ONLY; Management Cost Details.
	ManagementCostDetails *ManagementCostDetails

	// READ-ONLY; The network cost.
	NetworkCost *float32

	// READ-ONLY; Security Cost.
	SecurityCost *float32

	// READ-ONLY; The storage cost.
	StorageCost *float32
}

// DiscoveredEntitiesSummary - Discovered entities summary.
type DiscoveredEntitiesSummary struct {
	// READ-ONLY; Number of machines
	NumberOfMachines *int32

	// READ-ONLY; Number of web servers
	NumberOfServers *int32

	// READ-ONLY; Number of web apps
	NumberOfWebApps *int32

	// READ-ONLY; Web app summary data
	WebAppSummary map[string]*int32

	// READ-ONLY; Web server summary data
	WebServerSummary map[string]*int32
}

// DiscoveredEntityLightSummary - Discovered entity light summary.
type DiscoveredEntityLightSummary struct {
	// REQUIRED; Gets or sets the number of machines.
	NumberOfMachines *int32

	// REQUIRED; Gets or sets the number of servers.
	NumberOfServers *int32

	// REQUIRED; Gets or sets the number of web apps.
	NumberOfWebApps *int32
}

// Disk - A disk discovered on a machine.
type Disk struct {
	// READ-ONLY; User friendly name of the disk.
	DisplayName *string

	// READ-ONLY; Gigabytes of storage provisioned for this disk.
	GigabytesAllocated *float32
}

// DistributionByOperatingSystem - The distribution by operating system.
type DistributionByOperatingSystem struct {
	// READ-ONLY; The number of machines with the OS type classification.
	Count *int32

	// READ-ONLY; The Os classification type.
	OSClassificationType *string
}

// DistributionByType - Distribution by Type.
type DistributionByType struct {
	// READ-ONLY; Distribution Count.
	Count *int32

	// READ-ONLY; Distribution Type.
	Type *string
}

// DistributionByVirtualization - The distribution by virtualization.
type DistributionByVirtualization struct {
	// READ-ONLY; The number of machines with the Virtualization type classification.
	Count *int32

	// READ-ONLY; The Virtualization type.
	VirtualizationType *string
}

// DownloadURL - Data model of Download URL for assessment report.
type DownloadURL struct {
	// READ-ONLY; Hyperlink to download report.
	AssessmentReportURL *string

	// READ-ONLY; Expiry date of download url.
	ExpirationTime *time.Time
}

// EntityUptime - Entity Uptime.
type EntityUptime struct {
	// Gets the days per month.
	DaysPerMonth *int32

	// Gets the hours per day.
	HoursPerDay *int32
}

// Error web model class.
type Error struct {
	// READ-ONLY; Gets the agent scenario where this error occurred.
	AgentScenario *string

	// READ-ONLY; Gets the Appliance name.
	ApplianceName *string

	// READ-ONLY; Gets the error code.
	Code *string

	// READ-ONLY; Gets the error ID.
	ID *int32

	// READ-ONLY; Gets the type of assessment impacted by this error.
	ImpactedAssessmentType *string

	// READ-ONLY; Gets the error message.
	Message *string

	// READ-ONLY; Gets the error message parameters.
	MessageParameters map[string]*string

	// READ-ONLY; Gets the error possible causes.
	PossibleCauses *string

	// READ-ONLY; Gets the recommended action for the error.
	RecommendedAction *string

	// READ-ONLY; Gets the Run as account ID.
	RunAsAccountID *string

	// READ-ONLY; Gets the error severity.
	Severity *string

	// READ-ONLY; Gets the error summary message.
	SummaryMessage *string

	// READ-ONLY; Gets the time stamp when the error was updated.
	UpdatedTimeStamp *time.Time
}

// ErrorDetailAutoGenerated - Error Details
type ErrorDetailAutoGenerated struct {
	// READ-ONLY; Error Code
	Code *string

	// READ-ONLY; Description of the error occurred
	Message *string
}

// ErrorSummary - Error summary containing affected entities for each type of assessment.
type ErrorSummary struct {
	// READ-ONLY; Gets the assessment type.
	AssessmentType *AssessmentType

	// READ-ONLY; Gets the affected entity count.
	Count *int32
}

// EstimatedCostByOffer - The estimated cost by offer.
type EstimatedCostByOffer struct {
	// READ-ONLY; Cost for the offer.
	Cost *float32

	// READ-ONLY; The offer name.
	OfferName *string
}

// EstimatedCostByTarget - Shows the estimated cost by target.
type EstimatedCostByTarget struct {
	// READ-ONLY; Azure App Service Containers cost.
	AppServiceContainerCost *float32

	// READ-ONLY; Azure App Service cost.
	AppServiceCost *float32

	// READ-ONLY; Azure Kubernetes Service cost.
	AzureKubernetesServiceCost *float32

	// READ-ONLY; Azure SQL DB cost.
	AzureSQLDbCost *float32

	// READ-ONLY; Azure SQL MI cost.
	AzureSQLMiCost *float32
}

// EstimatedExternalStorage - Estimated external storage
type EstimatedExternalStorage struct {
	// READ-ONLY; External storage type
	StorageType *ExternalStorageType

	// READ-ONLY; Percent storage utilization
	StorageUtilization *float32

	// READ-ONLY; Total storage cost
	TotalStorageCost *float32

	// READ-ONLY; Total storage allocation in GB
	TotalStorageInGB *float32
}

// EstimatedNetwork - Estimated network
type EstimatedNetwork struct {
	// READ-ONLY; Network Sku type cost.
	Cost *float32

	// READ-ONLY; Network SKU type.
	SKUType *NetworkSKUType
}

// EvaluatedAvsMachine - Evaluated AVS machine resource.
type EvaluatedAvsMachine struct {
	// The resource-specific properties for this resource.
	Properties *EvaluatedAvsMachineProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// EvaluatedAvsMachineListResult - The response of a EvaluatedAvsMachine list operation.
type EvaluatedAvsMachineListResult struct {
	// REQUIRED; The EvaluatedAvsMachine items on this page
	Value []*EvaluatedAvsMachine

	// The link to the next page of items
	NextLink *string
}

// EvaluatedAvsMachineProperties - Evaluated AVS machine properties class.
type EvaluatedAvsMachineProperties struct {
	// READ-ONLY; Activity state.
	ActivityState *string

	// READ-ONLY; Machine Id.
	MachineID *string

	// READ-ONLY; Operating System (OS) name.
	OperatingSystemName *string

	// READ-ONLY; Qualifying offer.
	QualifyingOffer *string

	// READ-ONLY; Is machine ready for migration.
	ReadyForMigration *string

	// READ-ONLY; Recommended Azure target.
	RecommendedAzureTarget *string

	// READ-ONLY; Server Name.
	ServerName *string

	// READ-ONLY; End of Support status.
	SupportStatus *SupportabilityStatus

	// READ-ONLY; Virtualization type.
	VirtualizationType *string
}

// EvaluatedMachine - Evaluated machine resource.
type EvaluatedMachine struct {
	// The resource-specific properties for this resource.
	Properties *EvaluatedMachineProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// EvaluatedMachineListResult - The response of a EvaluatedMachine list operation.
type EvaluatedMachineListResult struct {
	// REQUIRED; The EvaluatedMachine items on this page
	Value []*EvaluatedMachine

	// The link to the next page of items
	NextLink *string
}

// EvaluatedMachineProperties - Evaluated machine properties class.
type EvaluatedMachineProperties struct {
	// READ-ONLY; Activity state.
	ActivityState *string

	// READ-ONLY; Machine Id.
	MachineID *string

	// READ-ONLY; Operating System (OS) name.
	OperatingSystemName *string

	// READ-ONLY; Qualifying offer.
	QualifyingOffer *string

	// READ-ONLY; Is machine ready for migration.
	ReadyForMigration *string

	// READ-ONLY; Recommended Azure target.
	RecommendedAzureTarget *string

	// READ-ONLY; Server Name.
	ServerName *string

	// READ-ONLY; End of Support status.
	SupportStatus *SupportabilityStatus

	// READ-ONLY; Virtualization type.
	VirtualizationType *string
}

// EvaluatedSQLEntity - Evaluated sql entity resource.
type EvaluatedSQLEntity struct {
	// The resource-specific properties for this resource.
	Properties *EvaluatedSQLEntityProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// EvaluatedSQLEntityListResult - The response of a EvaluatedSqlEntity list operation.
type EvaluatedSQLEntityListResult struct {
	// REQUIRED; The EvaluatedSqlEntity items on this page
	Value []*EvaluatedSQLEntity

	// The link to the next page of items
	NextLink *string
}

// EvaluatedSQLEntityProperties - Evaluated sql entity properties class.
type EvaluatedSQLEntityProperties struct {
	// READ-ONLY; Activity state.
	ActivityState *string

	// READ-ONLY; DB count in instance.
	DbCount *int32

	// READ-ONLY; Qualifying offer.
	QualifyingOffer *string

	// READ-ONLY; Is SQL Instance ready for migration.
	ReadyForMigration *string

	// READ-ONLY; Recommended Azure target.
	RecommendedAzureTarget *string

	// READ-ONLY; SQL Server edition.
	SQLEdition *string

	// READ-ONLY; SQL Server version.
	SQLVersion *string

	// READ-ONLY; Server name.
	ServerName *string

	// READ-ONLY; End of Support status.
	SupportStatus *SupportabilityStatus

	// READ-ONLY; The virtualization type.
	VirtualizationType *string
}

// EvaluatedWebApp - Evaluated web app resource.
type EvaluatedWebApp struct {
	// The resource-specific properties for this resource.
	Properties *EvaluatedWebAppProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// EvaluatedWebAppListResult - The response of a EvaluatedWebApp list operation.
type EvaluatedWebAppListResult struct {
	// REQUIRED; The EvaluatedWebApp items on this page
	Value []*EvaluatedWebApp

	// The link to the next page of items
	NextLink *string
}

// EvaluatedWebAppProperties - Evaluated web app properties class.
type EvaluatedWebAppProperties struct {
	// The activity state.
	ActivityState *string

	// Is machine ready for migration.
	ReadyForMigration *string

	// Recommended Azure SKU name.
	RecommendedAzureSKUName *string

	// Recommended Azure SKU size.
	RecommendedAzureSKUSize *string

	// Recommended Azure target.
	RecommendedAzureTarget *string

	// The server name.
	ServerName *string

	// The workload.
	Workload *string
}

// FacilitySettings - Facility settings.
type FacilitySettings struct {
	// The facilities cost.
	FacilitiesCostPerKwh *float32
}

// Group resource.
type Group struct {
	// The resource-specific properties for this resource.
	Properties *GroupProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// GroupBodyProperties - Body properties of group update.
type GroupBodyProperties struct {
	// List of machine names that are part of this group.
	Machines []*string

	// Whether to add or remove the machines.
	OperationType *GroupUpdateOperation
}

// GroupListResult - The response of a Group list operation.
type GroupListResult struct {
	// REQUIRED; The Group items on this page
	Value []*Group

	// The link to the next page of items
	NextLink *string
}

// GroupProperties - Properties of group resource.
type GroupProperties struct {
	// The type of group.
	GroupType *GroupType

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// List of assessment types supported on this group.
	SupportedAssessmentTypes []*AssessmentType

	// READ-ONLY; If the assessments are in running state.
	AreAssessmentsRunning *bool

	// READ-ONLY; List of References to Assessments created on this group.
	Assessments []*string

	// READ-ONLY; Time when this group was created. Date-Time represented in ISO-8601 format.
	CreatedTimestamp *time.Time

	// READ-ONLY; Whether the group has been created and is valid.
	GroupStatus *GroupStatus

	// READ-ONLY; Number of machines part of this group.
	MachineCount *int32

	// READ-ONLY; Time when this group was last updated. Date-Time represented in ISO-8601 format.
	UpdatedTimestamp *time.Time
}

// HypervCollector - Hyper-V collector resource.
type HypervCollector struct {
	// The resource-specific properties for this resource.
	Properties *CollectorPropertiesBaseWithAgent

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// HypervCollectorListResult - The response of a HypervCollector list operation.
type HypervCollectorListResult struct {
	// REQUIRED; The HypervCollector items on this page
	Value []*HypervCollector

	// The link to the next page of items
	NextLink *string
}

// HypervLicense - Representation of a licence.
type HypervLicense struct {
	// REQUIRED; Cost of a licence.
	LicenseCost *float32

	// REQUIRED; HyperV licence type.
	LicenseType *HyperVLicenseType
}

// HypervVirtualizationManagementSettings - HyperV Virtualization Management Settings.
type HypervVirtualizationManagementSettings struct {
	// REQUIRED; Licence and support list.
	LicenseAndSupportList []*HypervLicense

	// REQUIRED; Number of physical cores per licence.
	NumberOfPhysicalCoresPerLicense *int32

	// REQUIRED; Software Assurance Cost.
	SoftwareAssuranceCost *float32
}

// IaasOsDistribution - Shows the infrastructure as a service machine OS distribution.
type IaasOsDistribution struct {
	// READ-ONLY; Number of Linux servers.
	Linux *int32

	// READ-ONLY; Number of servers neither Windows or Linux.
	Other *int32

	// READ-ONLY; Number of Windows servers.
	Windows *int32
}

// IaasOsLicensingDetails - The Iaas OS licensing details.
type IaasOsLicensingDetails struct {
	// READ-ONLY; The decommission cost.
	DecomissionCost *float32

	// READ-ONLY; The OS type.
	OSType *string

	// READ-ONLY; The total cost.
	TotalCost *float32
}

// IaasSummary - Iaas summary REST resource.
type IaasSummary struct {
	// The resource-specific properties for this resource.
	Properties *IaasSummaryProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// IaasSummaryListResult - The response of a IaasSummary list operation.
type IaasSummaryListResult struct {
	// REQUIRED; The IaasSummary items on this page
	Value []*IaasSummary

	// The link to the next page of items
	NextLink *string
}

// IaasSummaryProperties - Iaas summary properties class.
type IaasSummaryProperties struct {
	// READ-ONLY; The Azure IaaS summary.
	AzureIaasSummary *AzureIaasSummary

	// READ-ONLY; The on premises IaaS summary.
	OnPremisesIaasSummary *OnPremisesIaasSummary
}

// ImpactedAssessmentObject - Class representing the impacted objects.
type ImpactedAssessmentObject struct {
	// READ-ONLY; Gets the object name.
	ObjectName *string

	// READ-ONLY; Gets the object type.
	ObjectType *string
}

// ImportCollector - Import collector resource.
type ImportCollector struct {
	// The resource-specific properties for this resource.
	Properties *CollectorPropertiesBase

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// ImportCollectorListResult - The response of a ImportCollector list operation.
type ImportCollectorListResult struct {
	// REQUIRED; The ImportCollector items on this page
	Value []*ImportCollector

	// The link to the next page of items
	NextLink *string
}

// LaborSettings - Labour settings.
type LaborSettings struct {
	// REQUIRED; Hourly administrator cost.
	HourlyAdminCost *float32

	// REQUIRED; Physical servers per administrator.
	PhysicalServersPerAdmin *int32

	// REQUIRED; Virtual machines per administrator.
	VirtualMachinesPerAdmin *int32
}

// LinuxServerLicensingSettings - Linux Server licensing settings.
type LinuxServerLicensingSettings struct {
	// REQUIRED; Licence Cost.
	LicenseCost *float32
}

// Machine resource.
type Machine struct {
	// The resource-specific properties for this resource.
	Properties *MachineProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// MachineAssessmentProperties - Properties of an assessment.
type MachineAssessmentProperties struct {
	// Gets or sets the azure storage type. Premium, Standard etc.
	AzureDiskTypes []*AzureDiskType

	// Gets or sets the user configurable setting to display the azure hybrid use benefit.
	AzureHybridUseBenefit *AzureHybridUseBenefit

	// Azure Location or Azure region where to which the machines will be migrated.
	AzureLocation *string

	// Azure Offer Code.
	AzureOfferCode *AzureOfferCode

	// Gets or sets Azure Pricing Tier - Free, Basic, etc.
	AzurePricingTier *AzurePricingTier

	// Gets or sets the Azure Storage Redundancy. Example: Locally Redundant Storage.
	AzureStorageRedundancy *AzureStorageRedundancy

	// Gets or sets the Azure VM families.
	AzureVMFamilies []*AzureVMFamily

	// Currency in which prices should be reported.
	Currency *AzureCurrency

	// Custom discount percentage.
	DiscountPercentage *float32

	// Gets or sets enterprise agreement subscription id.
	EaSubscriptionID *string

	// Gets or sets the user configurable setting to display the linux azure hybrid use benefit.
	LinuxAzureHybridUseBenefit *AzureHybridUseBenefit

	// Percentile of the utilization data values to be considered while assessing machines.
	Percentile *Percentile

	// Gets or sets the end time to consider performance data for assessment.
	PerfDataEndTime *time.Time

	// Gets or sets the start time to consider performance data for assessment.
	PerfDataStartTime *time.Time

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// Gets or sets the Azure Reserved Instance - 1-Year, 3-Year.
	ReservedInstance *AzureReservedInstance

	// Percentage of buffer that user wants on performance metrics when recommending Azure sizes.
	ScalingFactor *float32

	// Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion

	// Time Range for which the historic utilization data should be considered for assessment.
	TimeRange *TimeRange

	// Gets or sets the duration for which the VMs are up in the on-premises environment.
	VMUptime *VMUptime

	// READ-ONLY; Gets or sets the assessment error summary. This is the number of machines affected by each type of error in
	// this assessment.
	AssessmentErrorSummary map[string]*int32

	// READ-ONLY; Assessment type of the assessment.
	AssessmentType *AssessmentType

	// READ-ONLY; Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// READ-ONLY; Gets the collection of cost components.
	CostComponents []*CostComponent

	// READ-ONLY; Date and Time when assessment was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Gets the distribution by os name.
	DistributionByOsName map[string]*int32

	// READ-ONLY; Gets the distribution distribution of sqlInstances by service pack insight.
	DistributionByServicePackInsight map[string]*int32

	// READ-ONLY; Gets the distribution of sqlInstances by support status.
	DistributionBySupportStatus map[string]*int32

	// READ-ONLY; Gets the group type for the assessment.
	GroupType *GroupType

	// READ-ONLY; Gets or sets the aggregate Bandwidth Cost for all machines in the assessment.
	MonthlyBandwidthCost *float32

	// READ-ONLY; Gets or sets the aggregate Compute Cost for all machines in the assessment.
	MonthlyComputeCost *float32

	// READ-ONLY; Gets or sets the aggregate premium storage cost for all machines in the assessment.
	MonthlyPremiumStorageCost *float32

	// READ-ONLY; Gets or sets the aggregate standard SSD storage cost for all the machines in the assessment.
	MonthlyStandardSsdStorageCost *float32

	// READ-ONLY; Gets or sets the aggregate Storage Cost for all machines in the assessment.
	MonthlyStorageCost *float32

	// READ-ONLY; Gets or sets the aggregate ultra storage cost for all machines in the assessment.
	MonthlyUltraStorageCost *float32

	// READ-ONLY; Gets or sets the Number of machines part of the assessment.
	NumberOfMachines *int32

	// READ-ONLY; Last time when rates were queried.
	PricesTimestamp *time.Time

	// READ-ONLY; Schema version.
	SchemaVersion *string

	// READ-ONLY; User configurable setting to display the Stage of Assessment.
	Stage *AssessmentStage

	// READ-ONLY; Whether assessment is in valid state and all machines have been assessed.
	Status *AssessmentStatus

	// READ-ONLY; Gets or sets the Cloud suitability summary for all the machines in the assessment.
	SuitabilitySummary map[string]*int32

	// READ-ONLY; Date and Time when assessment was last updated.
	UpdatedTimestamp *time.Time
}

// MachineListResult - The response of a Machine list operation.
type MachineListResult struct {
	// REQUIRED; The Machine items on this page
	Value []*Machine

	// The link to the next page of items
	NextLink *string
}

// MachineProperties - Properties of a machine.
type MachineProperties struct {
	// READ-ONLY; Boot type of machine discovered in private data center.
	BootType *MachineBootType

	// READ-ONLY; When was machine first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; The data center management server ARM Id for the machine.
	DatacenterManagementServerArmID *string

	// READ-ONLY; The data center management server name for the machine.
	DatacenterManagementServerName *string

	// READ-ONLY; Description for the machine.
	Description *string

	// READ-ONLY; Site id of machine discovered in private data center.
	DiscoveryMachineArmID *string

	// READ-ONLY; Disks attached to the machine discovered in private data center.
	Disks map[string]*Disk

	// READ-ONLY; Display Name of the Machine.
	DisplayName *string

	// READ-ONLY; List of errors for this machine.
	Errors []*Error

	// READ-ONLY; Gets the References to the groups that this machine is member of.
	Groups []*string

	// READ-ONLY; Gets Processor details of the host.
	HostProcessor *ProcessorInfo

	// READ-ONLY; Megabytes of memory found allocated for the machine in private data center.
	MegabytesOfMemory *float32

	// READ-ONLY; Network adapters attached to the machine discovered in private data center.
	NetworkAdapters map[string]*NetworkAdapter

	// READ-ONLY; Number of CPU cores found on the machine.
	NumberOfCores *int32

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemName *string

	// READ-ONLY; Operating system as reported by datacenter management solution.
	OperatingSystemType *string

	// READ-ONLY; Operating system version as reported by datacenter management solution.
	OperatingSystemVersion *string

	// READ-ONLY; Gets the product support status related details.
	ProductSupportStatus *ProductSupportStatus

	// READ-ONLY; SQL instances discovered on the machine.
	SQLInstances []*string

	// READ-ONLY; When was machine last updated.
	UpdatedTimestamp *time.Time

	// READ-ONLY; Web applications discovered on the machine.
	WebApplications []*string

	// READ-ONLY; Gets or sets workload summary.
	WorkloadSummary *WorkloadSummary
}

// ManagementCostComponent - Management Cost Component.
type ManagementCostComponent struct {
	// REQUIRED; Name of Management Cost Component.
	Name *ManagementCostComponentName

	// Cost of Management Component.
	Value *float32
}

// ManagementCostDetails - Management Cost Details.
type ManagementCostDetails struct {
	// READ-ONLY; Management Cost.
	ManagementCost *float32

	// READ-ONLY; Management Cost Components.
	ManagementCostComponents []*ManagementCostComponent
}

// ManagementSettings - Management settings.
type ManagementSettings struct {
	// REQUIRED; HyperV Virtualization Management Settings.
	HypervVirtualizationManagementSettings *HypervVirtualizationManagementSettings

	// REQUIRED; Other Management Costs Settings.
	OtherManagementCostsSettings *OtherManagementCostsSettings

	// REQUIRED; Third Party Management Settings.
	ThirdPartyManagementSettings *ThirdPartyManagementSettings
}

// MigrationGuidelineContext - Migration Guideline Context.
type MigrationGuidelineContext struct {
	// Gets the reasoning context key.
	ContextKey *string

	// Gets the reasoning context value.
	ContextValue *string
}

// MoreInfo - Data model of More information about check or rule.
type MoreInfo struct {
	// READ-ONLY; Gets title.
	Title *string

	// READ-ONLY; Gets url.
	URL *string
}

// NetworkAdapter - A network adapter discovered on a machine.
type NetworkAdapter struct {
	// READ-ONLY; User friendly name of the network adapter.
	DisplayName *string

	// READ-ONLY; List of IP Addresses on the network adapter.
	IPAddresses []*string

	// READ-ONLY; MAC Address of the network adapter.
	MacAddress *string
}

// NetworkSettings - Network settings.
type NetworkSettings struct {
	// REQUIRED; Network hardware and software cost percentage.
	HardwareSoftwareCostPercentage *float32

	// REQUIRED; Network maintenance cost percentage.
	MaintenanceCostPercentage *float32
}

// NodePool - Data model of Node Pool.
type NodePool struct {
	// READ-ONLY; Gets arm sku name.
	ArmSKUName *string

	// READ-ONLY; Gets cluster name.
	ClusterName *string

	// READ-ONLY; Gets id.
	ID *string

	// READ-ONLY; Gets mode.
	Mode *NodePoolMode

	// READ-ONLY; Gets monthly cost.
	MonthlyCost *float32

	// READ-ONLY; Gets name.
	Name *string

	// READ-ONLY; Gets node count.
	NodeCount *int32

	// READ-ONLY; Gets os type.
	OSType *OSType

	// READ-ONLY; Gets pod approximate monthly cost.
	PodApproxMonthlyCost *float32

	// READ-ONLY; Gets pod count.
	PodCount *int32
}

// OnPremiseSettings - On-premise settings.
type OnPremiseSettings struct {
	// REQUIRED; Compute settings.
	ComputeSettings *ComputeSettings

	// REQUIRED; Facility settings.
	FacilitySettings *FacilitySettings

	// REQUIRED; Labour settings.
	LaborSettings *LaborSettings

	// REQUIRED; Network settings.
	NetworkSettings *NetworkSettings

	// REQUIRED; Security settings.
	SecuritySettings *SecuritySettings

	// REQUIRED; Storage settings.
	StorageSettings *StorageSettings

	// Management settings.
	ManagementSettings *ManagementSettings
}

// OnPremisesIaasSummary - The on premises IAAS summary.
type OnPremisesIaasSummary struct {
	// READ-ONLY; The CPU utilization.
	CPUUtilization *float32

	// READ-ONLY; The number of cores.
	Cores *int32

	// READ-ONLY; The distribution by operating system.
	DistributionByOperatingSystem []*DistributionByOperatingSystem

	// READ-ONLY; Distribution by Operating System Version.
	DistributionByOperatingSystemVersion []*DistributionByType

	// READ-ONLY; Distribution by Sql Edition.
	DistributionBySQLEdition []*DistributionByType

	// READ-ONLY; Distribution by Sql Version.
	DistributionBySQLVersion []*DistributionByType

	// READ-ONLY; The distribution by virtualization.
	DistributionByVirtualization []*DistributionByVirtualization

	// READ-ONLY; Iaas OS Support Status Distribution.
	IaasOsSupportStatusDistribution *SupportStatusDistribution

	// READ-ONLY; Iaas Sql Support Status Distribution.
	IaasSQLSupportStatusDistribution *SupportStatusDistribution

	// READ-ONLY; Total memory in GB.
	MemoryGb *float32

	// READ-ONLY; The memory utilization.
	MemoryUtilization *float32

	// READ-ONLY; The OS licensing details.
	OSLicensingDetails []*IaasOsLicensingDetails

	// READ-ONLY; OS Service Pack Insight.
	OSServicePackInsight *ServicePackInsight

	// READ-ONLY; The on premises PaaS cost.
	OnPremisesIaasCostDetails *CostDetails

	// READ-ONLY; The on premises PaaS cost.
	OnPremisesIaasCostForDecommissioned *CostDetails

	// READ-ONLY; The SQL on premises utilization insights.
	OnPremisesUtilizationData *UtilizationData

	// READ-ONLY; Sql Service Pack Insight.
	SQLServicePackInsight *ServicePackInsight

	// READ-ONLY; The number of servers.
	Servers *int32

	// READ-ONLY; The storage utilization.
	StorageUtilization *float32
}

// OnPremisesPaasLicensingCost - The on premises paas licensing cost.
type OnPremisesPaasLicensingCost struct {
	// READ-ONLY; The decommissioned server cost.
	DecomissionServerCost *float32

	// READ-ONLY; The total cost.
	TotalCost *float32

	// READ-ONLY; The version.
	Version *string
}

// OnPremisesPaasSummary - Shows platform as a service (PaaS) summary.
type OnPremisesPaasSummary struct {
	// READ-ONLY; CPU utilization percentage.
	CPUUtilization *float32

	// READ-ONLY; Memory utilization percentage.
	MemoryUtilization *float32

	// READ-ONLY; OS Service Pack Insight.
	OSServicePackInsight *ServicePackInsight

	// READ-ONLY; OS Support Status Distribution.
	OSSupportStatusDistribution *SupportStatusDistribution

	// READ-ONLY; The on premises PaaS cost.
	OnPremisesPaasCostForDecommisioned *CostDetails

	// READ-ONLY; The on premises paas licensing cost.
	OnPremisesPaasLicensingCost *OnPremisesPaasLicensingCost

	// READ-ONLY; The on premises SQL summary.
	OnPremisesSQLSummary *OnPremisesSQLSummary

	// READ-ONLY; The on premises web application summary.
	OnPremisesWebAppSummary *OnPremisesWebAppSummary

	// READ-ONLY; Sql Service Pack Insight.
	SQLServicePackInsight *ServicePackInsight

	// READ-ONLY; Sql Support Status Distribution.
	SQLSupportStatusDistribution *SupportStatusDistribution

	// READ-ONLY; The on premises PaaS cost.
	TotalOnPremisesPaasCost *CostDetails

	// READ-ONLY; Total servers.
	TotalServers *int32
}

// OnPremisesSQLSummary - The on premises SQL summary.
type OnPremisesSQLSummary struct {
	// READ-ONLY; Distribution by Sql Edition.
	DistributionBySQLEdition []*DistributionByType

	// READ-ONLY; Distribution by SQL version.
	DistributionBySQLVersion []*SQLVersionDetails

	// READ-ONLY; The number of SQL databases.
	SQLDatabases *int32

	// READ-ONLY; The number of SQL instances.
	SQLInstances *int32

	// READ-ONLY; The SQL on premises utilization insights.
	SQLOnPremisesUtilizationData *UtilizationData
}

// OnPremisesWebAppSummary - The on premises web application summary.
type OnPremisesWebAppSummary struct {
	// READ-ONLY; The number of web applications.
	NumberOfWebApplications *int32

	// READ-ONLY; The number of web applications per web application type.
	NumberOfWebAppsPerType map[string]*int32

	// READ-ONLY; The number of web servers.
	NumberOfWebServers *int32
}

// Operation - Details of a REST API operation, returned from the Resource Provider Operations API
type Operation struct {
	// Localized display information for this particular operation.
	Display *OperationDisplay

	// READ-ONLY; Enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
	ActionType *ActionType

	// READ-ONLY; Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for ARM/control-plane
	// operations.
	IsDataAction *bool

	// READ-ONLY; The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write",
	// "Microsoft.Compute/virtualMachines/capture/action"
	Name *string

	// READ-ONLY; The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
	// value is "user,system"
	Origin *Origin
}

// OperationDisplay - Localized display information for this particular operation.
type OperationDisplay struct {
	// READ-ONLY; The short, localized friendly description of the operation; suitable for tool tips and detailed views.
	Description *string

	// READ-ONLY; The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual
	// Machine", "Restart Virtual Machine".
	Operation *string

	// READ-ONLY; The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft
	// Compute".
	Provider *string

	// READ-ONLY; The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job
	// Schedule Collections".
	Resource *string
}

// OperationListResult - A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to
// get the next set of results.
type OperationListResult struct {
	// READ-ONLY; URL to get the next set of operation list results (if there are any).
	NextLink *string

	// READ-ONLY; List of operations supported by the resource provider
	Value []*Operation
}

// OtherManagementCostsSettings - Other Management Costs Settings.
type OtherManagementCostsSettings struct {
	// REQUIRED; Data Protection Cost Per Server Per Year.
	DataProtectionCostPerServerPerYear *float32

	// REQUIRED; Monitoring Cost Per Server Per Year.
	MonitoringCostPerServerPerYear *float32

	// REQUIRED; Patching Cost Per Server Per Year.
	PatchingCostPerServerPerYear *float32
}

// OverviewSummary - Overview summary REST resource.
type OverviewSummary struct {
	// The resource-specific properties for this resource.
	Properties *OverviewSummaryProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// OverviewSummaryListResult - The response of a OverviewSummary list operation.
type OverviewSummaryListResult struct {
	// REQUIRED; The OverviewSummary items on this page
	Value []*OverviewSummary

	// The link to the next page of items
	NextLink *string
}

// OverviewSummaryProperties - Overview summary properties class.
type OverviewSummaryProperties struct {
	// READ-ONLY; The total Azure arc enabled on-premises cost assuming all on-premises infra is arc enabled.
	AzureArcEnabledOnPremisesCost *float32

	// READ-ONLY; The total cost of services offered by azure arc.
	AzureArcServicesCost *float32

	// READ-ONLY; ESU Savings 4 Years.
	EsuSavingsFor4Years *float32

	// READ-ONLY; The future azure arc cost based on the final migration percentage.
	FutureAzureArcEnabledOnPremisesCost *float32

	// READ-ONLY; The total cost of services offered by azure arc based on the final migration percentage.
	FutureAzureArcServicesCost *float32

	// READ-ONLY; The Iaas component of the future azure cost based on the final migration percentage.
	FutureAzureIaasCost *float32

	// READ-ONLY; The Paas component of the future azure cost based on the final migration percentage.
	FutureAzurePaasCost *float32

	// READ-ONLY; The final cost including azure and azure arc enabled on-premises considering the remaining on-prem infra is
	// arc enabled.
	FutureCostIncludingAzureArc *float32

	// READ-ONLY; ESU Savings in 4 Years considering the remaining on-prem infra each year is arc enabled.
	FutureEsuSavingsFor4YearsIncludingAzureArc *float32

	// READ-ONLY; The management cost saving considering the remaining on-prem infra is arc enabled
	FutureManagementCostSavingsIncludingAzureArc *float32

	// READ-ONLY; The security cost saving considering the remaining on-prem infra is arc enabled.
	FutureSecurityCostSavingsIncludingAzureArc *float32

	// READ-ONLY; Shows the infrastructure as a service machine OS distribution.
	IaasOsDistribution *IaasOsDistribution

	// READ-ONLY; The linux ahub saving.
	LinuxAhubSavings *float32

	// READ-ONLY; The management cost saving.
	ManagementCostSavings *float32

	// READ-ONLY; OS Support Status Distribution.
	OSSupportStatusDistribution *SupportStatusDistribution

	// READ-ONLY; Shows the distribution of platforms.
	PaasDistribution *PaasDistribution

	// READ-ONLY; The sql ahub saving.
	SQLAhubSavings *float32

	// READ-ONLY; Sql Support Status Distribution.
	SQLSupportStatusDistribution *SupportStatusDistribution

	// READ-ONLY; The security cost saving.
	SecurityCostSavings *float32

	// READ-ONLY; Shows the discovered servers by virtualization platform.
	ServersDiscovered *ServersDiscovered

	// READ-ONLY; The total Avs cost.
	TotalAzureAvsCost *float32

	// READ-ONLY; The total Azure cost..
	TotalAzureCost *float32

	// READ-ONLY; The total Azure IaaS cost.
	TotalAzureIaasCost *float32

	// READ-ONLY; The total Azure PaaS cost.
	TotalAzurePaasCost *float32

	// READ-ONLY; The total on premises cost.
	TotalOnPremisesCost *float32

	// READ-ONLY; The SQL on premises utilization insights.
	UtilizationData *UtilizationData

	// READ-ONLY; The windows ahub saving.
	WindowsAhubSavings *float32

	// READ-ONLY; Shows the year-on-year cost overall.
	YearOnYearEstimates *YearOnYearEstimates
}

// PaasDistribution - Shows the distribution of platforms.
type PaasDistribution struct {
	// READ-ONLY; Number of IIS Web servers.
	IisWebServers *int32

	// READ-ONLY; Number of SQL Server machines.
	SQLServers *int32

	// READ-ONLY; Distribution of webapps for each target type.
	WebAppDistribution map[string]*int32
}

// PaasSummary - Paas summary REST resource.
type PaasSummary struct {
	// The resource-specific properties for this resource.
	Properties *PaasSummaryProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// PaasSummaryListResult - The response of a PaasSummary list operation.
type PaasSummaryListResult struct {
	// REQUIRED; The PaasSummary items on this page
	Value []*PaasSummary

	// The link to the next page of items
	NextLink *string
}

// PaasSummaryProperties - Paas summary properties class.
type PaasSummaryProperties struct {
	// READ-ONLY; Shows the PaaS Azure summary.
	Azure *AzurePaasSummary

	// READ-ONLY; Shows platform as a service (PaaS) summary.
	OnPremises *OnPremisesPaasSummary
}

// PerfDataSettings - Data model of Performance Data Settings.
type PerfDataSettings struct {
	// REQUIRED; Gets percentile utilization for performance data.
	Percentile *Percentile

	// REQUIRED; Gets perf data time range.
	TimeRange *TimeRange

	// Gets or sets perf data end time.
	PerfDataEndTime *time.Time

	// Gets or sets perf data start time.
	PerfDataStartTime *time.Time
}

// PrivateEndpoint - The private endpoint resource.
type PrivateEndpoint struct {
	// READ-ONLY; The ARM identifier for private endpoint.
	ID *string
}

// PrivateEndpointConnection - Private endpoint connection resource.
type PrivateEndpointConnection struct {
	// The resource-specific properties for this resource.
	Properties *PrivateEndpointConnectionProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// PrivateEndpointConnectionListResult - The response of a PrivateEndpointConnection list operation.
type PrivateEndpointConnectionListResult struct {
	// REQUIRED; The PrivateEndpointConnection items on this page
	Value []*PrivateEndpointConnection

	// The link to the next page of items
	NextLink *string
}

// PrivateEndpointConnectionProperties - Properties of the private endpoint connection.
type PrivateEndpointConnectionProperties struct {
	// REQUIRED; A collection of information about the state of the connection between service consumer and provider.
	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState

	// The private endpoint resource.
	PrivateEndpoint *PrivateEndpoint

	// READ-ONLY; The group ids for the private endpoint resource.
	GroupIDs []*string

	// READ-ONLY; The provisioning state of the private endpoint connection resource.
	ProvisioningState *PrivateEndpointConnectionProvisioningState
}

// PrivateLinkResource - Private link resource.
type PrivateLinkResource struct {
	// The resource-specific properties for this resource.
	Properties *PrivateLinkResourceProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// PrivateLinkResourceListResult - The response of a PrivateLinkResource list operation.
type PrivateLinkResourceListResult struct {
	// REQUIRED; The PrivateLinkResource items on this page
	Value []*PrivateLinkResource

	// The link to the next page of items
	NextLink *string
}

// PrivateLinkResourceProperties - Properties of a private link resource.
type PrivateLinkResourceProperties struct {
	// The private link resource private link DNS zone name.
	RequiredZoneNames []*string

	// READ-ONLY; The private link resource group id.
	GroupID *string

	// READ-ONLY; The private link resource required member names.
	RequiredMembers []*string
}

// PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer
// and provider.
type PrivateLinkServiceConnectionState struct {
	// A message indicating if changes on the service provider require any updates on the consumer.
	ActionsRequired *string

	// The reason for approval/rejection of the connection.
	Description *string

	// Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.
	Status *PrivateEndpointServiceConnectionStatus
}

// ProcessorInfo - Represents a information \ details of a processor.
type ProcessorInfo struct {
	// Gets or sets the name \ model of a processor.
	Name *string

	// Gets or sets the number of cores in a socket.
	NumberOfCoresPerSocket *int32

	// Gets or sets the number of sockets.
	NumberOfSockets *int32
}

// ProductSupportStatus - Class to represent the Product Support Status.
type ProductSupportStatus struct {
	// READ-ONLY; Gets or sets the current ESU support year.
	CurrentEsuYear *string

	// READ-ONLY; Gets or sets current version of ServicePack.
	CurrentVersion *string

	// READ-ONLY; Gets or sets the Extended Security Update ESU status.
	EsuStatus *string

	// READ-ONLY; Gets or sets the ETA.
	Eta *int32

	// READ-ONLY; Gets or sets the extended security update year 1 end date of the product.
	ExtendedSecurityUpdateYear1EndDate *time.Time

	// READ-ONLY; Gets or sets the extended security update year 2 end date of the product.
	ExtendedSecurityUpdateYear2EndDate *time.Time

	// READ-ONLY; Gets or sets the extended security update year 3 end date of the product.
	ExtendedSecurityUpdateYear3EndDate *time.Time

	// READ-ONLY; Gets or sets the extended support end date of the product.
	ExtendedSupportEndDate *time.Time

	// READ-ONLY; Gets or sets the main stream end date of the product.
	MainstreamEndDate *time.Time

	// READ-ONLY; Gets or sets ServicePack of the product.
	ServicePackStatus *string

	// READ-ONLY; Gets or sets the support status of the product.
	SupportStatus *string
}

// ProjectProperties - Properties of a project.
type ProjectProperties struct {
	// Assessment solution ARM id tracked by Microsoft.Migrate/migrateProjects.
	AssessmentSolutionID *string

	// The ARM id of the storage account used for interactions when public access is disabled.
	CustomerStorageAccountArmID *string

	// The ARM id of service map workspace created by customer.
	CustomerWorkspaceID *string

	// Location of service map workspace created by customer.
	CustomerWorkspaceLocation *string

	// Assessment project status.
	ProjectStatus *ProjectStatus

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// This value can be set to 'enabled' to avoid breaking changes on existing customer resources and templates. If set to 'disabled',
	// traffic over public interface is not allowed, and private endpoint
	// connections would be the exclusive access method.
	PublicNetworkAccess *string

	// READ-ONLY; Time when this project was created. Date-Time represented in ISO-8601 format.
	CreatedTimestamp *time.Time

	// READ-ONLY; The list of private endpoint connections to the project.
	PrivateEndpointConnections []*PrivateEndpointConnection

	// READ-ONLY; Endpoint at which the collector agent can call agent REST API.
	ServiceEndpoint *string

	// READ-ONLY; Time when this project was last updated. Date-Time represented in ISO-8601 format.
	UpdatedTimestamp *time.Time
}

// RecommendationResult - Data model of Recommendation Result.
type RecommendationResult struct {
	// READ-ONLY; Gets approximate monthly cost.
	ApproxMonthlyCost *float32

	// READ-ONLY; Gets cluster name.
	ClusterName *string

	// READ-ONLY; Gets cores and memory limit.
	Limit *ComputeResource

	// READ-ONLY; Gets node pool arm sku name.
	NodePoolArmSKUName *string

	// READ-ONLY; Gets node pool id.
	NodePoolID *string

	// READ-ONLY; Gets node pool name.
	NodePoolName *string

	// READ-ONLY; Gets os type.
	OSType *OSType

	// READ-ONLY; Gets cores and memory request.
	Request *ComputeResource
}

// RecommendedAvsNodeTypeSummary - Azure Avs Node summary.
type RecommendedAvsNodeTypeSummary struct {
	// READ-ONLY; AVS node type.
	AvsNodeType *string

	// READ-ONLY; Failures to tolerate and RAID level for the Node.
	FailuresToTolerateAndRaidLevel *FttAndRaidLevel

	// READ-ONLY; Number of nodes.
	NumberOfNodes *int32
}

// RecommendedVMFamilySummary - The recommended VM family summary.
type RecommendedVMFamilySummary struct {
	// READ-ONLY; The Azure VM family.
	AzureVMFamily *string

	// READ-ONLY; The number of machines.
	NumberOfMachines *int32
}

// ReportDetails - Business case report details.
type ReportDetails struct {
	// READ-ONLY; Report status.
	ReportStatus *ReportStatus

	// READ-ONLY; Report type.
	ReportType *ReportType
}

// ReportDownloadURL - Download URL for assessment report.
type ReportDownloadURL struct {
	// READ-ONLY; Hyperlink to download report.
	BusinessCaseReportURL *string

	// READ-ONLY; Expiry date of download url.
	ExpirationTime *time.Time
}

// SQLAssessedNetworkAdapter - SQL Assessed Network Adapter.
type SQLAssessedNetworkAdapter struct {
	// Gets the display name.
	DisplayName *string

	// Gets the mac address.
	MacAddress *string

	// Gets the megabytes per second received.
	MegabytesPerSecondReceived *float32

	// Gets the megabytes per second transmitted.
	MegabytesPerSecondTransmitted *float32

	// Gets the monthly bandwidth costs.
	MonthlyBandwidthCosts *float32

	// Gets the name.
	Name *string

	// Gets the net gigabytes transmitted per month.
	NetGigabytesTransmittedPerMonth *float32

	// Gets the suitability.
	Suitability *CloudSuitability

	// Gets the suitability detail.
	SuitabilityDetail *AzureNetworkAdapterSuitabilityDetail

	// Gets the suitability explanation.
	SuitabilityExplanation *AzureNetworkAdapterSuitabilityExplanation

	// READ-ONLY; Gets the ip addresses.
	IPAddresses []*string
}

// SQLAssessmentMigrationIssue - Class representing the SQL migration issues.
type SQLAssessmentMigrationIssue struct {
	// READ-ONLY; Gets the list of impacted objects.
	ImpactedObjects []*ImpactedAssessmentObject

	// READ-ONLY; Gets the issue category.
	IssueCategory *SQLAssessmentMigrationIssueCategory

	// READ-ONLY; Gets the issue id.
	IssueID *string
}

// SQLAssessmentOptions - SQL Assessment options web model object.
type SQLAssessmentOptions struct {
	// The resource-specific properties for this resource.
	Properties *SQLAssessmentOptionsProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// SQLAssessmentOptionsListResult - The response of a SqlAssessmentOptions list operation.
type SQLAssessmentOptionsListResult struct {
	// REQUIRED; The SqlAssessmentOptions items on this page
	Value []*SQLAssessmentOptions

	// The link to the next page of items
	NextLink *string
}

// SQLAssessmentOptionsProperties - SQL Assessment options properties Web model object.
type SQLAssessmentOptionsProperties struct {
	// Gets or sets the Reserved Instance SQL target types.
	ReservedInstanceSQLTargets []*TargetType

	// Gets or sets the list of currencies supported for Reserved Instances.
	ReservedInstanceSupportedCurrencies []*AzureCurrency

	// Gets or sets the list of Azure locations supporting Reserved Instances.
	ReservedInstanceSupportedLocations []*AzureLocation

	// Gets or sets the list of Azure locations supporting Reserved Instances for IAAS.
	ReservedInstanceSupportedLocationsForIaas []*AzureLocation

	// Gets or sets the list of offers supported for Reserved Instances.
	ReservedInstanceSupportedOffers []*AzureOfferCode

	// Gets or sets the list of SQL target SKU properties for dropdowns.
	SQLSKUs []*SQLPaaSTargetOptions

	// Gets or sets the list of Azure locations supporting Saving Plans for IAAS.
	SavingsPlanSupportedLocations []*AzureLocation

	// Gets or sets the list of Azure locations supporting Saving Plans for PAAS.
	SavingsPlanSupportedLocationsForPaas []*AzureLocation

	// Gets or sets the list of Azure Offers supporting Saving Plans.
	SavingsPlanSupportedOffers []*AzureOfferCode

	// Gets or sets the Premium disk VM Families list.
	SavingsPlanVMFamilies []*AzureVMFamily

	// Gets or sets the list of offers supported for SQL assessments.
	SupportedOffers []*AzureOfferCode

	// READ-ONLY; Gets the Premium disk VM Families list.
	PremiumDiskVMFamilies []*AzureVMFamily

	// READ-ONLY; Gets the Reserved Instance VM Families list.
	ReservedInstanceVMFamilies []*AzureVMFamily

	// READ-ONLY; Gets the list of VM families.
	VMFamilies []*VMFamilyOptions
}

// SQLAssessmentV2 - SQL Assessment REST resource.
type SQLAssessmentV2 struct {
	// The resource-specific properties for this resource.
	Properties *SQLAssessmentV2Properties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// SQLAssessmentV2IaasSuitabilityData - Class representing Azure SQL IAAS suitability details.
type SQLAssessmentV2IaasSuitabilityData struct {
	// Gets the collection of cost components.
	CostComponents []*CostComponent

	// READ-ONLY; Gets the azure SQL IAAS SKU.
	AzureSQLSKU *AzureSQLIaasSKUDTO

	// READ-ONLY; Gets the list of migration guidelines applicable to this target.
	MigrationGuidelines []*SQLMigrationGuideline

	// READ-ONLY; Gets the list of migrations issues.
	MigrationIssues []*SQLAssessmentMigrationIssue

	// READ-ONLY; Gets the migration target platform.
	MigrationTargetPlatform *TargetType

	// READ-ONLY; Gets the monthly compute cost.
	MonthlyComputeCost *float32

	// READ-ONLY; Gets the monthly storage cost.
	MonthlyStorageCost *float32

	// READ-ONLY; Gets the list of SQL recommendation Reasoning.
	RecommendationReasonings []*SQLRecommendationReasoning

	// READ-ONLY; Gets the replica azure SQL IAAS SKU.
	ReplicaAzureSQLSKU []*AzureSQLIaasSKUDTO

	// READ-ONLY; Gets the replication mode.
	SKUReplicationMode *SKUReplicationMode

	// READ-ONLY; Gets the suitability for Microsoft cloud defender.
	SecuritySuitability *CloudSuitability

	// READ-ONLY; Gets the shared resources.
	SharedResources *SharedResourcesDTO

	// READ-ONLY; Gets a value indicating whether replicas should be provisioned.
	ShouldProvisionReplicas *bool

	// READ-ONLY; Gets the azure suitability.
	Suitability *CloudSuitability
}

// SQLAssessmentV2ListResult - The response of a SqlAssessmentV2 list operation.
type SQLAssessmentV2ListResult struct {
	// REQUIRED; The SqlAssessmentV2 items on this page
	Value []*SQLAssessmentV2

	// The link to the next page of items
	NextLink *string
}

// SQLAssessmentV2PaasSuitabilityData - Class representing Azure SQL PAAS suitability details.
type SQLAssessmentV2PaasSuitabilityData struct {
	// Gets the collection of cost components.
	CostComponents []*CostComponent

	// READ-ONLY; Gets the azure SQL PAAS SKU.
	AzureSQLSKU *AzureSQLPaasSKUDTO

	// READ-ONLY; Gets the list of migration guidelines applicable to this target.
	MigrationGuidelines []*SQLMigrationGuideline

	// READ-ONLY; Gets the list of migrations issues.
	MigrationIssues []*SQLAssessmentMigrationIssue

	// READ-ONLY; Gets the migration target platform.
	MigrationTargetPlatform *TargetType

	// READ-ONLY; Gets the monthly compute cost.
	MonthlyComputeCost *float32

	// READ-ONLY; Gets the monthly storage cost.
	MonthlyStorageCost *float32

	// READ-ONLY; Gets the list of SQL recommendation Reasoning.
	RecommendationReasonings []*SQLRecommendationReasoning

	// READ-ONLY; Gets the replica azure SQL PAAS SKU.
	ReplicaAzureSQLSKU []*AzureSQLPaasSKUDTO

	// READ-ONLY; Gets the replication mode.
	SKUReplicationMode *SKUReplicationMode

	// READ-ONLY; Gets the suitability for Microsoft cloud defender.
	SecuritySuitability *CloudSuitability

	// READ-ONLY; Gets the shared resources.
	SharedResources *SharedResourcesDTO

	// READ-ONLY; Gets a value indicating whether replicas should be provisioned.
	ShouldProvisionReplicas *bool

	// READ-ONLY; Gets the azure suitability.
	Suitability *CloudSuitability
}

// SQLAssessmentV2Properties - SQL assessment properties class.
type SQLAssessmentV2Properties struct {
	// Assessment type of the assessment.
	AssessmentType *AssessmentType

	// Gets or sets user preference indicating intent of async commit mode.
	AsyncCommitModeIntent *AsyncCommitModeIntent

	// Azure Location or Azure region where to which the machines will be migrated.
	AzureLocation *string

	// Azure Offer Code.
	AzureOfferCode *AzureOfferCode

	// Gets or sets Azure Offer Code for VM.
	AzureOfferCodeForVM *AzureOfferCode

	// Gets or sets user configurable SQL database settings.
	AzureSQLDatabaseSettings *SQLDbSettings

	// Gets or sets user configurable SQL managed instance settings.
	AzureSQLManagedInstanceSettings *SQLMiSettings

	// Gets or sets user configurable SQL VM settings.
	AzureSQLVMSettings *SQLVMSettings

	// Gets or sets a value indicating azure security offering type.
	AzureSecurityOfferingType *AzureSecurityOfferingType

	// Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// Currency in which prices should be reported.
	Currency *AzureCurrency

	// Gets or sets the Azure Location or Azure region where to which the machines will be migrated.
	DisasterRecoveryLocation *AzureLocation

	// Custom discount percentage.
	DiscountPercentage *float32

	// Gets or sets the Enterprise agreement subscription id.
	EaSubscriptionID *string

	// Gets or sets a value indicating whether HADR assessments needs to be created.
	EnableHadrAssessment *bool

	// Gets or sets the duration for which the entity (SQL, VMs) are up in the on-premises environment.
	EntityUptime *EntityUptime

	// Gets or sets user configurable setting to display the environment type.
	EnvironmentType *EnvironmentType

	// Gets the group type for the assessment.
	GroupType *GroupType

	// Gets or sets a value indicating whether internet access is available.
	IsInternetAccessAvailable *bool

	// Gets or sets user preference indicating intent of multi-subnet configuration.
	MultiSubnetIntent *MultiSubnetIntent

	// Gets or sets user configurable setting to display the azure hybrid use benefit.
	OSLicense *OsLicense

	// Gets or sets SQL optimization logic.
	OptimizationLogic *OptimizationLogic

	// Percentile of the utilization data values to be considered while assessing machines.
	Percentile *Percentile

	// Gets or sets the end time to consider performance data for assessment.
	PerfDataEndTime *time.Time

	// Gets or sets the start time to consider performance data for assessment.
	PerfDataStartTime *time.Time

	// The status of the last operation.
	ProvisioningState *ProvisioningState

	// Reserved instance.
	ReservedInstance *AzureReservedInstance

	// Gets or sets azure reserved instance for VM.
	ReservedInstanceForVM *AzureReservedInstance

	// SQL server license.
	SQLServerLicense *SQLServerLicense

	// Percentage of buffer that user wants on performance metrics when recommending Azure sizes.
	ScalingFactor *float32

	// Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion

	// Time Range for which the historic utilization data should be considered for assessment.
	TimeRange *TimeRange

	// READ-ONLY; Date and Time when assessment was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Last time when rates were queried.
	PricesTimestamp *time.Time

	// READ-ONLY; Schema version.
	SchemaVersion *string

	// READ-ONLY; User configurable setting to display the Stage of Assessment.
	Stage *AssessmentStage

	// READ-ONLY; Whether assessment is in valid state and all machines have been assessed.
	Status *AssessmentStatus

	// READ-ONLY; Date and Time when assessment was last updated.
	UpdatedTimestamp *time.Time
}

// SQLAssessmentV2Summary - SQL Assessment REST resource.
type SQLAssessmentV2Summary struct {
	// The resource-specific properties for this resource.
	Properties *SQLAssessmentV2SummaryProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// SQLAssessmentV2SummaryData - SQL Assessment V2 summary data.
type SQLAssessmentV2SummaryData struct {
	// READ-ONLY; Confidence Rating
	ConfidenceScore *float32

	// READ-ONLY; Monthly compute cost
	MonthlyComputeCost *float32

	// READ-ONLY; Monthly license cost
	MonthlyLicenseCost *float32

	// READ-ONLY; Monthly security cost
	MonthlySecurityCost *float32

	// READ-ONLY; Monthly storage cost
	MonthlyStorageCost *float32

	// READ-ONLY; Sql assessment summary data
	SuitabilitySummary map[string]*int32
}

// SQLAssessmentV2SummaryListResult - The response of a SqlAssessmentV2Summary list operation.
type SQLAssessmentV2SummaryListResult struct {
	// REQUIRED; The SqlAssessmentV2Summary items on this page
	Value []*SQLAssessmentV2Summary

	// The link to the next page of items
	NextLink *string
}

// SQLAssessmentV2SummaryProperties - SQL Assessment V2 summary properties.
type SQLAssessmentV2SummaryProperties struct {
	// READ-ONLY; Gets or sets the Assessment summary.
	AssessmentSummary map[string]*SQLAssessmentV2SummaryData

	// READ-ONLY; Gets the database distribution by sizing criterion.
	DatabaseDistributionBySizingCriterion map[string]*int32

	// READ-ONLY; Gets the distribution of sqlInstances by sql edition.
	DistributionBySQLEdition map[string]*int32

	// READ-ONLY; Gets the distribution of sqlInstances by sql version.
	DistributionBySQLVersion map[string]*int32

	// READ-ONLY; Gets the distribution distribution of sqlInstances by service pack insight.
	DistributionByServicePackInsight map[string]*int32

	// READ-ONLY; Gets the distribution of sqlInstances by support status.
	DistributionBySupportStatus map[string]*int32

	// READ-ONLY; Gets the instance distribution by sizing criterion.
	InstanceDistributionBySizingCriterion map[string]*int32

	// READ-ONLY; Number of sql failover cluster instances part of the assessment.
	NumberOfFciInstances *int32

	// READ-ONLY; Number of machines part of the assessment.
	NumberOfMachines *int32

	// READ-ONLY; Number of sql availability groups part of the assessment.
	NumberOfSQLAvailabilityGroups *int32

	// READ-ONLY; Number of sql databases part of the assessment.
	NumberOfSQLDatabases *int32

	// READ-ONLY; Number of sql instances part of the assessment.
	NumberOfSQLInstances *int32

	// READ-ONLY; Number of successfully discovered sql instances part of the assessment.
	NumberOfSuccessfullyDiscoveredSQLInstances *int32
}

// SQLAvailabilityGroupDataOverview - Assessed Sql Availability Group Data Overview.
type SQLAvailabilityGroupDataOverview struct {
	// Gets the availability group id.
	AvailabilityGroupID *string

	// Gets the availability group name.
	AvailabilityGroupName *string

	// Gets the availability group entity id.
	SQLAvailabilityGroupEntityID *string

	// Gets the availability group arm id.
	SQLAvailabilityGroupSdsArmID *string

	// Gets the availability replica id.
	SQLAvailabilityReplicaID *string
}

// SQLAvailabilityReplicaSummary - Assessed Sql Availability Replica Summary.
type SQLAvailabilityReplicaSummary struct {
	// Gets the number Of asynchronous non read replicas.
	NumberOfAsynchronousNonReadReplicas *int32

	// Gets the number Of asynchronous read replicas.
	NumberOfAsynchronousReadReplicas *int32

	// Gets the number Of primary replicas.
	NumberOfPrimaryReplicas *int32

	// Gets the number Of synchronous non read replicas.
	NumberOfSynchronousNonReadReplicas *int32

	// Gets the number Of synchronous read replicas.
	NumberOfSynchronousReadReplicas *int32
}

// SQLCollector - The SQL collector REST object.
type SQLCollector struct {
	// The resource-specific properties for this resource.
	Properties *CollectorPropertiesBaseWithAgent

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// SQLCollectorListResult - The response of a SqlCollector list operation.
type SQLCollectorListResult struct {
	// REQUIRED; The SqlCollector items on this page
	Value []*SQLCollector

	// The link to the next page of items
	NextLink *string
}

// SQLDbSettings - SQL database assessment settings.
type SQLDbSettings struct {
	// Gets or sets the azure SQL compute tier.
	AzureSQLComputeTier *ComputeTier

	// Gets or sets the azure PAAS SQL instance type.
	AzureSQLDataBaseType *AzureSQLDataBaseType

	// Gets or sets the azure SQL purchase model.
	AzureSQLPurchaseModel *AzureSQLPurchaseModel

	// Gets or sets the azure SQL service tier.
	AzureSQLServiceTier *AzureSQLServiceTier
}

// SQLFCIMetadata - Sql fci meta data.
type SQLFCIMetadata struct {
	// Gets the fci shared disk count.
	FciSharedDiskCount *int32

	// Gets whether fci is multi subnet.
	IsMultiSubnet *bool

	// Gets the Sql fci meta data state.
	State *SQLFCIMetadataState
}

// SQLMiSettings - SQL managed instance assessment settings.
type SQLMiSettings struct {
	// Gets or sets the azure PAAS SQL instance type.
	AzureSQLInstanceType *AzureSQLInstanceType

	// Gets or sets the azure SQL service tier.
	AzureSQLServiceTier *AzureSQLServiceTier
}

// SQLMigrationGuideline - Sql Migration Guideline.
type SQLMigrationGuideline struct {
	// Gets the guideline id.
	GuidelineID *string

	// Gets the migration guideline category.
	MigrationGuidelineCategory *SQLMigrationGuidelineCategory

	// READ-ONLY; Gets the migration guideline context.
	MigrationGuidelineContext []*MigrationGuidelineContext
}

// SQLPaaSTargetOptions - SQL target options.
type SQLPaaSTargetOptions struct {
	// Gets or sets the Azure SQL compute tier.
	ComputeTier *ComputeTier

	// Gets or sets the Azure SQL hardware generation.
	HardwareGeneration *HardwareGeneration

	// Gets or sets the Azure SQL service tier.
	ServiceTier *AzureSQLServiceTier

	// Gets or sets the target location.
	TargetLocations []*AzureLocation

	// Gets or sets the Azure SQL target type.
	TargetType *TargetType
}

// SQLRecommendationReasoning - Class representing Azure SQL Recommendation Reasoning.
type SQLRecommendationReasoning struct {
	// Gets the reasoning category.
	ReasoningCategory *string

	// Gets the reasoning id.
	ReasoningID *string

	// Gets the reasoning status.
	ReasoningString *string

	// READ-ONLY; Gets the Sql recommended reasoning parameters.
	ContextParameters []*SQLRecommendationReasoningContext
}

// SQLRecommendationReasoningContext - Class representing Azure SQL Recommendation Reasoning Context.
type SQLRecommendationReasoningContext struct {
	// Gets the reasoning context key.
	ContextKey *string

	// Gets the reasoning context value.
	ContextValue *string
}

// SQLServerLicensingSettings - SQL Server licensing settings.
type SQLServerLicensingSettings struct {
	// REQUIRED; Licence cost.
	LicenseCost *float32

	// REQUIRED; Software assurance (SA) cost.
	SoftwareAssuranceCost *float32

	// REQUIRED; SQL Server version.
	Version *SQLServerLicenseType
}

// SQLServiceTier - The SQL service tier.
type SQLServiceTier struct {
	// READ-ONLY; The service tier name.
	ServiceTierName *string

	// READ-ONLY; The number of sql entities with this tier.
	ServiceTierNumber *float32
}

// SQLVMSettings - SQL VM assessment settings.
type SQLVMSettings struct {
	// Gets or sets the Azure VM families (calling instance series to keep it consistent with other targets).
	InstanceSeries []*AzureVMFamily
}

// SQLVersionDetails - The SQL version details.
type SQLVersionDetails struct {
	// READ-ONLY; Number of instances with the above SQL version.
	NumberOfInstances *int32

	// READ-ONLY; The SQL version.
	SQLVersion *string
}

// SecuritySettings - Security settings.
type SecuritySettings struct {
	// REQUIRED; Virtual machines per administrator.
	SQLServerSecurityCostPerServerPerYear *float32

	// REQUIRED; Physical servers per administrator.
	ServerSecurityCostPerServerPerYear *float32
}

// ServerCollector - Physical server collector resource.
type ServerCollector struct {
	// The resource-specific properties for this resource.
	Properties *CollectorPropertiesBaseWithAgent

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// ServerCollectorListResult - The response of a ServerCollector list operation.
type ServerCollectorListResult struct {
	// REQUIRED; The ServerCollector items on this page
	Value []*ServerCollector

	// The link to the next page of items
	NextLink *string
}

// ServersDiscovered - Shows the discovered servers by virtualization platform.
type ServersDiscovered struct {
	// READ-ONLY; Number of servers on HyperV.
	HyperV *int32

	// READ-ONLY; Number of servers whose virtualization is unknown.
	NotApplicable *int32

	// READ-ONLY; Number of physical servers.
	Physical *int32

	// READ-ONLY; Number of servers on VMWare.
	VMWare *int32
}

// ServicePackInsight - Service Pack Insight.
type ServicePackInsight struct {
	// READ-ONLY; Patched Service Pack Insight.
	Patched *int32

	// READ-ONLY; Unknown support.
	UnknownServicePack *int32

	// READ-ONLY; Unpatched Service Pack Insight.
	Unpatched *int32
}

// Settings - Business case settings.
type Settings struct {
	// REQUIRED; Azure settings for a business case.
	AzureSettings *AzureSettings

	// Azure arc settings.
	AzureArcSettings *AzureArcSettings

	// On-premise settings.
	OnPremiseSettings *OnPremiseSettings
}

// SharedResourcesDTO - Shared Resources.
type SharedResourcesDTO struct {
	// READ-ONLY; Gets number of mounts of shared disks.
	NumberOfMounts *int32

	// READ-ONLY; Gets quorum witness.
	QuorumWitness *AzureQuorumWitnessDTO

	// READ-ONLY; Gets the list of shared data disks.
	SharedDataDisks []*AzureManagedDiskSKUDTO

	// READ-ONLY; Gets the list of shared log disks.
	SharedLogDisks []*AzureManagedDiskSKUDTO

	// READ-ONLY; Gets the list of shared Temporary database disks.
	SharedTempDbDisks []*AzureManagedDiskSKUDTO
}

// StorageSettings - Storage settings.
type StorageSettings struct {
	// REQUIRED; Cost per gigabyte per month.
	CostPerGbPerMonth *float32

	// REQUIRED; Maintenance cost percentage.
	MaintainanceCostPercentageToAcquisitionCost *float32
}

// SuitabilityResult - Data model of Suitability Result.
type SuitabilityResult struct {
	// READ-ONLY; Gets list of failed Checks.
	FailedChecks []*Check

	// READ-ONLY; Gets readiness.
	Readiness *Readiness

	// READ-ONLY; Gets suggested migration tool.
	SuggestedMigrationTool *SuggestedMigrationTool

	// READ-ONLY; Gets suitability.
	Suitability *Suitability
}

// SummaryDetails - Data model of Summary Details.
type SummaryDetails struct {
	// READ-ONLY; Gets count.
	Count *int32

	// READ-ONLY; Gets monthly cost.
	MonthlyCost *float32
}

// SupportStatusDistribution - Support Status Distribution.
type SupportStatusDistribution struct {
	// READ-ONLY; Extended support.
	Extended *int32

	// READ-ONLY; Mainstream support.
	MainStream *int32

	// READ-ONLY; Out of support.
	OutOfSupport *int32

	// READ-ONLY; Unknown support.
	UnknownSupport *int32
}

// SystemData - Metadata pertaining to creation and last modification of the resource.
type SystemData struct {
	// The timestamp of resource creation (UTC).
	CreatedAt *time.Time

	// The identity that created the resource.
	CreatedBy *string

	// The type of identity that created the resource.
	CreatedByType *CreatedByType

	// The timestamp of resource last modification (UTC)
	LastModifiedAt *time.Time

	// The identity that last modified the resource.
	LastModifiedBy *string

	// The type of identity that last modified the resource.
	LastModifiedByType *CreatedByType
}

// TargetSpecificResult - Target specific result.
type TargetSpecificResult struct {
	// REQUIRED; Gets or sets the assessment result.
	AssessmentResult *AssessmentResult

	// REQUIRED; Gets or sets the web app migration issues.
	MigrationIssues []*WebAppMigrationIssues
}

// TargetSpecificSummary - Web app target specific summary data.
type TargetSpecificSummary struct {
	// READ-ONLY; Web app readiness summary data
	ReadinessSummary map[string]*int32

	// READ-ONLY; Web app recommendation sku details data
	RecommendationResultSKUDetails map[string]*WebAppSKUDetails
}

// ThirdPartyManagementSettings - Third Party Management settings.
type ThirdPartyManagementSettings struct {
	// REQUIRED; License Cost.
	LicenseCost *float32

	// REQUIRED; Support Cost.
	SupportCost *float32
}

// UltraDiskAssessmentOptions - Assessment options for Ultra disk type.
type UltraDiskAssessmentOptions struct {
	// Family name.
	FamilyName *string

	// List of locations where ultra disk is supported for this VMfamily.
	TargetLocations []*string
}

// UpdateGroupBody - Properties of group update.
type UpdateGroupBody struct {
	// For optimistic concurrency control.
	ETag *string

	// Properties of the group.
	Properties *GroupBodyProperties
}

// UtilizationData - The SQL on premises utilization insights.
type UtilizationData struct {
	// READ-ONLY; The number of active entities.
	NumberOfActiveEntities *int32

	// READ-ONLY; The number of decommission entities.
	NumberOfDecommisionEntities *int32

	// READ-ONLY; The number of inactive entities.
	NumberOfInactiveEntities *int32

	// READ-ONLY; The number of unknown entities.
	NumberOfUnknownEntities *int32
}

// VMFamilyOptions - VM family name, the list of targeted azure locations and the category of the family.
type VMFamilyOptions struct {
	// READ-ONLY; Category of the VM family.
	Category []*string

	// READ-ONLY; Name of the VM family.
	FamilyName *string

	// READ-ONLY; List of Azure regions.
	TargetLocations []*string
}

// VMUptime - Details on the total up-time for the VM.
type VMUptime struct {
	// Number of days in a month for VM uptime.
	DaysPerMonth *int32

	// Number of hours per day for VM uptime.
	HoursPerDay *int32
}

// VirtualizationSoftwareSettings - Virtualization software settings.
type VirtualizationSoftwareSettings struct {
	// REQUIRED; VMware cloud foundation license cost.
	VMwareCloudFoundationLicenseCost *float32
}

// VmwareCollector - VMware collector resource.
type VmwareCollector struct {
	// The resource-specific properties for this resource.
	Properties *CollectorPropertiesBaseWithAgent

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// VmwareCollectorListResult - The response of a VmwareCollector list operation.
type VmwareCollectorListResult struct {
	// REQUIRED; The VmwareCollector items on this page
	Value []*VmwareCollector

	// The link to the next page of items
	NextLink *string
}

// WebAppAssessmentOptions - Web app Assessment options web model object.
type WebAppAssessmentOptions struct {
	// The resource-specific properties for this resource.
	Properties *WebAppAssessmentOptionsProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// WebAppAssessmentOptionsListResult - The response of a WebAppAssessmentOptions list operation.
type WebAppAssessmentOptionsListResult struct {
	// REQUIRED; The WebAppAssessmentOptions items on this page
	Value []*WebAppAssessmentOptions

	// The link to the next page of items
	NextLink *string
}

// WebAppAssessmentOptionsProperties - Web app Assessment options properties Web model object.
type WebAppAssessmentOptionsProperties struct {
	// Gets or sets the list of currencies supported for Reserved Instances.
	ReservedInstanceSupportedCurrencies []*AzureCurrency

	// Gets or sets the list of Azure locations supporting Reserved Instances.
	ReservedInstanceSupportedLocations []*AzureLocation

	// Gets or sets the list of offers supported for Reserved Instances.
	ReservedInstanceSupportedOffers []*AzureOfferCode

	// Gets or sets the list of currencies supported for Reserved Instances.
	ReservedInstanceSupportedWebAppTiers []*AzureWebAppTier

	// Gets or sets the list of Azure locations supporting Saving Plans for IAAS.
	SavingsPlanSupportedLocations []*AzureLocation

	// Gets or sets the list of Azure Offers supporting Saving Plans.
	SavingsPlanSupportedWebAppTiers []*AzureWebAppTier

	// READ-ONLY; Gets the list of web app target options.
	WebAppSKUs []*WebAppTargetOptions
}

// WebAppAssessmentV2 - Web app Assessment REST resource.
type WebAppAssessmentV2 struct {
	// The resource-specific properties for this resource.
	Properties *WebAppAssessmentV2Properties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// WebAppAssessmentV2ListResult - The response of a WebAppAssessmentV2 list operation.
type WebAppAssessmentV2ListResult struct {
	// REQUIRED; The WebAppAssessmentV2 items on this page
	Value []*WebAppAssessmentV2

	// The link to the next page of items
	NextLink *string
}

// WebAppAssessmentV2Properties - Web app assessment properties class.
type WebAppAssessmentV2Properties struct {
	// Gets or sets user configurable app service container database settings.
	AppSvcContainerSettings *AppSvcContainerSettings

	// Gets or sets user configurable app service native settings.
	AppSvcNativeSettings *AppSvcNativeSettings

	// Assessment type of the assessment.
	AssessmentType *AssessmentType

	// Azure Location or Azure region where to which the machines will be migrated.
	AzureLocation *string

	// Azure Offer Code.
	AzureOfferCode *AzureOfferCode

	// Gets or sets a value indicating azure security offering type.
	AzureSecurityOfferingType *AzureSecurityOfferingType

	// Confidence Rating in Percentage.
	ConfidenceRatingInPercentage *float32

	// Currency in which prices should be reported.
	Currency *AzureCurrency

	// Custom discount percentage.
	DiscountPercentage *float32

	// Gets or sets user configurable discovered entity settings.
	DiscoveredEntityLightSummary *DiscoveredEntityLightSummary

	// Gets or sets the Enterprise agreement subscription id.
	EaSubscriptionID *string

	// Gets or sets the duration for which the entity (Web app, VMs) are up in the on-premises environment.
	EntityUptime *EntityUptime

	// Gets or sets user configurable setting to display the environment type.
	EnvironmentType *EnvironmentType

	// Gets the group type for the assessment.
	GroupType *GroupType

	// Percentile of the utilization data values to be considered while assessing machines.
	Percentile *Percentile

	// Gets or sets the end time to consider performance data for assessment.
	PerfDataEndTime *time.Time

	// Gets or sets the start time to consider performance data for assessment.
	PerfDataStartTime *time.Time

	// Reserved instance.
	ReservedInstance *AzureReservedInstance

	// Percentage of buffer that user wants on performance metrics when recommending Azure sizes.
	ScalingFactor *float32

	// Assessment sizing criterion.
	SizingCriterion *AssessmentSizingCriterion

	// Time Range for which the historic utilization data should be considered for assessment.
	TimeRange *TimeRange

	// READ-ONLY; Date and Time when assessment was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Last time when rates were queried.
	PricesTimestamp *time.Time

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState2

	// READ-ONLY; Schema version.
	SchemaVersion *string

	// READ-ONLY; User configurable setting to display the Stage of Assessment.
	Stage *AssessmentStage

	// READ-ONLY; Whether assessment is in valid state and all machines have been assessed.
	Status *AssessmentStatus

	// READ-ONLY; Date and Time when assessment was last updated.
	UpdatedTimestamp *time.Time
}

// WebAppAssessmentV2Summary - Web app Assessment REST resource.
type WebAppAssessmentV2Summary struct {
	// The resource-specific properties for this resource.
	Properties *WebAppAssessmentV2SummaryProperties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// WebAppAssessmentV2SummaryListResult - The response of a WebAppAssessmentV2Summary list operation.
type WebAppAssessmentV2SummaryListResult struct {
	// REQUIRED; The WebAppAssessmentV2Summary items on this page
	Value []*WebAppAssessmentV2Summary

	// The link to the next page of items
	NextLink *string
}

// WebAppAssessmentV2SummaryProperties - Web app Assessment V2 summary properties.
type WebAppAssessmentV2SummaryProperties struct {
	// READ-ONLY; Gets or sets the discovered entities summary.
	AssessmentSummary map[string]*DiscoveredEntitiesSummary

	// READ-ONLY; Gets the target specific summary.
	TargetSpecificSummary map[string]*TargetSpecificSummary
}

// WebAppCollector - The web app collector REST object.
type WebAppCollector struct {
	// The resource-specific properties for this resource.
	Properties *WebAppCollectorPropertiesBaseWithAgent

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// WebAppCollectorListResult - The response of a WebAppCollector list operation.
type WebAppCollectorListResult struct {
	// REQUIRED; The WebAppCollector items on this page
	Value []*WebAppCollector

	// The link to the next page of items
	NextLink *string
}

// WebAppCollectorPropertiesBaseWithAgent - Collector properties class.
type WebAppCollectorPropertiesBaseWithAgent struct {
	// Gets or sets the collector agent properties.
	AgentProperties *CollectorAgentPropertiesBase

	// Gets the discovery site id.
	DiscoverySiteID *string

	// READ-ONLY; Gets the Timestamp when collector was created.
	CreatedTimestamp *time.Time

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState2

	// READ-ONLY; Timestamp when collector was last updated.
	UpdatedTimestamp *time.Time
}

// WebAppDistribution - The app type distribution.
type WebAppDistribution struct {
	// READ-ONLY; The cost details.
	NumberOfWebApps *float32

	// READ-ONLY; WebApp type.
	WebAppType *WebAppTypes
}

// WebAppMigrationIssues - Web app migration issues.
type WebAppMigrationIssues struct {
	// REQUIRED; Gets or sets the issue category.
	IssueCategory *AzureWebAppSuitabilityIssueCategory

	// REQUIRED; Gets or sets the issue description list.
	IssueDescriptionList []*string

	// REQUIRED; Gets or sets the issue Id.
	IssueID *string
}

// WebAppSKUDetails - Web app sku details.
type WebAppSKUDetails struct {
	// READ-ONLY; App service plan count
	AppServicePlanCount *int32

	// READ-ONLY; Sku name
	SKUName *string

	// READ-ONLY; Sku size
	SKUSize *string

	// READ-ONLY; Monthly security data
	MonthlySecurityCost *float32

	// READ-ONLY; Total monthly cost
	TotalMonthlyCost *float32
}

// WebAppServicePlanV2 - Assessed Web app web model class.
type WebAppServicePlanV2 struct {
	// The resource-specific properties for this resource.
	Properties *WebAppServicePlanV2Properties

	// READ-ONLY; Fully qualified resource ID for the resource. E.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// WebAppServicePlanV2ListResult - The response of a WebAppServicePlanV2 list operation.
type WebAppServicePlanV2ListResult struct {
	// REQUIRED; The WebAppServicePlanV2 items on this page
	Value []*WebAppServicePlanV2

	// The link to the next page of items
	NextLink *string
}

// WebAppServicePlanV2Properties - Assessed Web app database properties web model.
type WebAppServicePlanV2Properties struct {
	// READ-ONLY; Gets the machine name.
	NumberOfWebApps *int32

	// READ-ONLY; Gets or sets the app service plan name.
	WebAppServicePlanName *string

	// READ-ONLY; Gets the discovered web app ID.
	Cores *int32

	// READ-ONLY; Cost components.
	CostComponents []*CostComponent

	// READ-ONLY; When was assessed SQL database first created.
	CreatedTimestamp *time.Time

	// READ-ONLY; Gets or sets the server ARM Id.
	MonthlyCost *float32

	// READ-ONLY; Machine arm id.
	RAM *float64

	// READ-ONLY; Gets or sets web app name.
	ScaleOutInstances *int32

	// READ-ONLY; Gets or sets the web server name.
	Storage *float64

	// READ-ONLY; When was assessed Web app database last updated.
	UpdatedTimestamp *time.Time

	// READ-ONLY; Web app sku name.
	WebAppSKUName *string

	// READ-ONLY; Web app sku size.
	WebAppSKUSize *string

	// READ-ONLY; Gets or sets the target specific result.
	WebAppTargetType *AzureWebAppTargetType

	// READ-ONLY; Gets or sets the web app type.
	WebAppType *WebAppType
}

// WebAppTargetOptions - Web app target options.
type WebAppTargetOptions struct {
	// Gets or sets the target location.
	TargetLocations []*AzureLocation

	// Gets or sets the Azure web app tier.
	WebAppTier *AzureWebAppTier
}

// WebAppTargetSKU - The Webapp target SKU with corresponding cost.
type WebAppTargetSKU struct {
	// READ-ONLY; The cost details.
	Cost *float32

	// READ-ONLY; The number of service plans or node pools recommended.
	Count *int32

	// READ-ONLY; The SKU name.
	SKUName *string
}

// WindowsServerLicensingSettings - Windows Server licensing settings.
type WindowsServerLicensingSettings struct {
	// REQUIRED; Licence Cost.
	LicenseCost *float32

	// REQUIRED; Licenses per core.
	LicensesPerCore *int32

	// REQUIRED; Software assurance (SA) cost.
	SoftwareAssuranceCost *float32
}

// WorkloadSummary - Workload summary.
type WorkloadSummary struct {
	// Gets or sets oracle databases.
	OracleInstances *int32

	// Gets or sets oracle databases.
	SpringApps *int32
}

// YearOnYearCost - Year on Year cost.
type YearOnYearCost struct {
	// REQUIRED; Year value.
	Year *Year

	// Cost for the specified year.
	Cost *float32
}

// YearOnYearEstimates - Shows the year-on-year cost overall.
type YearOnYearEstimates struct {
	// READ-ONLY; Year-on-Year azure arc enabled on-premises cost.
	AzureArcEnabledOnPremisesCost []*YearOnYearCost

	// READ-ONLY; Year-on-Year azure capex cost.
	AzureCapexCost map[string]*float32

	// READ-ONLY; Year-on-Year Azure cost.
	AzureCost map[string]*float32

	// READ-ONLY; Year-on-Year azure opex cost.
	AzureOpexCost map[string]*float32

	// READ-ONLY; Year-on-Year azure arc enabled on-premises esu cost of the remaining infra on-premises.
	FutureAzureArcEnabledOnPremisesEsuCost []*YearOnYearCost

	// READ-ONLY; Year-on-Year azure with arc enabled on-premises cost.
	FutureCost []*YearOnYearCost

	// READ-ONLY; Year-on-Year on-premises esu cost of the remaining infra on-premises.
	FutureOnPremisesEsuCost []*YearOnYearCost

	// READ-ONLY; Year-on-Year on-premises capex cost.
	OnPremisesCapexCost map[string]*float32

	// READ-ONLY; Year-on-Year on-premises cost.
	OnPremisesCost map[string]*float32

	// READ-ONLY; Year-on-Year on-premises opex cost.
	OnPremisesOpexCost map[string]*float32

	// READ-ONLY; Payback period.
	PaybackPeriod *int32

	// READ-ONLY; Year-on-Year savings.
	Savings map[string]*float32
}
