//go:build go1.18
// +build go1.18

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

import "time"

// AADAuthTypeWorkspaceConnectionProperties - This connection type covers the AAD auth for any applicable Azure service
type AADAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type AADAuthTypeWorkspaceConnectionProperties.
func (a *AADAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                a.AuthType,
		Category:                a.Category,
		CreatedByWorkspaceArmID: a.CreatedByWorkspaceArmID,
		ExpiryTime:              a.ExpiryTime,
		Group:                   a.Group,
		IsSharedToAll:           a.IsSharedToAll,
		Metadata:                a.Metadata,
		SharedUserList:          a.SharedUserList,
		Target:                  a.Target,
		Value:                   a.Value,
		ValueFormat:             a.ValueFormat,
	}
}

// AKS - A Machine Learning compute based on AKS.
type AKS struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// AKS properties
	Properties *AKSSchemaProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type AKS.
func (a *AKS) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    a.ComputeLocation,
		ComputeType:        a.ComputeType,
		CreatedOn:          a.CreatedOn,
		Description:        a.Description,
		DisableLocalAuth:   a.DisableLocalAuth,
		IsAttachedCompute:  a.IsAttachedCompute,
		ModifiedOn:         a.ModifiedOn,
		ProvisioningErrors: a.ProvisioningErrors,
		ProvisioningState:  a.ProvisioningState,
		ResourceID:         a.ResourceID,
	}
}

type AKSSchema struct {
	// AKS properties
	Properties *AKSSchemaProperties
}

// AKSSchemaProperties - AKS properties
type AKSSchemaProperties struct {
	// Number of agents
	AgentCount *int32

	// Agent virtual machine size
	AgentVMSize *string

	// AKS networking configuration for vnet
	AksNetworkingConfiguration *AksNetworkingConfiguration

	// Cluster full qualified domain name
	ClusterFqdn *string

	// Intended usage of the cluster
	ClusterPurpose *ClusterPurpose

	// Load Balancer Subnet
	LoadBalancerSubnet *string

	// Load Balancer Type
	LoadBalancerType *LoadBalancerType

	// SSL configuration
	SSLConfiguration *SSLConfiguration

	// READ-ONLY; System services
	SystemServices []*SystemService
}

// APIKeyAuthWorkspaceConnectionProperties - This connection type covers the generic ApiKey auth connection categories, for
// examples: AzureOpenAI: Category:= AzureOpenAI AuthType:= ApiKey (as type discriminator) Credentials:= {ApiKey} as
// Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.ApiKey Target:= {ApiBase}
// CognitiveService: Category:= CognitiveService AuthType:= ApiKey (as type discriminator) Credentials:= {SubscriptionKey}
// as Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.ApiKey
// Target:= ServiceRegion={serviceRegion}
// CognitiveSearch: Category:= CognitiveSearch AuthType:= ApiKey (as type discriminator) Credentials:= {Key} as Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.ApiKey
// Target:=
// {Endpoint}
// Use Metadata property bag for ApiType, ApiVersion, Kind and other metadata fields
type APIKeyAuthWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category *ConnectionCategory

	// Api key object for workspace connection credential.
	Credentials   *WorkspaceConnectionAPIKey
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type APIKeyAuthWorkspaceConnectionProperties.
func (a *APIKeyAuthWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                a.AuthType,
		Category:                a.Category,
		CreatedByWorkspaceArmID: a.CreatedByWorkspaceArmID,
		ExpiryTime:              a.ExpiryTime,
		Group:                   a.Group,
		IsSharedToAll:           a.IsSharedToAll,
		Metadata:                a.Metadata,
		SharedUserList:          a.SharedUserList,
		Target:                  a.Target,
		Value:                   a.Value,
		ValueFormat:             a.ValueFormat,
	}
}

type AccessKeyAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	Credentials   *WorkspaceConnectionAccessKey
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type AccessKeyAuthTypeWorkspaceConnectionProperties.
func (a *AccessKeyAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                a.AuthType,
		Category:                a.Category,
		CreatedByWorkspaceArmID: a.CreatedByWorkspaceArmID,
		ExpiryTime:              a.ExpiryTime,
		Group:                   a.Group,
		IsSharedToAll:           a.IsSharedToAll,
		Metadata:                a.Metadata,
		SharedUserList:          a.SharedUserList,
		Target:                  a.Target,
		Value:                   a.Value,
		ValueFormat:             a.ValueFormat,
	}
}

// AccountKeyAuthTypeWorkspaceConnectionProperties - This connection type covers the account key connection for Azure storage
type AccountKeyAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	Credentials   *WorkspaceConnectionAccountKey
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type AccountKeyAuthTypeWorkspaceConnectionProperties.
func (a *AccountKeyAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                a.AuthType,
		Category:                a.Category,
		CreatedByWorkspaceArmID: a.CreatedByWorkspaceArmID,
		ExpiryTime:              a.ExpiryTime,
		Group:                   a.Group,
		IsSharedToAll:           a.IsSharedToAll,
		Metadata:                a.Metadata,
		SharedUserList:          a.SharedUserList,
		Target:                  a.Target,
		Value:                   a.Value,
		ValueFormat:             a.ValueFormat,
	}
}

// AccountKeyDatastoreCredentials - Account key datastore credentials configuration.
type AccountKeyDatastoreCredentials struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialsType *CredentialsType

	// REQUIRED; [Required] Storage account secrets.
	Secrets *AccountKeyDatastoreSecrets
}

// GetDatastoreCredentials implements the DatastoreCredentialsClassification interface for type AccountKeyDatastoreCredentials.
func (a *AccountKeyDatastoreCredentials) GetDatastoreCredentials() *DatastoreCredentials {
	return &DatastoreCredentials{
		CredentialsType: a.CredentialsType,
	}
}

// AccountKeyDatastoreSecrets - Datastore account key secrets.
type AccountKeyDatastoreSecrets struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	SecretsType *SecretsType

	// Storage account key.
	Key *string
}

// GetDatastoreSecrets implements the DatastoreSecretsClassification interface for type AccountKeyDatastoreSecrets.
func (a *AccountKeyDatastoreSecrets) GetDatastoreSecrets() *DatastoreSecrets {
	return &DatastoreSecrets{
		SecretsType: a.SecretsType,
	}
}

// AcrDetails - Details of ACR account to be used for the Registry
type AcrDetails struct {
	// Details of system created ACR account to be used for the Registry
	SystemCreatedAcrAccount *SystemCreatedAcrAccount

	// Details of user created ACR account to be used for the Registry
	UserCreatedAcrAccount *UserCreatedAcrAccount
}

// AksComputeSecrets - Secrets related to a Machine Learning compute based on AKS.
type AksComputeSecrets struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Content of kubeconfig file that can be used to connect to the Kubernetes cluster.
	AdminKubeConfig *string

	// Image registry pull secret.
	ImagePullSecretName *string

	// Content of kubeconfig file that can be used to connect to the Kubernetes cluster.
	UserKubeConfig *string
}

// GetComputeSecrets implements the ComputeSecretsClassification interface for type AksComputeSecrets.
func (a *AksComputeSecrets) GetComputeSecrets() *ComputeSecrets {
	return &ComputeSecrets{
		ComputeType: a.ComputeType,
	}
}

// AksComputeSecretsProperties - Properties of AksComputeSecrets
type AksComputeSecretsProperties struct {
	// Content of kubeconfig file that can be used to connect to the Kubernetes cluster.
	AdminKubeConfig *string

	// Image registry pull secret.
	ImagePullSecretName *string

	// Content of kubeconfig file that can be used to connect to the Kubernetes cluster.
	UserKubeConfig *string
}

// AksNetworkingConfiguration - Advance configuration for AKS networking
type AksNetworkingConfiguration struct {
	// An IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified
	// in serviceCidr.
	DNSServiceIP *string

	// A CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any Subnet IP ranges or the Kubernetes
	// service address range.
	DockerBridgeCidr *string

	// A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with any Subnet IP ranges.
	ServiceCidr *string

	// Virtual network subnet resource ID the compute nodes belong to
	SubnetID *string
}

type AllFeatures struct {
	// REQUIRED; [Required] Specifies the feature filter to leverage when selecting features to calculate metrics over.
	FilterType *MonitoringFeatureFilterType
}

// GetMonitoringFeatureFilterBase implements the MonitoringFeatureFilterBaseClassification interface for type AllFeatures.
func (a *AllFeatures) GetMonitoringFeatureFilterBase() *MonitoringFeatureFilterBase {
	return &MonitoringFeatureFilterBase{
		FilterType: a.FilterType,
	}
}

// AllNodes - All nodes means the service will be running on all of the nodes of the job
type AllNodes struct {
	// REQUIRED; [Required] Type of the Nodes value
	NodesValueType *NodesValueType
}

// GetNodes implements the NodesClassification interface for type AllNodes.
func (a *AllNodes) GetNodes() *Nodes {
	return &Nodes{
		NodesValueType: a.NodesValueType,
	}
}

// AmlCompute - An Azure Machine Learning compute.
type AmlCompute struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// Properties of AmlCompute
	Properties *AmlComputeProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type AmlCompute.
func (a *AmlCompute) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    a.ComputeLocation,
		ComputeType:        a.ComputeType,
		CreatedOn:          a.CreatedOn,
		Description:        a.Description,
		DisableLocalAuth:   a.DisableLocalAuth,
		IsAttachedCompute:  a.IsAttachedCompute,
		ModifiedOn:         a.ModifiedOn,
		ProvisioningErrors: a.ProvisioningErrors,
		ProvisioningState:  a.ProvisioningState,
		ResourceID:         a.ResourceID,
	}
}

// AmlComputeNodeInformation - Compute node information related to a AmlCompute.
type AmlComputeNodeInformation struct {
	// READ-ONLY; ID of the compute node.
	NodeID *string

	// READ-ONLY; State of the compute node. Values are idle, running, preparing, unusable, leaving and preempted.
	NodeState *NodeState

	// READ-ONLY; SSH port number of the node.
	Port *int32

	// READ-ONLY; Private IP address of the compute node.
	PrivateIPAddress *string

	// READ-ONLY; Public IP address of the compute node.
	PublicIPAddress *string

	// READ-ONLY; ID of the Experiment running on the node, if any else null.
	RunID *string
}

// AmlComputeNodesInformation - Result of AmlCompute Nodes
type AmlComputeNodesInformation struct {
	// READ-ONLY; The continuation token.
	NextLink *string

	// READ-ONLY; The collection of returned AmlCompute nodes details.
	Nodes []*AmlComputeNodeInformation
}

// AmlComputeProperties - AML Compute properties
type AmlComputeProperties struct {
	// Enable or disable node public IP address provisioning. Possible values are: Possible values are: true - Indicates that
	// the compute nodes will have public IPs provisioned. false - Indicates that the
	// compute nodes will have a private endpoint and no public IPs.
	EnableNodePublicIP *bool

	// Network is isolated or not
	IsolatedNetwork *bool

	// Compute OS Type
	OSType *OsType

	// A property bag containing additional properties.
	PropertyBag any

	// State of the public SSH port. Possible values are: Disabled - Indicates that the public ssh port is closed on all nodes
	// of the cluster. Enabled - Indicates that the public ssh port is open on all
	// nodes of the cluster. NotSpecified - Indicates that the public ssh port is closed on all nodes of the cluster if VNet is
	// defined, else is open all public nodes. It can be default only during cluster
	// creation time, after creation it will be either enabled or disabled.
	RemoteLoginPortPublicAccess *RemoteLoginPortPublicAccess

	// Scale settings for AML Compute
	ScaleSettings *ScaleSettings

	// Virtual network subnet resource ID the compute nodes belong to.
	Subnet *ResourceID

	// Credentials for an administrator user account that will be created on each compute node.
	UserAccountCredentials *UserAccountCredentials

	// Virtual Machine priority
	VMPriority *VMPriority

	// Virtual Machine Size
	VMSize *string

	// Virtual Machine image for AML Compute - windows only
	VirtualMachineImage *VirtualMachineImage

	// READ-ONLY; Allocation state of the compute. Possible values are: steady - Indicates that the compute is not resizing. There
	// are no changes to the number of compute nodes in the compute in progress. A compute
	// enters this state when it is created and when no operations are being performed on the compute to change the number of
	// compute nodes. resizing - Indicates that the compute is resizing; that is,
	// compute nodes are being added to or removed from the compute.
	AllocationState *AllocationState

	// READ-ONLY; The time at which the compute entered its current allocation state.
	AllocationStateTransitionTime *time.Time

	// READ-ONLY; The number of compute nodes currently assigned to the compute.
	CurrentNodeCount *int32

	// READ-ONLY; Collection of errors encountered by various compute nodes during node setup.
	Errors []*ErrorResponse

	// READ-ONLY; Counts of various node states on the compute.
	NodeStateCounts *NodeStateCounts

	// READ-ONLY; The target number of compute nodes for the compute. If the allocationState is resizing, this property denotes
	// the target node count for the ongoing resize operation. If the allocationState is steady,
	// this property denotes the target node count for the previous resize operation.
	TargetNodeCount *int32
}

// AmlComputeSchema - Properties(top level) of AmlCompute
type AmlComputeSchema struct {
	// Properties of AmlCompute
	Properties *AmlComputeProperties
}

// AmlToken - AML Token identity configuration.
type AmlToken struct {
	// REQUIRED; [Required] Specifies the type of identity framework.
	IdentityType *IdentityConfigurationType
}

// GetIdentityConfiguration implements the IdentityConfigurationClassification interface for type AmlToken.
func (a *AmlToken) GetIdentityConfiguration() *IdentityConfiguration {
	return &IdentityConfiguration{
		IdentityType: a.IdentityType,
	}
}

// AmlTokenComputeIdentity - AML token compute identity definition.
type AmlTokenComputeIdentity struct {
	// REQUIRED; [Required] Specifies the type of identity to use within the monitoring jobs.
	ComputeIdentityType *MonitorComputeIdentityType
}

// GetMonitorComputeIdentityBase implements the MonitorComputeIdentityBaseClassification interface for type AmlTokenComputeIdentity.
func (a *AmlTokenComputeIdentity) GetMonitorComputeIdentityBase() *MonitorComputeIdentityBase {
	return &MonitorComputeIdentityBase{
		ComputeIdentityType: a.ComputeIdentityType,
	}
}

// AmlUserFeature - Features enabled for a workspace
type AmlUserFeature struct {
	// Describes the feature for user experience
	Description *string

	// Specifies the feature name
	DisplayName *string

	// Specifies the feature ID
	ID *string
}

// AnonymousAccessCredential - Access credential with no credentials
type AnonymousAccessCredential struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialType *DataReferenceCredentialType
}

// GetDataReferenceCredential implements the DataReferenceCredentialClassification interface for type AnonymousAccessCredential.
func (a *AnonymousAccessCredential) GetDataReferenceCredential() *DataReferenceCredential {
	return &DataReferenceCredential{
		CredentialType: a.CredentialType,
	}
}

// ArmResourceID - ARM ResourceId of a resource
type ArmResourceID struct {
	// Arm ResourceId is in the format "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Storage/storageAccounts/{StorageAccountName}"
	// or
	// "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{AcrName}"
	ResourceID *string
}

type AssetBase struct {
	// The asset description text.
	Description *string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string
}

type AssetContainer struct {
	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string
}

// AssetJobInput - Asset input type.
type AssetJobInput struct {
	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Input Asset Delivery Mode.
	Mode *InputDeliveryMode
}

// AssetJobOutput - Asset output type.
type AssetJobOutput struct {
	// Output Asset Delivery Mode.
	Mode *OutputDeliveryMode

	// Output Asset URI.
	URI *string
}

// AssetReferenceBase - Base definition for asset references.
type AssetReferenceBase struct {
	// REQUIRED; [Required] Specifies the type of asset reference.
	ReferenceType *ReferenceType
}

// GetAssetReferenceBase implements the AssetReferenceBaseClassification interface for type AssetReferenceBase.
func (a *AssetReferenceBase) GetAssetReferenceBase() *AssetReferenceBase { return a }

// AssignedUser - A user that can be assigned to a compute instance.
type AssignedUser struct {
	// REQUIRED; User’s AAD Object Id.
	ObjectID *string

	// REQUIRED; User’s AAD Tenant Id.
	TenantID *string
}

// AutoForecastHorizon - Forecast horizon determined automatically by system.
type AutoForecastHorizon struct {
	// REQUIRED; [Required] Set forecast horizon value selection mode.
	Mode *ForecastHorizonMode
}

// GetForecastHorizon implements the ForecastHorizonClassification interface for type AutoForecastHorizon.
func (a *AutoForecastHorizon) GetForecastHorizon() *ForecastHorizon {
	return &ForecastHorizon{
		Mode: a.Mode,
	}
}

// AutoMLJob class. Use this class for executing AutoML tasks like Classification/Regression etc. See TaskType enum for all
// the tasks supported.
type AutoMLJob struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobType *JobType

	// REQUIRED; [Required] This represents scenario which can be one of Tables/NLP/Image
	TaskDetails AutoMLVerticalClassification

	// ARM resource ID of the component resource.
	ComponentID *string

	// ARM resource ID of the compute resource.
	ComputeID *string

	// The asset description text.
	Description *string

	// Display name of job.
	DisplayName *string

	// The ARM resource ID of the Environment specification for the job. This is optional value to provide, if not provided, AutoML
	// will default this to Production AutoML curated environment version when
	// running the job.
	EnvironmentID *string

	// Environment variables included in the job.
	EnvironmentVariables map[string]*string

	// The name of the experiment the job belongs to. If not set, the job is placed in the "Default" experiment.
	ExperimentName *string

	// Identity configuration. If set, this should be one of AmlToken, ManagedIdentity, UserIdentity or null. Defaults to AmlToken
	// if null.
	Identity IdentityConfigurationClassification

	// Is the asset archived?
	IsArchived *bool

	// Notification setting for the job
	NotificationSetting *NotificationSetting

	// Mapping of output data bindings used in the job.
	Outputs map[string]JobOutputClassification

	// The asset property dictionary.
	Properties map[string]*string

	// Queue settings for the job
	QueueSettings *QueueSettings

	// Compute Resource configuration for the job.
	Resources *JobResourceConfiguration

	// List of JobEndpoints. For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
	Services map[string]*JobService

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Status of the job.
	Status *JobStatus
}

// GetJobBaseProperties implements the JobBasePropertiesClassification interface for type AutoMLJob.
func (a *AutoMLJob) GetJobBaseProperties() *JobBaseProperties {
	return &JobBaseProperties{
		ComponentID:         a.ComponentID,
		ComputeID:           a.ComputeID,
		Description:         a.Description,
		DisplayName:         a.DisplayName,
		ExperimentName:      a.ExperimentName,
		Identity:            a.Identity,
		IsArchived:          a.IsArchived,
		JobType:             a.JobType,
		NotificationSetting: a.NotificationSetting,
		Properties:          a.Properties,
		Services:            a.Services,
		Status:              a.Status,
		Tags:                a.Tags,
	}
}

// AutoMLVertical - AutoML vertical class. Base class for AutoML verticals - TableVertical/ImageVertical/NLPVertical
type AutoMLVertical struct {
	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type AutoMLVertical.
func (a *AutoMLVertical) GetAutoMLVertical() *AutoMLVertical { return a }

// AutoNCrossValidations - N-Cross validations determined automatically.
type AutoNCrossValidations struct {
	// REQUIRED; [Required] Mode for determining N-Cross validations.
	Mode *NCrossValidationsMode
}

// GetNCrossValidations implements the NCrossValidationsClassification interface for type AutoNCrossValidations.
func (a *AutoNCrossValidations) GetNCrossValidations() *NCrossValidations {
	return &NCrossValidations{
		Mode: a.Mode,
	}
}

// AutoPauseProperties - Auto pause properties
type AutoPauseProperties struct {
	DelayInMinutes *int32
	Enabled        *bool
}

// AutoScaleProperties - Auto scale properties
type AutoScaleProperties struct {
	Enabled      *bool
	MaxNodeCount *int32
	MinNodeCount *int32
}

type AutoSeasonality struct {
	// REQUIRED; [Required] Seasonality mode.
	Mode *SeasonalityMode
}

// GetSeasonality implements the SeasonalityClassification interface for type AutoSeasonality.
func (a *AutoSeasonality) GetSeasonality() *Seasonality {
	return &Seasonality{
		Mode: a.Mode,
	}
}

type AutoTargetLags struct {
	// REQUIRED; [Required] Set target lags mode - Auto/Custom
	Mode *TargetLagsMode
}

// GetTargetLags implements the TargetLagsClassification interface for type AutoTargetLags.
func (a *AutoTargetLags) GetTargetLags() *TargetLags {
	return &TargetLags{
		Mode: a.Mode,
	}
}

// AutoTargetRollingWindowSize - Target lags rolling window determined automatically.
type AutoTargetRollingWindowSize struct {
	// REQUIRED; [Required] TargetRollingWindowSiz detection mode.
	Mode *TargetRollingWindowSizeMode
}

// GetTargetRollingWindowSize implements the TargetRollingWindowSizeClassification interface for type AutoTargetRollingWindowSize.
func (a *AutoTargetRollingWindowSize) GetTargetRollingWindowSize() *TargetRollingWindowSize {
	return &TargetRollingWindowSize{
		Mode: a.Mode,
	}
}

// AzureBlobDatastore - Azure Blob datastore configuration.
type AzureBlobDatastore struct {
	// REQUIRED; [Required] Account credentials.
	Credentials DatastoreCredentialsClassification

	// REQUIRED; [Required] Storage type backing the datastore.
	DatastoreType *DatastoreType

	// Storage account name.
	AccountName *string

	// Storage account container name.
	ContainerName *string

	// The asset description text.
	Description *string

	// Azure cloud endpoint for the storage account.
	Endpoint *string

	// The asset property dictionary.
	Properties map[string]*string

	// Protocol used to communicate with the storage account.
	Protocol *string

	// Azure Resource Group name
	ResourceGroup *string

	// Indicates which identity to use to authenticate service data access to customer's storage.
	ServiceDataAccessAuthIdentity *ServiceDataAccessAuthIdentity

	// Azure Subscription Id
	SubscriptionID *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Readonly property to indicate if datastore is the workspace default datastore
	IsDefault *bool
}

// GetDatastoreProperties implements the DatastorePropertiesClassification interface for type AzureBlobDatastore.
func (a *AzureBlobDatastore) GetDatastoreProperties() *DatastoreProperties {
	return &DatastoreProperties{
		Credentials:   a.Credentials,
		DatastoreType: a.DatastoreType,
		Description:   a.Description,
		IsDefault:     a.IsDefault,
		Properties:    a.Properties,
		Tags:          a.Tags,
	}
}

// AzureDataLakeGen1Datastore - Azure Data Lake Gen1 datastore configuration.
type AzureDataLakeGen1Datastore struct {
	// REQUIRED; [Required] Account credentials.
	Credentials DatastoreCredentialsClassification

	// REQUIRED; [Required] Storage type backing the datastore.
	DatastoreType *DatastoreType

	// REQUIRED; [Required] Azure Data Lake store name.
	StoreName *string

	// The asset description text.
	Description *string

	// The asset property dictionary.
	Properties map[string]*string

	// Azure Resource Group name
	ResourceGroup *string

	// Indicates which identity to use to authenticate service data access to customer's storage.
	ServiceDataAccessAuthIdentity *ServiceDataAccessAuthIdentity

	// Azure Subscription Id
	SubscriptionID *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Readonly property to indicate if datastore is the workspace default datastore
	IsDefault *bool
}

// GetDatastoreProperties implements the DatastorePropertiesClassification interface for type AzureDataLakeGen1Datastore.
func (a *AzureDataLakeGen1Datastore) GetDatastoreProperties() *DatastoreProperties {
	return &DatastoreProperties{
		Credentials:   a.Credentials,
		DatastoreType: a.DatastoreType,
		Description:   a.Description,
		IsDefault:     a.IsDefault,
		Properties:    a.Properties,
		Tags:          a.Tags,
	}
}

// AzureDataLakeGen2Datastore - Azure Data Lake Gen2 datastore configuration.
type AzureDataLakeGen2Datastore struct {
	// REQUIRED; [Required] Storage account name.
	AccountName *string

	// REQUIRED; [Required] Account credentials.
	Credentials DatastoreCredentialsClassification

	// REQUIRED; [Required] Storage type backing the datastore.
	DatastoreType *DatastoreType

	// REQUIRED; [Required] The name of the Data Lake Gen2 filesystem.
	Filesystem *string

	// The asset description text.
	Description *string

	// Azure cloud endpoint for the storage account.
	Endpoint *string

	// The asset property dictionary.
	Properties map[string]*string

	// Protocol used to communicate with the storage account.
	Protocol *string

	// Azure Resource Group name
	ResourceGroup *string

	// Indicates which identity to use to authenticate service data access to customer's storage.
	ServiceDataAccessAuthIdentity *ServiceDataAccessAuthIdentity

	// Azure Subscription Id
	SubscriptionID *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Readonly property to indicate if datastore is the workspace default datastore
	IsDefault *bool
}

// GetDatastoreProperties implements the DatastorePropertiesClassification interface for type AzureDataLakeGen2Datastore.
func (a *AzureDataLakeGen2Datastore) GetDatastoreProperties() *DatastoreProperties {
	return &DatastoreProperties{
		Credentials:   a.Credentials,
		DatastoreType: a.DatastoreType,
		Description:   a.Description,
		IsDefault:     a.IsDefault,
		Properties:    a.Properties,
		Tags:          a.Tags,
	}
}

// AzureDatastore - Base definition for Azure datastore contents configuration.
type AzureDatastore struct {
	// Azure Resource Group name
	ResourceGroup *string

	// Azure Subscription Id
	SubscriptionID *string
}

// AzureDevOpsWebhook - Webhook details specific for Azure DevOps
type AzureDevOpsWebhook struct {
	// REQUIRED; [Required] Specifies the type of service to send a callback
	WebhookType *WebhookType

	// Send callback on a specified notification event
	EventType *string
}

// GetWebhook implements the WebhookClassification interface for type AzureDevOpsWebhook.
func (a *AzureDevOpsWebhook) GetWebhook() *Webhook {
	return &Webhook{
		EventType:   a.EventType,
		WebhookType: a.WebhookType,
	}
}

// AzureFileDatastore - Azure File datastore configuration.
type AzureFileDatastore struct {
	// REQUIRED; [Required] Storage account name.
	AccountName *string

	// REQUIRED; [Required] Account credentials.
	Credentials DatastoreCredentialsClassification

	// REQUIRED; [Required] Storage type backing the datastore.
	DatastoreType *DatastoreType

	// REQUIRED; [Required] The name of the Azure file share that the datastore points to.
	FileShareName *string

	// The asset description text.
	Description *string

	// Azure cloud endpoint for the storage account.
	Endpoint *string

	// The asset property dictionary.
	Properties map[string]*string

	// Protocol used to communicate with the storage account.
	Protocol *string

	// Azure Resource Group name
	ResourceGroup *string

	// Indicates which identity to use to authenticate service data access to customer's storage.
	ServiceDataAccessAuthIdentity *ServiceDataAccessAuthIdentity

	// Azure Subscription Id
	SubscriptionID *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Readonly property to indicate if datastore is the workspace default datastore
	IsDefault *bool
}

// GetDatastoreProperties implements the DatastorePropertiesClassification interface for type AzureFileDatastore.
func (a *AzureFileDatastore) GetDatastoreProperties() *DatastoreProperties {
	return &DatastoreProperties{
		Credentials:   a.Credentials,
		DatastoreType: a.DatastoreType,
		Description:   a.Description,
		IsDefault:     a.IsDefault,
		Properties:    a.Properties,
		Tags:          a.Tags,
	}
}

// BanditPolicy - Defines an early termination policy based on slack criteria, and a frequency and delay interval for evaluation
type BanditPolicy struct {
	// REQUIRED; [Required] Name of policy configuration
	PolicyType *EarlyTerminationPolicyType

	// Number of intervals by which to delay the first evaluation.
	DelayEvaluation *int32

	// Interval (number of runs) between policy evaluations.
	EvaluationInterval *int32

	// Absolute distance allowed from the best performing run.
	SlackAmount *float32

	// Ratio of the allowed distance from the best performing run.
	SlackFactor *float32
}

// GetEarlyTerminationPolicy implements the EarlyTerminationPolicyClassification interface for type BanditPolicy.
func (b *BanditPolicy) GetEarlyTerminationPolicy() *EarlyTerminationPolicy {
	return &EarlyTerminationPolicy{
		DelayEvaluation:    b.DelayEvaluation,
		EvaluationInterval: b.EvaluationInterval,
		PolicyType:         b.PolicyType,
	}
}

type BatchDeployment struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *BatchDeploymentProperties

	// Managed service identity (system assigned and/or user assigned identities)
	Identity *ManagedServiceIdentity

	// Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.
	Kind *string

	// Sku details required for ARM contract for Autoscaling.
	SKU *SKU

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

// BatchDeploymentConfiguration - Properties relevant to different deployment types.
type BatchDeploymentConfiguration struct {
	// REQUIRED; [Required] The type of the deployment
	DeploymentConfigurationType *BatchDeploymentConfigurationType
}

// GetBatchDeploymentConfiguration implements the BatchDeploymentConfigurationClassification interface for type BatchDeploymentConfiguration.
func (b *BatchDeploymentConfiguration) GetBatchDeploymentConfiguration() *BatchDeploymentConfiguration {
	return b
}

// BatchDeploymentProperties - Batch inference settings per deployment.
type BatchDeploymentProperties struct {
	// Code configuration for the endpoint deployment.
	CodeConfiguration *CodeConfiguration

	// Compute target for batch inference operation.
	Compute *string

	// Properties relevant to different deployment types.
	DeploymentConfiguration BatchDeploymentConfigurationClassification

	// Description of the endpoint deployment.
	Description *string

	// ARM resource ID or AssetId of the environment specification for the endpoint deployment.
	EnvironmentID *string

	// Environment variables configuration for the deployment.
	EnvironmentVariables map[string]*string

	// Error threshold, if the error count for the entire input goes above this value, the batch inference will be aborted. Range
	// is [-1, int.MaxValue]. For FileDataset, this value is the count of file
	// failures. For TabularDataset, this value is the count of record failures. If set to -1 (the lower bound), all failures
	// during batch inference will be ignored.
	ErrorThreshold *int32

	// Logging level for batch inference operation.
	LoggingLevel *BatchLoggingLevel

	// Indicates maximum number of parallelism per instance.
	MaxConcurrencyPerInstance *int32

	// Size of the mini-batch passed to each batch invocation. For FileDataset, this is the number of files per mini-batch. For
	// TabularDataset, this is the size of the records in bytes, per mini-batch.
	MiniBatchSize *int64

	// Reference to the model asset for the endpoint deployment.
	Model AssetReferenceBaseClassification

	// Indicates how the output will be organized.
	OutputAction *BatchOutputAction

	// Customized output file name for append_row output action.
	OutputFileName *string

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string

	// Indicates compute configuration for the job. If not provided, will default to the defaults defined in ResourceConfiguration.
	Resources *DeploymentResourceConfiguration

	// Retry Settings for the batch inference operation. If not provided, will default to the defaults defined in BatchRetrySettings.
	RetrySettings *BatchRetrySettings

	// READ-ONLY; Provisioning state for the endpoint deployment.
	ProvisioningState *DeploymentProvisioningState
}

// BatchDeploymentTrackedResourceArmPaginatedResult - A paginated list of BatchDeployment entities.
type BatchDeploymentTrackedResourceArmPaginatedResult struct {
	// The link to the next page of BatchDeployment objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type BatchDeployment.
	Value []*BatchDeployment
}

type BatchEndpoint struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *BatchEndpointProperties

	// Managed service identity (system assigned and/or user assigned identities)
	Identity *ManagedServiceIdentity

	// Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.
	Kind *string

	// Sku details required for ARM contract for Autoscaling.
	SKU *SKU

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

// BatchEndpointDefaults - Batch endpoint default values
type BatchEndpointDefaults struct {
	// Name of the deployment that will be default for the endpoint. This deployment will end up getting 100% traffic when the
	// endpoint scoring URL is invoked.
	DeploymentName *string
}

// BatchEndpointProperties - Batch endpoint configuration.
type BatchEndpointProperties struct {
	// REQUIRED; [Required] Use 'Key' for key based authentication and 'AMLToken' for Azure Machine Learning token-based authentication.
	// 'Key' doesn't expire but 'AMLToken' does.
	AuthMode *EndpointAuthMode

	// Default values for Batch Endpoint
	Defaults *BatchEndpointDefaults

	// Description of the inference endpoint.
	Description *string

	// EndpointAuthKeys to set initially on an Endpoint. This property will always be returned as null. AuthKey values must be
	// retrieved using the ListKeys API.
	Keys *EndpointAuthKeys

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string

	// READ-ONLY; Provisioning state for the endpoint.
	ProvisioningState *EndpointProvisioningState

	// READ-ONLY; Endpoint URI.
	ScoringURI *string

	// READ-ONLY; Endpoint Swagger URI.
	SwaggerURI *string
}

// BatchEndpointTrackedResourceArmPaginatedResult - A paginated list of BatchEndpoint entities.
type BatchEndpointTrackedResourceArmPaginatedResult struct {
	// The link to the next page of BatchEndpoint objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type BatchEndpoint.
	Value []*BatchEndpoint
}

// BatchPipelineComponentDeploymentConfiguration - Properties for a Batch Pipeline Component Deployment.
type BatchPipelineComponentDeploymentConfiguration struct {
	// REQUIRED; [Required] The type of the deployment
	DeploymentConfigurationType *BatchDeploymentConfigurationType

	// The ARM id of the component to be run.
	ComponentID *IDAssetReference

	// The description which will be applied to the job.
	Description *string

	// Run-time settings for the pipeline job.
	Settings map[string]*string

	// The tags which will be applied to the job.
	Tags map[string]*string
}

// GetBatchDeploymentConfiguration implements the BatchDeploymentConfigurationClassification interface for type BatchPipelineComponentDeploymentConfiguration.
func (b *BatchPipelineComponentDeploymentConfiguration) GetBatchDeploymentConfiguration() *BatchDeploymentConfiguration {
	return &BatchDeploymentConfiguration{
		DeploymentConfigurationType: b.DeploymentConfigurationType,
	}
}

// BatchRetrySettings - Retry settings for a batch inference operation.
type BatchRetrySettings struct {
	// Maximum retry count for a mini-batch
	MaxRetries *int32

	// Invocation timeout for a mini-batch, in ISO 8601 format.
	Timeout *string
}

// BayesianSamplingAlgorithm - Defines a Sampling Algorithm that generates values based on previous values
type BayesianSamplingAlgorithm struct {
	// REQUIRED; [Required] The algorithm used for generating hyperparameter values, along with configuration properties
	SamplingAlgorithmType *SamplingAlgorithmType
}

// GetSamplingAlgorithm implements the SamplingAlgorithmClassification interface for type BayesianSamplingAlgorithm.
func (b *BayesianSamplingAlgorithm) GetSamplingAlgorithm() *SamplingAlgorithm {
	return &SamplingAlgorithm{
		SamplingAlgorithmType: b.SamplingAlgorithmType,
	}
}

// BindOptions - Describes the bind options for the container
type BindOptions struct {
	// Indicate whether to create host path.
	CreateHostPath *bool

	// Type of Bind Option
	Propagation *string

	// Mention the selinux options.
	Selinux *string
}

type BlobReferenceForConsumptionDto struct {
	// Blob URI path for client to upload data. Example: https://blob.windows.core.net/Container/Path
	BlobURI *string

	// Credential info to access storage account
	Credential PendingUploadCredentialDtoClassification

	// Arm ID of the storage account to use
	StorageAccountArmID *string
}

// BuildContext - Configuration settings for Docker build context
type BuildContext struct {
	// REQUIRED; [Required] URI of the Docker build context used to build the image. Supports blob URIs on environment creation
	// and may return blob or Git URIs.
	ContextURI *string

	// Path to the Dockerfile in the build context.
	DockerfilePath *string
}

type CategoricalDataDriftMetricThreshold struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// REQUIRED; [Required] The categorical data drift metric to calculate.
	Metric *CategoricalDataDriftMetric

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetDataDriftMetricThresholdBase implements the DataDriftMetricThresholdBaseClassification interface for type CategoricalDataDriftMetricThreshold.
func (c *CategoricalDataDriftMetricThreshold) GetDataDriftMetricThresholdBase() *DataDriftMetricThresholdBase {
	return &DataDriftMetricThresholdBase{
		DataType:  c.DataType,
		Threshold: c.Threshold,
	}
}

type CategoricalDataQualityMetricThreshold struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// REQUIRED; [Required] The categorical data quality metric to calculate.
	Metric *CategoricalDataQualityMetric

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetDataQualityMetricThresholdBase implements the DataQualityMetricThresholdBaseClassification interface for type CategoricalDataQualityMetricThreshold.
func (c *CategoricalDataQualityMetricThreshold) GetDataQualityMetricThresholdBase() *DataQualityMetricThresholdBase {
	return &DataQualityMetricThresholdBase{
		DataType:  c.DataType,
		Threshold: c.Threshold,
	}
}

type CategoricalPredictionDriftMetricThreshold struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// REQUIRED; [Required] The categorical prediction drift metric to calculate.
	Metric *CategoricalPredictionDriftMetric

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetPredictionDriftMetricThresholdBase implements the PredictionDriftMetricThresholdBaseClassification interface for type
// CategoricalPredictionDriftMetricThreshold.
func (c *CategoricalPredictionDriftMetricThreshold) GetPredictionDriftMetricThresholdBase() *PredictionDriftMetricThresholdBase {
	return &PredictionDriftMetricThresholdBase{
		DataType:  c.DataType,
		Threshold: c.Threshold,
	}
}

// CertificateDatastoreCredentials - Certificate datastore credentials configuration.
type CertificateDatastoreCredentials struct {
	// REQUIRED; [Required] Service principal client ID.
	ClientID *string

	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialsType *CredentialsType

	// REQUIRED; [Required] Service principal secrets.
	Secrets *CertificateDatastoreSecrets

	// REQUIRED; [Required] ID of the tenant to which the service principal belongs.
	TenantID *string

	// REQUIRED; [Required] Thumbprint of the certificate used for authentication.
	Thumbprint *string

	// Authority URL used for authentication.
	AuthorityURL *string

	// Resource the service principal has access to.
	ResourceURL *string
}

// GetDatastoreCredentials implements the DatastoreCredentialsClassification interface for type CertificateDatastoreCredentials.
func (c *CertificateDatastoreCredentials) GetDatastoreCredentials() *DatastoreCredentials {
	return &DatastoreCredentials{
		CredentialsType: c.CredentialsType,
	}
}

// CertificateDatastoreSecrets - Datastore certificate secrets.
type CertificateDatastoreSecrets struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	SecretsType *SecretsType

	// Service principal certificate.
	Certificate *string
}

