// 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 armhybridcompute

import "time"

// AccessRule - Access rule.
type AccessRule struct {
	// READ-ONLY; Name of the access rule.
	Name *string

	// READ-ONLY; Access rule properties
	Properties *AccessRuleProperties
}

// AccessRuleProperties - Properties of an access rule.
type AccessRuleProperties struct {
	// READ-ONLY; Address prefixes that are allowed access.
	AddressPrefixes []*string

	// READ-ONLY; Direction of the access rule.
	Direction *AccessRuleDirection
}

// AgentConfiguration - Configurable properties that the user can set locally via the azcmagent config command, or remotely
// via ARM.
type AgentConfiguration struct {
	// READ-ONLY; Name of configuration mode to use. Modes are pre-defined configurations of security controls, extension allowlists
	// and guest configuration, maintained by Microsoft.
	ConfigMode *AgentConfigurationMode

	// READ-ONLY; Array of extensions that are allowed to be installed or updated.
	ExtensionsAllowList []*ConfigurationExtension

	// READ-ONLY; Array of extensions that are blocked (cannot be installed or updated)
	ExtensionsBlockList []*ConfigurationExtension

	// READ-ONLY; Specifies whether the extension service is enabled or disabled.
	ExtensionsEnabled *string

	// READ-ONLY; Specified whether the guest configuration service is enabled or disabled.
	GuestConfigurationEnabled *string

	// READ-ONLY; Specifies the list of ports that the agent will be able to listen on.
	IncomingConnectionsPorts []*string

	// READ-ONLY; List of service names which should not use the specified proxy server.
	ProxyBypass []*string

	// READ-ONLY; Specifies the URL of the proxy to be used.
	ProxyURL *string
}

// AgentUpgrade - The info w.r.t Agent Upgrade.
type AgentUpgrade struct {
	// The correlation ID associated with an agent upgrade operation.
	CorrelationID *string

	// Specifies the version info w.r.t AgentUpgrade for the machine.
	DesiredVersion *string

	// Specifies if the machine's agent should be upgraded
	EnableAutomaticUpgrade *bool

	// READ-ONLY; Specifies the version of the last attempt
	LastAttemptDesiredVersion *string

	// READ-ONLY; Failure message of last upgrade attempt if any.
	LastAttemptMessage *string

	// READ-ONLY; Specifies the status of Agent Upgrade.
	LastAttemptStatus *LastAttemptStatusEnum

	// READ-ONLY; Timestamp of last upgrade attempt
	LastAttemptTimestamp *time.Time
}

// AvailablePatchCountByClassification - Summarization of patches available for installation on the machine by classification.
type AvailablePatchCountByClassification struct {
	// READ-ONLY; Number of critical patches available for installation.
	Critical *int32

	// READ-ONLY; Number of definition patches available for installation.
	Definition *int32

	// READ-ONLY; Number of feature pack patches available for installation.
	FeaturePack *int32

	// READ-ONLY; Number of other patches available for installation.
	Other *int32

	// READ-ONLY; Number of security patches available for installation.
	Security *int32

	// READ-ONLY; Number of service pack patches available for installation.
	ServicePack *int32

	// READ-ONLY; Number of tools patches available for installation.
	Tools *int32

	// READ-ONLY; Number of update Rollup patches available for installation.
	UpdateRollup *int32

	// READ-ONLY; Number of updates category patches available for installation.
	Updates *int32
}

// CloudMetadata - The metadata of the cloud environment (Azure/GCP/AWS/OCI…).
type CloudMetadata struct {
	// READ-ONLY; Specifies the cloud provider (Azure/AWS/GCP…).
	Provider *string
}

// ConfigurationExtension - Describes properties that can identify extensions.
type ConfigurationExtension struct {
	// READ-ONLY; Publisher of the extension.
	Publisher *string

	// READ-ONLY; Type of the extension.
	Type *string
}

type ConnectionDetail struct {
	// READ-ONLY; The private endpoint connection group id
	GroupID *string

	// READ-ONLY; Azure resource Id
	ID *string

	// READ-ONLY; The private endpoint connection link identifier
	LinkIdentifier *string

	// READ-ONLY; The private endpoint connection member name
	MemberName *string

	// READ-ONLY; The private endpoint connection private ip address
	PrivateIPAddress *string
}

// Disk - Describes a disk on the machine
type Disk struct {
	// The type of the disk.
	DiskType *string

	// The generated ID of the disk.
	GeneratedID *string

	// The ID of the disk.
	ID *string

	// The size of the disk, in bytes
	MaxSizeInBytes *int64

	// The name of the disk.
	Name *string

	// The path of the disk.
	Path *string

	// The amount of space used on the disk, in bytes
	UsedSpaceInBytes *int64
}

// ErrorAdditionalInfo - The resource management error additional info.
type ErrorAdditionalInfo struct {
	// READ-ONLY; The additional info.
	Info any

	// READ-ONLY; The additional info type.
	Type *string
}

// ErrorDetail - The error detail.
type ErrorDetail struct {
	// READ-ONLY; The error additional info.
	AdditionalInfo []*ErrorAdditionalInfo

	// READ-ONLY; The error code.
	Code *string

	// READ-ONLY; The error details.
	Details []*ErrorDetail

	// READ-ONLY; The error message.
	Message *string

	// READ-ONLY; The error target.
	Target *string
}

// EsuKey - ESU key
type EsuKey struct {
	// The current status of the license profile key. Represented by the same integer value that is presented on the machine itself
	// when querying the license key status.
	LicenseStatus *int32

	// SKU number.
	SKU *string
}

// EsuProfileUpdateProperties - Describes the Update properties of a ESU License Profile.
type EsuProfileUpdateProperties struct {
	// The resource id of the license.
	AssignedLicense *string
}

// ExtensionPublisher - Describes an Extension Publisher.
type ExtensionPublisher struct {
	// The ID of the extension publisher.
	ID *string

	// The name of the extension publisher.
	Name *string
}

// ExtensionPublisherListResult - The List of Extension Publishers.
type ExtensionPublisherListResult struct {
	// The URI to fetch the next page of extension publishers.
	NextLink *string

	// READ-ONLY; The list of extension publishers.
	Value []*ExtensionPublisher
}

// ExtensionTargetProperties - Describes the Machine Extension Target Version Properties
type ExtensionTargetProperties struct {
	// Properties for the specified Extension to Upgrade.
	TargetVersion *string
}

// ExtensionType - Describes an Extension Type.
type ExtensionType struct {
	// The ID of the extension type.
	ID *string

	// The name of the extension type.
	Name *string
}

// ExtensionTypeListResult - The List of Extension Types.
type ExtensionTypeListResult struct {
	// The URI to fetch the next page of extension types.
	NextLink *string

	// READ-ONLY; The list of extension types.
	Value []*ExtensionType
}