// GetDatastoreSecrets implements the DatastoreSecretsClassification interface for type CertificateDatastoreSecrets.
func (c *CertificateDatastoreSecrets) GetDatastoreSecrets() *DatastoreSecrets {
	return &DatastoreSecrets{
		SecretsType: c.SecretsType,
	}
}

// Classification task in AutoML Table vertical.
type Classification struct {
	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Columns to use for CVSplit data.
	CvSplitColumnNames []*string

	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *TableVerticalFeaturizationSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *TableVerticalLimitSettings

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Number of cross validation folds to be applied on training dataset when validation dataset is not provided.
	NCrossValidations NCrossValidationsClassification

	// Positive label for binary metrics calculation.
	PositiveLabel *string

	// Primary metric for the task.
	PrimaryMetric *ClassificationPrimaryMetrics

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Test data input.
	TestData *MLTableJobInput

	// The fraction of test dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied when
	// validation dataset is not provided.
	TestDataSize *float64

	// Inputs for training phase for an AutoML Job.
	TrainingSettings *ClassificationTrainingSettings

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64

	// The name of the sample weight column. Automated ML supports a weighted column as an input, causing rows in the data to
	// be weighted up or down.
	WeightColumnName *string
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type Classification.
func (c *Classification) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     c.LogVerbosity,
		TargetColumnName: c.TargetColumnName,
		TaskType:         c.TaskType,
		TrainingData:     c.TrainingData,
	}
}

// ClassificationTrainingSettings - Classification Training related configuration.
type ClassificationTrainingSettings struct {
	// Allowed models for classification task.
	AllowedTrainingAlgorithms []*ClassificationModels

	// Blocked models for classification task.
	BlockedTrainingAlgorithms []*ClassificationModels

	// Enable recommendation of DNN models.
	EnableDnnTraining *bool

	// Flag to turn on explainability on best model.
	EnableModelExplainability *bool

	// Flag for enabling onnx compatible models.
	EnableOnnxCompatibleModels *bool

	// Enable stack ensemble run.
	EnableStackEnsemble *bool

	// Enable voting ensemble run.
	EnableVoteEnsemble *bool

	// During VotingEnsemble and StackEnsemble model generation, multiple fitted models from the previous child runs are downloaded.
	// Configure this parameter with a higher value than 300 secs, if more time
	// is needed.
	EnsembleModelDownloadTimeout *string

	// Stack ensemble settings for stack ensemble run.
	StackEnsembleSettings *StackEnsembleSettings
}

// ClusterUpdateParameters - AmlCompute update parameters.
type ClusterUpdateParameters struct {
	// The properties of the amlCompute.
	Properties *ClusterUpdateProperties
}

// ClusterUpdateProperties - The properties of a amlCompute that need to be updated.
type ClusterUpdateProperties struct {
	// Properties of ClusterUpdate
	Properties *ScaleSettingsInformation
}

// CodeConfiguration - Configuration for a scoring code asset.
type CodeConfiguration struct {
	// REQUIRED; [Required] The script to execute on startup. eg. "score.py"
	ScoringScript *string

	// ARM resource ID of the code asset.
	CodeID *string
}

// CodeContainer - Azure Resource Manager resource envelope.
type CodeContainer struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *CodeContainerProperties

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

// CodeContainerProperties - Container for code asset versions.
type CodeContainerProperties struct {
	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string

	// READ-ONLY; Provisioning state for the code container.
	ProvisioningState *AssetProvisioningState
}

// CodeContainerResourceArmPaginatedResult - A paginated list of CodeContainer entities.
type CodeContainerResourceArmPaginatedResult struct {
	// The link to the next page of CodeContainer objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type CodeContainer.
	Value []*CodeContainer
}

// CodeVersion - Azure Resource Manager resource envelope.
type CodeVersion struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *CodeVersionProperties

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

// CodeVersionProperties - Code asset version details.
type CodeVersionProperties struct {
	// Uri where code is located
	CodeURI *string

	// The asset description text.
	Description *string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Provisioning state for the code version.
	ProvisioningState *AssetProvisioningState
}

// CodeVersionResourceArmPaginatedResult - A paginated list of CodeVersion entities.
type CodeVersionResourceArmPaginatedResult struct {
	// The link to the next page of CodeVersion objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type CodeVersion.
	Value []*CodeVersion
}

type Collection struct {
	// The msi client id used to collect logging to blob storage. If it's null,backend will pick a registered endpoint identity
	// to auth.
	ClientID *string

	// Enable or disable data collection.
	DataCollectionMode *DataCollectionMode

	// The data asset arm resource id. Client side will ensure data asset is pointing to the blob storage, and backend will collect
	// data to the blob storage.
	DataID *string

	// The sampling rate for collection. Sampling rate 1.0 means we collect 100% of data by default.
	SamplingRate *float64
}

// ColumnTransformer - Column transformer parameters.
type ColumnTransformer struct {
	// Fields to apply transformer logic on.
	Fields []*string

	// Different properties to be passed to transformer. Input expected is dictionary of key,value pairs in JSON format.
	Parameters any
}

// CommandJob - Command job definition.
type CommandJob struct {
	// REQUIRED; [Required] The command to execute on startup of the job. eg. "python train.py"
	Command *string

	// REQUIRED; [Required] The ARM resource ID of the Environment specification for the job.
	EnvironmentID *string

	// REQUIRED; [Required] Specifies the type of job.
	JobType *JobType

	// ARM resource ID of the code asset.
	CodeID *string

	// ARM resource ID of the component resource.
	ComponentID *string

	// ARM resource ID of the compute resource.
	ComputeID *string

	// The asset description text.
	Description *string

	// Display name of job.
	DisplayName *string

	// Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.
	Distribution DistributionConfigurationClassification

	// Environment variables included in the job.
	EnvironmentVariables map[string]*string

	// The name of the experiment the job belongs to. If not set, the job is placed in the "Default" experiment.
	ExperimentName *string

	// Identity configuration. If set, this should be one of AmlToken, ManagedIdentity, UserIdentity or null. Defaults to AmlToken
	// if null.
	Identity IdentityConfigurationClassification

	// Mapping of input data bindings used in the job.
	Inputs map[string]JobInputClassification

	// Is the asset archived?
	IsArchived *bool

	// Command Job limit.
	Limits *CommandJobLimits

	// Notification setting for the job
	NotificationSetting *NotificationSetting

	// Mapping of output data bindings used in the job.
	Outputs map[string]JobOutputClassification

	// The asset property dictionary.
	Properties map[string]*string

	// Queue settings for the job
	QueueSettings *QueueSettings

	// Compute Resource configuration for the job.
	Resources *JobResourceConfiguration

	// List of JobEndpoints. For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
	Services map[string]*JobService

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Input parameters.
	Parameters any

	// READ-ONLY; Status of the job.
	Status *JobStatus
}

// GetJobBaseProperties implements the JobBasePropertiesClassification interface for type CommandJob.
func (c *CommandJob) GetJobBaseProperties() *JobBaseProperties {
	return &JobBaseProperties{
		ComponentID:         c.ComponentID,
		ComputeID:           c.ComputeID,
		Description:         c.Description,
		DisplayName:         c.DisplayName,
		ExperimentName:      c.ExperimentName,
		Identity:            c.Identity,
		IsArchived:          c.IsArchived,
		JobType:             c.JobType,
		NotificationSetting: c.NotificationSetting,
		Properties:          c.Properties,
		Services:            c.Services,
		Status:              c.Status,
		Tags:                c.Tags,
	}
}

// CommandJobLimits - Command Job limit class.
type CommandJobLimits struct {
	// REQUIRED; [Required] JobLimit type.
	JobLimitsType *JobLimitsType

	// The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as
	// low as Seconds.
	Timeout *string
}

// GetJobLimits implements the JobLimitsClassification interface for type CommandJobLimits.
func (c *CommandJobLimits) GetJobLimits() *JobLimits {
	return &JobLimits{
		JobLimitsType: c.JobLimitsType,
		Timeout:       c.Timeout,
	}
}

// ComponentContainer - Azure Resource Manager resource envelope.
type ComponentContainer struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *ComponentContainerProperties

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

// ComponentContainerProperties - Component container definition.
type ComponentContainerProperties struct {
	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string

	// READ-ONLY; Provisioning state for the component container.
	ProvisioningState *AssetProvisioningState
}

// ComponentContainerResourceArmPaginatedResult - A paginated list of ComponentContainer entities.
type ComponentContainerResourceArmPaginatedResult struct {
	// The link to the next page of ComponentContainer objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type ComponentContainer.
	Value []*ComponentContainer
}

// ComponentVersion - Azure Resource Manager resource envelope.
type ComponentVersion struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *ComponentVersionProperties

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

// ComponentVersionProperties - Definition of a component version: defines resources that span component types.
type ComponentVersionProperties struct {
	// Defines Component definition details.
	ComponentSpec any

	// The asset description text.
	Description *string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Provisioning state for the component version.
	ProvisioningState *AssetProvisioningState
}

// ComponentVersionResourceArmPaginatedResult - A paginated list of ComponentVersion entities.
type ComponentVersionResourceArmPaginatedResult struct {
	// The link to the next page of ComponentVersion objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type ComponentVersion.
	Value []*ComponentVersion
}

// Compute - Machine Learning compute object.
type Compute struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type Compute.
func (c *Compute) GetCompute() *Compute { return c }

// ComputeInstance - An Azure Machine Learning compute instance.
type ComputeInstance struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// Properties of ComputeInstance
	Properties *ComputeInstanceProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type ComputeInstance.
func (c *ComputeInstance) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    c.ComputeLocation,
		ComputeType:        c.ComputeType,
		CreatedOn:          c.CreatedOn,
		Description:        c.Description,
		DisableLocalAuth:   c.DisableLocalAuth,
		IsAttachedCompute:  c.IsAttachedCompute,
		ModifiedOn:         c.ModifiedOn,
		ProvisioningErrors: c.ProvisioningErrors,
		ProvisioningState:  c.ProvisioningState,
		ResourceID:         c.ResourceID,
	}
}

// ComputeInstanceApplication - Defines an Aml Instance application and its connectivity endpoint URI.
type ComputeInstanceApplication struct {
	// Name of the ComputeInstance application.
	DisplayName *string

	// Application' endpoint URI.
	EndpointURI *string
}

// ComputeInstanceConnectivityEndpoints - Defines all connectivity endpoints and properties for an ComputeInstance.
type ComputeInstanceConnectivityEndpoints struct {
	// READ-ONLY; Private IP Address of this ComputeInstance (local to the VNET in which the compute instance is deployed).
	PrivateIPAddress *string

	// READ-ONLY; Public IP Address of this ComputeInstance.
	PublicIPAddress *string
}

// ComputeInstanceContainer - Defines an Aml Instance container.
type ComputeInstanceContainer struct {
	// Auto save settings.
	Autosave *Autosave

	// Environment information of this container.
	Environment *ComputeInstanceEnvironmentInfo

	// Information of GPU.
	Gpu *string

	// Name of the ComputeInstance container.
	Name *string

	// network of this container.
	Network *Network

	// READ-ONLY; services of this containers.
	Services []any
}

// ComputeInstanceCreatedBy - Describes information on user who created this ComputeInstance.
type ComputeInstanceCreatedBy struct {
	// READ-ONLY; Uniquely identifies the user within his/her organization.
	UserID *string

	// READ-ONLY; Name of the user.
	UserName *string

	// READ-ONLY; Uniquely identifies user' Azure Active Directory organization.
	UserOrgID *string
}

// ComputeInstanceDataDisk - Defines an Aml Instance DataDisk.
type ComputeInstanceDataDisk struct {
	// Caching type of Data Disk.
	Caching *Caching

	// The initial disk size in gigabytes.
	DiskSizeGB *int32

	// The lun is used to uniquely identify each data disk. If attaching multiple disks, each should have a distinct lun.
	Lun *int32

	// type of this storage account.
	StorageAccountType *StorageAccountType
}

// ComputeInstanceDataMount - Defines an Aml Instance DataMount.
type ComputeInstanceDataMount struct {
	// who this data mount created by.
	CreatedBy *string

	// Error of this data mount.
	Error *string

	// Mount Action.
	MountAction *MountAction

	// name of the ComputeInstance data mount.
	MountName *string

	// Path of this data mount.
	MountPath *string

	// Mount state.
	MountState *MountState

	// The time when the disk mounted.
	MountedOn *time.Time

	// Source of the ComputeInstance data mount.
	Source *string

	// Data source type.
	SourceType *SourceType
}

// ComputeInstanceEnvironmentInfo - Environment information
type ComputeInstanceEnvironmentInfo struct {
	// name of environment.
	Name *string

	// version of environment.
	Version *string
}

// ComputeInstanceLastOperation - The last operation on ComputeInstance.
type ComputeInstanceLastOperation struct {
	// Name of the last operation.
	OperationName *OperationName

	// Operation status.
	OperationStatus *OperationStatus

	// Time of the last operation.
	OperationTime *time.Time

	// Trigger of operation.
	OperationTrigger *OperationTrigger
}

// ComputeInstanceProperties - Compute Instance properties
type ComputeInstanceProperties struct {
	// Policy for sharing applications on this compute instance among users of parent workspace. If Personal, only the creator
	// can access applications on this compute instance. When Shared, any workspace
	// user can access applications on this instance depending on his/her assigned role.
	ApplicationSharingPolicy *ApplicationSharingPolicy

	// The Compute Instance Authorization type. Available values are personal (default).
	ComputeInstanceAuthorizationType *ComputeInstanceAuthorizationType

	// List of Custom Services added to the compute.
	CustomServices []*CustomService

	// Enable or disable node public IP address provisioning. Possible values are: Possible values are: true - Indicates that
	// the compute nodes will have public IPs provisioned. false - Indicates that the
	// compute nodes will have a private endpoint and no public IPs.
	EnableNodePublicIP *bool

	// Settings for a personal compute instance.
	PersonalComputeInstanceSettings *PersonalComputeInstanceSettings

	// Specifies policy and settings for SSH access.
	SSHSettings *ComputeInstanceSSHSettings

	// The list of schedules to be applied on the computes.
	Schedules *ComputeSchedules

	// Details of customized scripts to execute for setting up the cluster.
	SetupScripts *SetupScripts

	// Virtual network subnet resource ID the compute nodes belong to.
	Subnet *ResourceID

	// Virtual Machine Size
	VMSize *string

	// READ-ONLY; Describes available applications and their endpoints on this ComputeInstance.
	Applications []*ComputeInstanceApplication

	// READ-ONLY; Describes all connectivity endpoints available for this ComputeInstance.
	ConnectivityEndpoints *ComputeInstanceConnectivityEndpoints

	// READ-ONLY; Describes informations of containers on this ComputeInstance.
	Containers []*ComputeInstanceContainer

	// READ-ONLY; Describes information on user who created this ComputeInstance.
	CreatedBy *ComputeInstanceCreatedBy

	// READ-ONLY; Describes informations of dataDisks on this ComputeInstance.
	DataDisks []*ComputeInstanceDataDisk

	// READ-ONLY; Describes informations of dataMounts on this ComputeInstance.
	DataMounts []*ComputeInstanceDataMount

	// READ-ONLY; Collection of errors encountered on this ComputeInstance.
	Errors []*ErrorResponse

	// READ-ONLY; The last operation on ComputeInstance.
	LastOperation *ComputeInstanceLastOperation

	// READ-ONLY; Returns metadata about the operating system image for this compute instance.
	OSImageMetadata *ImageMetadata

	// READ-ONLY; The current state of this ComputeInstance.
	State *ComputeInstanceState

	// READ-ONLY; ComputeInstance version.
	Versions *ComputeInstanceVersion
}

// ComputeInstanceSSHSettings - Specifies policy and settings for SSH access.
type ComputeInstanceSSHSettings struct {
	// Specifies the SSH rsa public key file as a string. Use "ssh-keygen -t rsa -b 2048" to generate your SSH key pairs.
	AdminPublicKey *string

	// State of the public SSH port. Possible values are: Disabled - Indicates that the public ssh port is closed on this instance.
	// Enabled - Indicates that the public ssh port is open and accessible
	// according to the VNet/subnet policy if applicable.
	SSHPublicAccess *SSHPublicAccess

	// READ-ONLY; Describes the admin user name.
	AdminUserName *string

	// READ-ONLY; Describes the port for connecting through SSH.
	SSHPort *int32
}

// ComputeInstanceSchema - Properties(top level) of ComputeInstance
type ComputeInstanceSchema struct {
	// Properties of ComputeInstance
	Properties *ComputeInstanceProperties
}

// ComputeInstanceVersion - Version of computeInstance.
type ComputeInstanceVersion struct {
	// Runtime of compute instance.
	Runtime *string
}

type ComputeRecurrenceSchedule struct {
	// REQUIRED; [Required] List of hours for the schedule.
	Hours []*int32

	// REQUIRED; [Required] List of minutes for the schedule.
	Minutes []*int32

	// List of month days for the schedule
	MonthDays []*int32

	// List of days for the schedule.
	WeekDays []*ComputeWeekDay
}

// ComputeResource - Machine Learning compute object wrapped into ARM resource envelope.
type ComputeResource struct {
	// The identity of the resource.
	Identity *ManagedServiceIdentity

	// Specifies the location of the resource.
	Location *string

	// Compute properties
	Properties ComputeClassification

	// The sku of the workspace.
	SKU *SKU

	// Contains resource tags defined as key/value pairs.
	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
}

type ComputeResourceSchema struct {
	// Compute properties
	Properties ComputeClassification
}

// ComputeRuntimeDto - Compute runtime config for feature store type workspace.
type ComputeRuntimeDto struct {
	SparkRuntimeVersion *string
}

// ComputeSchedules - The list of schedules to be applied on the computes
type ComputeSchedules struct {
	// The list of compute start stop schedules to be applied.
	ComputeStartStop []*ComputeStartStopSchedule
}

// ComputeSecrets - Secrets related to a Machine Learning compute. Might differ for every type of compute.
type ComputeSecrets struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType
}

// GetComputeSecrets implements the ComputeSecretsClassification interface for type ComputeSecrets.
func (c *ComputeSecrets) GetComputeSecrets() *ComputeSecrets { return c }

// ComputeStartStopSchedule - Compute start stop schedule properties
type ComputeStartStopSchedule struct {
	// [Required] The compute power action.
	Action *ComputePowerAction

	// Required if triggerType is Cron.
	Cron *Cron

	// Required if triggerType is Recurrence.
	Recurrence *Recurrence

	// [Deprecated] Not used any more.
	Schedule *ScheduleBase

	// Is the schedule enabled or disabled?
	Status *ScheduleStatus

	// [Required] The schedule trigger type.
	TriggerType *ComputeTriggerType

	// READ-ONLY; A system assigned id for the schedule.
	ID *string

	// READ-ONLY; The current deployment state of schedule.
	ProvisioningStatus *ProvisioningStatus
}

// ContainerResourceRequirements - Resource requirements for each container instance within an online deployment.
type ContainerResourceRequirements struct {
	// Container resource limit info:
	ContainerResourceLimits *ContainerResourceSettings

	// Container resource request info:
	ContainerResourceRequests *ContainerResourceSettings
}

type ContainerResourceSettings struct {
	// Number of vCPUs request/limit for container. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
	CPU *string

	// Number of Nvidia GPU cards request/limit for container. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
	Gpu *string

	// Memory size request/limit for container. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
	Memory *string
}

type ContentSafety struct {
	// REQUIRED; [Required] Specifies the status of content safety.
	ContentSafetyStatus *ContentSafetyStatus
}

type CosmosDbSettings struct {
	// The throughput of the collections in cosmosdb database
	CollectionsThroughput *int32
}

type CreateMonitorAction struct {
	// REQUIRED; [Required] Specifies the action type of the schedule
	ActionType *ScheduleActionType

	// REQUIRED; [Required] Defines the monitor.
	MonitorDefinition *MonitorDefinition
}

// GetScheduleActionBase implements the ScheduleActionBaseClassification interface for type CreateMonitorAction.
func (c *CreateMonitorAction) GetScheduleActionBase() *ScheduleActionBase {
	return &ScheduleActionBase{
		ActionType: c.ActionType,
	}
}

// Cron - The workflow trigger cron for ComputeStartStop schedule type.
type Cron struct {
	// [Required] Specifies cron expression of schedule. The expression should follow NCronTab format.
	Expression *string

	// The start time in yyyy-MM-ddTHH:mm:ss format.
	StartTime *string

	// Specifies time zone in which the schedule runs. TimeZone should follow Windows time zone format. Refer:
	// https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11
	TimeZone *string
}

type CronTrigger struct {
	// REQUIRED; [Required] Specifies cron expression of schedule. The expression should follow NCronTab format.
	Expression *string

	// REQUIRED; [Required]
	TriggerType *TriggerType

	// Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer https://en.wikipedia.org/wiki/ISO_8601. Recommented
	// format would be "2022-06-01T00:00:01" If not present, the schedule will
	// run indefinitely
	EndTime *string

	// Specifies start time of schedule in ISO 8601 format, but without a UTC offset.
	StartTime *string

	// Specifies time zone in which the schedule runs. TimeZone should follow Windows time zone format. Refer:
	// https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11
	TimeZone *string
}

// GetTriggerBase implements the TriggerBaseClassification interface for type CronTrigger.
func (c *CronTrigger) GetTriggerBase() *TriggerBase {
	return &TriggerBase{
		EndTime:     c.EndTime,
		StartTime:   c.StartTime,
		TimeZone:    c.TimeZone,
		TriggerType: c.TriggerType,
	}
}

// CustomForecastHorizon - The desired maximum forecast horizon in units of time-series frequency.
type CustomForecastHorizon struct {
	// REQUIRED; [Required] Set forecast horizon value selection mode.
	Mode *ForecastHorizonMode

	// REQUIRED; [Required] Forecast horizon value.
	Value *int32
}

// GetForecastHorizon implements the ForecastHorizonClassification interface for type CustomForecastHorizon.
func (c *CustomForecastHorizon) GetForecastHorizon() *ForecastHorizon {
	return &ForecastHorizon{
		Mode: c.Mode,
	}
}

// CustomKeys - Custom Keys credential object
type CustomKeys struct {
	// Dictionary of
	Keys map[string]*string
}

// CustomKeysWorkspaceConnectionProperties - Category:= CustomKeys AuthType:= CustomKeys (as type discriminator) Credentials:=
// {CustomKeys} as Microsoft.MachineLearning.AccountRP.Contracts.WorkspaceConnection.CustomKeys Target:= {any value} Use
// Metadata property bag for ApiVersion and other metadata fields
type CustomKeysWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category *ConnectionCategory

	// Custom Keys credential object
	Credentials   *CustomKeys
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type CustomKeysWorkspaceConnectionProperties.
func (c *CustomKeysWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                c.AuthType,
		Category:                c.Category,
		CreatedByWorkspaceArmID: c.CreatedByWorkspaceArmID,
		ExpiryTime:              c.ExpiryTime,
		Group:                   c.Group,
		IsSharedToAll:           c.IsSharedToAll,
		Metadata:                c.Metadata,
		SharedUserList:          c.SharedUserList,
		Target:                  c.Target,
		Value:                   c.Value,
		ValueFormat:             c.ValueFormat,
	}
}

type CustomMetricThreshold struct {
	// REQUIRED; [Required] The user-defined metric to calculate.
	Metric *string

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

type CustomModelJobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Description for the input.
	Description *string

	// Input Asset Delivery Mode.
	Mode *InputDeliveryMode
}

// GetJobInput implements the JobInputClassification interface for type CustomModelJobInput.
func (c *CustomModelJobInput) GetJobInput() *JobInput {
	return &JobInput{
		Description:  c.Description,
		JobInputType: c.JobInputType,
	}
}

type CustomModelJobOutput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobOutputType *JobOutputType

	// Description for the output.
	Description *string

	// Output Asset Delivery Mode.
	Mode *OutputDeliveryMode

	// Output Asset URI.
	URI *string
}

// GetJobOutput implements the JobOutputClassification interface for type CustomModelJobOutput.
func (c *CustomModelJobOutput) GetJobOutput() *JobOutput {
	return &JobOutput{
		Description:   c.Description,
		JobOutputType: c.JobOutputType,
	}
}

type CustomMonitoringSignal struct {
	// REQUIRED; [Required] Reference to the component asset used to calculate the custom metrics.
	ComponentID *string

	// REQUIRED; [Required] A list of metrics to calculate and their associated thresholds.
	MetricThresholds []*CustomMetricThreshold

	// REQUIRED; [Required] Specifies the type of signal to monitor.
	SignalType *MonitoringSignalType

	// Monitoring assets to take as input. Key is the component input port name, value is the data asset.
	InputAssets map[string]MonitoringInputDataBaseClassification

	// Extra component parameters to take as input. Key is the component literal input port name, value is the parameter value.
	Inputs map[string]JobInputClassification

	// The current notification mode for this signal.
	NotificationTypes []*MonitoringNotificationType

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string
}

// GetMonitoringSignalBase implements the MonitoringSignalBaseClassification interface for type CustomMonitoringSignal.
func (c *CustomMonitoringSignal) GetMonitoringSignalBase() *MonitoringSignalBase {
	return &MonitoringSignalBase{
		NotificationTypes: c.NotificationTypes,
		Properties:        c.Properties,
		SignalType:        c.SignalType,
	}
}

// CustomNCrossValidations - N-Cross validations are specified by user.
type CustomNCrossValidations struct {
	// REQUIRED; [Required] Mode for determining N-Cross validations.
	Mode *NCrossValidationsMode

	// REQUIRED; [Required] N-Cross validations value.
	Value *int32
}

// GetNCrossValidations implements the NCrossValidationsClassification interface for type CustomNCrossValidations.
func (c *CustomNCrossValidations) GetNCrossValidations() *NCrossValidations {
	return &NCrossValidations{
		Mode: c.Mode,
	}
}

type CustomSeasonality struct {
	// REQUIRED; [Required] Seasonality mode.
	Mode *SeasonalityMode

	// REQUIRED; [Required] Seasonality value.
	Value *int32
}

// GetSeasonality implements the SeasonalityClassification interface for type CustomSeasonality.
func (c *CustomSeasonality) GetSeasonality() *Seasonality {
	return &Seasonality{
		Mode: c.Mode,
	}
}

// CustomService - Specifies the custom service configuration
type CustomService struct {
	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
	AdditionalProperties map[string]any

	// Describes the docker settings for the image
	Docker *Docker

	// Configuring the endpoints for the container
	Endpoints []*Endpoint

	// Environment Variable for the container
	EnvironmentVariables map[string]*EnvironmentVariable

	// Describes the Image Specifications
	Image *Image

	// Name of the Custom Service
	Name *string

	// Configuring the volumes for the container
	Volumes []*VolumeDefinition
}

type CustomTargetLags struct {
	// REQUIRED; [Required] Set target lags mode - Auto/Custom
	Mode *TargetLagsMode

	// REQUIRED; [Required] Set target lags values.
	Values []*int32
}

// GetTargetLags implements the TargetLagsClassification interface for type CustomTargetLags.
func (c *CustomTargetLags) GetTargetLags() *TargetLags {
	return &TargetLags{
		Mode: c.Mode,
	}
}

type CustomTargetRollingWindowSize struct {
	// REQUIRED; [Required] TargetRollingWindowSiz detection mode.
	Mode *TargetRollingWindowSizeMode

	// REQUIRED; [Required] TargetRollingWindowSize value.
	Value *int32
}

// GetTargetRollingWindowSize implements the TargetRollingWindowSizeClassification interface for type CustomTargetRollingWindowSize.
func (c *CustomTargetRollingWindowSize) GetTargetRollingWindowSize() *TargetRollingWindowSize {
	return &TargetRollingWindowSize{
		Mode: c.Mode,
	}
}

type DataCollector struct {
	// REQUIRED; [Required] The collection configuration. Each collection has it own configuration to collect model data and the
	// name of collection can be arbitrary string. Model data collector can be used for either
	// payload logging or custom logging or both of them. Collection request and response are reserved for payload logging, others
	// are for custom logging.
	Collections map[string]*Collection

	// The request logging configuration for mdc, it includes advanced logging settings for all collections. It's optional.
	RequestLogging *RequestLogging

	// When model data is collected to blob storage, we need to roll the data to different path to avoid logging all of them in
	// a single blob file. If the rolling rate is hour, all data will be collected in
	// the blob path /yyyy/MM/dd/HH/. If it's day, all data will be collected in blob path /yyyy/MM/dd/. The other benefit of
	// rolling path is that model monitoring ui is able to select a time range of data
	// very quickly.
	RollingRate *RollingRateType
}

// DataContainer - Azure Resource Manager resource envelope.
type DataContainer struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *DataContainerProperties

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

// DataContainerProperties - Container for data asset versions.
type DataContainerProperties struct {
	// REQUIRED; [Required] Specifies the type of data.
	DataType *DataType

	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string
}

// DataContainerResourceArmPaginatedResult - A paginated list of DataContainer entities.
type DataContainerResourceArmPaginatedResult struct {
	// The link to the next page of DataContainer objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type DataContainer.
	Value []*DataContainer
}

type DataDriftMetricThresholdBase struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetDataDriftMetricThresholdBase implements the DataDriftMetricThresholdBaseClassification interface for type DataDriftMetricThresholdBase.
func (d *DataDriftMetricThresholdBase) GetDataDriftMetricThresholdBase() *DataDriftMetricThresholdBase {
	return d
}

type DataDriftMonitoringSignal struct {
	// REQUIRED; [Required] A list of metrics to calculate and their associated thresholds.
	MetricThresholds []DataDriftMetricThresholdBaseClassification

	// REQUIRED; [Required] The data which drift will be calculated for.
	ProductionData MonitoringInputDataBaseClassification

	// REQUIRED; [Required] The data to calculate drift against.
	ReferenceData MonitoringInputDataBaseClassification

	// REQUIRED; [Required] Specifies the type of signal to monitor.
	SignalType *MonitoringSignalType

	// A dictionary that maps feature names to their respective data types.
	FeatureDataTypeOverride map[string]*MonitoringFeatureDataType

	// The settings for computing feature importance.
	FeatureImportanceSettings *FeatureImportanceSettings

	// The feature filter which identifies which feature to calculate drift over.
	Features MonitoringFeatureFilterBaseClassification

	// The current notification mode for this signal.
	NotificationTypes []*MonitoringNotificationType

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string
}

// GetMonitoringSignalBase implements the MonitoringSignalBaseClassification interface for type DataDriftMonitoringSignal.
func (d *DataDriftMonitoringSignal) GetMonitoringSignalBase() *MonitoringSignalBase {
	return &MonitoringSignalBase{
		NotificationTypes: d.NotificationTypes,
		Properties:        d.Properties,
		SignalType:        d.SignalType,
	}
}

// DataFactory - A DataFactory compute.
type DataFactory struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type DataFactory.
func (d *DataFactory) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    d.ComputeLocation,
		ComputeType:        d.ComputeType,
		CreatedOn:          d.CreatedOn,
		Description:        d.Description,
		DisableLocalAuth:   d.DisableLocalAuth,
		IsAttachedCompute:  d.IsAttachedCompute,
		ModifiedOn:         d.ModifiedOn,
		ProvisioningErrors: d.ProvisioningErrors,
		ProvisioningState:  d.ProvisioningState,
		ResourceID:         d.ResourceID,
	}
}

// DataLakeAnalytics - A DataLakeAnalytics compute.
type DataLakeAnalytics struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool
	Properties       *DataLakeAnalyticsSchemaProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type DataLakeAnalytics.
func (d *DataLakeAnalytics) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    d.ComputeLocation,
		ComputeType:        d.ComputeType,
		CreatedOn:          d.CreatedOn,
		Description:        d.Description,
		DisableLocalAuth:   d.DisableLocalAuth,
		IsAttachedCompute:  d.IsAttachedCompute,
		ModifiedOn:         d.ModifiedOn,
		ProvisioningErrors: d.ProvisioningErrors,
		ProvisioningState:  d.ProvisioningState,
		ResourceID:         d.ResourceID,
	}
}

type DataLakeAnalyticsSchema struct {
	Properties *DataLakeAnalyticsSchemaProperties
}

type DataLakeAnalyticsSchemaProperties struct {
	// DataLake Store Account Name
	DataLakeStoreAccountName *string
}

// DataPathAssetReference - Reference to an asset via its path in a datastore.
type DataPathAssetReference struct {
	// REQUIRED; [Required] Specifies the type of asset reference.
	ReferenceType *ReferenceType

	// ARM resource ID of the datastore where the asset is located.
	DatastoreID *string

	// The path of the file/directory in the datastore.
	Path *string
}

// GetAssetReferenceBase implements the AssetReferenceBaseClassification interface for type DataPathAssetReference.
func (d *DataPathAssetReference) GetAssetReferenceBase() *AssetReferenceBase {
	return &AssetReferenceBase{
		ReferenceType: d.ReferenceType,
	}
}

type DataQualityMetricThresholdBase struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetDataQualityMetricThresholdBase implements the DataQualityMetricThresholdBaseClassification interface for type DataQualityMetricThresholdBase.
func (d *DataQualityMetricThresholdBase) GetDataQualityMetricThresholdBase() *DataQualityMetricThresholdBase {
	return d
}

type DataQualityMonitoringSignal struct {
	// REQUIRED; [Required] A list of metrics to calculate and their associated thresholds.
	MetricThresholds []DataQualityMetricThresholdBaseClassification

	// REQUIRED; [Required] The data produced by the production service which drift will be calculated for.
	ProductionData MonitoringInputDataBaseClassification

	// REQUIRED; [Required] The data to calculate drift against.
	ReferenceData MonitoringInputDataBaseClassification

	// REQUIRED; [Required] Specifies the type of signal to monitor.
	SignalType *MonitoringSignalType

	// A dictionary that maps feature names to their respective data types.
	FeatureDataTypeOverride map[string]*MonitoringFeatureDataType

	// The settings for computing feature importance.
	FeatureImportanceSettings *FeatureImportanceSettings

	// The features to calculate drift over.
	Features MonitoringFeatureFilterBaseClassification

	// The current notification mode for this signal.
	NotificationTypes []*MonitoringNotificationType

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string
}

// GetMonitoringSignalBase implements the MonitoringSignalBaseClassification interface for type DataQualityMonitoringSignal.
func (d *DataQualityMonitoringSignal) GetMonitoringSignalBase() *MonitoringSignalBase {
	return &MonitoringSignalBase{
		NotificationTypes: d.NotificationTypes,
		Properties:        d.Properties,
		SignalType:        d.SignalType,
	}
}

// DataReferenceCredential base class
type DataReferenceCredential struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialType *DataReferenceCredentialType
}

// GetDataReferenceCredential implements the DataReferenceCredentialClassification interface for type DataReferenceCredential.
func (d *DataReferenceCredential) GetDataReferenceCredential() *DataReferenceCredential { return d }

// DataVersionBase - Azure Resource Manager resource envelope.
type DataVersionBase struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties DataVersionBasePropertiesClassification

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

// DataVersionBaseProperties - Data version base definition
type DataVersionBaseProperties struct {
	// REQUIRED; [Required] Specifies the type of data.
	DataType *DataType

	// REQUIRED; [Required] Uri of the data. Example: https://go.microsoft.com/fwlink/?linkid=2202330
	DataURI *string

	// The asset description text.
	Description *string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string
}

// GetDataVersionBaseProperties implements the DataVersionBasePropertiesClassification interface for type DataVersionBaseProperties.
func (d *DataVersionBaseProperties) GetDataVersionBaseProperties() *DataVersionBaseProperties {
	return d
}

// DataVersionBaseResourceArmPaginatedResult - A paginated list of DataVersionBase entities.
type DataVersionBaseResourceArmPaginatedResult struct {
	// The link to the next page of DataVersionBase objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type DataVersionBase.
	Value []*DataVersionBase
}

// Databricks - A DataFactory compute.
type Databricks struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// Properties of Databricks
	Properties *DatabricksProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type Databricks.
func (d *Databricks) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    d.ComputeLocation,
		ComputeType:        d.ComputeType,
		CreatedOn:          d.CreatedOn,
		Description:        d.Description,
		DisableLocalAuth:   d.DisableLocalAuth,
		IsAttachedCompute:  d.IsAttachedCompute,
		ModifiedOn:         d.ModifiedOn,
		ProvisioningErrors: d.ProvisioningErrors,
		ProvisioningState:  d.ProvisioningState,
		ResourceID:         d.ResourceID,
	}
}

// DatabricksComputeSecrets - Secrets related to a Machine Learning compute based on Databricks.
type DatabricksComputeSecrets struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// access token for databricks account.
	DatabricksAccessToken *string
}

// GetComputeSecrets implements the ComputeSecretsClassification interface for type DatabricksComputeSecrets.
func (d *DatabricksComputeSecrets) GetComputeSecrets() *ComputeSecrets {
	return &ComputeSecrets{
		ComputeType: d.ComputeType,
	}
}

// DatabricksComputeSecretsProperties - Properties of Databricks Compute Secrets
type DatabricksComputeSecretsProperties struct {
	// access token for databricks account.
	DatabricksAccessToken *string
}

// DatabricksProperties - Properties of Databricks
type DatabricksProperties struct {
	// Databricks access token
	DatabricksAccessToken *string

	// Workspace Url
	WorkspaceURL *string
}

type DatabricksSchema struct {
	// Properties of Databricks
	Properties *DatabricksProperties
}

// Datastore - Azure Resource Manager resource envelope.
type Datastore struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties DatastorePropertiesClassification

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

// DatastoreCredentials - Base definition for datastore credentials.
type DatastoreCredentials struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialsType *CredentialsType
}

// GetDatastoreCredentials implements the DatastoreCredentialsClassification interface for type DatastoreCredentials.
func (d *DatastoreCredentials) GetDatastoreCredentials() *DatastoreCredentials { return d }

// DatastoreProperties - Base definition for datastore contents configuration.
type DatastoreProperties struct {
	// REQUIRED; [Required] Account credentials.
	Credentials DatastoreCredentialsClassification

	// REQUIRED; [Required] Storage type backing the datastore.
	DatastoreType *DatastoreType

	// The asset description text.
	Description *string

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Readonly property to indicate if datastore is the workspace default datastore
	IsDefault *bool
}

// GetDatastoreProperties implements the DatastorePropertiesClassification interface for type DatastoreProperties.
func (d *DatastoreProperties) GetDatastoreProperties() *DatastoreProperties { return d }

// DatastoreResourceArmPaginatedResult - A paginated list of Datastore entities.
type DatastoreResourceArmPaginatedResult struct {
	// The link to the next page of Datastore objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type Datastore.
	Value []*Datastore
}

// DatastoreSecrets - Base definition for datastore secrets.
type DatastoreSecrets struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	SecretsType *SecretsType
}

// GetDatastoreSecrets implements the DatastoreSecretsClassification interface for type DatastoreSecrets.
func (d *DatastoreSecrets) GetDatastoreSecrets() *DatastoreSecrets { return d }

type DefaultScaleSettings struct {
	// REQUIRED; [Required] Type of deployment scaling algorithm
	ScaleType *ScaleType
}

// GetOnlineScaleSettings implements the OnlineScaleSettingsClassification interface for type DefaultScaleSettings.
func (d *DefaultScaleSettings) GetOnlineScaleSettings() *OnlineScaleSettings {
	return &OnlineScaleSettings{
		ScaleType: d.ScaleType,
	}
}

type DeploymentLogs struct {
	// The retrieved online deployment logs.
	Content *string
}

type DeploymentLogsRequest struct {
	// The type of container to retrieve logs from.
	ContainerType *ContainerType

	// The maximum number of lines to tail.
	Tail *int32
}

type DeploymentResourceConfiguration struct {
	// Optional number of instances or nodes used by the compute target.
	InstanceCount *int32

	// Optional type of VM used as supported by the compute target.
	InstanceType *string

	// Additional properties bag.
	Properties map[string]any
}

// DestinationAsset - Publishing destination registry asset information
type DestinationAsset struct {
	// Destination asset name
	DestinationName *string

	// Destination asset version
	DestinationVersion *string

	// Destination registry name
	RegistryName *string
}

type DiagnoseRequestProperties struct {
	// Setting for diagnosing dependent application insights
	ApplicationInsights map[string]any

	// Setting for diagnosing dependent container registry
	ContainerRegistry map[string]any

	// Setting for diagnosing dns resolution
	DNSResolution map[string]any

	// Setting for diagnosing dependent key vault
	KeyVault map[string]any

	// Setting for diagnosing network security group
	Nsg map[string]any

	// Setting for diagnosing unclassified category of problems
	Others map[string]any

	// Setting for diagnosing resource lock
	ResourceLock map[string]any

	// Setting for diagnosing dependent storage account
	StorageAccount map[string]any

	// Setting for diagnosing user defined routing
	Udr map[string]any
}

type DiagnoseResponseResult struct {
	Value *DiagnoseResponseResultValue
}

type DiagnoseResponseResultValue struct {
	ApplicationInsightsResults []*DiagnoseResult
	ContainerRegistryResults   []*DiagnoseResult
	DNSResolutionResults       []*DiagnoseResult
	KeyVaultResults            []*DiagnoseResult
	NetworkSecurityRuleResults []*DiagnoseResult
	OtherResults               []*DiagnoseResult
	ResourceLockResults        []*DiagnoseResult
	StorageAccountResults      []*DiagnoseResult
	UserDefinedRouteResults    []*DiagnoseResult
}

// DiagnoseResult - Result of Diagnose
type DiagnoseResult struct {
	// READ-ONLY; Code for workspace setup error
	Code *string

	// READ-ONLY; Level of workspace setup error
	Level *DiagnoseResultLevel

	// READ-ONLY; Message of workspace setup error
	Message *string
}

// DiagnoseWorkspaceParameters - Parameters to diagnose a workspace
type DiagnoseWorkspaceParameters struct {
	// Value of Parameters
	Value *DiagnoseRequestProperties
}

// DistributionConfiguration - Base definition for job distribution configuration.
type DistributionConfiguration struct {
	// REQUIRED; [Required] Specifies the type of distribution framework.
	DistributionType *DistributionType
}

// GetDistributionConfiguration implements the DistributionConfigurationClassification interface for type DistributionConfiguration.
func (d *DistributionConfiguration) GetDistributionConfiguration() *DistributionConfiguration {
	return d
}

// Docker container configuration
type Docker struct {
	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
	AdditionalProperties map[string]any

	// Indicate whether container shall run in privileged or non-privileged mode.
	Privileged *bool
}

// DockerCredential - Credential for docker with username and password
type DockerCredential struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialType *DataReferenceCredentialType

	// DockerCredential user password
	Password *string

	// DockerCredential user name
	UserName *string
}

// GetDataReferenceCredential implements the DataReferenceCredentialClassification interface for type DockerCredential.
func (d *DockerCredential) GetDataReferenceCredential() *DataReferenceCredential {
	return &DataReferenceCredential{
		CredentialType: d.CredentialType,
	}
}

// EarlyTerminationPolicy - Early termination policies enable canceling poor-performing runs before they complete
type EarlyTerminationPolicy struct {
	// REQUIRED; [Required] Name of policy configuration
	PolicyType *EarlyTerminationPolicyType

	// Number of intervals by which to delay the first evaluation.
	DelayEvaluation *int32

	// Interval (number of runs) between policy evaluations.
	EvaluationInterval *int32
}

// GetEarlyTerminationPolicy implements the EarlyTerminationPolicyClassification interface for type EarlyTerminationPolicy.
func (e *EarlyTerminationPolicy) GetEarlyTerminationPolicy() *EarlyTerminationPolicy { return e }

type EncryptionKeyVaultProperties struct {
	// REQUIRED; Key vault uri to access the encryption key.
	KeyIdentifier *string

	// REQUIRED; The ArmId of the keyVault where the customer owned encryption key is present.
	KeyVaultArmID *string

	// For future use - The client id of the identity which will be used to access key vault.
	IdentityClientID *string
}

type EncryptionKeyVaultUpdateProperties struct {
	// REQUIRED
	KeyIdentifier *string
}

type EncryptionProperty struct {
	// REQUIRED; Customer Key vault properties.
	KeyVaultProperties *EncryptionKeyVaultProperties

	// REQUIRED; Indicates whether or not the encryption is enabled for the workspace.
	Status *EncryptionStatus

	// The identity that will be used to access the key vault for encryption at rest.
	Identity *IdentityForCmk
}

type EncryptionUpdateProperties struct {
	// REQUIRED
	KeyVaultProperties *EncryptionKeyVaultUpdateProperties
}

// Endpoint - Describes the endpoint configuration for the container
type Endpoint struct {
	// Host IP over which the application is exposed from the container
	HostIP *string

	// Name of the Endpoint
	Name *string

	// Protocol over which communication will happen over this endpoint
	Protocol *Protocol

	// Port over which the application is exposed from container.
	Published *int32

	// Application port inside the container.
	Target *int32
}

// EndpointAuthKeys - Keys for endpoint authentication.
type EndpointAuthKeys struct {
	// The primary key.
	PrimaryKey *string

	// The secondary key.
	SecondaryKey *string
}

// EndpointAuthToken - Service Token
type EndpointAuthToken struct {
	// Access token for endpoint authentication.
	AccessToken *string

	// Access token expiry time (UTC).
	ExpiryTimeUTC *int64

	// Refresh access token after time (UTC).
	RefreshAfterTimeUTC *int64

	// Access token type.
	TokenType *string
}

// EndpointDeploymentPropertiesBase - Base definition for endpoint deployment.
type EndpointDeploymentPropertiesBase struct {
	// Code configuration for the endpoint deployment.
	CodeConfiguration *CodeConfiguration

	// Description of the endpoint deployment.
	Description *string

	// ARM resource ID or AssetId of the environment specification for the endpoint deployment.
	EnvironmentID *string

	// Environment variables configuration for the deployment.
	EnvironmentVariables map[string]*string

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string
}

// EndpointPropertiesBase - Inference Endpoint base definition
type EndpointPropertiesBase struct {
	// REQUIRED; [Required] Use 'Key' for key based authentication and 'AMLToken' for Azure Machine Learning token-based authentication.
	// 'Key' doesn't expire but 'AMLToken' does.
	AuthMode *EndpointAuthMode

	// Description of the inference endpoint.
	Description *string

	// EndpointAuthKeys to set initially on an Endpoint. This property will always be returned as null. AuthKey values must be
	// retrieved using the ListKeys API.
	Keys *EndpointAuthKeys

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string

	// READ-ONLY; Endpoint URI.
	ScoringURI *string

	// READ-ONLY; Endpoint Swagger URI.
	SwaggerURI *string
}

type EndpointScheduleAction struct {
	// REQUIRED; [Required] Specifies the action type of the schedule
	ActionType *ScheduleActionType

	// REQUIRED; [Required] Defines Schedule action definition details.
	EndpointInvocationDefinition any
}

// GetScheduleActionBase implements the ScheduleActionBaseClassification interface for type EndpointScheduleAction.
func (e *EndpointScheduleAction) GetScheduleActionBase() *ScheduleActionBase {
	return &ScheduleActionBase{
		ActionType: e.ActionType,
	}
}

// EnvironmentContainer - Azure Resource Manager resource envelope.
type EnvironmentContainer struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *EnvironmentContainerProperties

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

// EnvironmentContainerProperties - Container for environment specification versions.
type EnvironmentContainerProperties struct {
	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string

	// READ-ONLY; Provisioning state for the environment container.
	ProvisioningState *AssetProvisioningState
}

// EnvironmentContainerResourceArmPaginatedResult - A paginated list of EnvironmentContainer entities.
type EnvironmentContainerResourceArmPaginatedResult struct {
	// The link to the next page of EnvironmentContainer objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type EnvironmentContainer.
	Value []*EnvironmentContainer
}

// EnvironmentVariable - Environment Variables for the container
type EnvironmentVariable struct {
	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
	AdditionalProperties map[string]any

	// Type of the Environment Variable. Possible values are: local - For local variable
	Type *EnvironmentVariableType

	// Value of the Environment variable
	Value *string
}

// EnvironmentVersion - Azure Resource Manager resource envelope.
type EnvironmentVersion struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *EnvironmentVersionProperties

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

// EnvironmentVersionProperties - Environment version details.
type EnvironmentVersionProperties struct {
	// Defines if image needs to be rebuilt based on base image changes.
	AutoRebuild *AutoRebuildSetting

	// Configuration settings for Docker build context.
	Build *BuildContext

	// Standard configuration file used by Conda that lets you install any kind of package, including Python, R, and C/C++ packages.
	CondaFile *string

	// The asset description text.
	Description *string

	// Name of the image that will be used for the environment.
	Image *string

	// Defines configuration specific to inference.
	InferenceConfig *InferenceContainerProperties

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The OS type of the environment.
	OSType *OperatingSystemType

	// The asset property dictionary.
	Properties map[string]*string

	// Stage in the environment lifecycle assigned to this environment
	Stage *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Environment type is either user managed or curated by the Azure ML service
	EnvironmentType *EnvironmentType

	// READ-ONLY; Provisioning state for the environment version.
	ProvisioningState *AssetProvisioningState
}

// EnvironmentVersionResourceArmPaginatedResult - A paginated list of EnvironmentVersion entities.
type EnvironmentVersionResourceArmPaginatedResult struct {
	// The link to the next page of EnvironmentVersion objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type EnvironmentVersion.
	Value []*EnvironmentVersion
}

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

// ErrorResponse - Common error response for all Azure Resource Manager APIs to return error details for failed operations.
// (This also follows the OData error response format.).
type ErrorResponse struct {
	// The error object.
	Error *ErrorDetail
}

// EstimatedVMPrice - The estimated price info for using a VM of a particular OS type, tier, etc.
type EstimatedVMPrice struct {
	// REQUIRED; Operating system type used by the VM.
	OSType *VMPriceOSType

	// REQUIRED; The price charged for using the VM.
	RetailPrice *float64

	// REQUIRED; The type of the VM.
	VMTier *VMTier
}

// EstimatedVMPrices - The estimated price info for using a VM.
type EstimatedVMPrices struct {
	// REQUIRED; Three lettered code specifying the currency of the VM price. Example: USD
	BillingCurrency *BillingCurrency

	// REQUIRED; The unit of time measurement for the specified VM price. Example: OneHour
	UnitOfMeasure *UnitOfMeasure

	// REQUIRED; The list of estimated prices for using a VM of a particular OS type, tier, etc.
	Values []*EstimatedVMPrice
}

type ExternalFQDNResponse struct {
	Value []*FQDNEndpoints
}

type FQDNEndpoint struct {
	DomainName      *string
	EndpointDetails []*FQDNEndpointDetail
}

type FQDNEndpointDetail struct {
	Port *int32
}

type FQDNEndpoints struct {
	Properties *FQDNEndpointsProperties
}

type FQDNEndpointsProperties struct {
	Category  *string
	Endpoints []*FQDNEndpoint
}

// Feature - Azure Resource Manager resource envelope.
type Feature struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *FeatureProperties

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

type FeatureAttributionDriftMonitoringSignal struct {
	// REQUIRED; [Required] The settings for computing feature importance.
	FeatureImportanceSettings *FeatureImportanceSettings

	// REQUIRED; [Required] A list of metrics to calculate and their associated thresholds.
	MetricThreshold *FeatureAttributionMetricThreshold

	// REQUIRED; [Required] The data which drift will be calculated for.
	ProductionData []MonitoringInputDataBaseClassification

	// REQUIRED; [Required] The data to calculate drift against.
	ReferenceData MonitoringInputDataBaseClassification

	// REQUIRED; [Required] Specifies the type of signal to monitor.
	SignalType *MonitoringSignalType

	// A dictionary that maps feature names to their respective data types.
	FeatureDataTypeOverride map[string]*MonitoringFeatureDataType

	// The current notification mode for this signal.
	NotificationTypes []*MonitoringNotificationType

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string
}

// GetMonitoringSignalBase implements the MonitoringSignalBaseClassification interface for type FeatureAttributionDriftMonitoringSignal.
func (f *FeatureAttributionDriftMonitoringSignal) GetMonitoringSignalBase() *MonitoringSignalBase {
	return &MonitoringSignalBase{
		NotificationTypes: f.NotificationTypes,
		Properties:        f.Properties,
		SignalType:        f.SignalType,
	}
}

type FeatureAttributionMetricThreshold struct {
	// REQUIRED; [Required] The feature attribution metric to calculate.
	Metric *FeatureAttributionMetric

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

type FeatureImportanceSettings struct {
	// The mode of operation for computing feature importance.
	Mode *FeatureImportanceMode

	// The name of the target column within the input data asset.
	TargetColumn *string
}

// FeatureProperties - DTO object representing feature
type FeatureProperties struct {
	// Specifies type
	DataType *FeatureDataType

	// The asset description text.
	Description *string

	// Specifies name
	FeatureName *string

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string
}

// FeatureResourceArmPaginatedResult - A paginated list of Feature entities.
type FeatureResourceArmPaginatedResult struct {
	// The link to the next page of Feature objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type Feature.
	Value []*Feature
}

// FeatureStoreSettings - Settings for feature store type workspace.
type FeatureStoreSettings struct {
	// Compute runtime config for feature store type workspace.
	ComputeRuntime             *ComputeRuntimeDto
	OfflineStoreConnectionName *string
	OnlineStoreConnectionName  *string
}

type FeatureSubset struct {
	// REQUIRED; [Required] The list of features to include.
	Features []*string

	// REQUIRED; [Required] Specifies the feature filter to leverage when selecting features to calculate metrics over.
	FilterType *MonitoringFeatureFilterType
}

// GetMonitoringFeatureFilterBase implements the MonitoringFeatureFilterBaseClassification interface for type FeatureSubset.
func (f *FeatureSubset) GetMonitoringFeatureFilterBase() *MonitoringFeatureFilterBase {
	return &MonitoringFeatureFilterBase{
		FilterType: f.FilterType,
	}
}

// FeatureWindow - Specifies the feature window
type FeatureWindow struct {
	// Specifies the feature window end time
	FeatureWindowEnd *time.Time

	// Specifies the feature window start time
	FeatureWindowStart *time.Time
}

// FeaturesetContainer - Azure Resource Manager resource envelope.
type FeaturesetContainer struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *FeaturesetContainerProperties

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

// FeaturesetContainerProperties - DTO object representing feature set
type FeaturesetContainerProperties struct {
	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string

	// READ-ONLY; Provisioning state for the featureset container.
	ProvisioningState *AssetProvisioningState
}

// FeaturesetContainerResourceArmPaginatedResult - A paginated list of FeaturesetContainer entities.
type FeaturesetContainerResourceArmPaginatedResult struct {
	// The link to the next page of FeaturesetContainer objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type FeaturesetContainer.
	Value []*FeaturesetContainer
}

// FeaturesetSpecification - DTO object representing specification
type FeaturesetSpecification struct {
	// Specifies the spec path
	Path *string
}

// FeaturesetVersion - Azure Resource Manager resource envelope.
type FeaturesetVersion struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *FeaturesetVersionProperties

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

// FeaturesetVersionBackfillRequest - Request payload for creating a backfill request for a given feature set version
type FeaturesetVersionBackfillRequest struct {
	// Specified the data availability status that you want to backfill
	DataAvailabilityStatus []*DataAvailabilityStatus

	// Specifies description
	Description *string

	// Specifies description
	DisplayName *string

	// Specifies the backfill feature window to be materialized
	FeatureWindow *FeatureWindow

	// Specify the jobId to retry the failed materialization
	JobID *string

	// Specifies the properties
	Properties map[string]*string

	// Specifies the compute resource settings
	Resource *MaterializationComputeResource

	// Specifies the spark compute settings
	SparkConfiguration map[string]*string

	// Specifies the tags
	Tags map[string]*string
}

// FeaturesetVersionBackfillResponse - Response payload for creating a backfill request for a given feature set version
type FeaturesetVersionBackfillResponse struct {
	// List of jobs submitted as part of the backfill request.
	JobIDs []*string
}

// FeaturesetVersionProperties - DTO object representing feature set version
type FeaturesetVersionProperties struct {
	// The asset description text.
	Description *string

	// Specifies list of entities
	Entities []*string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// Specifies the materialization settings
	MaterializationSettings *MaterializationSettings

	// The asset property dictionary.
	Properties map[string]*string

	// Specifies the feature spec details
	Specification *FeaturesetSpecification

	// Specifies the asset stage
	Stage *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Provisioning state for the featureset version container.
	ProvisioningState *AssetProvisioningState
}

// FeaturesetVersionResourceArmPaginatedResult - A paginated list of FeaturesetVersion entities.
type FeaturesetVersionResourceArmPaginatedResult struct {
	// The link to the next page of FeaturesetVersion objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type FeaturesetVersion.
	Value []*FeaturesetVersion
}

// FeaturestoreEntityContainer - Azure Resource Manager resource envelope.
type FeaturestoreEntityContainer struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *FeaturestoreEntityContainerProperties

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

// FeaturestoreEntityContainerProperties - DTO object representing feature entity
type FeaturestoreEntityContainerProperties struct {
	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string

	// READ-ONLY; Provisioning state for the featurestore entity container.
	ProvisioningState *AssetProvisioningState
}

// FeaturestoreEntityContainerResourceArmPaginatedResult - A paginated list of FeaturestoreEntityContainer entities.
type FeaturestoreEntityContainerResourceArmPaginatedResult struct {
	// The link to the next page of FeaturestoreEntityContainer objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type FeaturestoreEntityContainer.
	Value []*FeaturestoreEntityContainer
}

// FeaturestoreEntityVersion - Azure Resource Manager resource envelope.
type FeaturestoreEntityVersion struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *FeaturestoreEntityVersionProperties

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

// FeaturestoreEntityVersionProperties - DTO object representing feature entity version
type FeaturestoreEntityVersionProperties struct {
	// The asset description text.
	Description *string

	// Specifies index columns
	IndexColumns []*IndexColumn

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Specifies the asset stage
	Stage *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Provisioning state for the featurestore entity version.
	ProvisioningState *AssetProvisioningState
}

// FeaturestoreEntityVersionResourceArmPaginatedResult - A paginated list of FeaturestoreEntityVersion entities.
type FeaturestoreEntityVersionResourceArmPaginatedResult struct {
	// The link to the next page of FeaturestoreEntityVersion objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type FeaturestoreEntityVersion.
	Value []*FeaturestoreEntityVersion
}

// FeaturizationSettings - Featurization Configuration.
type FeaturizationSettings struct {
	// Dataset language, useful for the text data.
	DatasetLanguage *string
}

// FixedInputData - Fixed input data definition.
type FixedInputData struct {
	// REQUIRED; [Required] Specifies the type of signal to monitor.
	InputDataType *MonitoringInputDataType

	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Mapping of column names to special uses.
	Columns map[string]*string

	// The context metadata of the data source.
	DataContext *string
}

// GetMonitoringInputDataBase implements the MonitoringInputDataBaseClassification interface for type FixedInputData.
func (f *FixedInputData) GetMonitoringInputDataBase() *MonitoringInputDataBase {
	return &MonitoringInputDataBase{
		Columns:       f.Columns,
		DataContext:   f.DataContext,
		InputDataType: f.InputDataType,
		JobInputType:  f.JobInputType,
		URI:           f.URI,
	}
}

type FlavorData struct {
	// Model flavor-specific data.
	Data map[string]*string
}

// ForecastHorizon - The desired maximum forecast horizon in units of time-series frequency.
type ForecastHorizon struct {
	// REQUIRED; [Required] Set forecast horizon value selection mode.
	Mode *ForecastHorizonMode
}

// GetForecastHorizon implements the ForecastHorizonClassification interface for type ForecastHorizon.
func (f *ForecastHorizon) GetForecastHorizon() *ForecastHorizon { return f }

// Forecasting task in AutoML Table vertical.
type Forecasting struct {
	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Columns to use for CVSplit data.
	CvSplitColumnNames []*string

	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *TableVerticalFeaturizationSettings

	// Forecasting task specific inputs.
	ForecastingSettings *ForecastingSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *TableVerticalLimitSettings

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Number of cross validation folds to be applied on training dataset when validation dataset is not provided.
	NCrossValidations NCrossValidationsClassification

	// Primary metric for forecasting task.
	PrimaryMetric *ForecastingPrimaryMetrics

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Test data input.
	TestData *MLTableJobInput

	// The fraction of test dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied when
	// validation dataset is not provided.
	TestDataSize *float64

	// Inputs for training phase for an AutoML Job.
	TrainingSettings *ForecastingTrainingSettings

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64

	// The name of the sample weight column. Automated ML supports a weighted column as an input, causing rows in the data to
	// be weighted up or down.
	WeightColumnName *string
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type Forecasting.
func (f *Forecasting) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     f.LogVerbosity,
		TargetColumnName: f.TargetColumnName,
		TaskType:         f.TaskType,
		TrainingData:     f.TrainingData,
	}
}

// ForecastingSettings - Forecasting specific parameters.
type ForecastingSettings struct {
	// Country or region for holidays for forecasting tasks. These should be ISO 3166 two-letter country/region codes, for example
	// 'US' or 'GB'.
	CountryOrRegionForHolidays *string

	// Number of periods between the origin time of one CV fold and the next fold. For example, if CVStepSize = 3 for daily data,
	// the origin time for each fold will be three days apart.
	CvStepSize *int32

	// Flag for generating lags for the numeric features with 'auto' or null.
	FeatureLags *FeatureLags

	// The desired maximum forecast horizon in units of time-series frequency.
	ForecastHorizon ForecastHorizonClassification

	// When forecasting, this parameter represents the period with which the forecast is desired, for example daily, weekly, yearly,
	// etc. The forecast frequency is dataset frequency by default.
	Frequency *string

	// Set time series seasonality as an integer multiple of the series frequency. If seasonality is set to 'auto', it will be
	// inferred.
	Seasonality SeasonalityClassification

	// The parameter defining how if AutoML should handle short time series.
	ShortSeriesHandlingConfig *ShortSeriesHandlingConfiguration

	// The function to be used to aggregate the time series target column to conform to a user specified frequency. If the TargetAggregateFunction
	// is set i.e. not 'None', but the freq parameter is not set,
	// the error is raised. The possible target aggregation functions are: "sum", "max", "min" and "mean".
	TargetAggregateFunction *TargetAggregationFunction

	// The number of past periods to lag from the target column.
	TargetLags TargetLagsClassification

	// The number of past periods used to create a rolling window average of the target column.
	TargetRollingWindowSize TargetRollingWindowSizeClassification

	// The name of the time column. This parameter is required when forecasting to specify the datetime column in the input data
	// used for building the time series and inferring its frequency.
	TimeColumnName *string

	// The names of columns used to group a timeseries. It can be used to create multiple series. If grain is not defined, the
	// data set is assumed to be one time-series. This parameter is used with task type
	// forecasting.
	TimeSeriesIDColumnNames []*string

	// Configure STL Decomposition of the time-series target column.
	UseStl *UseStl
}