// ExtensionValue - Describes a Extension Metadata
type ExtensionValue struct {
	// The single extension based on search criteria
	Properties *ExtensionValueProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// ExtensionValueListResult - The List Extension Metadata response.
type ExtensionValueListResult struct {
	// READ-ONLY; The list of extension metadata
	Value []*ExtensionValue
}

// ExtensionValueListResultV2 - The List Extension Metadata response.
type ExtensionValueListResultV2 struct {
	// The URI to fetch the next page of extension metadata.
	NextLink *string

	// READ-ONLY; The list of extension metadata.
	Value []*ExtensionValueV2
}

// ExtensionValueProperties - Describes Extension Metadata properties
type ExtensionValueProperties struct {
	// READ-ONLY; The type of the Extension being received.
	ExtensionType *string

	// READ-ONLY; The publisher of the Extension being received.
	Publisher *string

	// READ-ONLY; The version of the Extension being received.
	Version *string
}

// ExtensionValueV2 - Describes an Extension Metadata.
type ExtensionValueV2 struct {
	// The single extension based on search criteria.
	Properties *ExtensionValueV2Properties

	// 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
}

// ExtensionValueV2Properties - Describes Extension Metadata properties.
type ExtensionValueV2Properties struct {
	// READ-ONLY; Architectures (x64, arms64, etc.) that this extension supports.
	Architecture []*string

	// READ-ONLY; Location of the signature files for the extension.
	ExtensionSignatureURI *string

	// READ-ONLY; The type of the Extension being received.
	ExtensionType *string

	// READ-ONLY; A list of locations where the extension packages can be found.
	ExtensionUris []*string

	// READ-ONLY; The operating system (Windows, Linux, etc.) this extension supports.
	OperatingSystem *string

	// READ-ONLY; The publisher of the Extension being received.
	Publisher *string

	// READ-ONLY; The version of the Extension being received.
	Version *string
}

// ExtensionsResourceStatus - Instance view status.
type ExtensionsResourceStatus struct {
	// The status code.
	Code *string

	// The short localizable label for the status.
	DisplayStatus *string

	// The level code.
	Level *ExtensionsStatusLevelTypes

	// The detailed status message, including for alerts and error messages.
	Message *string

	// The time of the status.
	Time *time.Time
}

// FirmwareProfile - Describes the firmware of the machine
type FirmwareProfile struct {
	// READ-ONLY; The serial number of the firmware
	SerialNumber *string

	// READ-ONLY; The type of the firmware
	Type *string
}

// Gateway - Describes an Arc Gateway.
type Gateway struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// Hybrid Compute Gateway properties
	Properties *GatewayProperties

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

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// GatewayProperties - Describes the properties of a Gateway Profile.
type GatewayProperties struct {
	// Specifies the list of features that are enabled for this Gateway.
	AllowedFeatures []*string

	// The type of the Gateway resource.
	GatewayType *GatewayType

	// READ-ONLY; The endpoint fqdn for the Gateway.
	GatewayEndpoint *string

	// READ-ONLY; A unique, immutable, identifier for the Gateway.
	GatewayID *string

	// READ-ONLY; The provisioning state, which only appears in the response.
	ProvisioningState *ProvisioningState
}

// GatewayUpdate - Describes a License Update.
type GatewayUpdate struct {
	// Gateway Update properties
	Properties *GatewayUpdateProperties

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

// GatewayUpdateProperties - Describes the Update properties of a Gateway Profile.
type GatewayUpdateProperties struct {
	// Specifies the list of features that are enabled for this Gateway.
	AllowedFeatures []*string
}

// GatewaysListResult - The List license operation response.
type GatewaysListResult struct {
	// REQUIRED; The list of Gateways.
	Value []*Gateway

	// The URI to fetch the next page of Gateways. Call ListNext() with this URI to fetch the next page of Gateways.
	NextLink *string
}

// HardwareProfile - Describes the hardware of the machine
type HardwareProfile struct {
	// READ-ONLY; The total number of CPU sockets available on the machine
	NumberOfCPUSockets *int32

	// READ-ONLY; The physical processors of the machine.
	Processors []*Processor

	// READ-ONLY; The total physical memory on the machine
	TotalPhysicalMemoryInBytes *int64
}

// IPAddress - Describes properties of the IP address.
type IPAddress struct {
	// Represents the IP Address.
	Address *string

	// Represents the Ip Address Version.
	IPAddressVersion *string

	// READ-ONLY; The subnet to which this IP address belongs.
	Subnet *Subnet
}

// Identity for the resource.
type Identity struct {
	// CONSTANT; The identity type.
	// Field has constant value "SystemAssigned", any specified value is ignored.
	Type *string

	// READ-ONLY; The principal ID of resource identity.
	PrincipalID *string

	// READ-ONLY; The tenant ID of resource.
	TenantID *string
}

// License - Describes a license in a hybrid machine.
type License struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// Hybrid Compute License properties
	Properties *LicenseProperties

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

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// LicenseDetails - Describes the properties of a License.
type LicenseDetails struct {
	// Describes the edition of the license. The values are either Standard or Datacenter.
	Edition *LicenseEdition

	// Describes the number of processors.
	Processors *int32

	// Describes the state of the license.
	State *LicenseState

	// Describes the license target server.
	Target *LicenseTarget

	// Describes the license core type (pCore or vCore).
	Type *LicenseCoreType

	// A list of volume license details.
	VolumeLicenseDetails []*VolumeLicenseDetails

	// READ-ONLY; Describes the number of assigned licenses.
	AssignedLicenses *int32

	// READ-ONLY; Describes the immutable id.
	ImmutableID *string
}

// LicenseProfile - Describes a license profile in a hybrid machine.
type LicenseProfile struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// Describe the properties of a license profile.
	Properties *LicenseProfileProperties

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

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// LicenseProfileArmEsuProperties - Describes the properties of a License Profile ARM model.
type LicenseProfileArmEsuProperties struct {
	// The resource id of the license.
	AssignedLicense *string

	// READ-ONLY; The guid id of the license.
	AssignedLicenseImmutableID *string

	// READ-ONLY; Indicates the eligibility state of Esu.
	EsuEligibility *EsuEligibility

	// READ-ONLY; Indicates whether there is an ESU Key currently active for the machine.
	EsuKeyState *EsuKeyState

	// READ-ONLY; The list of ESU keys.
	EsuKeys []*EsuKey

	// READ-ONLY; The type of the Esu servers.
	ServerType *EsuServerType
}

// LicenseProfileArmProductProfileProperties - Describes the properties of a Product License Profile ARM model.
type LicenseProfileArmProductProfileProperties struct {
	// The list of product features.
	ProductFeatures []*ProductFeature

	// Indicates the product type of the license.
	ProductType *LicenseProfileProductType

	// Indicates the subscription status of the product.
	SubscriptionStatus *LicenseProfileSubscriptionStatus

	// READ-ONLY; The timestamp in UTC when the billing ends.
	BillingEndDate *time.Time

	// READ-ONLY; The timestamp in UTC when the billing starts.
	BillingStartDate *time.Time

	// READ-ONLY; The timestamp in UTC when the user disenrolled the feature.
	DisenrollmentDate *time.Time

	// READ-ONLY; The timestamp in UTC when the user enrolls the feature.
	EnrollmentDate *time.Time

	// READ-ONLY; The errors that were encountered during the feature enrollment or disenrollment.
	Error *ErrorDetail
}

// LicenseProfileMachineInstanceView - License Profile Instance View in Machine Properties.
type LicenseProfileMachineInstanceView struct {
	// Properties for the Machine ESU profile.
	EsuProfile *LicenseProfileMachineInstanceViewEsuProperties

	// READ-ONLY; Indicates the license channel.
	LicenseChannel *string

	// READ-ONLY; Indicates the license status of the OS.
	LicenseStatus *LicenseStatus

	// READ-ONLY; Hybrid Compute Product Profile properties
	ProductProfile *LicenseProfileArmProductProfileProperties

	// READ-ONLY
	SoftwareAssurance *LicenseProfileMachineInstanceViewSoftwareAssurance
}

// LicenseProfileMachineInstanceViewEsuProperties - Properties for the Machine ESU profile.
type LicenseProfileMachineInstanceViewEsuProperties struct {
	// The assigned license resource.
	AssignedLicense *License

	// Describes the license assignment state (Assigned or NotAssigned).
	LicenseAssignmentState *LicenseAssignmentState

	// READ-ONLY; The guid id of the license.
	AssignedLicenseImmutableID *string

	// READ-ONLY; Indicates the eligibility state of Esu.
	EsuEligibility *EsuEligibility

	// READ-ONLY; Indicates whether there is an ESU Key currently active for the machine.
	EsuKeyState *EsuKeyState

	// READ-ONLY; The list of ESU keys.
	EsuKeys []*EsuKey

	// READ-ONLY; The type of the Esu servers.
	ServerType *EsuServerType
}

type LicenseProfileMachineInstanceViewSoftwareAssurance struct {
	// Specifies if this machine is licensed as part of a Software Assurance agreement.
	SoftwareAssuranceCustomer *bool
}

// LicenseProfileProperties - Describe the properties of a license profile.
type LicenseProfileProperties struct {
	// Hybrid Compute ESU Profile properties
	EsuProfile *LicenseProfileArmEsuProperties

	// Hybrid Compute Product Profile properties
	ProductProfile    *LicenseProfileArmProductProfileProperties
	SoftwareAssurance *LicenseProfilePropertiesSoftwareAssurance

	// READ-ONLY; The provisioning state, which only appears in the response.
	ProvisioningState *ProvisioningState
}

type LicenseProfilePropertiesSoftwareAssurance struct {
	// Specifies if this machine is licensed as part of a Software Assurance agreement.
	SoftwareAssuranceCustomer *bool
}

// LicenseProfileUpdate - Describes a License Profile Update.
type LicenseProfileUpdate struct {
	// Describe the Update properties of a license profile.
	Properties *LicenseProfileUpdateProperties

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

// LicenseProfileUpdateProperties - Describe the Update properties of a license profile.
type LicenseProfileUpdateProperties struct {
	// Hybrid Compute ESU Profile Update properties
	EsuProfile *EsuProfileUpdateProperties

	// Hybrid Compute Product Profile Update properties
	ProductProfile    *ProductProfileUpdateProperties
	SoftwareAssurance *LicenseProfileUpdatePropertiesSoftwareAssurance
}

type LicenseProfileUpdatePropertiesSoftwareAssurance struct {
	// Specifies if this machine is licensed as part of a Software Assurance agreement.
	SoftwareAssuranceCustomer *bool
}

// LicenseProfilesListResult - The List hybrid machine license profile operation response.
type LicenseProfilesListResult struct {
	// REQUIRED; The list of license profiles.
	Value []*LicenseProfile

	// The URI to fetch the next page of Machines. Call ListNext() with this URI to fetch the next page of license profile.
	NextLink *string
}

// LicenseProperties - Describes the properties of a License Profile.
type LicenseProperties struct {
	// Describes the properties of a License.
	LicenseDetails *LicenseDetails

	// The type of the license resource.
	LicenseType *LicenseType

	// Describes the tenant id.
	TenantID *string

	// READ-ONLY; The provisioning state, which only appears in the response.
	ProvisioningState *ProvisioningState
}

// LicenseUpdate - Describes a License Update.
type LicenseUpdate struct {
	// License Update properties
	Properties *LicenseUpdateProperties

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

// LicenseUpdateProperties - Describes the Update properties of a License Profile.
type LicenseUpdateProperties struct {
	LicenseDetails *LicenseUpdatePropertiesLicenseDetails

	// The type of the license resource.
	LicenseType *LicenseType
}

type LicenseUpdatePropertiesLicenseDetails struct {
	// Describes the edition of the license. The values are either Standard or Datacenter.
	Edition *LicenseEdition

	// Describes the number of processors.
	Processors *int32

	// Describes the state of the license.
	State *LicenseState

	// Describes the license target server.
	Target *LicenseTarget

	// Describes the license core type (pCore or vCore).
	Type *LicenseCoreType
}

// LicensesListResult - The List license operation response.
type LicensesListResult struct {
	// REQUIRED; The list of licenses.
	Value []*License

	// The URI to fetch the next page of Machines. Call ListNext() with this URI to fetch the next page of license profile.
	NextLink *string
}

// LinuxParameters - Input for InstallPatches on a Linux VM, as directly received by the API
type LinuxParameters struct {
	// The update classifications to select when installing patches for Linux.
	ClassificationsToInclude []*VMGuestPatchClassificationLinux

	// packages to exclude in the patch operation. Format: packageName_packageVersion
	PackageNameMasksToExclude []*string

	// packages to include in the patch operation. Format: packageName_packageVersion
	PackageNameMasksToInclude []*string
}

// LocationData - Metadata pertaining to the geographic location of the resource.
type LocationData struct {
	// REQUIRED; A canonical name for the geographic or physical location.
	Name *string

	// The city or locality where the resource is located.
	City *string

	// The country or region where the resource is located
	CountryOrRegion *string

	// The district, state, or province where the resource is located.
	District *string
}

// Machine - Describes a hybrid machine.
type Machine struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// Identity for the resource.
	Identity *Identity

	// Indicates which kind of Arc machine placement on-premises, such as HCI, SCVMM or VMware etc.
	Kind *ArcKindEnum

	// Hybrid Compute Machine properties
	Properties *MachineProperties

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

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

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

	// READ-ONLY; The list of extensions affiliated to the machine
	Resources []*MachineExtension

	// 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
}

// MachineAssessPatchesResult - Describes the properties of an AssessPatches result.
type MachineAssessPatchesResult struct {
	// Summarization of patches available for installation on the machine by classification.
	AvailablePatchCountByClassification *AvailablePatchCountByClassification

	// READ-ONLY; The activity ID of the operation that produced this result.
	AssessmentActivityID *string

	// READ-ONLY; The errors that were encountered during execution of the operation. The details array contains the list of them.
	ErrorDetails *ErrorDetail

	// READ-ONLY; The UTC timestamp when the operation finished.
	LastModifiedDateTime *time.Time

	// READ-ONLY; The operating system type of the machine.
	OSType *OsType

	// READ-ONLY; Specifies the patch service used for the operation.
	PatchServiceUsed *PatchServiceUsed

	// READ-ONLY; The overall reboot status of the VM. It will be true when partially installed patches require a reboot to complete
	// installation but the reboot has not yet occurred.
	RebootPending *bool

	// READ-ONLY; The UTC timestamp when the operation began.
	StartDateTime *time.Time

	// READ-ONLY; Indicates if operation was triggered by user or by platform.
	StartedBy *PatchOperationStartedBy

	// READ-ONLY; The overall success or failure status of the operation. It remains "InProgress" until the operation completes.
	// At that point it will become "Unknown", "Failed", "Succeeded", or
	// "CompletedWithWarnings."
	Status *PatchOperationStatus
}

// MachineExtension - Describes a Machine Extension.
type MachineExtension struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// Describes Machine Extension Properties.
	Properties *MachineExtensionProperties

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

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// MachineExtensionInstanceView - Describes the Machine Extension Instance View.
type MachineExtensionInstanceView struct {
	// The machine extension name.
	Name *string

	// Instance view status.
	Status *MachineExtensionInstanceViewStatus

	// Specifies the type of the extension; an example is "CustomScriptExtension".
	Type *string

	// Specifies the version of the script handler.
	TypeHandlerVersion *string
}

// MachineExtensionInstanceViewStatus - Instance view status.
type MachineExtensionInstanceViewStatus struct {
	// The status code.
	Code *string

	// The short localizable label for the status.
	DisplayStatus *string

	// The level code.
	Level *StatusLevelTypes

	// The detailed status message, including for alerts and error messages.
	Message *string

	// The time of the status.
	Time *time.Time
}

// MachineExtensionProperties - Describes the properties of a Machine Extension.
type MachineExtensionProperties struct {
	// Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed,
	// however, the extension will not upgrade minor versions unless redeployed, even
	// with this property set to true.
	AutoUpgradeMinorVersion *bool

	// Indicates whether the extension should be automatically upgraded by the platform if there is a newer version available.
	EnableAutomaticUpgrade *bool

	// How the extension handler should be forced to update even if the extension configuration has not changed.
	ForceUpdateTag *string

	// The machine extension instance view.
	InstanceView *MachineExtensionInstanceView

	// The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
	ProtectedSettings map[string]any

	// The name of the extension handler publisher.
	Publisher *string

	// Json formatted public settings for the extension.
	Settings map[string]any

	// Specifies the type of the extension; an example is "CustomScriptExtension".
	Type *string

	// Specifies the version of the script handler.
	TypeHandlerVersion *string

	// READ-ONLY; The provisioning state, which only appears in the response.
	ProvisioningState *string
}

// MachineExtensionUpdate - Describes a Machine Extension Update.
type MachineExtensionUpdate struct {
	// Describes Machine Extension Update Properties.
	Properties *MachineExtensionUpdateProperties

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

// MachineExtensionUpdateProperties - Describes the properties of a Machine Extension.
type MachineExtensionUpdateProperties struct {
	// Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed,
	// however, the extension will not upgrade minor versions unless redeployed, even
	// with this property set to true.
	AutoUpgradeMinorVersion *bool

	// Indicates whether the extension should be automatically upgraded by the platform if there is a newer version available.
	EnableAutomaticUpgrade *bool

	// How the extension handler should be forced to update even if the extension configuration has not changed.
	ForceUpdateTag *string

	// The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
	ProtectedSettings map[string]any

	// The name of the extension handler publisher.
	Publisher *string

	// Json formatted public settings for the extension.
	Settings map[string]any

	// Specifies the type of the extension; an example is "CustomScriptExtension".
	Type *string

	// Specifies the version of the script handler.
	TypeHandlerVersion *string
}

// MachineExtensionUpgrade - Describes the Machine Extension Upgrade Properties.
type MachineExtensionUpgrade struct {
	// Describes the Extension Target Properties.
	ExtensionTargets map[string]*ExtensionTargetProperties
}

// MachineExtensionsListResult - Describes the Machine Extensions List Result.
type MachineExtensionsListResult struct {
	// The uri to fetch the next page of machine extensions. Call ListNext() with this to fetch the next page of extensions.
	NextLink *string

	// The list of extensions
	Value []*MachineExtension
}

// MachineInstallPatchesParameters - Input for InstallPatches as directly received by the API
type MachineInstallPatchesParameters struct {
	// REQUIRED; Specifies the maximum amount of time that the operation will run. It must be an ISO 8601-compliant duration string
	// such as PT4H (4 hours)
	MaximumDuration *string

	// REQUIRED; Defines when it is acceptable to reboot a VM during a software update operation.
	RebootSetting *VMGuestPatchRebootSetting

	// Input for InstallPatches on a Linux VM, as directly received by the API
	LinuxParameters *LinuxParameters

	// Input for InstallPatches on a Windows VM, as directly received by the API
	WindowsParameters *WindowsParameters
}

// MachineInstallPatchesResult - The result summary of an installation operation.
type MachineInstallPatchesResult struct {
	// READ-ONLY; The errors that were encountered during execution of the operation. The details array contains the list of them.
	ErrorDetails *ErrorDetail

	// READ-ONLY; The number of patches that were not installed due to the user blocking their installation.
	ExcludedPatchCount *int32

	// READ-ONLY; The number of patches that could not be installed due to some issue. See errors for details.
	FailedPatchCount *int32

	// READ-ONLY; The activity ID of the operation that produced this result.
	InstallationActivityID *string

	// READ-ONLY; The number of patches successfully installed.
	InstalledPatchCount *int32

	// READ-ONLY; The UTC timestamp when the operation finished.
	LastModifiedDateTime *time.Time

	// READ-ONLY; Whether the operation ran out of time before it completed all its intended actions.
	MaintenanceWindowExceeded *bool

	// READ-ONLY; The number of patches that were detected as available for install, but did not meet the operation's criteria.
	NotSelectedPatchCount *int32

	// READ-ONLY; The operating system type of the machine.
	OSType *OsType

	// READ-ONLY; Specifies the patch service used for the operation.
	PatchServiceUsed *PatchServiceUsed

	// READ-ONLY; The number of patches that were identified as meeting the installation criteria, but were not able to be installed.
	// Typically this happens when maintenanceWindowExceeded == true.
	PendingPatchCount *int32

	// READ-ONLY; The reboot state of the VM following completion of the operation.
	RebootStatus *VMGuestPatchRebootStatus

	// READ-ONLY; The UTC timestamp when the operation began.
	StartDateTime *time.Time

	// READ-ONLY; Indicates if operation was triggered by user or by platform.
	StartedBy *PatchOperationStartedBy

	// READ-ONLY; The overall success or failure status of the operation. It remains "InProgress" until the operation completes.
	// At that point it will become "Failed", "Succeeded", "Unknown" or "CompletedWithWarnings."
	Status *PatchOperationStatus
}

// MachineListResult - The List hybrid machine operation response.
type MachineListResult struct {
	// REQUIRED; The list of hybrid machines.
	Value []*Machine

	// The URI to fetch the next page of Machines. Call ListNext() with this URI to fetch the next page of hybrid machines.
	NextLink *string
}

// MachineProperties - Describes the properties of a hybrid machine.
type MachineProperties struct {
	// The info of the machine w.r.t Agent Upgrade
	AgentUpgrade *AgentUpgrade

	// Public Key that the client provides to be used during initial resource onboarding
	ClientPublicKey *string

	// The metadata of the cloud environment (Azure/GCP/AWS/OCI…).
	CloudMetadata *CloudMetadata

	// Machine Extensions information (deprecated field)
	Extensions []*MachineExtensionInstanceView

	// Specifies the resource ID of the associated hardware device. Only settable by HCI RP.
	HardwareResourceID *string

	// Specifies the identity key store a machine is using.
	IdentityKeyStore *IdentityKeyStore

	// Specifies the License related properties for a machine.
	LicenseProfile *LicenseProfileMachineInstanceView

	// Metadata pertaining to the geographic location of the resource.
	LocationData *LocationData

	// Specifies whether any MS SQL instance is discovered on the machine.
	MssqlDiscovered *string

	// Specifies the operating system settings for the hybrid machine.
	OSProfile *OSProfile

	// The type of Operating System (windows/linux).
	OSType *string

	// The resource id of the parent cluster (Azure HCI) this machine is assigned to, if any.
	ParentClusterResourceID *string

	// The resource id of the private link scope this machine is assigned to, if any.
	PrivateLinkScopeResourceID *string

	// Statuses of dependent services that are reported back to ARM.
	ServiceStatuses *ServiceStatuses

	// Endorsement Key Certificate of the Trusted Platform Module (TPM) that the client provides to be used during initial resource
	// onboarding.
	TpmEkCertificate *string

	// Specifies the hybrid machine unique ID.
	VMID *string

	// READ-ONLY; Specifies the AD fully qualified display name.
	AdFqdn *string

	// READ-ONLY; Configurable properties that the user can set locally via the azcmagent config command, or remotely via ARM.
	AgentConfiguration *AgentConfiguration

	// READ-ONLY; The hybrid machine agent full version.
	AgentVersion *string

	// READ-ONLY; Specifies the DNS fully qualified display name.
	DNSFqdn *string

	// READ-ONLY; Detected properties from the machine.
	DetectedProperties map[string]*string

	// READ-ONLY; Specifies the hybrid machine display name.
	DisplayName *string

	// READ-ONLY; Specifies the Windows domain name.
	DomainName *string

	// READ-ONLY; Details about the error state.
	ErrorDetails []*ErrorDetail

	// READ-ONLY; Information about the machine's firmware
	FirmwareProfile *FirmwareProfile

	// READ-ONLY; Information about the machine's hardware
	HardwareProfile *HardwareProfile

	// READ-ONLY; The time of the last status change.
	LastStatusChange *time.Time

	// READ-ONLY; Specifies the hybrid machine FQDN.
	MachineFqdn *string

	// READ-ONLY; Information about the network the machine is on.
	NetworkProfile *NetworkProfile

	// READ-ONLY; The edition of the Operating System.
	OSEdition *string

	// READ-ONLY; The Operating System running on the hybrid machine.
	OSName *string

	// READ-ONLY; Specifies the Operating System product SKU.
	OSSKU *string

	// READ-ONLY; The version of Operating System running on the hybrid machine.
	OSVersion *string

	// READ-ONLY; The provisioning state, which only appears in the response.
	ProvisioningState *string

	// READ-ONLY; The status of the hybrid machine agent.
	Status *StatusTypes

	// READ-ONLY; Information about the machine's storage
	StorageProfile *StorageProfile

	// READ-ONLY; Specifies the Arc Machine's unique SMBIOS ID
	VMUUID *string
}

// MachineRunCommand - Describes a Run Command
type MachineRunCommand struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// Describes Run Command Properties
	Properties *MachineRunCommandProperties

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

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// MachineRunCommandInstanceView - The instance view of a machine run command.
type MachineRunCommandInstanceView struct {
	// Script end time.
	EndTime *time.Time

	// Script error stream.
	Error *string

	// Communicate script configuration errors or execution messages.
	ExecutionMessage *string

	// Script execution status.
	ExecutionState *ExecutionState

	// Exit code returned from script execution.
	ExitCode *int32

	// Script output stream.
	Output *string

	// Script start time.
	StartTime *time.Time

	// The status information.
	Statuses []*ExtensionsResourceStatus
}

// MachineRunCommandProperties - Describes the properties of a run command.
type MachineRunCommandProperties struct {
	// Optional. If set to true, provisioning will complete as soon as script starts and will not wait for script to complete.
	AsyncExecution *bool

	// User-assigned managed identity that has access to errorBlobUri storage blob. Use an empty object in case of system-assigned
	// identity. Make sure managed identity has been given access to blob's
	// container with 'Storage Blob Data Contributor' role assignment. In case of user-assigned identity, make sure you add it
	// under VM's identity. For more info on managed identity and Run Command, refer
	// https://aka.ms/ManagedIdentity and https://aka.ms/RunCommandManaged
	ErrorBlobManagedIdentity *RunCommandManagedIdentity

	// Specifies the Azure storage blob where script error stream will be uploaded. Use a SAS URI with read, append, create, write
	// access OR use managed identity to provide the VM access to the blob. Refer
	// errorBlobManagedIdentity parameter.
	ErrorBlobURI *string

	// User-assigned managed identity that has access to outputBlobUri storage blob. Use an empty object in case of system-assigned
	// identity. Make sure managed identity has been given access to blob's
	// container with 'Storage Blob Data Contributor' role assignment. In case of user-assigned identity, make sure you add it
	// under VM's identity. For more info on managed identity and Run Command, refer
	// https://aka.ms/ManagedIdentity and https://aka.ms/RunCommandManaged
	OutputBlobManagedIdentity *RunCommandManagedIdentity

	// Specifies the Azure storage blob where script output stream will be uploaded. Use a SAS URI with read, append, create,
	// write access OR use managed identity to provide the VM access to the blob. Refer
	// outputBlobManagedIdentity parameter.
	OutputBlobURI *string

	// The parameters used by the script.
	Parameters []*RunCommandInputParameter

	// The parameters used by the script.
	ProtectedParameters []*RunCommandInputParameter

	// Specifies the user account password on the machine when executing the run command.
	RunAsPassword *string

	// Specifies the user account on the machine when executing the run command.
	RunAsUser *string

	// The source of the run command script.
	Source *MachineRunCommandScriptSource

	// The timeout in seconds to execute the run command.
	TimeoutInSeconds *int32

	// READ-ONLY; The machine run command instance view.
	InstanceView *MachineRunCommandInstanceView

	// READ-ONLY; The provisioning state, which only appears in the response.
	ProvisioningState *string
}

// MachineRunCommandScriptSource - Describes the script sources for run command. Use only one of script, scriptUri, commandId.
type MachineRunCommandScriptSource struct {
	// Specifies the commandId of predefined built-in script.
	CommandID *string

	// Specifies the script content to be executed on the machine.
	Script *string

	// Specifies the script download location. It can be either SAS URI of an Azure storage blob with read access or public URI.
	ScriptURI *string

	// User-assigned managed identity that has access to scriptUri in case of Azure storage blob. Use an empty object in case
	// of system-assigned identity. Make sure the Azure storage blob exists, and managed
	// identity has been given access to blob's container with 'Storage Blob Data Reader' role assignment. In case of user-assigned
	// identity, make sure you add it under VM's identity. For more info on
	// managed identity and Run Command, refer https://aka.ms/ManagedIdentity and https://aka.ms/RunCommandManaged.
	ScriptURIManagedIdentity *RunCommandManagedIdentity
}

// MachineRunCommandsListResult - Describes the Run Commands List Result.
type MachineRunCommandsListResult struct {
	// The uri to fetch the next page of run commands. Call ListNext() with this to fetch the next page of run commands.
	NextLink *string

	// The list of run commands
	Value []*MachineRunCommand
}

// MachineUpdate - Describes a hybrid machine Update.
type MachineUpdate struct {
	// Identity for the resource.
	Identity *Identity

	// Indicates which kind of Arc machine placement on-premises, such as HCI, SCVMM or VMware etc.
	Kind *ArcKindEnum

	// Hybrid Compute Machine properties
	Properties *MachineUpdateProperties

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

// MachineUpdateProperties - Describes the ARM updatable properties of a hybrid machine.
type MachineUpdateProperties struct {
	// The info of the machine w.r.t Agent Upgrade
	AgentUpgrade *AgentUpgrade

	// The metadata of the cloud environment (Azure/GCP/AWS/OCI…).
	CloudMetadata *CloudMetadata

	// Identity key store type of the machine
	IdentityKeyStore *string

	// Metadata pertaining to the geographic location of the resource.
	LocationData *LocationData

	// Specifies the operating system settings for the hybrid machine.
	OSProfile *OSProfile

	// The resource id of the parent cluster (Azure HCI) this machine is assigned to, if any.
	ParentClusterResourceID *string

	// The resource id of the private link scope this machine is assigned to, if any.
	PrivateLinkScopeResourceID *string

	// Endorsement Key Certificate of the Trusted Platform Module (TPM) that the client provides to be used during initial resource
	// onboarding.
	TpmEkCertificate *string
}

// NetworkInterface - Describes a network interface.
type NetworkInterface struct {
	// Represents the ID of the network interface.
	ID *string

	// The list of IP addresses in this interface.
	IPAddresses []*IPAddress

	// Represents MAC address of the network interface.
	MacAddress *string

	// Represents the name of the network interface.
	Name *string
}

// NetworkProfile - Describes the network information on this machine.
type NetworkProfile struct {
	// The list of network interfaces.
	NetworkInterfaces []*NetworkInterface
}

// NetworkSecurityPerimeter - Properties that define a Network Security Perimeter resource.
type NetworkSecurityPerimeter struct {
	// READ-ONLY; Azure resource Id
	ID *string

	// READ-ONLY; Regional location of the perimeter
	Location *string

	// READ-ONLY; Guid of the Network Security Perimeter
	PerimeterGUID *string
}

// NetworkSecurityPerimeterConfiguration - Properties that define a Network Security Perimeter resource.
type NetworkSecurityPerimeterConfiguration struct {
	// Properties that define a Network Security Perimeter resource.
	Properties *NetworkSecurityPerimeterConfigurationProperties

	// READ-ONLY; Azure resource Id
	ID *string

	// READ-ONLY; Azure resource name
	Name *string

	// READ-ONLY; Azure resource type
	Type *string
}

// NetworkSecurityPerimeterConfigurationListResult - A list of network security perimeter configurations.
type NetworkSecurityPerimeterConfigurationListResult struct {
	// READ-ONLY; Link to retrieve next page of results.
	NextLink *string

	// READ-ONLY; Array of results.
	Value []*NetworkSecurityPerimeterConfiguration
}

// NetworkSecurityPerimeterConfigurationProperties - Properties that define a Network Security Perimeter resource.
type NetworkSecurityPerimeterConfigurationProperties struct {
	// The Network Security Perimeter associated with this configuration.
	NetworkSecurityPerimeter *NetworkSecurityPerimeter

	// Network Security Perimeter profile
	Profile *NetworkSecurityPerimeterProfile

	// The Resource Association.
	ResourceAssociation *ResourceAssociation

	// READ-ONLY; Provisioning issues.
	ProvisioningIssues []*ProvisioningIssue

	// READ-ONLY; Current state of this NetworkSecurityPerimeter: whether or not is has been provisioned within the resource group
	// it is defined. Users cannot change this value but are able to read from it. Values will
	// include Provisioning ,Succeeded, Canceled and Failed.
	ProvisioningState *string
}

// NetworkSecurityPerimeterConfigurationReconcileResult - Result of network security perimeter configurations.
type NetworkSecurityPerimeterConfigurationReconcileResult struct {
	// The URL of the resource used to check the status of the asynchronous operation.
	Location *string
}

// NetworkSecurityPerimeterProfile - Network Security Perimeter profile
type NetworkSecurityPerimeterProfile struct {
	// READ-ONLY; Collection of access rules for the profile
	AccessRules []*AccessRule

	// READ-ONLY; Access rules version number
	AccessRulesVersion *int32

	// READ-ONLY; Diagnostic settings version number
	DiagnosticSettingsVersion *int32

	// READ-ONLY; Collection of enabled log categories for the profile
	EnabledLogCategories []*string

	// READ-ONLY; Name of the resource
	Name *string
}

// OSProfile - Specifies the operating system settings for the hybrid machine.
type OSProfile struct {
	// Specifies the linux configuration for update management.
	LinuxConfiguration *OSProfileLinuxConfiguration

	// Specifies the windows configuration for update management.
	WindowsConfiguration *OSProfileWindowsConfiguration

	// READ-ONLY; Specifies the host OS name of the hybrid machine.
	ComputerName *string
}

// OSProfileLinuxConfiguration - Specifies the linux configuration for update management.
type OSProfileLinuxConfiguration struct {
	// Specifies the patch settings.
	PatchSettings *PatchSettings
}

// OSProfileWindowsConfiguration - Specifies the windows configuration for update management.
type OSProfileWindowsConfiguration struct {
	// Specifies the patch settings.
	PatchSettings *PatchSettings
}

// OperationListResult - The List Compute Operation operation response.
type OperationListResult struct {
	// READ-ONLY; The list of compute operations
	Value []*OperationValue
}

// OperationValue - Describes the properties of a Compute Operation value.
type OperationValue struct {
	// Display properties
	Display *OperationValueDisplay

	// READ-ONLY; This property indicates if the operation is an action or a data action
	IsDataAction *bool

	// READ-ONLY; The name of the compute operation.
	Name *string

	// READ-ONLY; The origin of the compute operation.
	Origin *string
}

// OperationValueDisplay - Describes the properties of a Hybrid Compute Operation Value Display.
type OperationValueDisplay struct {
	// READ-ONLY; The description of the operation.
	Description *string

	// READ-ONLY; The display name of the compute operation.
	Operation *string

	// READ-ONLY; The resource provider for the operation.
	Provider *string

	// READ-ONLY; The display name of the resource the operation applies to.
	Resource *string
}

// PatchSettings - Specifies the patch settings.
type PatchSettings struct {
	// Specifies the assessment mode.
	AssessmentMode *AssessmentModeTypes

	// Captures the hotpatch capability enrollment intent of the customers, which enables customers to patch their Windows machines
	// without requiring a reboot.
	EnableHotpatching *bool

	// Specifies the patch mode.
	PatchMode *PatchModeTypes

	// READ-ONLY; Status of the hotpatch capability enrollment or disenrollment.
	Status *PatchSettingsStatus
}

// PatchSettingsStatus - Status of the hotpatch capability enrollment or disenrollment.
type PatchSettingsStatus struct {
	// Indicates the current status of the hotpatch being enabled or disabled.
	HotpatchEnablementStatus *HotpatchEnablementStatus

	// READ-ONLY; The errors that were encountered during the hotpatch capability enrollment or disenrollment.
	Error *ErrorDetail
}

// PrivateEndpointConnection - A private endpoint connection
type PrivateEndpointConnection struct {
	// Resource properties.
	Properties *PrivateEndpointConnectionProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// PrivateEndpointConnectionDataModel - The Data Model for a Private Endpoint Connection associated with a Private Link Scope
type PrivateEndpointConnectionDataModel struct {
	// The Private Endpoint Connection properties.
	Properties *PrivateEndpointConnectionProperties

	// READ-ONLY; The ARM Resource Id of the Private Endpoint.
	ID *string

	// READ-ONLY; The Name of the Private Endpoint.
	Name *string

	// READ-ONLY; Azure resource type
	Type *string
}

// PrivateEndpointConnectionListResult - A list of private endpoint connections.
type PrivateEndpointConnectionListResult struct {
	// READ-ONLY; Link to retrieve next page of results.
	NextLink *string

	// READ-ONLY; Array of results.
	Value []*PrivateEndpointConnection
}

// PrivateEndpointConnectionProperties - Properties of a private endpoint connection.
type PrivateEndpointConnectionProperties struct {
	// Private endpoint which the connection belongs to.
	PrivateEndpoint *PrivateEndpointProperty

	// Connection state of the private endpoint connection.
	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionStateProperty

	// READ-ONLY; List of group IDs.
	GroupIDs []*string

	// READ-ONLY; State of the private endpoint connection.
	ProvisioningState *string
}

// PrivateEndpointProperty - Private endpoint which the connection belongs to.
type PrivateEndpointProperty struct {
	// Resource id of the private endpoint.
	ID *string
}

// PrivateLinkResource - A private link resource
type PrivateLinkResource struct {
	// Resource properties.
	Properties *PrivateLinkResourceProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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 - A list of private link resources
type PrivateLinkResourceListResult struct {
	// READ-ONLY; Link to retrieve next page of results.
	NextLink *string

	// READ-ONLY; Array of results.
	Value []*PrivateLinkResource
}

// PrivateLinkResourceProperties - Properties of a private link resource.
type PrivateLinkResourceProperties struct {
	// READ-ONLY; The private link resource group id.
	GroupID *string

	// READ-ONLY; The private link resource required member names.
	RequiredMembers []*string

	// READ-ONLY; Required DNS zone names of the the private link resource.
	RequiredZoneNames []*string
}

// PrivateLinkScope - An Azure Arc PrivateLinkScope definition.
type PrivateLinkScope struct {
	// REQUIRED; Resource location
	Location *string

	// Properties that define a Azure Arc PrivateLinkScope resource.
	Properties *PrivateLinkScopeProperties

	// Resource tags
	Tags map[string]*string

	// READ-ONLY; Azure resource Id
	ID *string

	// READ-ONLY; Azure resource name
	Name *string

	// READ-ONLY; The system meta data relating to this resource.
	SystemData *SystemData

	// READ-ONLY; Azure resource type
	Type *string
}

// PrivateLinkScopeListResult - Describes the list of Azure Arc PrivateLinkScope resources.
type PrivateLinkScopeListResult struct {
	// REQUIRED; List of Azure Arc PrivateLinkScope definitions.
	Value []*PrivateLinkScope

	// The URI to get the next set of Azure Arc PrivateLinkScope definitions if too many PrivateLinkScopes where returned in the
	// result set.
	NextLink *string
}

// PrivateLinkScopeProperties - Properties that define a Azure Arc PrivateLinkScope resource.
type PrivateLinkScopeProperties struct {
	// Indicates whether machines associated with the private link scope can also use public Azure Arc service endpoints.
	PublicNetworkAccess *PublicNetworkAccessType

	// READ-ONLY; The collection of associated Private Endpoint Connections.
	PrivateEndpointConnections []*PrivateEndpointConnectionDataModel

	// READ-ONLY; The Guid id of the private link scope.
	PrivateLinkScopeID *string

	// READ-ONLY; Current state of this PrivateLinkScope: whether or not is has been provisioned within the resource group it
	// is defined. Users cannot change this value but are able to read from it. Values will include
	// Provisioning ,Succeeded, Canceled and Failed.
	ProvisioningState *string
}

type PrivateLinkScopeValidationDetails struct {
	// List of Private Endpoint Connection details.
	ConnectionDetails []*ConnectionDetail

	// Indicates whether machines associated with the private link scope can also use public Azure Arc service endpoints.
	PublicNetworkAccess *PublicNetworkAccessType

	// READ-ONLY; Azure resource Id
	ID *string
}

// PrivateLinkServiceConnectionStateProperty - State of the private endpoint connection.
type PrivateLinkServiceConnectionStateProperty struct {
	// REQUIRED; The private link service connection description.
	Description *string

	// REQUIRED; The private link service connection status.
	Status *string

	// READ-ONLY; The actions required for private link service connection.
	ActionsRequired *string
}

// Processor - Describes the firmware of the machine
type Processor struct {
	// READ-ONLY; The name of the processor.
	Name *string

	// READ-ONLY; The total number of physical cores on the processor.
	NumberOfCores *int32
}

// ProductFeature - Product Feature
type ProductFeature struct {
	// Product feature name.
	Name *string

	// Indicates the current status of the product features.
	SubscriptionStatus *LicenseProfileSubscriptionStatus

	// READ-ONLY; The timestamp in UTC when the billing ends.
	BillingEndDate *time.Time

	// READ-ONLY; The timestamp in UTC when the billing starts.
	BillingStartDate *time.Time

	// READ-ONLY; The timestamp in UTC when the user disenrolled the feature.
	DisenrollmentDate *time.Time

	// READ-ONLY; The timestamp in UTC when the user enrolls the feature.
	EnrollmentDate *time.Time

	// READ-ONLY; The errors that were encountered during the feature enrollment or disenrollment.
	Error *ErrorDetail
}

// ProductFeatureUpdate - Product Feature
type ProductFeatureUpdate struct {
	// Product feature name.
	Name *string

	// Indicates the new status of the product feature.
	SubscriptionStatus *LicenseProfileSubscriptionStatusUpdate
}

// ProductProfileUpdateProperties - Describes the Update properties of a Product Profile.
type ProductProfileUpdateProperties struct {
	// The list of product feature updates.
	ProductFeatures []*ProductFeatureUpdate

	// Indicates the product type of the license.
	ProductType *LicenseProfileProductType

	// Indicates the subscription status of the product.
	SubscriptionStatus *LicenseProfileSubscriptionStatusUpdate
}

// ProvisioningIssue - Details on issues that occurred during provisioning.
type ProvisioningIssue struct {
	// READ-ONLY; Name of the provisioning issue.
	Name *string

	// READ-ONLY; Provisioning issue properties
	Properties *ProvisioningIssueProperties
}

// ProvisioningIssueProperties - Properties of a provisioning issue.
type ProvisioningIssueProperties struct {
	// READ-ONLY; Description of the provisioning issue.
	Description *string

	// READ-ONLY; Issue type
	IssueType *ProvisioningIssueType

	// READ-ONLY; Severity of the provisioning issue.
	Severity *ProvisioningIssueSeverity

	// READ-ONLY; Access rules that can be added to the perimeter to remediate the issue
	SuggestedAccessRules []*AccessRule

	// READ-ONLY; ARM Ids of the resources that can be associated to the same perimeter to remediate the issue
	SuggestedResourceIDs []*string
}

// ResourceAssociation - Properties that define a Resource Association.
type ResourceAssociation struct {
	// READ-ONLY; The access mode
	AccessMode *AccessMode

	// READ-ONLY; Name of the Resource Association
	Name *string
}

// RunCommandInputParameter - Describes the properties of a run command parameter.
type RunCommandInputParameter struct {
	// REQUIRED; The run command parameter name.
	Name *string

	// REQUIRED; The run command parameter value.
	Value *string
}

// RunCommandManagedIdentity - Contains clientId or objectId (use only one, not both) of a user-assigned managed identity
// that has access to storage blob used in Run Command. Use an empty RunCommandManagedIdentity object in case of
// system-assigned identity. Make sure the Azure storage blob exists in case of scriptUri, and managed identity has been given
// access to blob's container with 'Storage Blob Data Reader' role assignment
// with scriptUri blob and 'Storage Blob Data Contributor' for Append blobs(outputBlobUri, errorBlobUri). In case of user
// assigned identity, make sure you add it under VM's identity. For more info on
// managed identity and Run Command, refer https://aka.ms/ManagedIdentity and https://aka.ms/RunCommandManaged.
type RunCommandManagedIdentity struct {
	// Client Id (GUID value) of the user-assigned managed identity. ObjectId should not be used if this is provided.
	ClientID *string

	// Object Id (GUID value) of the user-assigned managed identity. ClientId should not be used if this is provided.
	ObjectID *string
}

// ServiceStatus - Describes the status and behavior of a service.
type ServiceStatus struct {
	// The behavior of the service when the Arc-enabled machine starts up.
	StartupType *string

	// The current status of the service.
	Status *string
}

// ServiceStatuses - Reports the state and behavior of dependent services.
type ServiceStatuses struct {
	// The state of the extension service on the Arc-enabled machine.
	ExtensionService *ServiceStatus

	// The state of the guest configuration service on the Arc-enabled machine.
	GuestConfigurationService *ServiceStatus
}

type Settings struct {
	// Settings properties
	Properties *SettingsProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /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
}

// SettingsGatewayProperties - Settings Gateway properties
type SettingsGatewayProperties struct {
	// Associated Gateway Resource Id
	GatewayResourceID *string
}

// SettingsProperties - Settings properties
type SettingsProperties struct {
	// Settings Gateway properties
	GatewayProperties *SettingsGatewayProperties

	// READ-ONLY; Azure resource tenant Id
	TenantID *string
}

type SetupExtensionRequest struct {
	// The list of extensions
	Extensions []*MachineExtensionProperties
}

// StorageProfile - Describes the storage configuration of the machine
type StorageProfile struct {
	// The disks on the machine.
	Disks []*Disk
}

// Subnet - Describes the subnet.
type Subnet struct {
	// Represents address prefix.
	AddressPrefix *string
}

// 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
}

// TagsResource - A container holding only the Tags for a resource, allowing the user to update the tags on a PrivateLinkScope
// instance.
type TagsResource struct {
	// Resource tags
	Tags map[string]*string
}

type VolumeLicenseDetails struct {
	// The invoice id for the volume license.
	InvoiceID *string

	// Describes the program year the volume license is for.
	ProgramYear *ProgramYear
}

// WindowsParameters - Input for InstallPatches on a Windows VM, as directly received by the API
type WindowsParameters struct {
	// The update classifications to select when installing patches for Windows.
	ClassificationsToInclude []*VMGuestPatchClassificationWindows

	// Filters out Kbs that don't have an InstallationRebootBehavior of 'NeverReboots' when this is set to true.
	ExcludeKbsRequiringReboot *bool

	// Kbs to exclude in the patch operation
	KbNumbersToExclude []*string

	// Kbs to include in the patch operation
	KbNumbersToInclude []*string

	// This is used to install patches that were published on or before this given max published date.
	MaxPatchPublishDate *time.Time

	// This is used to exclude patches that match the given patch name masks. Alphanumeric strings and wildcard expressions consisting
	// of * and ? are only supported as input values in the list. Null, empty
	// and only whitespaces strings as inputs values are not supported.
	PatchNameMasksToExclude []*string

	// This is used to include patches that match the given patch name masks. Alphanumeric strings and wildcard expressions consisting
	// of * and ? are only supported as input values in the list. Null, empty
	// and only whitespaces strings as inputs values are not supported.
	PatchNameMasksToInclude []*string
}