// ForecastingTrainingSettings - Forecasting Training related configuration.
type ForecastingTrainingSettings struct {
	// Allowed models for forecasting task.
	AllowedTrainingAlgorithms []*ForecastingModels

	// Blocked models for forecasting task.
	BlockedTrainingAlgorithms []*ForecastingModels

	// Enable recommendation of DNN models.
	EnableDnnTraining *bool

	// Flag to turn on explainability on best model.
	EnableModelExplainability *bool

	// Flag for enabling onnx compatible models.
	EnableOnnxCompatibleModels *bool

	// Enable stack ensemble run.
	EnableStackEnsemble *bool

	// Enable voting ensemble run.
	EnableVoteEnsemble *bool

	// During VotingEnsemble and StackEnsemble model generation, multiple fitted models from the previous child runs are downloaded.
	// Configure this parameter with a higher value than 300 secs, if more time
	// is needed.
	EnsembleModelDownloadTimeout *string

	// Stack ensemble settings for stack ensemble run.
	StackEnsembleSettings *StackEnsembleSettings
}

// FqdnOutboundRule - FQDN Outbound Rule for the managed network of a machine learning workspace.
type FqdnOutboundRule struct {
	// REQUIRED; Type of a managed network Outbound Rule of a machine learning workspace.
	Type *RuleType

	// Category of a managed network Outbound Rule of a machine learning workspace.
	Category    *RuleCategory
	Destination *string

	// Type of a managed network Outbound Rule of a machine learning workspace.
	Status *RuleStatus
}

// GetOutboundRule implements the OutboundRuleClassification interface for type FqdnOutboundRule.
func (f *FqdnOutboundRule) GetOutboundRule() *OutboundRule {
	return &OutboundRule{
		Category: f.Category,
		Status:   f.Status,
		Type:     f.Type,
	}
}

type GetBlobReferenceForConsumptionDto struct {
	// Blob uri, example: https://blob.windows.core.net/Container/Path
	BlobURI *string

	// Credential info to access storage account
	Credential DataReferenceCredentialClassification

	// The ARM id of the storage account
	StorageAccountArmID *string
}

// GetBlobReferenceSASRequestDto - BlobReferenceSASRequest for getBlobReferenceSAS API
type GetBlobReferenceSASRequestDto struct {
	// Id of the asset to be accessed
	AssetID *string

	// Blob uri of the asset to be accessed
	BlobURI *string
}

// GetBlobReferenceSASResponseDto - BlobReferenceSASResponse for getBlobReferenceSAS API
type GetBlobReferenceSASResponseDto struct {
	// Blob reference for consumption details
	BlobReferenceForConsumption *GetBlobReferenceForConsumptionDto
}

// GridSamplingAlgorithm - Defines a Sampling Algorithm that exhaustively generates every value combination in the space
type GridSamplingAlgorithm struct {
	// REQUIRED; [Required] The algorithm used for generating hyperparameter values, along with configuration properties
	SamplingAlgorithmType *SamplingAlgorithmType
}

// GetSamplingAlgorithm implements the SamplingAlgorithmClassification interface for type GridSamplingAlgorithm.
func (g *GridSamplingAlgorithm) GetSamplingAlgorithm() *SamplingAlgorithm {
	return &SamplingAlgorithm{
		SamplingAlgorithmType: g.SamplingAlgorithmType,
	}
}

// HDInsight - A HDInsight compute.
type HDInsight struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// HDInsight compute properties
	Properties *HDInsightProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type HDInsight.
func (h *HDInsight) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    h.ComputeLocation,
		ComputeType:        h.ComputeType,
		CreatedOn:          h.CreatedOn,
		Description:        h.Description,
		DisableLocalAuth:   h.DisableLocalAuth,
		IsAttachedCompute:  h.IsAttachedCompute,
		ModifiedOn:         h.ModifiedOn,
		ProvisioningErrors: h.ProvisioningErrors,
		ProvisioningState:  h.ProvisioningState,
		ResourceID:         h.ResourceID,
	}
}

// HDInsightProperties - HDInsight compute properties
type HDInsightProperties struct {
	// Public IP address of the master node of the cluster.
	Address *string

	// Admin credentials for master node of the cluster
	AdministratorAccount *VirtualMachineSSHCredentials

	// Port open for ssh connections on the master node of the cluster.
	SSHPort *int32
}

type HDInsightSchema struct {
	// HDInsight compute properties
	Properties *HDInsightProperties
}

// IDAssetReference - Reference to an asset via its ARM resource ID.
type IDAssetReference struct {
	// REQUIRED; [Required] ARM resource ID of the asset.
	AssetID *string

	// REQUIRED; [Required] Specifies the type of asset reference.
	ReferenceType *ReferenceType
}

// GetAssetReferenceBase implements the AssetReferenceBaseClassification interface for type IDAssetReference.
func (i *IDAssetReference) GetAssetReferenceBase() *AssetReferenceBase {
	return &AssetReferenceBase{
		ReferenceType: i.ReferenceType,
	}
}

// IdentityConfiguration - Base definition for identity configuration.
type IdentityConfiguration struct {
	// REQUIRED; [Required] Specifies the type of identity framework.
	IdentityType *IdentityConfigurationType
}

// GetIdentityConfiguration implements the IdentityConfigurationClassification interface for type IdentityConfiguration.
func (i *IdentityConfiguration) GetIdentityConfiguration() *IdentityConfiguration { return i }

// IdentityForCmk - Identity that will be used to access key vault for encryption at rest
type IdentityForCmk struct {
	// The ArmId of the user assigned identity that will be used to access the customer managed key vault
	UserAssignedIdentity *string
}

// IdleShutdownSetting - Stops compute instance after user defined period of inactivity.
type IdleShutdownSetting struct {
	// Time is defined in ISO8601 format. Minimum is 15 min, maximum is 3 days.
	IdleTimeBeforeShutdown *string
}

// Image - Describes the Image Specifications
type Image struct {
	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
	AdditionalProperties map[string]any

	// Image reference
	Reference *string

	// Type of the image. Possible values are: docker - For docker images. azureml - For AzureML images
	Type *ImageType
}

// ImageClassification - Image Classification. Multi-class image classification is used when an image is classified with only
// a single label from a set of classes - e.g. each image is classified as either an image of a 'cat'
// or a 'dog' or a 'duck'.
type ImageClassification struct {
	// REQUIRED; [Required] Limit settings for the AutoML job.
	LimitSettings *ImageLimitSettings

	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Settings used for training the model.
	ModelSettings *ImageModelSettingsClassification

	// Primary metric to optimize for this task.
	PrimaryMetric *ClassificationPrimaryMetrics

	// Search space for sampling different combinations of models and their hyperparameters.
	SearchSpace []*ImageModelDistributionSettingsClassification

	// Model sweeping and hyperparameter sweeping related settings.
	SweepSettings *ImageSweepSettings

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type ImageClassification.
func (i *ImageClassification) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     i.LogVerbosity,
		TargetColumnName: i.TargetColumnName,
		TaskType:         i.TaskType,
		TrainingData:     i.TrainingData,
	}
}

type ImageClassificationBase struct {
	// REQUIRED; [Required] Limit settings for the AutoML job.
	LimitSettings *ImageLimitSettings

	// Settings used for training the model.
	ModelSettings *ImageModelSettingsClassification

	// Search space for sampling different combinations of models and their hyperparameters.
	SearchSpace []*ImageModelDistributionSettingsClassification

	// Model sweeping and hyperparameter sweeping related settings.
	SweepSettings *ImageSweepSettings

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64
}

// ImageClassificationMultilabel - Image Classification Multilabel. Multi-label image classification is used when an image
// could have one or more labels from a set of labels - e.g. an image could be labeled with both 'cat' and 'dog'.
type ImageClassificationMultilabel struct {
	// REQUIRED; [Required] Limit settings for the AutoML job.
	LimitSettings *ImageLimitSettings

	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Settings used for training the model.
	ModelSettings *ImageModelSettingsClassification

	// Primary metric to optimize for this task.
	PrimaryMetric *ClassificationMultilabelPrimaryMetrics

	// Search space for sampling different combinations of models and their hyperparameters.
	SearchSpace []*ImageModelDistributionSettingsClassification

	// Model sweeping and hyperparameter sweeping related settings.
	SweepSettings *ImageSweepSettings

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type ImageClassificationMultilabel.
func (i *ImageClassificationMultilabel) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     i.LogVerbosity,
		TargetColumnName: i.TargetColumnName,
		TaskType:         i.TaskType,
		TrainingData:     i.TrainingData,
	}
}

// ImageInstanceSegmentation - Image Instance Segmentation. Instance segmentation is used to identify objects in an image
// at the pixel level, drawing a polygon around each object in the image.
type ImageInstanceSegmentation struct {
	// REQUIRED; [Required] Limit settings for the AutoML job.
	LimitSettings *ImageLimitSettings

	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Settings used for training the model.
	ModelSettings *ImageModelSettingsObjectDetection

	// Primary metric to optimize for this task.
	PrimaryMetric *InstanceSegmentationPrimaryMetrics

	// Search space for sampling different combinations of models and their hyperparameters.
	SearchSpace []*ImageModelDistributionSettingsObjectDetection

	// Model sweeping and hyperparameter sweeping related settings.
	SweepSettings *ImageSweepSettings

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type ImageInstanceSegmentation.
func (i *ImageInstanceSegmentation) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     i.LogVerbosity,
		TargetColumnName: i.TargetColumnName,
		TaskType:         i.TaskType,
		TrainingData:     i.TrainingData,
	}
}

// ImageLimitSettings - Limit settings for the AutoML job.
type ImageLimitSettings struct {
	// Maximum number of concurrent AutoML iterations.
	MaxConcurrentTrials *int32

	// Maximum number of AutoML iterations.
	MaxTrials *int32

	// AutoML job timeout.
	Timeout *string
}

// ImageMetadata - Returns metadata about the operating system image for this compute instance.
type ImageMetadata struct {
	// Specifies the current operating system image version this compute instance is running on.
	CurrentImageVersion *string

	// Specifies whether this compute instance is running on the latest operating system image.
	IsLatestOsImageVersion *bool

	// Specifies the latest available operating system image version.
	LatestImageVersion *string
}

// ImageModelDistributionSettings - Distribution expressions to sweep over values of model settings.Some examples are:
// ModelName = "choice('seresnext', 'resnest50')";
// LearningRate = "uniform(0.001, 0.01)";
// LayersToFreeze = "choice(0, 2)";
// All distributions can be specified as distribution_name(min, max) or choice(val1, val2, …, valn) where distribution name
// can be: uniform, quniform, loguniform, etc For more details on how to compose
// distribution expressions please check the documentation: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters
// For more information on the available settings please visit
// the official documentation: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
type ImageModelDistributionSettings struct {
	// Enable AMSGrad when optimizer is 'adam' or 'adamw'.
	AmsGradient *string

	// Settings for using Augmentations.
	Augmentations *string

	// Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta1 *string

	// Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta2 *string

	// Whether to use distributer training.
	Distributed *string

	// Enable early stopping logic during training.
	EarlyStopping *string

	// Minimum number of epochs or validation evaluations to wait before primary metric improvement is tracked for early stopping.
	// Must be a positive integer.
	EarlyStoppingDelay *string

	// Minimum number of epochs or validation evaluations with no primary metric improvement before the run is stopped. Must be
	// a positive integer.
	EarlyStoppingPatience *string

	// Enable normalization when exporting ONNX model.
	EnableOnnxNormalization *string

	// Frequency to evaluate validation dataset to get metric scores. Must be a positive integer.
	EvaluationFrequency *string

	// Gradient accumulation means running a configured number of "GradAccumulationStep" steps without updating the model weights
	// while accumulating the gradients of those steps, and then using the
	// accumulated gradients to compute the weight updates. Must be a positive integer.
	GradientAccumulationStep *string

	// Number of layers to freeze for the model. Must be a positive integer. For instance, passing 2 as value for 'seresnext'
	// means freezing layer0 and layer1. For a full list of models supported and details
	// on layer freeze, please see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	LayersToFreeze *string

	// Initial learning rate. Must be a float in the range [0, 1].
	LearningRate *string

	// Type of learning rate scheduler. Must be 'warmup_cosine' or 'step'.
	LearningRateScheduler *string

	// Name of the model to use for training. For more information on the available models please visit the official documentation:
	// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	ModelName *string

	// Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
	Momentum *string

	// Enable nesterov when optimizer is 'sgd'.
	Nesterov *string

	// Number of training epochs. Must be a positive integer.
	NumberOfEpochs *string

	// Number of data loader workers. Must be a non-negative integer.
	NumberOfWorkers *string

	// Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
	Optimizer *string

	// Random seed to be used when using deterministic training.
	RandomSeed *string

	// Value of gamma when learning rate scheduler is 'step'. Must be a float in the range [0, 1].
	StepLRGamma *string

	// Value of step size when learning rate scheduler is 'step'. Must be a positive integer.
	StepLRStepSize *string

	// Training batch size. Must be a positive integer.
	TrainingBatchSize *string

	// Validation batch size. Must be a positive integer.
	ValidationBatchSize *string

	// Value of cosine cycle when learning rate scheduler is 'warmup_cosine'. Must be a float in the range [0, 1].
	WarmupCosineLRCycles *string

	// Value of warmup epochs when learning rate scheduler is 'warmup_cosine'. Must be a positive integer.
	WarmupCosineLRWarmupEpochs *string

	// Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be a float in the range[0, 1].
	WeightDecay *string
}

// ImageModelDistributionSettingsClassification - Distribution expressions to sweep over values of model settings.Some examples
// are:
// ModelName = "choice('seresnext', 'resnest50')";
// LearningRate = "uniform(0.001, 0.01)";
// LayersToFreeze = "choice(0, 2)";
// For more details on how to compose distribution expressions please check the documentation: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters
// For more information on
// the available settings please visit the official documentation: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
type ImageModelDistributionSettingsClassification struct {
	// Enable AMSGrad when optimizer is 'adam' or 'adamw'.
	AmsGradient *string

	// Settings for using Augmentations.
	Augmentations *string

	// Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta1 *string

	// Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta2 *string

	// Whether to use distributer training.
	Distributed *string

	// Enable early stopping logic during training.
	EarlyStopping *string

	// Minimum number of epochs or validation evaluations to wait before primary metric improvement is tracked for early stopping.
	// Must be a positive integer.
	EarlyStoppingDelay *string

	// Minimum number of epochs or validation evaluations with no primary metric improvement before the run is stopped. Must be
	// a positive integer.
	EarlyStoppingPatience *string

	// Enable normalization when exporting ONNX model.
	EnableOnnxNormalization *string

	// Frequency to evaluate validation dataset to get metric scores. Must be a positive integer.
	EvaluationFrequency *string

	// Gradient accumulation means running a configured number of "GradAccumulationStep" steps without updating the model weights
	// while accumulating the gradients of those steps, and then using the
	// accumulated gradients to compute the weight updates. Must be a positive integer.
	GradientAccumulationStep *string

	// Number of layers to freeze for the model. Must be a positive integer. For instance, passing 2 as value for 'seresnext'
	// means freezing layer0 and layer1. For a full list of models supported and details
	// on layer freeze, please see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	LayersToFreeze *string

	// Initial learning rate. Must be a float in the range [0, 1].
	LearningRate *string

	// Type of learning rate scheduler. Must be 'warmup_cosine' or 'step'.
	LearningRateScheduler *string

	// Name of the model to use for training. For more information on the available models please visit the official documentation:
	// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	ModelName *string

	// Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
	Momentum *string

	// Enable nesterov when optimizer is 'sgd'.
	Nesterov *string

	// Number of training epochs. Must be a positive integer.
	NumberOfEpochs *string

	// Number of data loader workers. Must be a non-negative integer.
	NumberOfWorkers *string

	// Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
	Optimizer *string

	// Random seed to be used when using deterministic training.
	RandomSeed *string

	// Value of gamma when learning rate scheduler is 'step'. Must be a float in the range [0, 1].
	StepLRGamma *string

	// Value of step size when learning rate scheduler is 'step'. Must be a positive integer.
	StepLRStepSize *string

	// Training batch size. Must be a positive integer.
	TrainingBatchSize *string

	// Image crop size that is input to the neural network for the training dataset. Must be a positive integer.
	TrainingCropSize *string

	// Validation batch size. Must be a positive integer.
	ValidationBatchSize *string

	// Image crop size that is input to the neural network for the validation dataset. Must be a positive integer.
	ValidationCropSize *string

	// Image size to which to resize before cropping for validation dataset. Must be a positive integer.
	ValidationResizeSize *string

	// Value of cosine cycle when learning rate scheduler is 'warmup_cosine'. Must be a float in the range [0, 1].
	WarmupCosineLRCycles *string

	// Value of warmup epochs when learning rate scheduler is 'warmup_cosine'. Must be a positive integer.
	WarmupCosineLRWarmupEpochs *string

	// Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be a float in the range[0, 1].
	WeightDecay *string

	// Weighted loss. The accepted values are 0 for no weighted loss. 1 for weighted loss with sqrt.(classweights). 2 for weighted
	// loss with classweights. Must be 0 or 1 or 2.
	WeightedLoss *string
}

// ImageModelDistributionSettingsObjectDetection - Distribution expressions to sweep over values of model settings.Some examples
// are:
// ModelName = "choice('seresnext', 'resnest50')";
// LearningRate = "uniform(0.001, 0.01)";
// LayersToFreeze = "choice(0, 2)";
// For more details on how to compose distribution expressions please check the documentation: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters
// For more information on
// the available settings please visit the official documentation: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
type ImageModelDistributionSettingsObjectDetection struct {
	// Enable AMSGrad when optimizer is 'adam' or 'adamw'.
	AmsGradient *string

	// Settings for using Augmentations.
	Augmentations *string

	// Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta1 *string

	// Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta2 *string

	// Maximum number of detections per image, for all classes. Must be a positive integer. Note: This settings is not supported
	// for the 'yolov5' algorithm.
	BoxDetectionsPerImage *string

	// During inference, only return proposals with a classification score greater than BoxScoreThreshold. Must be a float in
	// the range[0, 1].
	BoxScoreThreshold *string

	// Whether to use distributer training.
	Distributed *string

	// Enable early stopping logic during training.
	EarlyStopping *string

	// Minimum number of epochs or validation evaluations to wait before primary metric improvement is tracked for early stopping.
	// Must be a positive integer.
	EarlyStoppingDelay *string

	// Minimum number of epochs or validation evaluations with no primary metric improvement before the run is stopped. Must be
	// a positive integer.
	EarlyStoppingPatience *string

	// Enable normalization when exporting ONNX model.
	EnableOnnxNormalization *string

	// Frequency to evaluate validation dataset to get metric scores. Must be a positive integer.
	EvaluationFrequency *string

	// Gradient accumulation means running a configured number of "GradAccumulationStep" steps without updating the model weights
	// while accumulating the gradients of those steps, and then using the
	// accumulated gradients to compute the weight updates. Must be a positive integer.
	GradientAccumulationStep *string

	// Image size for train and validation. Must be a positive integer. Note: The training run may get into CUDA OOM if the size
	// is too big. Note: This settings is only supported for the 'yolov5' algorithm.
	ImageSize *string

	// Number of layers to freeze for the model. Must be a positive integer. For instance, passing 2 as value for 'seresnext'
	// means freezing layer0 and layer1. For a full list of models supported and details
	// on layer freeze, please see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	LayersToFreeze *string

	// Initial learning rate. Must be a float in the range [0, 1].
	LearningRate *string

	// Type of learning rate scheduler. Must be 'warmup_cosine' or 'step'.
	LearningRateScheduler *string

	// Maximum size of the image to be rescaled before feeding it to the backbone. Must be a positive integer. Note: training
	// run may get into CUDA OOM if the size is too big. Note: This settings is not
	// supported for the 'yolov5' algorithm.
	MaxSize *string

	// Minimum size of the image to be rescaled before feeding it to the backbone. Must be a positive integer. Note: training
	// run may get into CUDA OOM if the size is too big. Note: This settings is not
	// supported for the 'yolov5' algorithm.
	MinSize *string

	// Name of the model to use for training. For more information on the available models please visit the official documentation:
	// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	ModelName *string

	// Model size. Must be 'small', 'medium', 'large', or 'xlarge'. Note: training run may get into CUDA OOM if the model size
	// is too big. Note: This settings is only supported for the 'yolov5' algorithm.
	ModelSize *string

	// Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
	Momentum *string

	// Enable multi-scale image by varying image size by +/- 50%. Note: training run may get into CUDA OOM if no sufficient GPU
	// memory. Note: This settings is only supported for the 'yolov5' algorithm.
	MultiScale *string

	// Enable nesterov when optimizer is 'sgd'.
	Nesterov *string

	// IOU threshold used during inference in NMS post processing. Must be float in the range [0, 1].
	NmsIouThreshold *string

	// Number of training epochs. Must be a positive integer.
	NumberOfEpochs *string

	// Number of data loader workers. Must be a non-negative integer.
	NumberOfWorkers *string

	// Type of optimizer. Must be either 'sgd', 'adam', or 'adamw'.
	Optimizer *string

	// Random seed to be used when using deterministic training.
	RandomSeed *string

	// Value of gamma when learning rate scheduler is 'step'. Must be a float in the range [0, 1].
	StepLRGamma *string

	// Value of step size when learning rate scheduler is 'step'. Must be a positive integer.
	StepLRStepSize *string

	// The grid size to use for tiling each image. Note: TileGridSize must not be None to enable small object detection logic.
	// A string containing two integers in mxn format. Note: This settings is not
	// supported for the 'yolov5' algorithm.
	TileGridSize *string

	// Overlap ratio between adjacent tiles in each dimension. Must be float in the range [0, 1). Note: This settings is not supported
	// for the 'yolov5' algorithm.
	TileOverlapRatio *string

	// The IOU threshold to use to perform NMS while merging predictions from tiles and image. Used in validation/ inference.
	// Must be float in the range [0, 1]. Note: This settings is not supported for the
	// 'yolov5' algorithm. NMS: Non-maximum suppression
	TilePredictionsNmsThreshold *string

	// Training batch size. Must be a positive integer.
	TrainingBatchSize *string

	// Validation batch size. Must be a positive integer.
	ValidationBatchSize *string

	// IOU threshold to use when computing validation metric. Must be float in the range [0, 1].
	ValidationIouThreshold *string

	// Metric computation method to use for validation metrics. Must be 'none', 'coco', 'voc', or 'coco_voc'.
	ValidationMetricType *string

	// Value of cosine cycle when learning rate scheduler is 'warmup_cosine'. Must be a float in the range [0, 1].
	WarmupCosineLRCycles *string

	// Value of warmup epochs when learning rate scheduler is 'warmup_cosine'. Must be a positive integer.
	WarmupCosineLRWarmupEpochs *string

	// Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be a float in the range[0, 1].
	WeightDecay *string
}

// ImageModelSettings - Settings used for training the model. For more information on the available settings please visit
// the official documentation:
// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
type ImageModelSettings struct {
	// Settings for advanced scenarios.
	AdvancedSettings *string

	// Enable AMSGrad when optimizer is 'adam' or 'adamw'.
	AmsGradient *bool

	// Settings for using Augmentations.
	Augmentations *string

	// Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta1 *float32

	// Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta2 *float32

	// Frequency to store model checkpoints. Must be a positive integer.
	CheckpointFrequency *int32

	// The pretrained checkpoint model for incremental training.
	CheckpointModel *MLFlowModelJobInput

	// The id of a previous run that has a pretrained checkpoint for incremental training.
	CheckpointRunID *string

	// Whether to use distributed training.
	Distributed *bool

	// Enable early stopping logic during training.
	EarlyStopping *bool

	// Minimum number of epochs or validation evaluations to wait before primary metric improvement is tracked for early stopping.
	// Must be a positive integer.
	EarlyStoppingDelay *int32

	// Minimum number of epochs or validation evaluations with no primary metric improvement before the run is stopped. Must be
	// a positive integer.
	EarlyStoppingPatience *int32

	// Enable normalization when exporting ONNX model.
	EnableOnnxNormalization *bool

	// Frequency to evaluate validation dataset to get metric scores. Must be a positive integer.
	EvaluationFrequency *int32

	// Gradient accumulation means running a configured number of "GradAccumulationStep" steps without updating the model weights
	// while accumulating the gradients of those steps, and then using the
	// accumulated gradients to compute the weight updates. Must be a positive integer.
	GradientAccumulationStep *int32

	// Number of layers to freeze for the model. Must be a positive integer. For instance, passing 2 as value for 'seresnext'
	// means freezing layer0 and layer1. For a full list of models supported and details
	// on layer freeze, please see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	LayersToFreeze *int32

	// Initial learning rate. Must be a float in the range [0, 1].
	LearningRate *float32

	// Type of learning rate scheduler. Must be 'warmup_cosine' or 'step'.
	LearningRateScheduler *LearningRateScheduler

	// Name of the model to use for training. For more information on the available models please visit the official documentation:
	// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	ModelName *string

	// Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
	Momentum *float32

	// Enable nesterov when optimizer is 'sgd'.
	Nesterov *bool

	// Number of training epochs. Must be a positive integer.
	NumberOfEpochs *int32

	// Number of data loader workers. Must be a non-negative integer.
	NumberOfWorkers *int32

	// Type of optimizer.
	Optimizer *StochasticOptimizer

	// Random seed to be used when using deterministic training.
	RandomSeed *int32

	// Value of gamma when learning rate scheduler is 'step'. Must be a float in the range [0, 1].
	StepLRGamma *float32

	// Value of step size when learning rate scheduler is 'step'. Must be a positive integer.
	StepLRStepSize *int32

	// Training batch size. Must be a positive integer.
	TrainingBatchSize *int32

	// Validation batch size. Must be a positive integer.
	ValidationBatchSize *int32

	// Value of cosine cycle when learning rate scheduler is 'warmup_cosine'. Must be a float in the range [0, 1].
	WarmupCosineLRCycles *float32

	// Value of warmup epochs when learning rate scheduler is 'warmup_cosine'. Must be a positive integer.
	WarmupCosineLRWarmupEpochs *int32

	// Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be a float in the range[0, 1].
	WeightDecay *float32
}

// ImageModelSettingsClassification - Settings used for training the model. For more information on the available settings
// please visit the official documentation:
// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
type ImageModelSettingsClassification struct {
	// Settings for advanced scenarios.
	AdvancedSettings *string

	// Enable AMSGrad when optimizer is 'adam' or 'adamw'.
	AmsGradient *bool

	// Settings for using Augmentations.
	Augmentations *string

	// Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta1 *float32

	// Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta2 *float32

	// Frequency to store model checkpoints. Must be a positive integer.
	CheckpointFrequency *int32

	// The pretrained checkpoint model for incremental training.
	CheckpointModel *MLFlowModelJobInput

	// The id of a previous run that has a pretrained checkpoint for incremental training.
	CheckpointRunID *string

	// Whether to use distributed training.
	Distributed *bool

	// Enable early stopping logic during training.
	EarlyStopping *bool

	// Minimum number of epochs or validation evaluations to wait before primary metric improvement is tracked for early stopping.
	// Must be a positive integer.
	EarlyStoppingDelay *int32

	// Minimum number of epochs or validation evaluations with no primary metric improvement before the run is stopped. Must be
	// a positive integer.
	EarlyStoppingPatience *int32

	// Enable normalization when exporting ONNX model.
	EnableOnnxNormalization *bool

	// Frequency to evaluate validation dataset to get metric scores. Must be a positive integer.
	EvaluationFrequency *int32

	// Gradient accumulation means running a configured number of "GradAccumulationStep" steps without updating the model weights
	// while accumulating the gradients of those steps, and then using the
	// accumulated gradients to compute the weight updates. Must be a positive integer.
	GradientAccumulationStep *int32

	// Number of layers to freeze for the model. Must be a positive integer. For instance, passing 2 as value for 'seresnext'
	// means freezing layer0 and layer1. For a full list of models supported and details
	// on layer freeze, please see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	LayersToFreeze *int32

	// Initial learning rate. Must be a float in the range [0, 1].
	LearningRate *float32

	// Type of learning rate scheduler. Must be 'warmup_cosine' or 'step'.
	LearningRateScheduler *LearningRateScheduler

	// Name of the model to use for training. For more information on the available models please visit the official documentation:
	// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	ModelName *string

	// Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
	Momentum *float32

	// Enable nesterov when optimizer is 'sgd'.
	Nesterov *bool

	// Number of training epochs. Must be a positive integer.
	NumberOfEpochs *int32

	// Number of data loader workers. Must be a non-negative integer.
	NumberOfWorkers *int32

	// Type of optimizer.
	Optimizer *StochasticOptimizer

	// Random seed to be used when using deterministic training.
	RandomSeed *int32

	// Value of gamma when learning rate scheduler is 'step'. Must be a float in the range [0, 1].
	StepLRGamma *float32

	// Value of step size when learning rate scheduler is 'step'. Must be a positive integer.
	StepLRStepSize *int32

	// Training batch size. Must be a positive integer.
	TrainingBatchSize *int32

	// Image crop size that is input to the neural network for the training dataset. Must be a positive integer.
	TrainingCropSize *int32

	// Validation batch size. Must be a positive integer.
	ValidationBatchSize *int32

	// Image crop size that is input to the neural network for the validation dataset. Must be a positive integer.
	ValidationCropSize *int32

	// Image size to which to resize before cropping for validation dataset. Must be a positive integer.
	ValidationResizeSize *int32

	// Value of cosine cycle when learning rate scheduler is 'warmup_cosine'. Must be a float in the range [0, 1].
	WarmupCosineLRCycles *float32

	// Value of warmup epochs when learning rate scheduler is 'warmup_cosine'. Must be a positive integer.
	WarmupCosineLRWarmupEpochs *int32

	// Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be a float in the range[0, 1].
	WeightDecay *float32

	// Weighted loss. The accepted values are 0 for no weighted loss. 1 for weighted loss with sqrt.(classweights). 2 for weighted
	// loss with classweights. Must be 0 or 1 or 2.
	WeightedLoss *int32
}

// ImageModelSettingsObjectDetection - Settings used for training the model. For more information on the available settings
// please visit the official documentation:
// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
type ImageModelSettingsObjectDetection struct {
	// Settings for advanced scenarios.
	AdvancedSettings *string

	// Enable AMSGrad when optimizer is 'adam' or 'adamw'.
	AmsGradient *bool

	// Settings for using Augmentations.
	Augmentations *string

	// Value of 'beta1' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta1 *float32

	// Value of 'beta2' when optimizer is 'adam' or 'adamw'. Must be a float in the range [0, 1].
	Beta2 *float32

	// Maximum number of detections per image, for all classes. Must be a positive integer. Note: This settings is not supported
	// for the 'yolov5' algorithm.
	BoxDetectionsPerImage *int32

	// During inference, only return proposals with a classification score greater than BoxScoreThreshold. Must be a float in
	// the range[0, 1].
	BoxScoreThreshold *float32

	// Frequency to store model checkpoints. Must be a positive integer.
	CheckpointFrequency *int32

	// The pretrained checkpoint model for incremental training.
	CheckpointModel *MLFlowModelJobInput

	// The id of a previous run that has a pretrained checkpoint for incremental training.
	CheckpointRunID *string

	// Whether to use distributed training.
	Distributed *bool

	// Enable early stopping logic during training.
	EarlyStopping *bool

	// Minimum number of epochs or validation evaluations to wait before primary metric improvement is tracked for early stopping.
	// Must be a positive integer.
	EarlyStoppingDelay *int32

	// Minimum number of epochs or validation evaluations with no primary metric improvement before the run is stopped. Must be
	// a positive integer.
	EarlyStoppingPatience *int32

	// Enable normalization when exporting ONNX model.
	EnableOnnxNormalization *bool

	// Frequency to evaluate validation dataset to get metric scores. Must be a positive integer.
	EvaluationFrequency *int32

	// Gradient accumulation means running a configured number of "GradAccumulationStep" steps without updating the model weights
	// while accumulating the gradients of those steps, and then using the
	// accumulated gradients to compute the weight updates. Must be a positive integer.
	GradientAccumulationStep *int32

	// Image size for train and validation. Must be a positive integer. Note: The training run may get into CUDA OOM if the size
	// is too big. Note: This settings is only supported for the 'yolov5' algorithm.
	ImageSize *int32

	// Number of layers to freeze for the model. Must be a positive integer. For instance, passing 2 as value for 'seresnext'
	// means freezing layer0 and layer1. For a full list of models supported and details
	// on layer freeze, please see: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	LayersToFreeze *int32

	// Initial learning rate. Must be a float in the range [0, 1].
	LearningRate *float32

	// Type of learning rate scheduler. Must be 'warmup_cosine' or 'step'.
	LearningRateScheduler *LearningRateScheduler

	// Maximum size of the image to be rescaled before feeding it to the backbone. Must be a positive integer. Note: training
	// run may get into CUDA OOM if the size is too big. Note: This settings is not
	// supported for the 'yolov5' algorithm.
	MaxSize *int32

	// Minimum size of the image to be rescaled before feeding it to the backbone. Must be a positive integer. Note: training
	// run may get into CUDA OOM if the size is too big. Note: This settings is not
	// supported for the 'yolov5' algorithm.
	MinSize *int32

	// Name of the model to use for training. For more information on the available models please visit the official documentation:
	// https://docs.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-image-models.
	ModelName *string

	// Model size. Must be 'small', 'medium', 'large', or 'xlarge'. Note: training run may get into CUDA OOM if the model size
	// is too big. Note: This settings is only supported for the 'yolov5' algorithm.
	ModelSize *ModelSize

	// Value of momentum when optimizer is 'sgd'. Must be a float in the range [0, 1].
	Momentum *float32

	// Enable multi-scale image by varying image size by +/- 50%. Note: training run may get into CUDA OOM if no sufficient GPU
	// memory. Note: This settings is only supported for the 'yolov5' algorithm.
	MultiScale *bool

	// Enable nesterov when optimizer is 'sgd'.
	Nesterov *bool

	// IOU threshold used during inference in NMS post processing. Must be a float in the range [0, 1].
	NmsIouThreshold *float32

	// Number of training epochs. Must be a positive integer.
	NumberOfEpochs *int32

	// Number of data loader workers. Must be a non-negative integer.
	NumberOfWorkers *int32

	// Type of optimizer.
	Optimizer *StochasticOptimizer

	// Random seed to be used when using deterministic training.
	RandomSeed *int32

	// Value of gamma when learning rate scheduler is 'step'. Must be a float in the range [0, 1].
	StepLRGamma *float32

	// Value of step size when learning rate scheduler is 'step'. Must be a positive integer.
	StepLRStepSize *int32

	// The grid size to use for tiling each image. Note: TileGridSize must not be None to enable small object detection logic.
	// A string containing two integers in mxn format. Note: This settings is not
	// supported for the 'yolov5' algorithm.
	TileGridSize *string

	// Overlap ratio between adjacent tiles in each dimension. Must be float in the range [0, 1). Note: This settings is not supported
	// for the 'yolov5' algorithm.
	TileOverlapRatio *float32

	// The IOU threshold to use to perform NMS while merging predictions from tiles and image. Used in validation/ inference.
	// Must be float in the range [0, 1]. Note: This settings is not supported for the
	// 'yolov5' algorithm.
	TilePredictionsNmsThreshold *float32

	// Training batch size. Must be a positive integer.
	TrainingBatchSize *int32

	// Validation batch size. Must be a positive integer.
	ValidationBatchSize *int32

	// IOU threshold to use when computing validation metric. Must be float in the range [0, 1].
	ValidationIouThreshold *float32

	// Metric computation method to use for validation metrics.
	ValidationMetricType *ValidationMetricType

	// Value of cosine cycle when learning rate scheduler is 'warmup_cosine'. Must be a float in the range [0, 1].
	WarmupCosineLRCycles *float32

	// Value of warmup epochs when learning rate scheduler is 'warmup_cosine'. Must be a positive integer.
	WarmupCosineLRWarmupEpochs *int32

	// Value of weight decay when optimizer is 'sgd', 'adam', or 'adamw'. Must be a float in the range[0, 1].
	WeightDecay *float32
}

// ImageObjectDetection - Image Object Detection. Object detection is used to identify objects in an image and locate each
// object with a bounding box e.g. locate all dogs and cats in an image and draw a bounding box around
// each.
type ImageObjectDetection struct {
	// REQUIRED; [Required] Limit settings for the AutoML job.
	LimitSettings *ImageLimitSettings

	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Settings used for training the model.
	ModelSettings *ImageModelSettingsObjectDetection

	// Primary metric to optimize for this task.
	PrimaryMetric *ObjectDetectionPrimaryMetrics

	// Search space for sampling different combinations of models and their hyperparameters.
	SearchSpace []*ImageModelDistributionSettingsObjectDetection

	// Model sweeping and hyperparameter sweeping related settings.
	SweepSettings *ImageSweepSettings

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type ImageObjectDetection.
func (i *ImageObjectDetection) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     i.LogVerbosity,
		TargetColumnName: i.TargetColumnName,
		TaskType:         i.TaskType,
		TrainingData:     i.TrainingData,
	}
}

type ImageObjectDetectionBase struct {
	// REQUIRED; [Required] Limit settings for the AutoML job.
	LimitSettings *ImageLimitSettings

	// Settings used for training the model.
	ModelSettings *ImageModelSettingsObjectDetection

	// Search space for sampling different combinations of models and their hyperparameters.
	SearchSpace []*ImageModelDistributionSettingsObjectDetection

	// Model sweeping and hyperparameter sweeping related settings.
	SweepSettings *ImageSweepSettings

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64
}

// ImageSweepSettings - Model sweeping and hyperparameter sweeping related settings.
type ImageSweepSettings struct {
	// REQUIRED; [Required] Type of the hyperparameter sampling algorithms.
	SamplingAlgorithm *SamplingAlgorithmType

	// Type of early termination policy.
	EarlyTermination EarlyTerminationPolicyClassification
}

// ImageVertical - Abstract class for AutoML tasks that train image (computer vision) models - such as Image Classification
// / Image Classification Multilabel / Image Object Detection / Image Instance Segmentation.
type ImageVertical struct {
	// REQUIRED; [Required] Limit settings for the AutoML job.
	LimitSettings *ImageLimitSettings

	// Model sweeping and hyperparameter sweeping related settings.
	SweepSettings *ImageSweepSettings

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64
}

// IndexColumn - DTO object representing index column
type IndexColumn struct {
	// Specifies the column name
	ColumnName *string

	// Specifies the data type
	DataType *FeatureDataType
}

type InferenceContainerProperties struct {
	// The route to check the liveness of the inference server container.
	LivenessRoute *Route

	// The route to check the readiness of the inference server container.
	ReadinessRoute *Route

	// The port to send the scoring requests to, within the inference server container.
	ScoringRoute *Route
}

// InstanceTypeSchema - Instance type schema.
type InstanceTypeSchema struct {
	// Node Selector
	NodeSelector map[string]*string

	// Resource requests/limits for this instance type
	Resources *InstanceTypeSchemaResources
}

// InstanceTypeSchemaResources - Resource requests/limits for this instance type
type InstanceTypeSchemaResources struct {
	// Resource limits for this instance type
	Limits map[string]*string

	// Resource requests for this instance type
	Requests map[string]*string
}

// JobBase - Azure Resource Manager resource envelope.
type JobBase struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties JobBasePropertiesClassification

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

// JobBaseProperties - Base definition for a job.
type JobBaseProperties struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobType *JobType

	// ARM resource ID of the component resource.
	ComponentID *string

	// ARM resource ID of the compute resource.
	ComputeID *string

	// The asset description text.
	Description *string

	// Display name of job.
	DisplayName *string

	// The name of the experiment the job belongs to. If not set, the job is placed in the "Default" experiment.
	ExperimentName *string

	// Identity configuration. If set, this should be one of AmlToken, ManagedIdentity, UserIdentity or null. Defaults to AmlToken
	// if null.
	Identity IdentityConfigurationClassification

	// Is the asset archived?
	IsArchived *bool

	// Notification setting for the job
	NotificationSetting *NotificationSetting

	// The asset property dictionary.
	Properties map[string]*string

	// List of JobEndpoints. For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
	Services map[string]*JobService

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Status of the job.
	Status *JobStatus
}

// GetJobBaseProperties implements the JobBasePropertiesClassification interface for type JobBaseProperties.
func (j *JobBaseProperties) GetJobBaseProperties() *JobBaseProperties { return j }

// JobBaseResourceArmPaginatedResult - A paginated list of JobBase entities.
type JobBaseResourceArmPaginatedResult struct {
	// The link to the next page of JobBase objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type JobBase.
	Value []*JobBase
}

// JobInput - Command job definition.
type JobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// Description for the input.
	Description *string
}

// GetJobInput implements the JobInputClassification interface for type JobInput.
func (j *JobInput) GetJobInput() *JobInput { return j }

type JobLimits struct {
	// REQUIRED; [Required] JobLimit type.
	JobLimitsType *JobLimitsType

	// The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as
	// low as Seconds.
	Timeout *string
}

// GetJobLimits implements the JobLimitsClassification interface for type JobLimits.
func (j *JobLimits) GetJobLimits() *JobLimits { return j }

// JobOutput - Job output definition container information on where to find job output/logs.
type JobOutput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobOutputType *JobOutputType

	// Description for the output.
	Description *string
}

// GetJobOutput implements the JobOutputClassification interface for type JobOutput.
func (j *JobOutput) GetJobOutput() *JobOutput { return j }

type JobResourceConfiguration struct {
	// Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the
	// system, or in this section. This parameter is only supported for Azure ML
	// compute types.
	DockerArgs *string

	// Optional number of instances or nodes used by the compute target.
	InstanceCount *int32

	// Optional type of VM used as supported by the compute target.
	InstanceType *string

	// Additional properties bag.
	Properties map[string]any

	// Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be
	// greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes),
	// or g(gigabytes).
	ShmSize *string
}

type JobScheduleAction struct {
	// REQUIRED; [Required] Specifies the action type of the schedule
	ActionType *ScheduleActionType

	// REQUIRED; [Required] Defines Schedule action definition details.
	JobDefinition JobBasePropertiesClassification
}

// GetScheduleActionBase implements the ScheduleActionBaseClassification interface for type JobScheduleAction.
func (j *JobScheduleAction) GetScheduleActionBase() *ScheduleActionBase {
	return &ScheduleActionBase{
		ActionType: j.ActionType,
	}
}

// JobService - Job endpoint definition
type JobService struct {
	// Url for endpoint.
	Endpoint *string

	// Endpoint type.
	JobServiceType *string

	// Nodes that user would like to start the service on. If Nodes is not set or set to null, the service will only be started
	// on leader node.
	Nodes NodesClassification

	// Port for endpoint.
	Port *int32

	// Additional properties to set on the endpoint.
	Properties map[string]*string

	// READ-ONLY; Any error in the service.
	ErrorMessage *string

	// READ-ONLY; Status of endpoint.
	Status *string
}

// Kubernetes - A Machine Learning compute based on Kubernetes Compute.
type Kubernetes struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool

	// Properties of Kubernetes
	Properties *KubernetesProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type Kubernetes.
func (k *Kubernetes) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    k.ComputeLocation,
		ComputeType:        k.ComputeType,
		CreatedOn:          k.CreatedOn,
		Description:        k.Description,
		DisableLocalAuth:   k.DisableLocalAuth,
		IsAttachedCompute:  k.IsAttachedCompute,
		ModifiedOn:         k.ModifiedOn,
		ProvisioningErrors: k.ProvisioningErrors,
		ProvisioningState:  k.ProvisioningState,
		ResourceID:         k.ResourceID,
	}
}

// KubernetesOnlineDeployment - Properties specific to a KubernetesOnlineDeployment.
type KubernetesOnlineDeployment struct {
	// REQUIRED; [Required] The compute type of the endpoint.
	EndpointComputeType *EndpointComputeType

	// If true, enables Application Insights logging.
	AppInsightsEnabled *bool

	// Code configuration for the endpoint deployment.
	CodeConfiguration *CodeConfiguration

	// The resource requirements for the container (cpu and memory).
	ContainerResourceRequirements *ContainerResourceRequirements

	// The mdc configuration, we disable mdc when it's null.
	DataCollector *DataCollector

	// Description of the endpoint deployment.
	Description *string

	// If Enabled, allow egress public network access. If Disabled, this will create secure egress. Default: Enabled.
	EgressPublicNetworkAccess *EgressPublicNetworkAccessType

	// ARM resource ID or AssetId of the environment specification for the endpoint deployment.
	EnvironmentID *string

	// Environment variables configuration for the deployment.
	EnvironmentVariables map[string]*string

	// Compute instance type.
	InstanceType *string

	// Liveness probe monitors the health of the container regularly.
	LivenessProbe *ProbeSettings

	// The URI path to the model.
	Model *string

	// The path to mount the model in custom container.
	ModelMountPath *string

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string

	// Readiness probe validates if the container is ready to serve traffic. The properties and defaults are the same as liveness
	// probe.
	ReadinessProbe *ProbeSettings

	// Request settings for the deployment.
	RequestSettings *OnlineRequestSettings

	// Scale settings for the deployment. If it is null or not provided, it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
	// and to DefaultScaleSettings for ManagedOnlineDeployment.
	ScaleSettings OnlineScaleSettingsClassification

	// READ-ONLY; Provisioning state for the endpoint deployment.
	ProvisioningState *DeploymentProvisioningState
}

// GetOnlineDeploymentProperties implements the OnlineDeploymentPropertiesClassification interface for type KubernetesOnlineDeployment.
func (k *KubernetesOnlineDeployment) GetOnlineDeploymentProperties() *OnlineDeploymentProperties {
	return &OnlineDeploymentProperties{
		AppInsightsEnabled:        k.AppInsightsEnabled,
		CodeConfiguration:         k.CodeConfiguration,
		DataCollector:             k.DataCollector,
		Description:               k.Description,
		EgressPublicNetworkAccess: k.EgressPublicNetworkAccess,
		EndpointComputeType:       k.EndpointComputeType,
		EnvironmentID:             k.EnvironmentID,
		EnvironmentVariables:      k.EnvironmentVariables,
		InstanceType:              k.InstanceType,
		LivenessProbe:             k.LivenessProbe,
		Model:                     k.Model,
		ModelMountPath:            k.ModelMountPath,
		Properties:                k.Properties,
		ProvisioningState:         k.ProvisioningState,
		ReadinessProbe:            k.ReadinessProbe,
		RequestSettings:           k.RequestSettings,
		ScaleSettings:             k.ScaleSettings,
	}
}

// KubernetesProperties - Kubernetes properties
type KubernetesProperties struct {
	// Default instance type
	DefaultInstanceType *string

	// Extension instance release train.
	ExtensionInstanceReleaseTrain *string

	// Extension principal-id.
	ExtensionPrincipalID *string

	// Instance Type Schema
	InstanceTypes map[string]*InstanceTypeSchema

	// Compute namespace
	Namespace *string

	// Relay connection string.
	RelayConnectionString *string

	// ServiceBus connection string.
	ServiceBusConnectionString *string

	// VC name.
	VcName *string
}

// KubernetesSchema - Kubernetes Compute Schema
type KubernetesSchema struct {
	// Properties of Kubernetes
	Properties *KubernetesProperties
}

type LakeHouseArtifact struct {
	// REQUIRED; [Required] OneLake artifact name
	ArtifactName *string

	// REQUIRED; [Required] OneLake artifact type
	ArtifactType *OneLakeArtifactType
}

// GetOneLakeArtifact implements the OneLakeArtifactClassification interface for type LakeHouseArtifact.
func (l *LakeHouseArtifact) GetOneLakeArtifact() *OneLakeArtifact {
	return &OneLakeArtifact{
		ArtifactName: l.ArtifactName,
		ArtifactType: l.ArtifactType,
	}
}

// ListAmlUserFeatureResult - The List Aml user feature operation response.
type ListAmlUserFeatureResult struct {
	// READ-ONLY; The URI to fetch the next page of AML user features information. Call ListNext() with this to fetch the next
	// page of AML user features information.
	NextLink *string

	// READ-ONLY; The list of AML user facing features.
	Value []*AmlUserFeature
}

type ListNotebookKeysResult struct {
	// READ-ONLY
	PrimaryAccessKey *string

	// READ-ONLY
	SecondaryAccessKey *string
}

type ListStorageAccountKeysResult struct {
	// READ-ONLY
	UserStorageKey *string
}

// ListUsagesResult - The List Usages operation response.
type ListUsagesResult struct {
	// READ-ONLY; The URI to fetch the next page of AML resource usage information. Call ListNext() with this to fetch the next
	// page of AML resource usage information.
	NextLink *string

	// READ-ONLY; The list of AML resource usages.
	Value []*Usage
}

type ListWorkspaceKeysResult struct {
	// READ-ONLY
	AppInsightsInstrumentationKey *string

	// READ-ONLY
	ContainerRegistryCredentials *RegistryListCredentialsResult

	// READ-ONLY
	NotebookAccessKeys *ListNotebookKeysResult

	// READ-ONLY
	UserStorageKey *string

	// READ-ONLY
	UserStorageResourceID *string
}

// ListWorkspaceQuotas - The List WorkspaceQuotasByVMFamily operation response.
type ListWorkspaceQuotas struct {
	// READ-ONLY; The URI to fetch the next page of workspace quota information by VM Family. Call ListNext() with this to fetch
	// the next page of Workspace Quota information.
	NextLink *string

	// READ-ONLY; The list of Workspace Quotas by VM Family
	Value []*ResourceQuota
}

// LiteralJobInput - Literal input type.
type LiteralJobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Literal value for the input.
	Value *string

	// Description for the input.
	Description *string
}

// GetJobInput implements the JobInputClassification interface for type LiteralJobInput.
func (l *LiteralJobInput) GetJobInput() *JobInput {
	return &JobInput{
		Description:  l.Description,
		JobInputType: l.JobInputType,
	}
}

type MLFlowModelJobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Description for the input.
	Description *string

	// Input Asset Delivery Mode.
	Mode *InputDeliveryMode
}

// GetJobInput implements the JobInputClassification interface for type MLFlowModelJobInput.
func (m *MLFlowModelJobInput) GetJobInput() *JobInput {
	return &JobInput{
		Description:  m.Description,
		JobInputType: m.JobInputType,
	}
}

type MLFlowModelJobOutput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobOutputType *JobOutputType

	// Description for the output.
	Description *string

	// Output Asset Delivery Mode.
	Mode *OutputDeliveryMode

	// Output Asset URI.
	URI *string
}

// GetJobOutput implements the JobOutputClassification interface for type MLFlowModelJobOutput.
func (m *MLFlowModelJobOutput) GetJobOutput() *JobOutput {
	return &JobOutput{
		Description:   m.Description,
		JobOutputType: m.JobOutputType,
	}
}

// MLTableData - MLTable data definition
type MLTableData struct {
	// REQUIRED; [Required] Specifies the type of data.
	DataType *DataType

	// REQUIRED; [Required] Uri of the data. Example: https://go.microsoft.com/fwlink/?linkid=2202330
	DataURI *string

	// The asset description text.
	Description *string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Uris referenced in the MLTable definition (required for lineage)
	ReferencedUris []*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string
}

// GetDataVersionBaseProperties implements the DataVersionBasePropertiesClassification interface for type MLTableData.
func (m *MLTableData) GetDataVersionBaseProperties() *DataVersionBaseProperties {
	return &DataVersionBaseProperties{
		DataType:    m.DataType,
		DataURI:     m.DataURI,
		Description: m.Description,
		IsAnonymous: m.IsAnonymous,
		IsArchived:  m.IsArchived,
		Properties:  m.Properties,
		Tags:        m.Tags,
	}
}

type MLTableJobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Description for the input.
	Description *string

	// Input Asset Delivery Mode.
	Mode *InputDeliveryMode
}

// GetJobInput implements the JobInputClassification interface for type MLTableJobInput.
func (m *MLTableJobInput) GetJobInput() *JobInput {
	return &JobInput{
		Description:  m.Description,
		JobInputType: m.JobInputType,
	}
}

type MLTableJobOutput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobOutputType *JobOutputType

	// Description for the output.
	Description *string

	// Output Asset Delivery Mode.
	Mode *OutputDeliveryMode

	// Output Asset URI.
	URI *string
}

// GetJobOutput implements the JobOutputClassification interface for type MLTableJobOutput.
func (m *MLTableJobOutput) GetJobOutput() *JobOutput {
	return &JobOutput{
		Description:   m.Description,
		JobOutputType: m.JobOutputType,
	}
}

// ManagedComputeIdentity - Managed compute identity definition.
type ManagedComputeIdentity struct {
	// REQUIRED; [Required] Specifies the type of identity to use within the monitoring jobs.
	ComputeIdentityType *MonitorComputeIdentityType

	// The identity which will be leveraged by the monitoring jobs.
	Identity *ManagedServiceIdentity
}

// GetMonitorComputeIdentityBase implements the MonitorComputeIdentityBaseClassification interface for type ManagedComputeIdentity.
func (m *ManagedComputeIdentity) GetMonitorComputeIdentityBase() *MonitorComputeIdentityBase {
	return &MonitorComputeIdentityBase{
		ComputeIdentityType: m.ComputeIdentityType,
	}
}

// ManagedIdentity - Managed identity configuration.
type ManagedIdentity struct {
	// REQUIRED; [Required] Specifies the type of identity framework.
	IdentityType *IdentityConfigurationType

	// Specifies a user-assigned identity by client ID. For system-assigned, do not set this field.
	ClientID *string

	// Specifies a user-assigned identity by object ID. For system-assigned, do not set this field.
	ObjectID *string

	// Specifies a user-assigned identity by ARM resource ID. For system-assigned, do not set this field.
	ResourceID *string
}

// GetIdentityConfiguration implements the IdentityConfigurationClassification interface for type ManagedIdentity.
func (m *ManagedIdentity) GetIdentityConfiguration() *IdentityConfiguration {
	return &IdentityConfiguration{
		IdentityType: m.IdentityType,
	}
}

type ManagedIdentityAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	Credentials   *WorkspaceConnectionManagedIdentity
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type ManagedIdentityAuthTypeWorkspaceConnectionProperties.
func (m *ManagedIdentityAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                m.AuthType,
		Category:                m.Category,
		CreatedByWorkspaceArmID: m.CreatedByWorkspaceArmID,
		ExpiryTime:              m.ExpiryTime,
		Group:                   m.Group,
		IsSharedToAll:           m.IsSharedToAll,
		Metadata:                m.Metadata,
		SharedUserList:          m.SharedUserList,
		Target:                  m.Target,
		Value:                   m.Value,
		ValueFormat:             m.ValueFormat,
	}
}

// ManagedIdentityCredential - Credential for user managed identity
type ManagedIdentityCredential struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialType *DataReferenceCredentialType

	// ManagedIdentityCredential identity type
	ManagedIdentityType *string

	// ClientId for the UAMI. For ManagedIdentityType = SystemManaged, this field is null.
	UserManagedIdentityClientID *string

	// PrincipalId for the UAMI. For ManagedIdentityType = SystemManaged, this field is null.
	UserManagedIdentityPrincipalID *string

	// Full arm scope for the Id. For ManagedIdentityType = SystemManaged, this field is null.
	UserManagedIdentityResourceID *string

	// TenantId for the UAMI. For ManagedIdentityType = SystemManaged, this field is null.
	UserManagedIdentityTenantID *string
}

// GetDataReferenceCredential implements the DataReferenceCredentialClassification interface for type ManagedIdentityCredential.
func (m *ManagedIdentityCredential) GetDataReferenceCredential() *DataReferenceCredential {
	return &DataReferenceCredential{
		CredentialType: m.CredentialType,
	}
}

// ManagedNetworkProvisionOptions - Managed Network Provisioning options for managed network of a machine learning workspace.
type ManagedNetworkProvisionOptions struct {
	IncludeSpark *bool
}

// ManagedNetworkProvisionStatus - Status of the Provisioning for the managed network of a machine learning workspace.
type ManagedNetworkProvisionStatus struct {
	SparkReady *bool

	// Status for the managed network of a machine learning workspace.
	Status *ManagedNetworkStatus
}

// ManagedNetworkSettings - Managed Network settings for a machine learning workspace.
type ManagedNetworkSettings struct {
	// Isolation mode for the managed network of a machine learning workspace.
	IsolationMode *IsolationMode

	// Dictionary of
	OutboundRules map[string]OutboundRuleClassification

	// Status of the Provisioning for the managed network of a machine learning workspace.
	Status *ManagedNetworkProvisionStatus

	// READ-ONLY
	NetworkID *string
}

// ManagedOnlineDeployment - Properties specific to a ManagedOnlineDeployment.
type ManagedOnlineDeployment struct {
	// REQUIRED; [Required] The compute type of the endpoint.
	EndpointComputeType *EndpointComputeType

	// If true, enables Application Insights logging.
	AppInsightsEnabled *bool

	// Code configuration for the endpoint deployment.
	CodeConfiguration *CodeConfiguration

	// The mdc configuration, we disable mdc when it's null.
	DataCollector *DataCollector

	// Description of the endpoint deployment.
	Description *string

	// If Enabled, allow egress public network access. If Disabled, this will create secure egress. Default: Enabled.
	EgressPublicNetworkAccess *EgressPublicNetworkAccessType

	// ARM resource ID or AssetId of the environment specification for the endpoint deployment.
	EnvironmentID *string

	// Environment variables configuration for the deployment.
	EnvironmentVariables map[string]*string

	// Compute instance type.
	InstanceType *string

	// Liveness probe monitors the health of the container regularly.
	LivenessProbe *ProbeSettings

	// The URI path to the model.
	Model *string

	// The path to mount the model in custom container.
	ModelMountPath *string

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string

	// Readiness probe validates if the container is ready to serve traffic. The properties and defaults are the same as liveness
	// probe.
	ReadinessProbe *ProbeSettings

	// Request settings for the deployment.
	RequestSettings *OnlineRequestSettings

	// Scale settings for the deployment. If it is null or not provided, it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
	// and to DefaultScaleSettings for ManagedOnlineDeployment.
	ScaleSettings OnlineScaleSettingsClassification

	// READ-ONLY; Provisioning state for the endpoint deployment.
	ProvisioningState *DeploymentProvisioningState
}

// GetOnlineDeploymentProperties implements the OnlineDeploymentPropertiesClassification interface for type ManagedOnlineDeployment.
func (m *ManagedOnlineDeployment) GetOnlineDeploymentProperties() *OnlineDeploymentProperties {
	return &OnlineDeploymentProperties{
		AppInsightsEnabled:        m.AppInsightsEnabled,
		CodeConfiguration:         m.CodeConfiguration,
		DataCollector:             m.DataCollector,
		Description:               m.Description,
		EgressPublicNetworkAccess: m.EgressPublicNetworkAccess,
		EndpointComputeType:       m.EndpointComputeType,
		EnvironmentID:             m.EnvironmentID,
		EnvironmentVariables:      m.EnvironmentVariables,
		InstanceType:              m.InstanceType,
		LivenessProbe:             m.LivenessProbe,
		Model:                     m.Model,
		ModelMountPath:            m.ModelMountPath,
		Properties:                m.Properties,
		ProvisioningState:         m.ProvisioningState,
		ReadinessProbe:            m.ReadinessProbe,
		RequestSettings:           m.RequestSettings,
		ScaleSettings:             m.ScaleSettings,
	}
}

// ManagedServiceIdentity - Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity struct {
	// REQUIRED; Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
	Type *ManagedServiceIdentityType

	// The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM
	// resource ids in the form:
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
	// The dictionary values can be empty objects ({}) in
	// requests.
	UserAssignedIdentities map[string]*UserAssignedIdentity

	// READ-ONLY; The service principal ID of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	PrincipalID *string

	// READ-ONLY; The tenant ID of the system assigned identity. This property will only be provided for a system assigned identity.
	TenantID *string
}

type MarketplacePlan struct {
	// READ-ONLY; The identifying name of the Offer of the Marketplace Plan.
	OfferID *string

	// READ-ONLY; The identifying name of the Plan of the Marketplace Plan.
	PlanID *string

	// READ-ONLY; The identifying name of the Publisher of the Marketplace Plan.
	PublisherID *string
}

// MarketplaceSubscription - Azure Resource Manager resource envelope.
type MarketplaceSubscription struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *MarketplaceSubscriptionProperties

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

type MarketplaceSubscriptionProperties struct {
	// REQUIRED; [Required] Target Marketplace Model ID to create a Marketplace Subscription for.
	ModelID *string

	// READ-ONLY; Marketplace Plan associated with the Marketplace Subscription.
	MarketplacePlan *MarketplacePlan

	// READ-ONLY; Current status of the Marketplace Subscription.
	MarketplaceSubscriptionStatus *MarketplaceSubscriptionStatus

	// READ-ONLY; Provisioning State of the Marketplace Subscription.
	ProvisioningState *MarketplaceSubscriptionProvisioningState
}

// MarketplaceSubscriptionResourceArmPaginatedResult - A paginated list of MarketplaceSubscription entities.
type MarketplaceSubscriptionResourceArmPaginatedResult struct {
	// The link to the next page of MarketplaceSubscription objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type MarketplaceSubscription.
	Value []*MarketplaceSubscription
}

// MaterializationComputeResource - DTO object representing compute resource
type MaterializationComputeResource struct {
	// Specifies the instance type
	InstanceType *string
}

type MaterializationSettings struct {
	// Specifies the notification details
	Notification *NotificationSetting

	// Specifies the compute resource settings
	Resource *MaterializationComputeResource

	// Specifies the schedule details
	Schedule *RecurrenceTrigger

	// Specifies the spark compute settings
	SparkConfiguration map[string]*string

	// Specifies the stores to which materialization should happen
	StoreType *MaterializationStoreType
}

// MedianStoppingPolicy - Defines an early termination policy based on running averages of the primary metric of all runs
type MedianStoppingPolicy struct {
	// REQUIRED; [Required] Name of policy configuration
	PolicyType *EarlyTerminationPolicyType

	// Number of intervals by which to delay the first evaluation.
	DelayEvaluation *int32

	// Interval (number of runs) between policy evaluations.
	EvaluationInterval *int32
}

// GetEarlyTerminationPolicy implements the EarlyTerminationPolicyClassification interface for type MedianStoppingPolicy.
func (m *MedianStoppingPolicy) GetEarlyTerminationPolicy() *EarlyTerminationPolicy {
	return &EarlyTerminationPolicy{
		DelayEvaluation:    m.DelayEvaluation,
		EvaluationInterval: m.EvaluationInterval,
		PolicyType:         m.PolicyType,
	}
}

// ModelContainer - Azure Resource Manager resource envelope.
type ModelContainer struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *ModelContainerProperties

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

type ModelContainerProperties struct {
	// The asset description text.
	Description *string

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; The latest version inside this container.
	LatestVersion *string

	// READ-ONLY; The next auto incremental version
	NextVersion *string

	// READ-ONLY; Provisioning state for the model container.
	ProvisioningState *AssetProvisioningState
}

// ModelContainerResourceArmPaginatedResult - A paginated list of ModelContainer entities.
type ModelContainerResourceArmPaginatedResult struct {
	// The link to the next page of ModelContainer objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type ModelContainer.
	Value []*ModelContainer
}

type ModelSettings struct {
	// The unique model identifier that this ServerlessEndpoint should provision.
	ModelID *string
}

// ModelVersion - Azure Resource Manager resource envelope.
type ModelVersion struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *ModelVersionProperties

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

// ModelVersionProperties - Model asset version details.
type ModelVersionProperties struct {
	// The asset description text.
	Description *string

	// Mapping of model flavors to their properties.
	Flavors map[string]*FlavorData

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// Name of the training job which produced this model
	JobName *string

	// The storage format for this entity. Used for NCD.
	ModelType *string

	// The URI path to the model contents.
	ModelURI *string

	// The asset property dictionary.
	Properties map[string]*string

	// Stage in the model lifecycle assigned to this model
	Stage *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Provisioning state for the model version.
	ProvisioningState *AssetProvisioningState
}

// ModelVersionResourceArmPaginatedResult - A paginated list of ModelVersion entities.
type ModelVersionResourceArmPaginatedResult struct {
	// The link to the next page of ModelVersion objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type ModelVersion.
	Value []*ModelVersion
}

// MonitorComputeConfigurationBase - Monitor compute configuration base definition.
type MonitorComputeConfigurationBase struct {
	// REQUIRED; [Required] Specifies the type of signal to monitor.
	ComputeType *MonitorComputeType
}

// GetMonitorComputeConfigurationBase implements the MonitorComputeConfigurationBaseClassification interface for type MonitorComputeConfigurationBase.
func (m *MonitorComputeConfigurationBase) GetMonitorComputeConfigurationBase() *MonitorComputeConfigurationBase {
	return m
}

// MonitorComputeIdentityBase - Monitor compute identity base definition.
type MonitorComputeIdentityBase struct {
	// REQUIRED; [Required] Specifies the type of identity to use within the monitoring jobs.
	ComputeIdentityType *MonitorComputeIdentityType
}

// GetMonitorComputeIdentityBase implements the MonitorComputeIdentityBaseClassification interface for type MonitorComputeIdentityBase.
func (m *MonitorComputeIdentityBase) GetMonitorComputeIdentityBase() *MonitorComputeIdentityBase {
	return m
}

type MonitorDefinition struct {
	// REQUIRED; [Required] The ARM resource ID of the compute resource to run the monitoring job on.
	ComputeConfiguration MonitorComputeConfigurationBaseClassification

	// REQUIRED; [Required] The signals to monitor.
	Signals map[string]MonitoringSignalBaseClassification

	// The monitor's notification settings.
	AlertNotificationSettings *MonitorNotificationSettings

	// The entities targeted by the monitor.
	MonitoringTarget *MonitoringTarget
}

type MonitorEmailNotificationSettings struct {
	// The email recipient list which has a limitation of 499 characters in total.
	Emails []*string
}

type MonitorNotificationSettings struct {
	// The AML notification email settings.
	EmailNotificationSettings *MonitorEmailNotificationSettings
}

// MonitorServerlessSparkCompute - Monitor serverless spark compute definition.
type MonitorServerlessSparkCompute struct {
	// REQUIRED; [Required] The identity scheme leveraged to by the spark jobs running on serverless Spark.
	ComputeIdentity MonitorComputeIdentityBaseClassification

	// REQUIRED; [Required] Specifies the type of signal to monitor.
	ComputeType *MonitorComputeType

	// REQUIRED; [Required] The instance type running the Spark job.
	InstanceType *string

	// REQUIRED; [Required] The Spark runtime version.
	RuntimeVersion *string
}

// GetMonitorComputeConfigurationBase implements the MonitorComputeConfigurationBaseClassification interface for type MonitorServerlessSparkCompute.
func (m *MonitorServerlessSparkCompute) GetMonitorComputeConfigurationBase() *MonitorComputeConfigurationBase {
	return &MonitorComputeConfigurationBase{
		ComputeType: m.ComputeType,
	}
}

type MonitoringFeatureFilterBase struct {
	// REQUIRED; [Required] Specifies the feature filter to leverage when selecting features to calculate metrics over.
	FilterType *MonitoringFeatureFilterType
}

// GetMonitoringFeatureFilterBase implements the MonitoringFeatureFilterBaseClassification interface for type MonitoringFeatureFilterBase.
func (m *MonitoringFeatureFilterBase) GetMonitoringFeatureFilterBase() *MonitoringFeatureFilterBase {
	return m
}

// MonitoringInputDataBase - Monitoring input data base definition.
type MonitoringInputDataBase struct {
	// REQUIRED; [Required] Specifies the type of signal to monitor.
	InputDataType *MonitoringInputDataType

	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Mapping of column names to special uses.
	Columns map[string]*string

	// The context metadata of the data source.
	DataContext *string
}

// GetMonitoringInputDataBase implements the MonitoringInputDataBaseClassification interface for type MonitoringInputDataBase.
func (m *MonitoringInputDataBase) GetMonitoringInputDataBase() *MonitoringInputDataBase { return m }

type MonitoringSignalBase struct {
	// REQUIRED; [Required] Specifies the type of signal to monitor.
	SignalType *MonitoringSignalType

	// The current notification mode for this signal.
	NotificationTypes []*MonitoringNotificationType

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string
}

// GetMonitoringSignalBase implements the MonitoringSignalBaseClassification interface for type MonitoringSignalBase.
func (m *MonitoringSignalBase) GetMonitoringSignalBase() *MonitoringSignalBase { return m }

// MonitoringTarget - Monitoring target definition.
type MonitoringTarget struct {
	// REQUIRED; [Required] The machine learning task type of the monitored model.
	TaskType *ModelTaskType

	// Reference to the deployment asset targeted by this monitor.
	DeploymentID *string

	// Reference to the model asset targeted by this monitor.
	ModelID *string
}

type MonitoringThreshold struct {
	// The threshold value. If null, the set default is dependent on the metric type.
	Value *float64
}

// Mpi - MPI distribution configuration.
type Mpi struct {
	// REQUIRED; [Required] Specifies the type of distribution framework.
	DistributionType *DistributionType

	// Number of processes per MPI node.
	ProcessCountPerInstance *int32
}

// GetDistributionConfiguration implements the DistributionConfigurationClassification interface for type Mpi.
func (m *Mpi) GetDistributionConfiguration() *DistributionConfiguration {
	return &DistributionConfiguration{
		DistributionType: m.DistributionType,
	}
}

// NCrossValidations - N-Cross validations value.
type NCrossValidations struct {
	// REQUIRED; [Required] Mode for determining N-Cross validations.
	Mode *NCrossValidationsMode
}

// GetNCrossValidations implements the NCrossValidationsClassification interface for type NCrossValidations.
func (n *NCrossValidations) GetNCrossValidations() *NCrossValidations { return n }

// NlpVertical - Abstract class for NLP related AutoML tasks. NLP - Natural Language Processing.
type NlpVertical struct {
	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *NlpVerticalFeaturizationSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *NlpVerticalLimitSettings

	// Validation data inputs.
	ValidationData *MLTableJobInput
}

type NlpVerticalFeaturizationSettings struct {
	// Dataset language, useful for the text data.
	DatasetLanguage *string
}

// NlpVerticalLimitSettings - Job execution constraints.
type NlpVerticalLimitSettings struct {
	// Maximum Concurrent AutoML iterations.
	MaxConcurrentTrials *int32

	// Number of AutoML iterations.
	MaxTrials *int32

	// AutoML job timeout.
	Timeout *string
}

// NodeStateCounts - Counts of various compute node states on the amlCompute.
type NodeStateCounts struct {
	// READ-ONLY; Number of compute nodes in idle state.
	IdleNodeCount *int32

	// READ-ONLY; Number of compute nodes which are leaving the amlCompute.
	LeavingNodeCount *int32

	// READ-ONLY; Number of compute nodes which are in preempted state.
	PreemptedNodeCount *int32

	// READ-ONLY; Number of compute nodes which are being prepared.
	PreparingNodeCount *int32

	// READ-ONLY; Number of compute nodes which are running jobs.
	RunningNodeCount *int32

	// READ-ONLY; Number of compute nodes which are in unusable state.
	UnusableNodeCount *int32
}

// Nodes - Abstract Nodes definition
type Nodes struct {
	// REQUIRED; [Required] Type of the Nodes value
	NodesValueType *NodesValueType
}

// GetNodes implements the NodesClassification interface for type Nodes.
func (n *Nodes) GetNodes() *Nodes { return n }

type NoneAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type NoneAuthTypeWorkspaceConnectionProperties.
func (n *NoneAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                n.AuthType,
		Category:                n.Category,
		CreatedByWorkspaceArmID: n.CreatedByWorkspaceArmID,
		ExpiryTime:              n.ExpiryTime,
		Group:                   n.Group,
		IsSharedToAll:           n.IsSharedToAll,
		Metadata:                n.Metadata,
		SharedUserList:          n.SharedUserList,
		Target:                  n.Target,
		Value:                   n.Value,
		ValueFormat:             n.ValueFormat,
	}
}

// NoneDatastoreCredentials - Empty/none datastore credentials.
type NoneDatastoreCredentials struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialsType *CredentialsType
}

// GetDatastoreCredentials implements the DatastoreCredentialsClassification interface for type NoneDatastoreCredentials.
func (n *NoneDatastoreCredentials) GetDatastoreCredentials() *DatastoreCredentials {
	return &DatastoreCredentials{
		CredentialsType: n.CredentialsType,
	}
}

type NotebookAccessTokenResult struct {
	// READ-ONLY
	AccessToken *string

	// READ-ONLY
	ExpiresIn *int32

	// READ-ONLY
	HostName *string

	// READ-ONLY
	NotebookResourceID *string

	// READ-ONLY
	PublicDNS *string

	// READ-ONLY
	RefreshToken *string

	// READ-ONLY
	Scope *string

	// READ-ONLY
	TokenType *string
}

type NotebookPreparationError struct {
	ErrorMessage *string
	StatusCode   *int32
}

type NotebookResourceInfo struct {
	Fqdn *string

	// The error that occurs when preparing notebook.
	NotebookPreparationError *NotebookPreparationError

	// the data plane resourceId that used to initialize notebook component
	ResourceID *string
}

// NotificationSetting - Configuration for notification.
type NotificationSetting struct {
	// Send email notification to user on specified notification type
	EmailOn []*EmailNotificationEnableType

	// This is the email recipient list which has a limitation of 499 characters in total concat with comma separator
	Emails []*string

	// Send webhook callback to a service. Key is a user-provided name for the webhook.
	Webhooks map[string]WebhookClassification
}

type NumericalDataDriftMetricThreshold struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// REQUIRED; [Required] The numerical data drift metric to calculate.
	Metric *NumericalDataDriftMetric

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetDataDriftMetricThresholdBase implements the DataDriftMetricThresholdBaseClassification interface for type NumericalDataDriftMetricThreshold.
func (n *NumericalDataDriftMetricThreshold) GetDataDriftMetricThresholdBase() *DataDriftMetricThresholdBase {
	return &DataDriftMetricThresholdBase{
		DataType:  n.DataType,
		Threshold: n.Threshold,
	}
}

type NumericalDataQualityMetricThreshold struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// REQUIRED; [Required] The numerical data quality metric to calculate.
	Metric *NumericalDataQualityMetric

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetDataQualityMetricThresholdBase implements the DataQualityMetricThresholdBaseClassification interface for type NumericalDataQualityMetricThreshold.
func (n *NumericalDataQualityMetricThreshold) GetDataQualityMetricThresholdBase() *DataQualityMetricThresholdBase {
	return &DataQualityMetricThresholdBase{
		DataType:  n.DataType,
		Threshold: n.Threshold,
	}
}

type NumericalPredictionDriftMetricThreshold struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// REQUIRED; [Required] The numerical prediction drift metric to calculate.
	Metric *NumericalPredictionDriftMetric

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetPredictionDriftMetricThresholdBase implements the PredictionDriftMetricThresholdBaseClassification interface for type
// NumericalPredictionDriftMetricThreshold.
func (n *NumericalPredictionDriftMetricThreshold) GetPredictionDriftMetricThresholdBase() *PredictionDriftMetricThresholdBase {
	return &PredictionDriftMetricThresholdBase{
		DataType:  n.DataType,
		Threshold: n.Threshold,
	}
}

type OAuth2AuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category *ConnectionCategory

	// ClientId and ClientSecret are required. Other properties are optional depending on each OAuth2 provider's implementation.
	Credentials   *WorkspaceConnectionOAuth2
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type OAuth2AuthTypeWorkspaceConnectionProperties.
func (o *OAuth2AuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                o.AuthType,
		Category:                o.Category,
		CreatedByWorkspaceArmID: o.CreatedByWorkspaceArmID,
		ExpiryTime:              o.ExpiryTime,
		Group:                   o.Group,
		IsSharedToAll:           o.IsSharedToAll,
		Metadata:                o.Metadata,
		SharedUserList:          o.SharedUserList,
		Target:                  o.Target,
		Value:                   o.Value,
		ValueFormat:             o.ValueFormat,
	}
}

// Objective - Optimization objective.
type Objective struct {
	// REQUIRED; [Required] Defines supported metric goals for hyperparameter tuning
	Goal *Goal

	// REQUIRED; [Required] Name of the metric to optimize.
	PrimaryMetric *string
}

// OneLakeArtifact - OneLake artifact (data source) configuration.
type OneLakeArtifact struct {
	// REQUIRED; [Required] OneLake artifact name
	ArtifactName *string

	// REQUIRED; [Required] OneLake artifact type
	ArtifactType *OneLakeArtifactType
}

// GetOneLakeArtifact implements the OneLakeArtifactClassification interface for type OneLakeArtifact.
func (o *OneLakeArtifact) GetOneLakeArtifact() *OneLakeArtifact { return o }

// OneLakeDatastore - OneLake (Trident) datastore configuration.
type OneLakeDatastore struct {
	// REQUIRED; [Required] OneLake artifact backing the datastore.
	Artifact OneLakeArtifactClassification

	// REQUIRED; [Required] Account credentials.
	Credentials DatastoreCredentialsClassification

	// REQUIRED; [Required] Storage type backing the datastore.
	DatastoreType *DatastoreType

	// REQUIRED; [Required] OneLake workspace name.
	OneLakeWorkspaceName *string

	// The asset description text.
	Description *string

	// OneLake endpoint to use for the datastore.
	Endpoint *string

	// The asset property dictionary.
	Properties map[string]*string

	// Indicates which identity to use to authenticate service data access to customer's storage.
	ServiceDataAccessAuthIdentity *ServiceDataAccessAuthIdentity

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Readonly property to indicate if datastore is the workspace default datastore
	IsDefault *bool
}

// GetDatastoreProperties implements the DatastorePropertiesClassification interface for type OneLakeDatastore.
func (o *OneLakeDatastore) GetDatastoreProperties() *DatastoreProperties {
	return &DatastoreProperties{
		Credentials:   o.Credentials,
		DatastoreType: o.DatastoreType,
		Description:   o.Description,
		IsDefault:     o.IsDefault,
		Properties:    o.Properties,
		Tags:          o.Tags,
	}
}

type OnlineDeployment struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// REQUIRED; [Required] Additional attributes of the entity.
	Properties OnlineDeploymentPropertiesClassification

	// Managed service identity (system assigned and/or user assigned identities)
	Identity *ManagedServiceIdentity

	// Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.
	Kind *string

	// Sku details required for ARM contract for Autoscaling.
	SKU *SKU

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

type OnlineDeploymentProperties struct {
	// REQUIRED; [Required] The compute type of the endpoint.
	EndpointComputeType *EndpointComputeType

	// If true, enables Application Insights logging.
	AppInsightsEnabled *bool

	// Code configuration for the endpoint deployment.
	CodeConfiguration *CodeConfiguration

	// The mdc configuration, we disable mdc when it's null.
	DataCollector *DataCollector

	// Description of the endpoint deployment.
	Description *string

	// If Enabled, allow egress public network access. If Disabled, this will create secure egress. Default: Enabled.
	EgressPublicNetworkAccess *EgressPublicNetworkAccessType

	// ARM resource ID or AssetId of the environment specification for the endpoint deployment.
	EnvironmentID *string

	// Environment variables configuration for the deployment.
	EnvironmentVariables map[string]*string

	// Compute instance type.
	InstanceType *string

	// Liveness probe monitors the health of the container regularly.
	LivenessProbe *ProbeSettings

	// The URI path to the model.
	Model *string

	// The path to mount the model in custom container.
	ModelMountPath *string

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string

	// Readiness probe validates if the container is ready to serve traffic. The properties and defaults are the same as liveness
	// probe.
	ReadinessProbe *ProbeSettings

	// Request settings for the deployment.
	RequestSettings *OnlineRequestSettings

	// Scale settings for the deployment. If it is null or not provided, it defaults to TargetUtilizationScaleSettings for KubernetesOnlineDeployment
	// and to DefaultScaleSettings for ManagedOnlineDeployment.
	ScaleSettings OnlineScaleSettingsClassification

	// READ-ONLY; Provisioning state for the endpoint deployment.
	ProvisioningState *DeploymentProvisioningState
}

// GetOnlineDeploymentProperties implements the OnlineDeploymentPropertiesClassification interface for type OnlineDeploymentProperties.
func (o *OnlineDeploymentProperties) GetOnlineDeploymentProperties() *OnlineDeploymentProperties {
	return o
}

// OnlineDeploymentTrackedResourceArmPaginatedResult - A paginated list of OnlineDeployment entities.
type OnlineDeploymentTrackedResourceArmPaginatedResult struct {
	// The link to the next page of OnlineDeployment objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type OnlineDeployment.
	Value []*OnlineDeployment
}

type OnlineEndpoint struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *OnlineEndpointProperties

	// Managed service identity (system assigned and/or user assigned identities)
	Identity *ManagedServiceIdentity

	// Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.
	Kind *string

	// Sku details required for ARM contract for Autoscaling.
	SKU *SKU

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

// OnlineEndpointProperties - Online endpoint configuration
type OnlineEndpointProperties struct {
	// REQUIRED; [Required] Use 'Key' for key based authentication and 'AMLToken' for Azure Machine Learning token-based authentication.
	// 'Key' doesn't expire but 'AMLToken' does.
	AuthMode *EndpointAuthMode

	// ARM resource ID of the compute if it exists. optional
	Compute *string

	// Description of the inference endpoint.
	Description *string

	// EndpointAuthKeys to set initially on an Endpoint. This property will always be returned as null. AuthKey values must be
	// retrieved using the ListKeys API.
	Keys *EndpointAuthKeys

	// Percentage of traffic to be mirrored to each deployment without using returned scoring. Traffic values need to sum to utmost
	// 50.
	MirrorTraffic map[string]*int32

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string

	// Set to "Enabled" for endpoints that should allow public access when Private Link is enabled.
	PublicNetworkAccess *PublicNetworkAccessType

	// Percentage of traffic from endpoint to divert to each deployment. Traffic values need to sum to 100.
	Traffic map[string]*int32

	// READ-ONLY; Provisioning state for the endpoint.
	ProvisioningState *EndpointProvisioningState

	// READ-ONLY; Endpoint URI.
	ScoringURI *string

	// READ-ONLY; Endpoint Swagger URI.
	SwaggerURI *string
}

// OnlineEndpointTrackedResourceArmPaginatedResult - A paginated list of OnlineEndpoint entities.
type OnlineEndpointTrackedResourceArmPaginatedResult struct {
	// The link to the next page of OnlineEndpoint objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type OnlineEndpoint.
	Value []*OnlineEndpoint
}

// OnlineRequestSettings - Online deployment scoring requests configuration.
type OnlineRequestSettings struct {
	// The number of maximum concurrent requests per node allowed per deployment. Defaults to 1.
	MaxConcurrentRequestsPerInstance *int32

	// (Deprecated for Managed Online Endpoints) The maximum amount of time a request will stay in the queue in ISO 8601 format.
	// Defaults to 500ms. (Now increase request_timeout_ms to account for any
	// networking/queue delays)
	MaxQueueWait *string

	// The scoring timeout in ISO 8601 format. Defaults to 5000ms.
	RequestTimeout *string
}

// OnlineScaleSettings - Online deployment scaling configuration.
type OnlineScaleSettings struct {
	// REQUIRED; [Required] Type of deployment scaling algorithm
	ScaleType *ScaleType
}

// GetOnlineScaleSettings implements the OnlineScaleSettingsClassification interface for type OnlineScaleSettings.
func (o *OnlineScaleSettings) GetOnlineScaleSettings() *OnlineScaleSettings { return o }

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

// OutboundRule - Outbound Rule for the managed network of a machine learning workspace.
type OutboundRule struct {
	// REQUIRED; Type of a managed network Outbound Rule of a machine learning workspace.
	Type *RuleType

	// Category of a managed network Outbound Rule of a machine learning workspace.
	Category *RuleCategory

	// Type of a managed network Outbound Rule of a machine learning workspace.
	Status *RuleStatus
}

// GetOutboundRule implements the OutboundRuleClassification interface for type OutboundRule.
func (o *OutboundRule) GetOutboundRule() *OutboundRule { return o }

// OutboundRuleBasicResource - Outbound Rule Basic Resource for the managed network of a machine learning workspace.
type OutboundRuleBasicResource struct {
	// REQUIRED; Outbound Rule for the managed network of a machine learning workspace.
	Properties OutboundRuleClassification

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

// OutboundRuleListResult - List of outbound rules for the managed network of a machine learning workspace.
type OutboundRuleListResult struct {
	// The link to the next page constructed using the continuationToken. If null, there are no additional pages.
	NextLink *string

	// The list of machine learning workspaces. Since this list may be incomplete, the nextLink field should be used to request
	// the next list of machine learning workspaces.
	Value []*OutboundRuleBasicResource
}

// OutputPathAssetReference - Reference to an asset via its path in a job output.
type OutputPathAssetReference struct {
	// REQUIRED; [Required] Specifies the type of asset reference.
	ReferenceType *ReferenceType

	// ARM resource ID of the job.
	JobID *string

	// The path of the file/directory in the job output.
	Path *string
}

// GetAssetReferenceBase implements the AssetReferenceBaseClassification interface for type OutputPathAssetReference.
func (o *OutputPathAssetReference) GetAssetReferenceBase() *AssetReferenceBase {
	return &AssetReferenceBase{
		ReferenceType: o.ReferenceType,
	}
}

type PATAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	Credentials   *WorkspaceConnectionPersonalAccessToken
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type PATAuthTypeWorkspaceConnectionProperties.
func (p *PATAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                p.AuthType,
		Category:                p.Category,
		CreatedByWorkspaceArmID: p.CreatedByWorkspaceArmID,
		ExpiryTime:              p.ExpiryTime,
		Group:                   p.Group,
		IsSharedToAll:           p.IsSharedToAll,
		Metadata:                p.Metadata,
		SharedUserList:          p.SharedUserList,
		Target:                  p.Target,
		Value:                   p.Value,
		ValueFormat:             p.ValueFormat,
	}
}

// PaginatedComputeResourcesList - Paginated list of Machine Learning compute objects wrapped in ARM resource envelope.
type PaginatedComputeResourcesList struct {
	// A continuation link (absolute URI) to the next page of results in the list.
	NextLink *string

	// An array of Machine Learning compute objects wrapped in ARM resource envelope.
	Value []*ComputeResource
}

// PartialBatchDeployment - Mutable batch inference settings per deployment.
type PartialBatchDeployment struct {
	// Description of the endpoint deployment.
	Description *string
}

// PartialBatchDeploymentPartialMinimalTrackedResourceWithProperties - Strictly used in update requests.
type PartialBatchDeploymentPartialMinimalTrackedResourceWithProperties struct {
	// Additional attributes of the entity.
	Properties *PartialBatchDeployment

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

// PartialManagedServiceIdentity - Managed service identity (system assigned and/or user assigned identities)
type PartialManagedServiceIdentity struct {
	// Managed service identity (system assigned and/or user assigned identities)
	Type *ManagedServiceIdentityType

	// The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM
	// resource ids in the form:
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
	// The dictionary values can be empty objects ({}) in
	// requests.
	UserAssignedIdentities map[string]any
}

// PartialMinimalTrackedResource - Strictly used in update requests.
type PartialMinimalTrackedResource struct {
	// Resource tags.
	Tags map[string]*string
}

// PartialMinimalTrackedResourceWithIdentity - Strictly used in update requests.
type PartialMinimalTrackedResourceWithIdentity struct {
	// Managed service identity (system assigned and/or user assigned identities)
	Identity *PartialManagedServiceIdentity

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

// PartialMinimalTrackedResourceWithSKU - Strictly used in update requests.
type PartialMinimalTrackedResourceWithSKU struct {
	// Sku details required for ARM contract for Autoscaling.
	SKU *PartialSKU

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

// PartialMinimalTrackedResourceWithSKUAndIdentity - Strictly used in update requests.
type PartialMinimalTrackedResourceWithSKUAndIdentity struct {
	// Managed service identity (system assigned and/or user assigned identities)
	Identity *PartialManagedServiceIdentity

	// Sku details required for ARM contract for Autoscaling.
	SKU *PartialSKU

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

// PartialRegistryPartialTrackedResource - Strictly used in update requests.
type PartialRegistryPartialTrackedResource struct {
	// Managed service identity (system assigned and/or user assigned identities)
	Identity *RegistryPartialManagedServiceIdentity

	// Sku details required for ARM contract for Autoscaling.
	SKU *PartialSKU

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

// PartialSKU - Common SKU definition.
type PartialSKU struct {
	// If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the
	// resource this may be omitted.
	Capacity *int32

	// If the service has different generations of hardware, for the same SKU, then that can be captured here.
	Family *string

	// The name of the SKU. Ex - P3. It is typically a letter+number code.
	Name *string

	// The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code.
	Size *string

	// This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required
	// on a PUT.
	Tier *SKUTier
}

type Password struct {
	// READ-ONLY
	Name *string

	// READ-ONLY
	Value *string
}

type PendingUploadCredentialDto struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialType *PendingUploadCredentialType
}

// GetPendingUploadCredentialDto implements the PendingUploadCredentialDtoClassification interface for type PendingUploadCredentialDto.
func (p *PendingUploadCredentialDto) GetPendingUploadCredentialDto() *PendingUploadCredentialDto {
	return p
}

type PendingUploadRequestDto struct {
	// If PendingUploadId = null then random guid will be used.
	PendingUploadID *string

	// TemporaryBlobReference is the only supported type
	PendingUploadType *PendingUploadType
}

type PendingUploadResponseDto struct {
	// Container level read, write, list SAS
	BlobReferenceForConsumption *BlobReferenceForConsumptionDto

	// ID for this upload request
	PendingUploadID *string

	// TemporaryBlobReference is the only supported type
	PendingUploadType *PendingUploadType
}

// PersonalComputeInstanceSettings - Settings for a personal compute instance.
type PersonalComputeInstanceSettings struct {
	// A user explicitly assigned to a personal compute instance.
	AssignedUser *AssignedUser
}

// PipelineJob - Pipeline Job definition: defines generic to MFE attributes.
type PipelineJob struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobType *JobType

	// ARM resource ID of the component resource.
	ComponentID *string

	// ARM resource ID of the compute resource.
	ComputeID *string

	// The asset description text.
	Description *string

	// Display name of job.
	DisplayName *string

	// The name of the experiment the job belongs to. If not set, the job is placed in the "Default" experiment.
	ExperimentName *string

	// Identity configuration. If set, this should be one of AmlToken, ManagedIdentity, UserIdentity or null. Defaults to AmlToken
	// if null.
	Identity IdentityConfigurationClassification

	// Inputs for the pipeline job.
	Inputs map[string]JobInputClassification

	// Is the asset archived?
	IsArchived *bool

	// Jobs construct the Pipeline Job.
	Jobs map[string]any

	// Notification setting for the job
	NotificationSetting *NotificationSetting

	// Outputs for the pipeline job
	Outputs map[string]JobOutputClassification

	// The asset property dictionary.
	Properties map[string]*string

	// List of JobEndpoints. For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
	Services map[string]*JobService

	// Pipeline settings, for things like ContinueRunOnStepFailure etc.
	Settings any

	// ARM resource ID of source job.
	SourceJobID *string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Status of the job.
	Status *JobStatus
}

// GetJobBaseProperties implements the JobBasePropertiesClassification interface for type PipelineJob.
func (p *PipelineJob) GetJobBaseProperties() *JobBaseProperties {
	return &JobBaseProperties{
		ComponentID:         p.ComponentID,
		ComputeID:           p.ComputeID,
		Description:         p.Description,
		DisplayName:         p.DisplayName,
		ExperimentName:      p.ExperimentName,
		Identity:            p.Identity,
		IsArchived:          p.IsArchived,
		JobType:             p.JobType,
		NotificationSetting: p.NotificationSetting,
		Properties:          p.Properties,
		Services:            p.Services,
		Status:              p.Status,
		Tags:                p.Tags,
	}
}

type PredictionDriftMetricThresholdBase struct {
	// REQUIRED; [Required] Specifies the data type of the metric threshold.
	DataType *MonitoringFeatureDataType

	// The threshold value. If null, a default value will be set depending on the selected metric.
	Threshold *MonitoringThreshold
}

// GetPredictionDriftMetricThresholdBase implements the PredictionDriftMetricThresholdBaseClassification interface for type
// PredictionDriftMetricThresholdBase.
func (p *PredictionDriftMetricThresholdBase) GetPredictionDriftMetricThresholdBase() *PredictionDriftMetricThresholdBase {
	return p
}

type PredictionDriftMonitoringSignal struct {
	// REQUIRED; [Required] A list of metrics to calculate and their associated thresholds.
	MetricThresholds []PredictionDriftMetricThresholdBaseClassification

	// REQUIRED; [Required] The data which drift will be calculated for.
	ProductionData MonitoringInputDataBaseClassification

	// REQUIRED; [Required] The data to calculate drift against.
	ReferenceData MonitoringInputDataBaseClassification

	// REQUIRED; [Required] Specifies the type of signal to monitor.
	SignalType *MonitoringSignalType

	// A dictionary that maps feature names to their respective data types.
	FeatureDataTypeOverride map[string]*MonitoringFeatureDataType

	// The current notification mode for this signal.
	NotificationTypes []*MonitoringNotificationType

	// Property dictionary. Properties can be added, but not removed or altered.
	Properties map[string]*string
}

// GetMonitoringSignalBase implements the MonitoringSignalBaseClassification interface for type PredictionDriftMonitoringSignal.
func (p *PredictionDriftMonitoringSignal) GetMonitoringSignalBase() *MonitoringSignalBase {
	return &MonitoringSignalBase{
		NotificationTypes: p.NotificationTypes,
		Properties:        p.Properties,
		SignalType:        p.SignalType,
	}
}

// PrivateEndpoint - The Private Endpoint resource.
type PrivateEndpoint struct {
	// READ-ONLY; The ARM identifier for Private Endpoint
	ID *string
}

// PrivateEndpointConnection - The Private Endpoint Connection resource.
type PrivateEndpointConnection struct {
	// The identity of the resource.
	Identity *ManagedServiceIdentity

	// Specifies the location of the resource.
	Location *string

	// Resource properties.
	Properties *PrivateEndpointConnectionProperties

	// The sku of the workspace.
	SKU *SKU

	// Contains resource tags defined as key/value pairs.
	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
}

// PrivateEndpointConnectionListResult - List of private endpoint connection associated with the specified workspace
type PrivateEndpointConnectionListResult struct {
	// Array of private endpoint connections
	Value []*PrivateEndpointConnection
}

// PrivateEndpointConnectionProperties - Properties of the PrivateEndpointConnectProperties.
type PrivateEndpointConnectionProperties struct {
	// REQUIRED; A collection of information about the state of the connection between service consumer and provider.
	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState

	// The resource of private end point.
	PrivateEndpoint *PrivateEndpoint

	// READ-ONLY; The provisioning state of the private endpoint connection resource.
	ProvisioningState *PrivateEndpointConnectionProvisioningState
}

// PrivateEndpointDestination - Private Endpoint destination for a Private Endpoint Outbound Rule for the managed network
// of a machine learning workspace.
type PrivateEndpointDestination struct {
	ServiceResourceID *string
	SparkEnabled      *bool

	// Type of a managed network Outbound Rule of a machine learning workspace.
	SparkStatus       *RuleStatus
	SubresourceTarget *string
}

// PrivateEndpointOutboundRule - Private Endpoint Outbound Rule for the managed network of a machine learning workspace.
type PrivateEndpointOutboundRule struct {
	// REQUIRED; Type of a managed network Outbound Rule of a machine learning workspace.
	Type *RuleType

	// Category of a managed network Outbound Rule of a machine learning workspace.
	Category *RuleCategory

	// Private Endpoint destination for a Private Endpoint Outbound Rule for the managed network of a machine learning workspace.
	Destination *PrivateEndpointDestination

	// Type of a managed network Outbound Rule of a machine learning workspace.
	Status *RuleStatus
}

// GetOutboundRule implements the OutboundRuleClassification interface for type PrivateEndpointOutboundRule.
func (p *PrivateEndpointOutboundRule) GetOutboundRule() *OutboundRule {
	return &OutboundRule{
		Category: p.Category,
		Status:   p.Status,
		Type:     p.Type,
	}
}

// PrivateEndpointResource - The PE network resource that is linked to this PE connection.
type PrivateEndpointResource struct {
	// The subnetId that the private endpoint is connected to.
	SubnetArmID *string

	// READ-ONLY; The ARM identifier for Private Endpoint
	ID *string
}

// PrivateLinkResource - A private link resource
type PrivateLinkResource struct {
	// The identity of the resource.
	Identity *ManagedServiceIdentity

	// Specifies the location of the resource.
	Location *string

	// Resource properties.
	Properties *PrivateLinkResourceProperties

	// The sku of the workspace.
	SKU *SKU

	// Contains resource tags defined as key/value pairs.
	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
}

// PrivateLinkResourceListResult - A list of private link resources
type PrivateLinkResourceListResult struct {
	// Array of private link resources
	Value []*PrivateLinkResource
}

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

// ProbeSettings - Deployment container liveness/readiness probe configuration.
type ProbeSettings struct {
	// The number of failures to allow before returning an unhealthy status.
	FailureThreshold *int32

	// The delay before the first probe in ISO 8601 format.
	InitialDelay *string

	// The length of time between probes in ISO 8601 format.
	Period *string

	// The number of successful probes before returning a healthy status.
	SuccessThreshold *int32

	// The probe timeout in ISO 8601 format.
	Timeout *string
}

// ProxyResource - The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a
// location
type ProxyResource struct {
	// 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
}

// PyTorch distribution configuration.
type PyTorch struct {
	// REQUIRED; [Required] Specifies the type of distribution framework.
	DistributionType *DistributionType

	// Number of processes per node.
	ProcessCountPerInstance *int32
}

// GetDistributionConfiguration implements the DistributionConfigurationClassification interface for type PyTorch.
func (p *PyTorch) GetDistributionConfiguration() *DistributionConfiguration {
	return &DistributionConfiguration{
		DistributionType: p.DistributionType,
	}
}

type QueueSettings struct {
	// Controls the compute job tier
	JobTier *JobTier
}

// QuotaBaseProperties - The properties for Quota update or retrieval.
type QuotaBaseProperties struct {
	// Specifies the resource ID.
	ID *string

	// The maximum permitted quota of the resource.
	Limit *int64

	// Specifies the resource type.
	Type *string

	// An enum describing the unit of quota measurement.
	Unit *QuotaUnit
}

// QuotaUpdateParameters - Quota update parameters.
type QuotaUpdateParameters struct {
	// Region of workspace quota to be updated.
	Location *string

	// The list for update quota.
	Value []*QuotaBaseProperties
}

// RandomSamplingAlgorithm - Defines a Sampling Algorithm that generates values randomly
type RandomSamplingAlgorithm struct {
	// REQUIRED; [Required] The algorithm used for generating hyperparameter values, along with configuration properties
	SamplingAlgorithmType *SamplingAlgorithmType

	// The specific type of random algorithm
	Rule *RandomSamplingAlgorithmRule

	// An optional integer to use as the seed for random number generation
	Seed *int32
}

// GetSamplingAlgorithm implements the SamplingAlgorithmClassification interface for type RandomSamplingAlgorithm.
func (r *RandomSamplingAlgorithm) GetSamplingAlgorithm() *SamplingAlgorithm {
	return &SamplingAlgorithm{
		SamplingAlgorithmType: r.SamplingAlgorithmType,
	}
}

// Recurrence - The workflow trigger recurrence for ComputeStartStop schedule type.
type Recurrence struct {
	// [Required] The frequency to trigger schedule.
	Frequency *ComputeRecurrenceFrequency

	// [Required] Specifies schedule interval in conjunction with frequency
	Interval *int32

	// [Required] The recurrence schedule.
	Schedule *ComputeRecurrenceSchedule

	// The start time in yyyy-MM-ddTHH:mm:ss format.
	StartTime *string

	// Specifies time zone in which the schedule runs. TimeZone should follow Windows time zone format. Refer:
	// https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11
	TimeZone *string
}

type RecurrenceSchedule struct {
	// REQUIRED; [Required] List of hours for the schedule.
	Hours []*int32

	// REQUIRED; [Required] List of minutes for the schedule.
	Minutes []*int32

	// List of month days for the schedule
	MonthDays []*int32

	// List of days for the schedule.
	WeekDays []*WeekDay
}

type RecurrenceTrigger struct {
	// REQUIRED; [Required] The frequency to trigger schedule.
	Frequency *RecurrenceFrequency

	// REQUIRED; [Required] Specifies schedule interval in conjunction with frequency
	Interval *int32

	// REQUIRED; [Required]
	TriggerType *TriggerType

	// Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer https://en.wikipedia.org/wiki/ISO_8601. Recommented
	// format would be "2022-06-01T00:00:01" If not present, the schedule will
	// run indefinitely
	EndTime *string

	// The recurrence schedule.
	Schedule *RecurrenceSchedule

	// Specifies start time of schedule in ISO 8601 format, but without a UTC offset.
	StartTime *string

	// Specifies time zone in which the schedule runs. TimeZone should follow Windows time zone format. Refer:
	// https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11
	TimeZone *string
}

// GetTriggerBase implements the TriggerBaseClassification interface for type RecurrenceTrigger.
func (r *RecurrenceTrigger) GetTriggerBase() *TriggerBase {
	return &TriggerBase{
		EndTime:     r.EndTime,
		StartTime:   r.StartTime,
		TimeZone:    r.TimeZone,
		TriggerType: r.TriggerType,
	}
}

type RegenerateEndpointKeysRequest struct {
	// REQUIRED; [Required] Specification for which type of key to generate. Primary or Secondary.
	KeyType *KeyType

	// The value the key is set to.
	KeyValue *string
}

type Registry struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *RegistryProperties

	// Managed service identity (system assigned and/or user assigned identities)
	Identity *ManagedServiceIdentity

	// Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.
	Kind *string

	// Sku details required for ARM contract for Autoscaling.
	SKU *SKU

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

type RegistryListCredentialsResult struct {
	Passwords []*Password

	// READ-ONLY
	Location *string

	// READ-ONLY
	Username *string
}

// RegistryPartialManagedServiceIdentity - Managed service identity (system assigned and/or user assigned identities)
type RegistryPartialManagedServiceIdentity struct {
	// REQUIRED; Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
	Type *ManagedServiceIdentityType

	// The set of user assigned identities associated with the resource. The userAssignedIdentities dictionary keys will be ARM
	// resource ids in the form:
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.
	// The dictionary values can be empty objects ({}) in
	// requests.
	UserAssignedIdentities map[string]*UserAssignedIdentity

	// READ-ONLY; The service principal ID of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	PrincipalID *string

	// READ-ONLY; The tenant ID of the system assigned identity. This property will only be provided for a system assigned identity.
	TenantID *string
}

// RegistryPrivateEndpointConnection - Private endpoint connection definition.
type RegistryPrivateEndpointConnection struct {
	// This is the private endpoint connection name created on SRP Full resource id:
	// /subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.MachineLearningServices/{resourceType}/{resourceName}/registryPrivateEndpointConnections/{peConnectionName}
	ID *string

	// Same as workspace location.
	Location *string

	// Properties of the Private Endpoint Connection
	Properties *RegistryPrivateEndpointConnectionProperties
}

// RegistryPrivateEndpointConnectionProperties - Properties of the Private Endpoint Connection
type RegistryPrivateEndpointConnectionProperties struct {
	// The group ids
	GroupIDs []*string

	// The PE network resource that is linked to this PE connection.
	PrivateEndpoint *PrivateEndpointResource

	// One of null, "Succeeded", "Provisioning", "Failed". While not approved, it's null.
	ProvisioningState *string

	// The connection state.
	RegistryPrivateLinkServiceConnectionState *RegistryPrivateLinkServiceConnectionState
}

// RegistryPrivateLinkServiceConnectionState - The connection state.
type RegistryPrivateLinkServiceConnectionState struct {
	// Some RP chose "None". Other RPs use this for region expansion.
	ActionsRequired *string

	// User-defined message that, per NRP doc, may be used for approval-related message.
	Description *string

	// Connection status of the service consumer with the service provider
	Status *EndpointServiceConnectionStatus
}

// RegistryProperties - Details of the Registry
type RegistryProperties struct {
	// Discovery URL for the Registry
	DiscoveryURL *string

	// IntellectualPropertyPublisher for the registry
	IntellectualPropertyPublisher *string

	// ResourceId of the managed RG if the registry has system created resources
	ManagedResourceGroup *ArmResourceID

	// MLFlow Registry URI for the Registry
	MlFlowRegistryURI *string

	// Is the Registry accessible from the internet? Possible values: "Enabled" or "Disabled"
	PublicNetworkAccess *string

	// Details of each region the registry is in
	RegionDetails []*RegistryRegionArmDetails

	// Private endpoint connections info used for pending connections in private link portal
	RegistryPrivateEndpointConnections []*RegistryPrivateEndpointConnection
}

// RegistryRegionArmDetails - Details for each region the registry is in
type RegistryRegionArmDetails struct {
	// List of ACR accounts
	AcrDetails []*AcrDetails

	// The location where the registry exists
	Location *string

	// List of storage accounts
	StorageAccountDetails []*StorageAccountDetails
}

// RegistryTrackedResourceArmPaginatedResult - A paginated list of Registry entities.
type RegistryTrackedResourceArmPaginatedResult struct {
	// The link to the next page of Registry objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type Registry.
	Value []*Registry
}

// Regression task in AutoML Table vertical.
type Regression struct {
	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Columns to use for CVSplit data.
	CvSplitColumnNames []*string

	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *TableVerticalFeaturizationSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *TableVerticalLimitSettings

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Number of cross validation folds to be applied on training dataset when validation dataset is not provided.
	NCrossValidations NCrossValidationsClassification

	// Primary metric for regression task.
	PrimaryMetric *RegressionPrimaryMetrics

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Test data input.
	TestData *MLTableJobInput

	// The fraction of test dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied when
	// validation dataset is not provided.
	TestDataSize *float64

	// Inputs for training phase for an AutoML Job.
	TrainingSettings *RegressionTrainingSettings

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64

	// The name of the sample weight column. Automated ML supports a weighted column as an input, causing rows in the data to
	// be weighted up or down.
	WeightColumnName *string
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type Regression.
func (r *Regression) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     r.LogVerbosity,
		TargetColumnName: r.TargetColumnName,
		TaskType:         r.TaskType,
		TrainingData:     r.TrainingData,
	}
}

// RegressionTrainingSettings - Regression Training related configuration.
type RegressionTrainingSettings struct {
	// Allowed models for regression task.
	AllowedTrainingAlgorithms []*RegressionModels

	// Blocked models for regression task.
	BlockedTrainingAlgorithms []*RegressionModels

	// Enable recommendation of DNN models.
	EnableDnnTraining *bool

	// Flag to turn on explainability on best model.
	EnableModelExplainability *bool

	// Flag for enabling onnx compatible models.
	EnableOnnxCompatibleModels *bool

	// Enable stack ensemble run.
	EnableStackEnsemble *bool

	// Enable voting ensemble run.
	EnableVoteEnsemble *bool

	// During VotingEnsemble and StackEnsemble model generation, multiple fitted models from the previous child runs are downloaded.
	// Configure this parameter with a higher value than 300 secs, if more time
	// is needed.
	EnsembleModelDownloadTimeout *string

	// Stack ensemble settings for stack ensemble run.
	StackEnsembleSettings *StackEnsembleSettings
}

type RequestLogging struct {
	// For payload logging, we only collect payload by default. If customers also want to collect the specified headers, they
	// can set them in captureHeaders so that backend will collect those headers along
	// with payload.
	CaptureHeaders []*string
}

// Resource - Common fields that are returned in the response for all Azure Resource Manager resources
type Resource struct {
	// 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
}

type ResourceBase struct {
	// The asset description text.
	Description *string

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string
}

type ResourceConfiguration struct {
	// Optional number of instances or nodes used by the compute target.
	InstanceCount *int32

	// Optional type of VM used as supported by the compute target.
	InstanceType *string

	// Additional properties bag.
	Properties map[string]any
}

// ResourceID - Represents a resource ID. For example, for a subnet, it is the resource URL for the subnet.
type ResourceID struct {
	// REQUIRED; The ID of the resource
	ID *string
}

// ResourceName - The Resource Name.
type ResourceName struct {
	// READ-ONLY; The localized name of the resource.
	LocalizedValue *string

	// READ-ONLY; The name of the resource.
	Value *string
}

// ResourceQuota - The quota assigned to a resource.
type ResourceQuota struct {
	// READ-ONLY; Region of the AML workspace in the id.
	AmlWorkspaceLocation *string

	// READ-ONLY; Specifies the resource ID.
	ID *string

	// READ-ONLY; The maximum permitted quota of the resource.
	Limit *int64

	// READ-ONLY; Name of the resource.
	Name *ResourceName

	// READ-ONLY; Specifies the resource type.
	Type *string

	// READ-ONLY; An enum describing the unit of quota measurement.
	Unit *QuotaUnit
}

// RollingInputData - Rolling input data definition.
type RollingInputData struct {
	// REQUIRED; [Required] Specifies the type of signal to monitor.
	InputDataType *MonitoringInputDataType

	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// REQUIRED; [Required] The time offset between the end of the data window and the monitor's current run time.
	WindowOffset *string

	// REQUIRED; [Required] The size of the rolling data window.
	WindowSize *string

	// Mapping of column names to special uses.
	Columns map[string]*string

	// The context metadata of the data source.
	DataContext *string

	// Reference to the component asset used to preprocess the data.
	PreprocessingComponentID *string
}

// GetMonitoringInputDataBase implements the MonitoringInputDataBaseClassification interface for type RollingInputData.
func (r *RollingInputData) GetMonitoringInputDataBase() *MonitoringInputDataBase {
	return &MonitoringInputDataBase{
		Columns:       r.Columns,
		DataContext:   r.DataContext,
		InputDataType: r.InputDataType,
		JobInputType:  r.JobInputType,
		URI:           r.URI,
	}
}

type Route struct {
	// REQUIRED; [Required] The path for the route.
	Path *string

	// REQUIRED; [Required] The port for the route.
	Port *int32
}

type SASAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	Credentials   *WorkspaceConnectionSharedAccessSignature
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type SASAuthTypeWorkspaceConnectionProperties.
func (s *SASAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                s.AuthType,
		Category:                s.Category,
		CreatedByWorkspaceArmID: s.CreatedByWorkspaceArmID,
		ExpiryTime:              s.ExpiryTime,
		Group:                   s.Group,
		IsSharedToAll:           s.IsSharedToAll,
		Metadata:                s.Metadata,
		SharedUserList:          s.SharedUserList,
		Target:                  s.Target,
		Value:                   s.Value,
		ValueFormat:             s.ValueFormat,
	}
}

// SASCredential - Access with full SAS uri
type SASCredential struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialType *DataReferenceCredentialType

	// Full SAS Uri, including the storage, container/blob path and SAS token
	SasURI *string
}

// GetDataReferenceCredential implements the DataReferenceCredentialClassification interface for type SASCredential.
func (s *SASCredential) GetDataReferenceCredential() *DataReferenceCredential {
	return &DataReferenceCredential{
		CredentialType: s.CredentialType,
	}
}

type SASCredentialDto struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialType *PendingUploadCredentialType

	// Full SAS Uri, including the storage, container/blob path and SAS token
	SasURI *string
}

// GetPendingUploadCredentialDto implements the PendingUploadCredentialDtoClassification interface for type SASCredentialDto.
func (s *SASCredentialDto) GetPendingUploadCredentialDto() *PendingUploadCredentialDto {
	return &PendingUploadCredentialDto{
		CredentialType: s.CredentialType,
	}
}

// SKU - The resource model definition representing SKU
type SKU struct {
	// REQUIRED; The name of the SKU. Ex - P3. It is typically a letter+number code
	Name *string

	// If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the
	// resource this may be omitted.
	Capacity *int32

	// If the service has different generations of hardware, for the same SKU, then that can be captured here.
	Family *string

	// The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code.
	Size *string

	// This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required
	// on a PUT.
	Tier *SKUTier
}

// SKUCapacity - SKU capacity information
type SKUCapacity struct {
	// Gets or sets the default capacity.
	Default *int32

	// Gets or sets the maximum.
	Maximum *int32

	// Gets or sets the minimum.
	Minimum *int32

	// Gets or sets the type of the scale.
	ScaleType *SKUScaleType
}

// SKUResource - Fulfills ARM Contract requirement to list all available SKUS for a resource.
type SKUResource struct {
	// Gets or sets the Sku Capacity.
	Capacity *SKUCapacity

	// Gets or sets the Sku.
	SKU *SKUSetting

	// READ-ONLY; The resource type name.
	ResourceType *string
}

// SKUResourceArmPaginatedResult - A paginated list of SkuResource entities.
type SKUResourceArmPaginatedResult struct {
	// The link to the next page of SkuResource objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type SkuResource.
	Value []*SKUResource
}

// SKUSetting - SkuSetting fulfills the need for stripped down SKU info in ARM contract.
type SKUSetting struct {
	// REQUIRED; [Required] The name of the SKU. Ex - P3. It is typically a letter+number code.
	Name *string

	// This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required
	// on a PUT.
	Tier *SKUTier
}

// SSLConfiguration - The ssl configuration for scoring
type SSLConfiguration struct {
	// Cert data
	Cert *string

	// CNAME of the cert
	Cname *string

	// Key data
	Key *string

	// Leaf domain label of public endpoint
	LeafDomainLabel *string

	// Indicates whether to overwrite existing domain label.
	OverwriteExistingDomain *bool

	// Enable or disable ssl for scoring
	Status *SSLConfigStatus
}

// SamplingAlgorithm - The Sampling Algorithm used to generate hyperparameter values, along with properties to configure the
// algorithm
type SamplingAlgorithm struct {
	// REQUIRED; [Required] The algorithm used for generating hyperparameter values, along with configuration properties
	SamplingAlgorithmType *SamplingAlgorithmType
}

// GetSamplingAlgorithm implements the SamplingAlgorithmClassification interface for type SamplingAlgorithm.
func (s *SamplingAlgorithm) GetSamplingAlgorithm() *SamplingAlgorithm { return s }

// SasDatastoreCredentials - SAS datastore credentials configuration.
type SasDatastoreCredentials struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialsType *CredentialsType

	// REQUIRED; [Required] Storage container secrets.
	Secrets *SasDatastoreSecrets
}

// GetDatastoreCredentials implements the DatastoreCredentialsClassification interface for type SasDatastoreCredentials.
func (s *SasDatastoreCredentials) GetDatastoreCredentials() *DatastoreCredentials {
	return &DatastoreCredentials{
		CredentialsType: s.CredentialsType,
	}
}

// SasDatastoreSecrets - Datastore SAS secrets.
type SasDatastoreSecrets struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	SecretsType *SecretsType

	// Storage container SAS token.
	SasToken *string
}

// GetDatastoreSecrets implements the DatastoreSecretsClassification interface for type SasDatastoreSecrets.
func (s *SasDatastoreSecrets) GetDatastoreSecrets() *DatastoreSecrets {
	return &DatastoreSecrets{
		SecretsType: s.SecretsType,
	}
}

// ScaleSettings - scale settings for AML Compute
type ScaleSettings struct {
	// REQUIRED; Max number of nodes to use
	MaxNodeCount *int32

	// Min number of nodes to use
	MinNodeCount *int32

	// Node Idle Time before scaling down amlCompute. This string needs to be in the RFC Format.
	NodeIdleTimeBeforeScaleDown *string
}

// ScaleSettingsInformation - Desired scale settings for the amlCompute.
type ScaleSettingsInformation struct {
	// scale settings for AML Compute
	ScaleSettings *ScaleSettings
}

// Schedule - Azure Resource Manager resource envelope.
type Schedule struct {
	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *ScheduleProperties

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

type ScheduleActionBase struct {
	// REQUIRED; [Required] Specifies the action type of the schedule
	ActionType *ScheduleActionType
}

// GetScheduleActionBase implements the ScheduleActionBaseClassification interface for type ScheduleActionBase.
func (s *ScheduleActionBase) GetScheduleActionBase() *ScheduleActionBase { return s }

type ScheduleBase struct {
	// A system assigned id for the schedule.
	ID *string

	// The current deployment state of schedule.
	ProvisioningStatus *ScheduleProvisioningState

	// Is the schedule enabled or disabled?
	Status *ScheduleStatus
}

// ScheduleProperties - Base definition of a schedule
type ScheduleProperties struct {
	// REQUIRED; [Required] Specifies the action of the schedule
	Action ScheduleActionBaseClassification

	// REQUIRED; [Required] Specifies the trigger details
	Trigger TriggerBaseClassification

	// The asset description text.
	Description *string

	// Display name of schedule.
	DisplayName *string

	// Is the schedule enabled?
	IsEnabled *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Provisioning state for the schedule.
	ProvisioningState *ScheduleProvisioningStatus
}

// ScheduleResourceArmPaginatedResult - A paginated list of Schedule entities.
type ScheduleResourceArmPaginatedResult struct {
	// The link to the next page of Schedule objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type Schedule.
	Value []*Schedule
}

// ScriptReference - Script reference
type ScriptReference struct {
	// Optional command line arguments passed to the script to run.
	ScriptArguments *string

	// The location of scripts in the mounted volume.
	ScriptData *string

	// The storage source of the script: workspace.
	ScriptSource *string

	// Optional time period passed to timeout command.
	Timeout *string
}

// ScriptsToExecute - Customized setup scripts
type ScriptsToExecute struct {
	// Script that's run only once during provision of the compute.
	CreationScript *ScriptReference

	// Script that's run every time the machine starts.
	StartupScript *ScriptReference
}

// Seasonality - Forecasting seasonality.
type Seasonality struct {
	// REQUIRED; [Required] Seasonality mode.
	Mode *SeasonalityMode
}

// GetSeasonality implements the SeasonalityClassification interface for type Seasonality.
func (s *Seasonality) GetSeasonality() *Seasonality { return s }

type ServerlessComputeSettings struct {
	// The resource ID of an existing virtual network subnet in which serverless compute nodes should be deployed
	ServerlessComputeCustomSubnet *string

	// The flag to signal if serverless compute nodes deployed in custom vNet would have no public IP addresses for a workspace
	// with private endpoint
	ServerlessComputeNoPublicIP *bool
}

type ServerlessEndpoint struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// REQUIRED; [Required] Additional attributes of the entity.
	Properties *ServerlessEndpointProperties

	// Managed service identity (system assigned and/or user assigned identities)
	Identity *ManagedServiceIdentity

	// Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type.
	Kind *string

	// Sku details required for ARM contract for Autoscaling.
	SKU *SKU

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

type ServerlessEndpointProperties struct {
	// REQUIRED; [Required] Specifies the authentication mode for the Serverless endpoint.
	AuthMode *ServerlessInferenceEndpointAuthMode

	// Specifies the content safety options. If omitted, the default content safety settings will be configured
	ContentSafety *ContentSafety

	// The model settings (model id) for the model being serviced on the ServerlessEndpoint.
	ModelSettings *ModelSettings

	// READ-ONLY; The current state of the ServerlessEndpoint.
	EndpointState *ServerlessEndpointState

	// READ-ONLY; The inference uri to target when making requests against the serverless endpoint
	InferenceEndpoint *ServerlessInferenceEndpoint

	// READ-ONLY; The MarketplaceSubscription Azure ID associated to this ServerlessEndpoint.
	MarketplaceSubscriptionID *string

	// READ-ONLY; Provisioning state for the endpoint.
	ProvisioningState *EndpointProvisioningState
}

// ServerlessEndpointTrackedResourceArmPaginatedResult - A paginated list of ServerlessEndpoint entities.
type ServerlessEndpointTrackedResourceArmPaginatedResult struct {
	// The link to the next page of ServerlessEndpoint objects. If null, there are no additional pages.
	NextLink *string

	// An array of objects of type ServerlessEndpoint.
	Value []*ServerlessEndpoint
}

type ServerlessInferenceEndpoint struct {
	// REQUIRED; [Required] The inference uri to target when making requests against the Serverless Endpoint.
	URI *string

	// READ-ONLY; Specifies any required headers to target this serverless endpoint.
	Headers map[string]*string
}

type ServiceManagedResourcesSettings struct {
	// The settings for the service managed cosmosdb account.
	CosmosDb *CosmosDbSettings
}

type ServicePrincipalAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	Credentials   *WorkspaceConnectionServicePrincipal
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type ServicePrincipalAuthTypeWorkspaceConnectionProperties.
func (s *ServicePrincipalAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                s.AuthType,
		Category:                s.Category,
		CreatedByWorkspaceArmID: s.CreatedByWorkspaceArmID,
		ExpiryTime:              s.ExpiryTime,
		Group:                   s.Group,
		IsSharedToAll:           s.IsSharedToAll,
		Metadata:                s.Metadata,
		SharedUserList:          s.SharedUserList,
		Target:                  s.Target,
		Value:                   s.Value,
		ValueFormat:             s.ValueFormat,
	}
}

// ServicePrincipalDatastoreCredentials - Service Principal datastore credentials configuration.
type ServicePrincipalDatastoreCredentials struct {
	// REQUIRED; [Required] Service principal client ID.
	ClientID *string

	// REQUIRED; [Required] Credential type used to authentication with storage.
	CredentialsType *CredentialsType

	// REQUIRED; [Required] Service principal secrets.
	Secrets *ServicePrincipalDatastoreSecrets

	// REQUIRED; [Required] ID of the tenant to which the service principal belongs.
	TenantID *string

	// Authority URL used for authentication.
	AuthorityURL *string

	// Resource the service principal has access to.
	ResourceURL *string
}

// GetDatastoreCredentials implements the DatastoreCredentialsClassification interface for type ServicePrincipalDatastoreCredentials.
func (s *ServicePrincipalDatastoreCredentials) GetDatastoreCredentials() *DatastoreCredentials {
	return &DatastoreCredentials{
		CredentialsType: s.CredentialsType,
	}
}

// ServicePrincipalDatastoreSecrets - Datastore Service Principal secrets.
type ServicePrincipalDatastoreSecrets struct {
	// REQUIRED; [Required] Credential type used to authentication with storage.
	SecretsType *SecretsType

	// Service principal secret.
	ClientSecret *string
}

// GetDatastoreSecrets implements the DatastoreSecretsClassification interface for type ServicePrincipalDatastoreSecrets.
func (s *ServicePrincipalDatastoreSecrets) GetDatastoreSecrets() *DatastoreSecrets {
	return &DatastoreSecrets{
		SecretsType: s.SecretsType,
	}
}

// ServiceTagDestination - Service Tag destination for a Service Tag Outbound Rule for the managed network of a machine learning
// workspace.
type ServiceTagDestination struct {
	// The action enum for networking rule.
	Action     *RuleAction
	PortRanges *string
	Protocol   *string
	ServiceTag *string

	// READ-ONLY; Optional, if provided, the ServiceTag property will be ignored.
	AddressPrefixes []*string
}

// ServiceTagOutboundRule - Service Tag Outbound Rule for the managed network of a machine learning workspace.
type ServiceTagOutboundRule struct {
	// REQUIRED; Type of a managed network Outbound Rule of a machine learning workspace.
	Type *RuleType

	// Category of a managed network Outbound Rule of a machine learning workspace.
	Category *RuleCategory

	// Service Tag destination for a Service Tag Outbound Rule for the managed network of a machine learning workspace.
	Destination *ServiceTagDestination

	// Type of a managed network Outbound Rule of a machine learning workspace.
	Status *RuleStatus
}

// GetOutboundRule implements the OutboundRuleClassification interface for type ServiceTagOutboundRule.
func (s *ServiceTagOutboundRule) GetOutboundRule() *OutboundRule {
	return &OutboundRule{
		Category: s.Category,
		Status:   s.Status,
		Type:     s.Type,
	}
}

// SetupScripts - Details of customized scripts to execute for setting up the cluster.
type SetupScripts struct {
	// Customized setup scripts
	Scripts *ScriptsToExecute
}

type SharedPrivateLinkResource struct {
	// Unique name of the private link.
	Name *string

	// Resource properties.
	Properties *SharedPrivateLinkResourceProperty
}

// SharedPrivateLinkResourceProperty - Properties of a shared private link resource.
type SharedPrivateLinkResourceProperty struct {
	// The private link resource group id.
	GroupID *string

	// The resource id that private link links to.
	PrivateLinkResourceID *string

	// Request message.
	RequestMessage *string

	// Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.
	Status *PrivateEndpointServiceConnectionStatus
}

// SparkJob - Spark job definition.
type SparkJob struct {
	// REQUIRED; [Required] arm-id of the code asset.
	CodeID *string

	// REQUIRED; [Required] The entry to execute on startup of the job.
	Entry SparkJobEntryClassification

	// REQUIRED; [Required] Specifies the type of job.
	JobType *JobType

	// Archive files used in the job.
	Archives []*string

	// Arguments for the job.
	Args *string

	// ARM resource ID of the component resource.
	ComponentID *string

	// ARM resource ID of the compute resource.
	ComputeID *string

	// Spark configured properties.
	Conf map[string]*string

	// The asset description text.
	Description *string

	// Display name of job.
	DisplayName *string

	// The ARM resource ID of the Environment specification for the job.
	EnvironmentID *string

	// Environment variables included in the job.
	EnvironmentVariables map[string]*string

	// The name of the experiment the job belongs to. If not set, the job is placed in the "Default" experiment.
	ExperimentName *string

	// Files used in the job.
	Files []*string

	// Identity configuration. If set, this should be one of AmlToken, ManagedIdentity, UserIdentity or null. Defaults to AmlToken
	// if null.
	Identity IdentityConfigurationClassification

	// Mapping of input data bindings used in the job.
	Inputs map[string]JobInputClassification

	// Is the asset archived?
	IsArchived *bool

	// Jar files used in the job.
	Jars []*string

	// Notification setting for the job
	NotificationSetting *NotificationSetting

	// Mapping of output data bindings used in the job.
	Outputs map[string]JobOutputClassification

	// The asset property dictionary.
	Properties map[string]*string

	// Python files used in the job.
	PyFiles []*string

	// Queue settings for the job
	QueueSettings *QueueSettings

	// Compute Resource configuration for the job.
	Resources *SparkResourceConfiguration

	// List of JobEndpoints. For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
	Services map[string]*JobService

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Status of the job.
	Status *JobStatus
}

// GetJobBaseProperties implements the JobBasePropertiesClassification interface for type SparkJob.
func (s *SparkJob) GetJobBaseProperties() *JobBaseProperties {
	return &JobBaseProperties{
		ComponentID:         s.ComponentID,
		ComputeID:           s.ComputeID,
		Description:         s.Description,
		DisplayName:         s.DisplayName,
		ExperimentName:      s.ExperimentName,
		Identity:            s.Identity,
		IsArchived:          s.IsArchived,
		JobType:             s.JobType,
		NotificationSetting: s.NotificationSetting,
		Properties:          s.Properties,
		Services:            s.Services,
		Status:              s.Status,
		Tags:                s.Tags,
	}
}

// SparkJobEntry - Spark job entry point definition.
type SparkJobEntry struct {
	// REQUIRED; [Required] Type of the job's entry point.
	SparkJobEntryType *SparkJobEntryType
}

// GetSparkJobEntry implements the SparkJobEntryClassification interface for type SparkJobEntry.
func (s *SparkJobEntry) GetSparkJobEntry() *SparkJobEntry { return s }

type SparkJobPythonEntry struct {
	// REQUIRED; [Required] Relative python file path for job entry point.
	File *string

	// REQUIRED; [Required] Type of the job's entry point.
	SparkJobEntryType *SparkJobEntryType
}

// GetSparkJobEntry implements the SparkJobEntryClassification interface for type SparkJobPythonEntry.
func (s *SparkJobPythonEntry) GetSparkJobEntry() *SparkJobEntry {
	return &SparkJobEntry{
		SparkJobEntryType: s.SparkJobEntryType,
	}
}

type SparkJobScalaEntry struct {
	// REQUIRED; [Required] Scala class name used as entry point.
	ClassName *string

	// REQUIRED; [Required] Type of the job's entry point.
	SparkJobEntryType *SparkJobEntryType
}

// GetSparkJobEntry implements the SparkJobEntryClassification interface for type SparkJobScalaEntry.
func (s *SparkJobScalaEntry) GetSparkJobEntry() *SparkJobEntry {
	return &SparkJobEntry{
		SparkJobEntryType: s.SparkJobEntryType,
	}
}

type SparkResourceConfiguration struct {
	// Optional type of VM used as supported by the compute target.
	InstanceType *string

	// Version of spark runtime used for the job.
	RuntimeVersion *string
}

// StackEnsembleSettings - Advances setting to customize StackEnsemble run.
type StackEnsembleSettings struct {
	// Optional parameters to pass to the initializer of the meta-learner.
	StackMetaLearnerKWargs any

	// Specifies the proportion of the training set (when choosing train and validation type of training) to be reserved for training
	// the meta-learner. Default value is 0.2.
	StackMetaLearnerTrainPercentage *float64

	// The meta-learner is a model trained on the output of the individual heterogeneous models.
	StackMetaLearnerType *StackMetaLearnerType
}

// StaticInputData - Static input data definition.
type StaticInputData struct {
	// REQUIRED; [Required] Specifies the type of signal to monitor.
	InputDataType *MonitoringInputDataType

	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// REQUIRED; [Required] The end date of the data window.
	WindowEnd *time.Time

	// REQUIRED; [Required] The start date of the data window.
	WindowStart *time.Time

	// Mapping of column names to special uses.
	Columns map[string]*string

	// The context metadata of the data source.
	DataContext *string

	// Reference to the component asset used to preprocess the data.
	PreprocessingComponentID *string
}

// GetMonitoringInputDataBase implements the MonitoringInputDataBaseClassification interface for type StaticInputData.
func (s *StaticInputData) GetMonitoringInputDataBase() *MonitoringInputDataBase {
	return &MonitoringInputDataBase{
		Columns:       s.Columns,
		DataContext:   s.DataContext,
		InputDataType: s.InputDataType,
		JobInputType:  s.JobInputType,
		URI:           s.URI,
	}
}

// StorageAccountDetails - Details of storage account to be used for the Registry
type StorageAccountDetails struct {
	// Details of system created storage account to be used for the registry
	SystemCreatedStorageAccount *SystemCreatedStorageAccount

	// Details of user created storage account to be used for the registry
	UserCreatedStorageAccount *UserCreatedStorageAccount
}

// SweepJob - Sweep job definition.
type SweepJob struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobType *JobType

	// REQUIRED; [Required] Optimization objective.
	Objective *Objective

	// REQUIRED; [Required] The hyperparameter sampling algorithm
	SamplingAlgorithm SamplingAlgorithmClassification

	// REQUIRED; [Required] A dictionary containing each parameter and its distribution. The dictionary key is the name of the
	// parameter
	SearchSpace any

	// REQUIRED; [Required] Trial component definition.
	Trial *TrialComponent

	// ARM resource ID of the component resource.
	ComponentID *string

	// ARM resource ID of the compute resource.
	ComputeID *string

	// The asset description text.
	Description *string

	// Display name of job.
	DisplayName *string

	// Early termination policies enable canceling poor-performing runs before they complete
	EarlyTermination EarlyTerminationPolicyClassification

	// The name of the experiment the job belongs to. If not set, the job is placed in the "Default" experiment.
	ExperimentName *string

	// Identity configuration. If set, this should be one of AmlToken, ManagedIdentity, UserIdentity or null. Defaults to AmlToken
	// if null.
	Identity IdentityConfigurationClassification

	// Mapping of input data bindings used in the job.
	Inputs map[string]JobInputClassification

	// Is the asset archived?
	IsArchived *bool

	// Sweep Job limit.
	Limits *SweepJobLimits

	// Notification setting for the job
	NotificationSetting *NotificationSetting

	// Mapping of output data bindings used in the job.
	Outputs map[string]JobOutputClassification

	// The asset property dictionary.
	Properties map[string]*string

	// Queue settings for the job
	QueueSettings *QueueSettings

	// List of JobEndpoints. For local jobs, a job endpoint will have an endpoint value of FileStreamObject.
	Services map[string]*JobService

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string

	// READ-ONLY; Status of the job.
	Status *JobStatus
}

// GetJobBaseProperties implements the JobBasePropertiesClassification interface for type SweepJob.
func (s *SweepJob) GetJobBaseProperties() *JobBaseProperties {
	return &JobBaseProperties{
		ComponentID:         s.ComponentID,
		ComputeID:           s.ComputeID,
		Description:         s.Description,
		DisplayName:         s.DisplayName,
		ExperimentName:      s.ExperimentName,
		Identity:            s.Identity,
		IsArchived:          s.IsArchived,
		JobType:             s.JobType,
		NotificationSetting: s.NotificationSetting,
		Properties:          s.Properties,
		Services:            s.Services,
		Status:              s.Status,
		Tags:                s.Tags,
	}
}

// SweepJobLimits - Sweep Job limit class.
type SweepJobLimits struct {
	// REQUIRED; [Required] JobLimit type.
	JobLimitsType *JobLimitsType

	// Sweep Job max concurrent trials.
	MaxConcurrentTrials *int32

	// Sweep Job max total trials.
	MaxTotalTrials *int32

	// The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as
	// low as Seconds.
	Timeout *string

	// Sweep Job Trial timeout value.
	TrialTimeout *string
}

// GetJobLimits implements the JobLimitsClassification interface for type SweepJobLimits.
func (s *SweepJobLimits) GetJobLimits() *JobLimits {
	return &JobLimits{
		JobLimitsType: s.JobLimitsType,
		Timeout:       s.Timeout,
	}
}

// SynapseSpark - A SynapseSpark compute.
type SynapseSpark struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool
	Properties       *SynapseSparkProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type SynapseSpark.
func (s *SynapseSpark) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    s.ComputeLocation,
		ComputeType:        s.ComputeType,
		CreatedOn:          s.CreatedOn,
		Description:        s.Description,
		DisableLocalAuth:   s.DisableLocalAuth,
		IsAttachedCompute:  s.IsAttachedCompute,
		ModifiedOn:         s.ModifiedOn,
		ProvisioningErrors: s.ProvisioningErrors,
		ProvisioningState:  s.ProvisioningState,
		ResourceID:         s.ResourceID,
	}
}

type SynapseSparkProperties struct {
	// Auto pause properties.
	AutoPauseProperties *AutoPauseProperties

	// Auto scale properties.
	AutoScaleProperties *AutoScaleProperties

	// The number of compute nodes currently assigned to the compute.
	NodeCount *int32

	// Node size.
	NodeSize *string

	// Node size family.
	NodeSizeFamily *string

	// Pool name.
	PoolName *string

	// Name of the resource group in which workspace is located.
	ResourceGroup *string

	// Spark version.
	SparkVersion *string

	// Azure subscription identifier.
	SubscriptionID *string

	// Name of Azure Machine Learning workspace.
	WorkspaceName *string
}

type SystemCreatedAcrAccount struct {
	// Name of the ACR account
	AcrAccountName *string

	// SKU of the ACR account
	AcrAccountSKU *string

	// This is populated once the ACR account is created.
	ArmResourceID *ArmResourceID
}

type SystemCreatedStorageAccount struct {
	// Public blob access allowed
	AllowBlobPublicAccess *bool

	// This is populated once the storage account is created.
	ArmResourceID *ArmResourceID

	// HNS enabled for storage account
	StorageAccountHnsEnabled *bool

	// Name of the storage account
	StorageAccountName *string

	// Allowed values: "StandardLRS", "StandardGRS", "StandardRAGRS", "StandardZRS", "StandardGZRS", "StandardRAGZRS", "PremiumLRS",
	// "PremiumZRS"
	StorageAccountType *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
}

// SystemService - A system service running on a compute.
type SystemService struct {
	// READ-ONLY; Public IP address
	PublicIPAddress *string

	// READ-ONLY; The type of this system service.
	SystemServiceType *string

	// READ-ONLY; The version for this type.
	Version *string
}

// TableVertical - Abstract class for AutoML tasks that use table dataset as input - such as Classification/Regression/Forecasting.
type TableVertical struct {
	// Columns to use for CVSplit data.
	CvSplitColumnNames []*string

	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *TableVerticalFeaturizationSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *TableVerticalLimitSettings

	// Number of cross validation folds to be applied on training dataset when validation dataset is not provided.
	NCrossValidations NCrossValidationsClassification

	// Test data input.
	TestData *MLTableJobInput

	// The fraction of test dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied when
	// validation dataset is not provided.
	TestDataSize *float64

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// The fraction of training dataset that needs to be set aside for validation purpose. Values between (0.0 , 1.0) Applied
	// when validation dataset is not provided.
	ValidationDataSize *float64

	// The name of the sample weight column. Automated ML supports a weighted column as an input, causing rows in the data to
	// be weighted up or down.
	WeightColumnName *string
}

// TableVerticalFeaturizationSettings - Featurization Configuration.
type TableVerticalFeaturizationSettings struct {
	// These transformers shall not be used in featurization.
	BlockedTransformers []*BlockedTransformers

	// Dictionary of column name and its type (int, float, string, datetime etc).
	ColumnNameAndTypes map[string]*string

	// Dataset language, useful for the text data.
	DatasetLanguage *string

	// Determines whether to use Dnn based featurizers for data featurization.
	EnableDnnFeaturization *bool

	// Featurization mode - User can keep the default 'Auto' mode and AutoML will take care of necessary transformation of the
	// data in featurization phase. If 'Off' is selected then no featurization is done.
	// If 'Custom' is selected then user can specify additional inputs to customize how featurization is done.
	Mode *FeaturizationMode

	// User can specify additional transformers to be used along with the columns to which it would be applied and parameters
	// for the transformer constructor.
	TransformerParams map[string][]*ColumnTransformer
}

// TableVerticalLimitSettings - Job execution constraints.
type TableVerticalLimitSettings struct {
	// Enable early termination, determines whether or not if AutoMLJob will terminate early if there is no score improvement
	// in last 20 iterations.
	EnableEarlyTermination *bool

	// Exit score for the AutoML job.
	ExitScore *float64

	// Maximum Concurrent iterations.
	MaxConcurrentTrials *int32

	// Max cores per iteration.
	MaxCoresPerTrial *int32

	// Number of iterations.
	MaxTrials *int32

	// AutoML job timeout.
	Timeout *string

	// Iteration timeout.
	TrialTimeout *string
}

// TargetLags - The number of past periods to lag from the target column.
type TargetLags struct {
	// REQUIRED; [Required] Set target lags mode - Auto/Custom
	Mode *TargetLagsMode
}

// GetTargetLags implements the TargetLagsClassification interface for type TargetLags.
func (t *TargetLags) GetTargetLags() *TargetLags { return t }

// TargetRollingWindowSize - Forecasting target rolling window size.
type TargetRollingWindowSize struct {
	// REQUIRED; [Required] TargetRollingWindowSiz detection mode.
	Mode *TargetRollingWindowSizeMode
}

// GetTargetRollingWindowSize implements the TargetRollingWindowSizeClassification interface for type TargetRollingWindowSize.
func (t *TargetRollingWindowSize) GetTargetRollingWindowSize() *TargetRollingWindowSize { return t }

type TargetUtilizationScaleSettings struct {
	// REQUIRED; [Required] Type of deployment scaling algorithm
	ScaleType *ScaleType

	// The maximum number of instances that the deployment can scale to. The quota will be reserved for max_instances.
	MaxInstances *int32

	// The minimum number of instances to always be present.
	MinInstances *int32

	// The polling interval in ISO 8691 format. Only supports duration with precision as low as Seconds.
	PollingInterval *string

	// Target CPU usage for the autoscaler.
	TargetUtilizationPercentage *int32
}

// GetOnlineScaleSettings implements the OnlineScaleSettingsClassification interface for type TargetUtilizationScaleSettings.
func (t *TargetUtilizationScaleSettings) GetOnlineScaleSettings() *OnlineScaleSettings {
	return &OnlineScaleSettings{
		ScaleType: t.ScaleType,
	}
}

// TensorFlow distribution configuration.
type TensorFlow struct {
	// REQUIRED; [Required] Specifies the type of distribution framework.
	DistributionType *DistributionType

	// Number of parameter server tasks.
	ParameterServerCount *int32

	// Number of workers. If not specified, will default to the instance count.
	WorkerCount *int32
}

// GetDistributionConfiguration implements the DistributionConfigurationClassification interface for type TensorFlow.
func (t *TensorFlow) GetDistributionConfiguration() *DistributionConfiguration {
	return &DistributionConfiguration{
		DistributionType: t.DistributionType,
	}
}

// TextClassification - Text Classification task in AutoML NLP vertical. NLP - Natural Language Processing.
type TextClassification struct {
	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *NlpVerticalFeaturizationSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *NlpVerticalLimitSettings

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Primary metric for Text-Classification task.
	PrimaryMetric *ClassificationPrimaryMetrics

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Validation data inputs.
	ValidationData *MLTableJobInput
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type TextClassification.
func (t *TextClassification) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     t.LogVerbosity,
		TargetColumnName: t.TargetColumnName,
		TaskType:         t.TaskType,
		TrainingData:     t.TrainingData,
	}
}

// TextClassificationMultilabel - Text Classification Multilabel task in AutoML NLP vertical. NLP - Natural Language Processing.
type TextClassificationMultilabel struct {
	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *NlpVerticalFeaturizationSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *NlpVerticalLimitSettings

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// READ-ONLY; Primary metric for Text-Classification-Multilabel task. Currently only Accuracy is supported as primary metric,
	// hence user need not set it explicitly.
	PrimaryMetric *ClassificationMultilabelPrimaryMetrics
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type TextClassificationMultilabel.
func (t *TextClassificationMultilabel) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     t.LogVerbosity,
		TargetColumnName: t.TargetColumnName,
		TaskType:         t.TaskType,
		TrainingData:     t.TrainingData,
	}
}

// TextNer - Text-NER task in AutoML NLP vertical. NER - Named Entity Recognition. NLP - Natural Language Processing.
type TextNer struct {
	// REQUIRED; [Required] Task type for AutoMLJob.
	TaskType *TaskType

	// REQUIRED; [Required] Training data input.
	TrainingData *MLTableJobInput

	// Featurization inputs needed for AutoML job.
	FeaturizationSettings *NlpVerticalFeaturizationSettings

	// Execution constraints for AutoMLJob.
	LimitSettings *NlpVerticalLimitSettings

	// Log verbosity for the job.
	LogVerbosity *LogVerbosity

	// Target column name: This is prediction values column. Also known as label column name in context of classification tasks.
	TargetColumnName *string

	// Validation data inputs.
	ValidationData *MLTableJobInput

	// READ-ONLY; Primary metric for Text-NER task. Only 'Accuracy' is supported for Text-NER, so user need not set this explicitly.
	PrimaryMetric *ClassificationPrimaryMetrics
}

// GetAutoMLVertical implements the AutoMLVerticalClassification interface for type TextNer.
func (t *TextNer) GetAutoMLVertical() *AutoMLVertical {
	return &AutoMLVertical{
		LogVerbosity:     t.LogVerbosity,
		TargetColumnName: t.TargetColumnName,
		TaskType:         t.TaskType,
		TrainingData:     t.TrainingData,
	}
}

// TmpfsOptions - Describes the tmpfs options for the container
type TmpfsOptions struct {
	// Mention the Tmpfs size
	Size *int32
}

type TopNFeaturesByAttribution struct {
	// REQUIRED; [Required] Specifies the feature filter to leverage when selecting features to calculate metrics over.
	FilterType *MonitoringFeatureFilterType

	// The number of top features to include.
	Top *int32
}

// GetMonitoringFeatureFilterBase implements the MonitoringFeatureFilterBaseClassification interface for type TopNFeaturesByAttribution.
func (t *TopNFeaturesByAttribution) GetMonitoringFeatureFilterBase() *MonitoringFeatureFilterBase {
	return &MonitoringFeatureFilterBase{
		FilterType: t.FilterType,
	}
}

// TrackedResource - The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags'
// and a 'location'
type TrackedResource struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

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

// TrainingSettings - Training related configuration.
type TrainingSettings struct {
	// Enable recommendation of DNN models.
	EnableDnnTraining *bool

	// Flag to turn on explainability on best model.
	EnableModelExplainability *bool

	// Flag for enabling onnx compatible models.
	EnableOnnxCompatibleModels *bool

	// Enable stack ensemble run.
	EnableStackEnsemble *bool

	// Enable voting ensemble run.
	EnableVoteEnsemble *bool

	// During VotingEnsemble and StackEnsemble model generation, multiple fitted models from the previous child runs are downloaded.
	// Configure this parameter with a higher value than 300 secs, if more time
	// is needed.
	EnsembleModelDownloadTimeout *string

	// Stack ensemble settings for stack ensemble run.
	StackEnsembleSettings *StackEnsembleSettings
}

// TrialComponent - Trial component definition.
type TrialComponent struct {
	// REQUIRED; [Required] The command to execute on startup of the job. eg. "python train.py"
	Command *string

	// REQUIRED; [Required] The ARM resource ID of the Environment specification for the job.
	EnvironmentID *string

	// ARM resource ID of the code asset.
	CodeID *string

	// Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.
	Distribution DistributionConfigurationClassification

	// Environment variables included in the job.
	EnvironmentVariables map[string]*string

	// Compute Resource configuration for the job.
	Resources *JobResourceConfiguration
}

type TriggerBase struct {
	// REQUIRED; [Required]
	TriggerType *TriggerType

	// Specifies end time of schedule in ISO 8601, but without a UTC offset. Refer https://en.wikipedia.org/wiki/ISO_8601. Recommented
	// format would be "2022-06-01T00:00:01" If not present, the schedule will
	// run indefinitely
	EndTime *string

	// Specifies start time of schedule in ISO 8601 format, but without a UTC offset.
	StartTime *string

	// Specifies time zone in which the schedule runs. TimeZone should follow Windows time zone format. Refer:
	// https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones?view=windows-11
	TimeZone *string
}

// GetTriggerBase implements the TriggerBaseClassification interface for type TriggerBase.
func (t *TriggerBase) GetTriggerBase() *TriggerBase { return t }

type TritonModelJobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Description for the input.
	Description *string

	// Input Asset Delivery Mode.
	Mode *InputDeliveryMode
}

// GetJobInput implements the JobInputClassification interface for type TritonModelJobInput.
func (t *TritonModelJobInput) GetJobInput() *JobInput {
	return &JobInput{
		Description:  t.Description,
		JobInputType: t.JobInputType,
	}
}

type TritonModelJobOutput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobOutputType *JobOutputType

	// Description for the output.
	Description *string

	// Output Asset Delivery Mode.
	Mode *OutputDeliveryMode

	// Output Asset URI.
	URI *string
}

// GetJobOutput implements the JobOutputClassification interface for type TritonModelJobOutput.
func (t *TritonModelJobOutput) GetJobOutput() *JobOutput {
	return &JobOutput{
		Description:   t.Description,
		JobOutputType: t.JobOutputType,
	}
}

// TruncationSelectionPolicy - Defines an early termination policy that cancels a given percentage of runs at each evaluation
// interval.
type TruncationSelectionPolicy struct {
	// REQUIRED; [Required] Name of policy configuration
	PolicyType *EarlyTerminationPolicyType

	// Number of intervals by which to delay the first evaluation.
	DelayEvaluation *int32

	// Interval (number of runs) between policy evaluations.
	EvaluationInterval *int32

	// The percentage of runs to cancel at each evaluation interval.
	TruncationPercentage *int32
}

// GetEarlyTerminationPolicy implements the EarlyTerminationPolicyClassification interface for type TruncationSelectionPolicy.
func (t *TruncationSelectionPolicy) GetEarlyTerminationPolicy() *EarlyTerminationPolicy {
	return &EarlyTerminationPolicy{
		DelayEvaluation:    t.DelayEvaluation,
		EvaluationInterval: t.EvaluationInterval,
		PolicyType:         t.PolicyType,
	}
}

// URIFileDataVersion - uri-file data version entity
type URIFileDataVersion struct {
	// REQUIRED; [Required] Specifies the type of data.
	DataType *DataType

	// REQUIRED; [Required] Uri of the data. Example: https://go.microsoft.com/fwlink/?linkid=2202330
	DataURI *string

	// The asset description text.
	Description *string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string
}

// GetDataVersionBaseProperties implements the DataVersionBasePropertiesClassification interface for type URIFileDataVersion.
func (u *URIFileDataVersion) GetDataVersionBaseProperties() *DataVersionBaseProperties {
	return &DataVersionBaseProperties{
		DataType:    u.DataType,
		DataURI:     u.DataURI,
		Description: u.Description,
		IsAnonymous: u.IsAnonymous,
		IsArchived:  u.IsArchived,
		Properties:  u.Properties,
		Tags:        u.Tags,
	}
}

type URIFileJobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Description for the input.
	Description *string

	// Input Asset Delivery Mode.
	Mode *InputDeliveryMode
}

// GetJobInput implements the JobInputClassification interface for type URIFileJobInput.
func (u *URIFileJobInput) GetJobInput() *JobInput {
	return &JobInput{
		Description:  u.Description,
		JobInputType: u.JobInputType,
	}
}

type URIFileJobOutput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobOutputType *JobOutputType

	// Description for the output.
	Description *string

	// Output Asset Delivery Mode.
	Mode *OutputDeliveryMode

	// Output Asset URI.
	URI *string
}

// GetJobOutput implements the JobOutputClassification interface for type URIFileJobOutput.
func (u *URIFileJobOutput) GetJobOutput() *JobOutput {
	return &JobOutput{
		Description:   u.Description,
		JobOutputType: u.JobOutputType,
	}
}

// URIFolderDataVersion - uri-folder data version entity
type URIFolderDataVersion struct {
	// REQUIRED; [Required] Specifies the type of data.
	DataType *DataType

	// REQUIRED; [Required] Uri of the data. Example: https://go.microsoft.com/fwlink/?linkid=2202330
	DataURI *string

	// The asset description text.
	Description *string

	// If the name version are system generated (anonymous registration).
	IsAnonymous *bool

	// Is the asset archived?
	IsArchived *bool

	// The asset property dictionary.
	Properties map[string]*string

	// Tag dictionary. Tags can be added, removed, and updated.
	Tags map[string]*string
}

// GetDataVersionBaseProperties implements the DataVersionBasePropertiesClassification interface for type URIFolderDataVersion.
func (u *URIFolderDataVersion) GetDataVersionBaseProperties() *DataVersionBaseProperties {
	return &DataVersionBaseProperties{
		DataType:    u.DataType,
		DataURI:     u.DataURI,
		Description: u.Description,
		IsAnonymous: u.IsAnonymous,
		IsArchived:  u.IsArchived,
		Properties:  u.Properties,
		Tags:        u.Tags,
	}
}

type URIFolderJobInput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobInputType *JobInputType

	// REQUIRED; [Required] Input Asset URI.
	URI *string

	// Description for the input.
	Description *string

	// Input Asset Delivery Mode.
	Mode *InputDeliveryMode
}

// GetJobInput implements the JobInputClassification interface for type URIFolderJobInput.
func (u *URIFolderJobInput) GetJobInput() *JobInput {
	return &JobInput{
		Description:  u.Description,
		JobInputType: u.JobInputType,
	}
}

type URIFolderJobOutput struct {
	// REQUIRED; [Required] Specifies the type of job.
	JobOutputType *JobOutputType

	// Description for the output.
	Description *string

	// Output Asset Delivery Mode.
	Mode *OutputDeliveryMode

	// Output Asset URI.
	URI *string
}

// GetJobOutput implements the JobOutputClassification interface for type URIFolderJobOutput.
func (u *URIFolderJobOutput) GetJobOutput() *JobOutput {
	return &JobOutput{
		Description:   u.Description,
		JobOutputType: u.JobOutputType,
	}
}

// UpdateWorkspaceQuotas - The properties for update Quota response.
type UpdateWorkspaceQuotas struct {
	// The maximum permitted quota of the resource.
	Limit *int64

	// Status of update workspace quota.
	Status *Status

	// READ-ONLY; Specifies the resource ID.
	ID *string

	// READ-ONLY; Specifies the resource type.
	Type *string

	// READ-ONLY; An enum describing the unit of quota measurement.
	Unit *QuotaUnit
}

// UpdateWorkspaceQuotasResult - The result of update workspace quota.
type UpdateWorkspaceQuotasResult struct {
	// READ-ONLY; The URI to fetch the next page of workspace quota update result. Call ListNext() with this to fetch the next
	// page of Workspace Quota update result.
	NextLink *string

	// READ-ONLY; The list of workspace quota update result.
	Value []*UpdateWorkspaceQuotas
}

// Usage - Describes AML Resource Usage.
type Usage struct {
	// READ-ONLY; Region of the AML workspace in the id.
	AmlWorkspaceLocation *string

	// READ-ONLY; The current usage of the resource.
	CurrentValue *int64

	// READ-ONLY; Specifies the resource ID.
	ID *string

	// READ-ONLY; The maximum permitted usage of the resource.
	Limit *int64

	// READ-ONLY; The name of the type of usage.
	Name *UsageName

	// READ-ONLY; Specifies the resource type.
	Type *string

	// READ-ONLY; An enum describing the unit of usage measurement.
	Unit *UsageUnit
}

// UsageName - The Usage Names.
type UsageName struct {
	// READ-ONLY; The localized name of the resource.
	LocalizedValue *string

	// READ-ONLY; The name of the resource.
	Value *string
}

// UserAccountCredentials - Settings for user account that gets created on each on the nodes of a compute.
type UserAccountCredentials struct {
	// REQUIRED; Name of the administrator user account which can be used to SSH to nodes.
	AdminUserName *string

	// Password of the administrator user account.
	AdminUserPassword *string

	// SSH public key of the administrator user account.
	AdminUserSSHPublicKey *string
}

// UserAssignedIdentity - User assigned identity properties
type UserAssignedIdentity struct {
	// READ-ONLY; The client ID of the assigned identity.
	ClientID *string

	// READ-ONLY; The principal ID of the assigned identity.
	PrincipalID *string
}

type UserCreatedAcrAccount struct {
	// ARM ResourceId of a resource
	ArmResourceID *ArmResourceID
}

type UserCreatedStorageAccount struct {
	// ARM ResourceId of a resource
	ArmResourceID *ArmResourceID
}

// UserIdentity - User identity configuration.
type UserIdentity struct {
	// REQUIRED; [Required] Specifies the type of identity framework.
	IdentityType *IdentityConfigurationType
}

// GetIdentityConfiguration implements the IdentityConfigurationClassification interface for type UserIdentity.
func (u *UserIdentity) GetIdentityConfiguration() *IdentityConfiguration {
	return &IdentityConfiguration{
		IdentityType: u.IdentityType,
	}
}

type UsernamePasswordAuthTypeWorkspaceConnectionProperties struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	Credentials   *WorkspaceConnectionUsernamePassword
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type UsernamePasswordAuthTypeWorkspaceConnectionProperties.
func (u *UsernamePasswordAuthTypeWorkspaceConnectionProperties) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return &WorkspaceConnectionPropertiesV2{
		AuthType:                u.AuthType,
		Category:                u.Category,
		CreatedByWorkspaceArmID: u.CreatedByWorkspaceArmID,
		ExpiryTime:              u.ExpiryTime,
		Group:                   u.Group,
		IsSharedToAll:           u.IsSharedToAll,
		Metadata:                u.Metadata,
		SharedUserList:          u.SharedUserList,
		Target:                  u.Target,
		Value:                   u.Value,
		ValueFormat:             u.ValueFormat,
	}
}

// VirtualMachine - A Machine Learning compute based on Azure Virtual Machines.
type VirtualMachine struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Location for the underlying compute
	ComputeLocation *string

	// The description of the Machine Learning compute.
	Description *string

	// Opt-out of local authentication and ensure customers can use only MSI and AAD exclusively for authentication.
	DisableLocalAuth *bool
	Properties       *VirtualMachineSchemaProperties

	// ARM resource id of the underlying compute
	ResourceID *string

	// READ-ONLY; The time at which the compute was created.
	CreatedOn *time.Time

	// READ-ONLY; Indicating whether the compute was provisioned by user and brought from outside if true, or machine learning
	// service provisioned it if false.
	IsAttachedCompute *bool

	// READ-ONLY; The time at which the compute was last modified.
	ModifiedOn *time.Time

	// READ-ONLY; Errors during provisioning
	ProvisioningErrors []*ErrorResponse

	// READ-ONLY; The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and Failed.
	ProvisioningState *ProvisioningState
}

// GetCompute implements the ComputeClassification interface for type VirtualMachine.
func (v *VirtualMachine) GetCompute() *Compute {
	return &Compute{
		ComputeLocation:    v.ComputeLocation,
		ComputeType:        v.ComputeType,
		CreatedOn:          v.CreatedOn,
		Description:        v.Description,
		DisableLocalAuth:   v.DisableLocalAuth,
		IsAttachedCompute:  v.IsAttachedCompute,
		ModifiedOn:         v.ModifiedOn,
		ProvisioningErrors: v.ProvisioningErrors,
		ProvisioningState:  v.ProvisioningState,
		ResourceID:         v.ResourceID,
	}
}

// VirtualMachineImage - Virtual Machine image for Windows AML Compute
type VirtualMachineImage struct {
	// REQUIRED; Virtual Machine image path
	ID *string
}

// VirtualMachineSSHCredentials - Admin credentials for virtual machine
type VirtualMachineSSHCredentials struct {
	// Password of admin account
	Password *string

	// Private key data
	PrivateKeyData *string

	// Public key data
	PublicKeyData *string

	// Username of admin account
	Username *string
}

type VirtualMachineSchema struct {
	Properties *VirtualMachineSchemaProperties
}

type VirtualMachineSchemaProperties struct {
	// Public IP address of the virtual machine.
	Address *string

	// Admin credentials for virtual machine
	AdministratorAccount *VirtualMachineSSHCredentials

	// Indicates whether this compute will be used for running notebooks.
	IsNotebookInstanceCompute *bool

	// Notebook server port open for ssh connections.
	NotebookServerPort *int32

	// Port open for ssh connections.
	SSHPort *int32

	// Virtual Machine size
	VirtualMachineSize *string
}

// VirtualMachineSecrets - Secrets related to a Machine Learning compute based on AKS.
type VirtualMachineSecrets struct {
	// REQUIRED; The type of compute
	ComputeType *ComputeType

	// Admin credentials for virtual machine.
	AdministratorAccount *VirtualMachineSSHCredentials
}

// GetComputeSecrets implements the ComputeSecretsClassification interface for type VirtualMachineSecrets.
func (v *VirtualMachineSecrets) GetComputeSecrets() *ComputeSecrets {
	return &ComputeSecrets{
		ComputeType: v.ComputeType,
	}
}

type VirtualMachineSecretsSchema struct {
	// Admin credentials for virtual machine.
	AdministratorAccount *VirtualMachineSSHCredentials
}

// VirtualMachineSize - Describes the properties of a VM size.
type VirtualMachineSize struct {
	// The estimated price information for using a VM.
	EstimatedVMPrices *EstimatedVMPrices

	// Specifies the compute types supported by the virtual machine size.
	SupportedComputeTypes []*string

	// READ-ONLY; The family name of the virtual machine size.
	Family *string

	// READ-ONLY; The number of gPUs supported by the virtual machine size.
	Gpus *int32

	// READ-ONLY; Specifies if the virtual machine size supports low priority VMs.
	LowPriorityCapable *bool

	// READ-ONLY; The resource volume size, in MB, allowed by the virtual machine size.
	MaxResourceVolumeMB *int32

	// READ-ONLY; The amount of memory, in GB, supported by the virtual machine size.
	MemoryGB *float64

	// READ-ONLY; The name of the virtual machine size.
	Name *string

	// READ-ONLY; The OS VHD disk size, in MB, allowed by the virtual machine size.
	OSVhdSizeMB *int32

	// READ-ONLY; Specifies if the virtual machine size supports premium IO.
	PremiumIO *bool

	// READ-ONLY; The number of vCPUs supported by the virtual machine size.
	VCPUs *int32
}

// VirtualMachineSizeListResult - The List Virtual Machine size operation response.
type VirtualMachineSizeListResult struct {
	// The list of virtual machine sizes supported by AmlCompute.
	Value []*VirtualMachineSize
}

// VolumeDefinition - Describes the volume configuration for the container
type VolumeDefinition struct {
	// Bind Options of the mount
	Bind *BindOptions

	// Consistency of the volume
	Consistency *string

	// Indicate whether to mount volume as readOnly. Default value for this is false.
	ReadOnly *bool

	// Source of the mount. For bind mounts this is the host path.
	Source *string

	// Target of the mount. For bind mounts this is the path in the container.
	Target *string

	// tmpfs option of the mount
	Tmpfs *TmpfsOptions

	// Type of Volume Definition. Possible Values: bind,volume,tmpfs,npipe
	Type *VolumeDefinitionType

	// Volume Options of the mount
	Volume *VolumeOptions
}

// VolumeOptions - Describes the volume options for the container
type VolumeOptions struct {
	// Indicate whether volume is nocopy
	Nocopy *bool
}

// Webhook base
type Webhook struct {
	// REQUIRED; [Required] Specifies the type of service to send a callback
	WebhookType *WebhookType

	// Send callback on a specified notification event
	EventType *string
}

// GetWebhook implements the WebhookClassification interface for type Webhook.
func (w *Webhook) GetWebhook() *Webhook { return w }

// Workspace - An object that represents a machine learning workspace.
type Workspace struct {
	// The identity of the resource.
	Identity *ManagedServiceIdentity
	Kind     *string

	// Specifies the location of the resource.
	Location *string

	// The properties of the machine learning workspace.
	Properties *WorkspaceProperties

	// The sku of the workspace.
	SKU *SKU

	// Contains resource tags defined as key/value pairs.
	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
}

// WorkspaceConnectionAPIKey - Api key object for workspace connection credential.
type WorkspaceConnectionAPIKey struct {
	Key *string
}

type WorkspaceConnectionAccessKey struct {
	AccessKeyID     *string
	SecretAccessKey *string
}

type WorkspaceConnectionAccountKey struct {
	Key *string
}

type WorkspaceConnectionManagedIdentity struct {
	ClientID   *string
	ResourceID *string
}

// WorkspaceConnectionOAuth2 - ClientId and ClientSecret are required. Other properties are optional depending on each OAuth2
// provider's implementation.
type WorkspaceConnectionOAuth2 struct {
	// Required by Concur connection category
	AuthURL *string

	// Client id in the format of UUID
	ClientID     *string
	ClientSecret *string

	// Required by GoogleAdWords connection category
	DeveloperToken *string
	Password       *string

	// Required by GoogleBigQuery, GoogleAdWords, Hubspot, QuickBooks, Square, Xero, Zoho where user needs to get RefreshToken
	// offline
	RefreshToken *string

	// Required by QuickBooks and Xero connection categories
	TenantID *string

	// Concur, ServiceNow auth server AccessToken grant type is 'Password' which requires UsernamePassword
	Username *string
}

type WorkspaceConnectionPersonalAccessToken struct {
	Pat *string
}

type WorkspaceConnectionPropertiesV2 struct {
	// REQUIRED; Authentication type of the connection target
	AuthType *ConnectionAuthType

	// Category of the connection
	Category      *ConnectionCategory
	ExpiryTime    *time.Time
	IsSharedToAll *bool

	// Store user metadata for this connection
	Metadata       map[string]*string
	SharedUserList []*string
	Target         *string

	// Value details of the workspace connection.
	Value *string

	// format for the workspace connection value
	ValueFormat *ValueFormat

	// READ-ONLY
	CreatedByWorkspaceArmID *string

	// READ-ONLY; Group based on connection category
	Group *ConnectionGroup
}

// GetWorkspaceConnectionPropertiesV2 implements the WorkspaceConnectionPropertiesV2Classification interface for type WorkspaceConnectionPropertiesV2.
func (w *WorkspaceConnectionPropertiesV2) GetWorkspaceConnectionPropertiesV2() *WorkspaceConnectionPropertiesV2 {
	return w
}

type WorkspaceConnectionPropertiesV2BasicResource struct {
	// REQUIRED
	Properties WorkspaceConnectionPropertiesV2Classification

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

type WorkspaceConnectionPropertiesV2BasicResourceArmPaginatedResult struct {
	Value []*WorkspaceConnectionPropertiesV2BasicResource

	// READ-ONLY
	NextLink *string
}

type WorkspaceConnectionServicePrincipal struct {
	ClientID     *string
	ClientSecret *string
	TenantID     *string
}

type WorkspaceConnectionSharedAccessSignature struct {
	Sas *string
}

type WorkspaceConnectionUsernamePassword struct {
	Password *string

	// Optional, required by connections like SalesForce for extra security in addition to UsernamePassword
	SecurityToken *string
	Username      *string
}

// WorkspaceHubConfig - WorkspaceHub's configuration object.
type WorkspaceHubConfig struct {
	AdditionalWorkspaceStorageAccounts []*string
	DefaultWorkspaceResourceGroup      *string
}

// WorkspaceListResult - The result of a request to list machine learning workspaces.
type WorkspaceListResult struct {
	// The URI that can be used to request the next list of machine learning workspaces.
	NextLink *string

	// The list of machine learning workspaces. Since this list may be incomplete, the nextLink field should be used to request
	// the next list of machine learning workspaces.
	Value []*Workspace
}

// WorkspaceProperties - The properties of a machine learning workspace.
type WorkspaceProperties struct {
	// The flag to indicate whether to allow public access when behind VNet.
	AllowPublicAccessWhenBehindVnet *bool

	// ARM id of the application insights associated with this workspace.
	ApplicationInsights  *string
	AssociatedWorkspaces []*string

	// ARM id of the container registry associated with this workspace.
	ContainerRegistry *string

	// The description of this workspace.
	Description *string

	// Url for the discovery service to identify regional endpoints for machine learning experimentation services
	DiscoveryURL        *string
	EnableDataIsolation *bool

	// The encryption settings of Azure ML workspace.
	Encryption *EncryptionProperty

	// Settings for feature store type workspace.
	FeatureStoreSettings *FeatureStoreSettings

	// The friendly name for this workspace. This name in mutable
	FriendlyName *string

	// The flag to signal HBI data in the workspace and reduce diagnostic data collected by the service
	HbiWorkspace  *bool
	HubResourceID *string

	// The compute name for image build
	ImageBuildCompute *string

	// ARM id of the key vault associated with this workspace. This cannot be changed once the workspace has been created
	KeyVault *string

	// Managed Network settings for a machine learning workspace.
	ManagedNetwork *ManagedNetworkSettings

	// The user assigned identity resource id that represents the workspace identity.
	PrimaryUserAssignedIdentity *string

	// Whether requests from Public Network are allowed.
	PublicNetworkAccess *PublicNetworkAccess

	// Settings for serverless compute created in the workspace
	ServerlessComputeSettings *ServerlessComputeSettings

	// The service managed resource settings.
	ServiceManagedResourcesSettings *ServiceManagedResourcesSettings

	// The list of shared private link resources in this workspace.
	SharedPrivateLinkResources []*SharedPrivateLinkResource

	// ARM id of the storage account associated with this workspace. This cannot be changed once the workspace has been created
	StorageAccount *string

	// Enabling v1legacymode may prevent you from using features provided by the v2 API.
	V1LegacyMode *bool

	// WorkspaceHub's configuration object.
	WorkspaceHubConfig *WorkspaceHubConfig

	// READ-ONLY; The URI associated with this workspace that machine learning flow must point at to set up tracking.
	MlFlowTrackingURI *string

	// READ-ONLY; The notebook info of Azure ML workspace.
	NotebookInfo *NotebookResourceInfo

	// READ-ONLY; The list of private endpoint connections in the workspace.
	PrivateEndpointConnections []*PrivateEndpointConnection

	// READ-ONLY; Count of private connections in the workspace
	PrivateLinkCount *int32

	// READ-ONLY; The current deployment state of workspace resource. The provisioningState is to indicate states for resource
	// provisioning.
	ProvisioningState *ProvisioningState

	// READ-ONLY; The name of the managed resource group created by workspace RP in customer subscription if the workspace is
	// CMK workspace
	ServiceProvisionedResourceGroup *string

	// READ-ONLY; If the storage associated with the workspace has hierarchical namespace(HNS) enabled.
	StorageHnsEnabled *bool

	// READ-ONLY; The tenant id associated with this workspace.
	TenantID *string

	// READ-ONLY; The immutable id associated with this workspace.
	WorkspaceID *string
}

// WorkspacePropertiesUpdateParameters - The parameters for updating the properties of a machine learning workspace.
type WorkspacePropertiesUpdateParameters struct {
	// ARM id of the application insights associated with this workspace.
	ApplicationInsights *string

	// ARM id of the container registry associated with this workspace.
	ContainerRegistry *string

	// The description of this workspace.
	Description         *string
	EnableDataIsolation *bool
	Encryption          *EncryptionUpdateProperties

	// Settings for feature store type workspace.
	FeatureStoreSettings *FeatureStoreSettings

	// The friendly name for this workspace.
	FriendlyName *string

	// The compute name for image build
	ImageBuildCompute *string

	// Managed Network settings for a machine learning workspace.
	ManagedNetwork *ManagedNetworkSettings

	// The user assigned identity resource id that represents the workspace identity.
	PrimaryUserAssignedIdentity *string

	// Whether requests from Public Network are allowed.
	PublicNetworkAccess *PublicNetworkAccess

	// Settings for serverless compute created in the workspace
	ServerlessComputeSettings *ServerlessComputeSettings

	// The service managed resource settings.
	ServiceManagedResourcesSettings *ServiceManagedResourcesSettings

	// Enabling v1legacymode may prevent you from using features provided by the v2 API.
	V1LegacyMode *bool
}

// WorkspaceUpdateParameters - The parameters for updating a machine learning workspace.
type WorkspaceUpdateParameters struct {
	// The identity of the resource.
	Identity *ManagedServiceIdentity

	// The properties that the machine learning workspace will be updated with.
	Properties *WorkspacePropertiesUpdateParameters

	// The sku of the workspace.
	SKU *SKU

	// The resource tags for the machine learning workspace.
	Tags map[string]*string
}
