// 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) Go Code Generator. DO NOT EDIT.

package armcloudhealth

import "time"

// AlertConfiguration - Alert configuration details
type AlertConfiguration struct {
	// REQUIRED; The severity of triggered alert.
	Severity *AlertSeverity

	// Optional list of action group resource IDs to be notified when the alert is triggered.
	ActionGroupIDs []*string

	// The alert rule description.
	Description *string
}

// AuthenticationSetting - An authentication setting in a health model
type AuthenticationSetting struct {
	// The resource-specific properties for this resource.
	Properties AuthenticationSettingPropertiesClassification

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

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

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

// AuthenticationSettingProperties - Authentication setting properties
type AuthenticationSettingProperties struct {
	// REQUIRED; Kind of the authentication setting
	AuthenticationKind *AuthenticationKind

	// Display name
	DisplayName *string

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

// GetAuthenticationSettingProperties implements the AuthenticationSettingPropertiesClassification interface for type AuthenticationSettingProperties.
func (a *AuthenticationSettingProperties) GetAuthenticationSettingProperties() *AuthenticationSettingProperties {
	return a
}

// AzureMonitorWorkspaceSignalGroup - A grouping of signal assignments for a Azure Monitor Workspace
type AzureMonitorWorkspaceSignalGroup struct {
	// REQUIRED; Reference to the name of the authentication setting which is used for querying the data source
	AuthenticationSetting *string

	// REQUIRED; Azure Monitor workspace resource ID
	AzureMonitorWorkspaceResourceID *string

	// Signal definitions which are assigned to this signal group. All assignments are combined with an OR operator.
	SignalAssignments []*SignalAssignment
}

// AzureResourceSignalGroup - A grouping of signal assignments for an Azure resource
type AzureResourceSignalGroup struct {
	// REQUIRED; Reference to the name of the authentication setting which is used for querying the data source
	AuthenticationSetting *string

	// REQUIRED; Azure resource ID
	AzureResourceID *string

	// Signal definitions which are assigned to this signal group. All assignments are combined with an OR operator.
	SignalAssignments []*SignalAssignment
}

// DependenciesSignalGroup - Properties for dependent entities, i.e. child entities
type DependenciesSignalGroup struct {
	// REQUIRED; Aggregation type for child dependencies.
	AggregationType *DependenciesAggregationType

	// Degraded threshold for aggregating the propagated health state of child dependencies. Can be either an absolute number
	// that is greater than 0, or a percentage between 1-100%. The entity will be considered degraded when the number of not healthy
	// child dependents (unhealthy, degraded, unknown) is equal to or above the threshold value. Must only be set when AggregationType
	// is 'Thresholds'.
	DegradedThreshold *string

	// Unhealthy threshold for aggregating the propagated health state of child dependencies. Can be either an absolute number
	// that is greater than 0, or a percentage between 1-100%. The entity will be considered unhealthy when the number of not
	// healthy child dependents (unhealthy, degraded, unknown) is equal to or above the threshold value. Must only be set when
	// AggregationType is 'Thresholds'.
	UnhealthyThreshold *string
}

// DiscoveryRule - A discovery rule which automatically finds entities and relationships in a health model based on an Azure
// Resource Graph query
type DiscoveryRule struct {
	// The resource-specific properties for this resource.
	Properties *DiscoveryRuleProperties

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

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

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

// DiscoveryRuleProperties - Discovery rule properties
type DiscoveryRuleProperties struct {
	// REQUIRED; Whether to add all recommended signals to the discovered entities.
	AddRecommendedSignals *DiscoveryRuleRecommendedSignalsBehavior

	// REQUIRED; Reference to the name of the authentication setting which is used for querying Azure Resource Graph. The same
	// authentication setting will also be assigned to any discovered entities.
	AuthenticationSetting *string

	// REQUIRED; Whether to create relationships between the discovered entities based on a set of built-in rules. These relationships
	// cannot be manually deleted.
	DiscoverRelationships *DiscoveryRuleRelationshipDiscoveryBehavior

	// REQUIRED; Azure Resource Graph query text in KQL syntax. The query must return at least a column named 'id' which contains
	// the resource ID of the discovered resources.
	ResourceGraphQuery *string

	// READ-ONLY; Name of the entity which represents the discovery rule. Note: It might take a few minutes after creating the
	// discovery rule until the entity is created.
	EntityName *string

	// Display name
	DisplayName *string

	// READ-ONLY; Date when the discovery rule was (soft-)deleted.
	DeletionDate *time.Time

	// READ-ONLY; Error message if the last discovery operation failed.
	ErrorMessage *string

	// READ-ONLY; Number of discovered entities in the last discovery operation.
	NumberOfDiscoveredEntities *int32

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

// DynamicDetectionRule - ML-based evaluation rule for a signal definition
type DynamicDetectionRule struct {
	// REQUIRED; Threshold direction
	DynamicThresholdDirection *DynamicThresholdDirection

	// REQUIRED; ML model to use for dynamic thresholds
	DynamicThresholdModel *DynamicThresholdModel

	// REQUIRED; ML model sensitivity. Lowest value = high sensitivity. Supported step size = 0.5
	ModelSensitivity *float32

	// Start time of the training in UTC.
	TrainingStartTime *time.Time
}

// Entity - An entity (aka node) of a health model
type Entity struct {
	// The resource-specific properties for this resource.
	Properties *EntityProperties

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

// EntityAlerts - Alert configuration for an entity
type EntityAlerts struct {
	// Alert to be triggered on state change to degraded
	Degraded *AlertConfiguration

	// Alert to be triggered on state change to unhealthy
	Unhealthy *AlertConfiguration
}

// EntityCoordinates - Visual position of the entity
type EntityCoordinates struct {
	// REQUIRED; X Coordinate
	X *float32

	// REQUIRED; Y Coordinate
	Y *float32
}

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

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

// EntityProperties - Properties which are common across all kinds of entities
type EntityProperties struct {
	// Alert configuration for this entity
	Alerts *EntityAlerts

	// Positioning of the entity on the model canvas
	CanvasPosition *EntityCoordinates

	// Display name
	DisplayName *string

	// Health objective as a percentage of time the entity should be healthy.
	HealthObjective *float32

	// Visual icon definition. If not set, a default icon is used.
	Icon *IconDefinition

	// Impact of the entity in health state propagation
	Impact *EntityImpact

	// Entity kind
	Kind *string

	// Optional set of labels (key-value pairs)
	Labels map[string]*string

	// Signal groups which are assigned to this entity
	Signals *SignalGroup

	// READ-ONLY; Date when the entity was (soft-)deleted
	DeletionDate *time.Time

	// READ-ONLY; Discovered by which discovery rule. If set, the entity cannot be deleted manually.
	DiscoveredBy *string

	// READ-ONLY; Health state of this entity
	HealthState *HealthState

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

// EvaluationRule - Evaluation rule for a signal definition
type EvaluationRule struct {
	// Degraded rule with static threshold. When used, dynamicDetectionRule must not be set.
	DegradedRule *ThresholdRule

	// Configure to use ML-based dynamic thresholds. When used, degradedRule and unhealthyRule must not be set.
	DynamicDetectionRule *DynamicDetectionRule

	// Unhealthy rule with static threshold. When used, dynamicDetectionRule must not be set.
	UnhealthyRule *ThresholdRule
}

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

	// The managed service identities assigned to this resource.
	Identity *ManagedServiceIdentity

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

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

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

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

// HealthModelProperties - HealthModel properties
type HealthModelProperties struct {
	// Configure to automatically discover entities from a given scope, such as a Service Group. The discovered entities will
	// be linked to the root entity of the health model.
	Discovery *ModelDiscoverySettings

	// READ-ONLY; The data plane endpoint for interacting with health data
	DataplaneEndpoint *string

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

// HealthModelUpdate - The type used for update operations of the HealthModel.
type HealthModelUpdate struct {
	// The managed service identities assigned to this resource.
	Identity *ManagedServiceIdentity

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

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

// HealthModelUpdateProperties - The updatable properties of the HealthModel.
type HealthModelUpdateProperties struct {
	// Configure to automatically discover entities from a given scope, such as a Service Group. The discovered entities will
	// be linked to the root entity of the health model.
	Discovery *ModelDiscoverySettings
}

// IconDefinition - Visual icon definition of an entity
type IconDefinition struct {
	// REQUIRED; Name of the built-in icon, or 'Custom' to use customData
	IconName *string

	// Custom data. Base64-encoded SVG data. If set, this overrides the built-in icon.
	CustomData *string
}

// LogAnalyticsQuerySignalDefinitionProperties - Log Analytics Query Signal Definition properties
type LogAnalyticsQuerySignalDefinitionProperties struct {
	// REQUIRED; Evaluation rules for the signal definition
	EvaluationRules *EvaluationRule

	// REQUIRED; Query text in KQL syntax
	QueryText *string

	// CONSTANT; Kind of the signal definition
	// Field has constant value SignalKindLogAnalyticsQuery, any specified value is ignored.
	SignalKind *SignalKind

	// Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count))
	DataUnit *string

	// Display name
	DisplayName *string

	// Optional set of labels (key-value pairs)
	Labels map[string]*string

	// Interval in which the signal is being evaluated. Defaults to PT1M (1 minute).
	RefreshInterval *RefreshInterval

	// Time range of signal. ISO duration format like PT10M. If not specified, the KQL query must define a time range.
	TimeGrain *string

	// Name of the column in the result set to evaluate against the thresholds. Defaults to the first column in the result set
	// if not specified. The column must be numeric.
	ValueColumnName *string

	// READ-ONLY; Date when the signal definition was (soft-)deleted
	DeletionDate *time.Time

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

// GetSignalDefinitionProperties implements the SignalDefinitionPropertiesClassification interface for type LogAnalyticsQuerySignalDefinitionProperties.
func (l *LogAnalyticsQuerySignalDefinitionProperties) GetSignalDefinitionProperties() *SignalDefinitionProperties {
	return &SignalDefinitionProperties{
		DataUnit:          l.DataUnit,
		DeletionDate:      l.DeletionDate,
		DisplayName:       l.DisplayName,
		EvaluationRules:   l.EvaluationRules,
		Labels:            l.Labels,
		ProvisioningState: l.ProvisioningState,
		RefreshInterval:   l.RefreshInterval,
		SignalKind:        l.SignalKind,
	}
}

// LogAnalyticsSignalGroup - A grouping of signal assignments for a Log Analytics Workspace
type LogAnalyticsSignalGroup struct {
	// REQUIRED; Reference to the name of the authentication setting which is used for querying the data source
	AuthenticationSetting *string

	// REQUIRED; Log Analytics Workspace resource ID
	LogAnalyticsWorkspaceResourceID *string

	// Signal definitions which are assigned to this signal group. All assignments are combined with an OR operator.
	SignalAssignments []*SignalAssignment
}

// ManagedIdentityAuthenticationSettingProperties - Authentication setting properties for Azure Managed Identity
type ManagedIdentityAuthenticationSettingProperties struct {
	// CONSTANT; Kind of the authentication setting
	// Field has constant value AuthenticationKindManagedIdentity, any specified value is ignored.
	AuthenticationKind *AuthenticationKind

	// REQUIRED; Name of the managed identity to use. Either 'SystemAssigned' or the resourceId of a user-assigned identity.
	ManagedIdentityName *string

	// Display name
	DisplayName *string

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

// GetAuthenticationSettingProperties implements the AuthenticationSettingPropertiesClassification interface for type ManagedIdentityAuthenticationSettingProperties.
func (m *ManagedIdentityAuthenticationSettingProperties) GetAuthenticationSettingProperties() *AuthenticationSettingProperties {
	return &AuthenticationSettingProperties{
		AuthenticationKind: m.AuthenticationKind,
		DisplayName:        m.DisplayName,
		ProvisioningState:  m.ProvisioningState,
	}
}

// ManagedServiceIdentity - Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity struct {
	// REQUIRED; The type of managed identity assigned to this resource.
	Type *ManagedServiceIdentityType

	// The identities assigned to this resource by the user.
	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
}

// ModelDiscoverySettings - Settings for automatically discovering entities for the health model.
type ModelDiscoverySettings struct {
	// REQUIRED; Whether to add all recommended signals to the discovered entities.
	AddRecommendedSignals *DiscoveryRuleRecommendedSignalsBehavior

	// REQUIRED; The scope from which entities should be automatically discovered. For example, the resource id of a Service Group.
	Scope *string

	// Which Managed Identity of the health model to use for discovery. Defaults to SystemAssigned, if not set. Can be set to
	// 'SystemAssigned' or to the resource id of a user-assigned managed identity which is linked to the health model.
	Identity *string
}

// Operation - REST API 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; Extensible 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 Azure
	// Resource Manager/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 and 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 {
	// REQUIRED; The Operation items on this page
	Value []*Operation

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

// PrometheusMetricsSignalDefinitionProperties - Prometheus Metrics Signal Definition properties
type PrometheusMetricsSignalDefinitionProperties struct {
	// REQUIRED; Evaluation rules for the signal definition
	EvaluationRules *EvaluationRule

	// REQUIRED; Query text in PromQL syntax
	QueryText *string

	// CONSTANT; Kind of the signal definition
	// Field has constant value SignalKindPrometheusMetricsQuery, any specified value is ignored.
	SignalKind *SignalKind

	// Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count))
	DataUnit *string

	// Display name
	DisplayName *string

	// Optional set of labels (key-value pairs)
	Labels map[string]*string

	// Interval in which the signal is being evaluated. Defaults to PT1M (1 minute).
	RefreshInterval *RefreshInterval

	// Time range of signal. ISO duration format like PT10M.
	TimeGrain *string

	// READ-ONLY; Date when the signal definition was (soft-)deleted
	DeletionDate *time.Time

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

// GetSignalDefinitionProperties implements the SignalDefinitionPropertiesClassification interface for type PrometheusMetricsSignalDefinitionProperties.
func (p *PrometheusMetricsSignalDefinitionProperties) GetSignalDefinitionProperties() *SignalDefinitionProperties {
	return &SignalDefinitionProperties{
		DataUnit:          p.DataUnit,
		DeletionDate:      p.DeletionDate,
		DisplayName:       p.DisplayName,
		EvaluationRules:   p.EvaluationRules,
		Labels:            p.Labels,
		ProvisioningState: p.ProvisioningState,
		RefreshInterval:   p.RefreshInterval,
		SignalKind:        p.SignalKind,
	}
}

// Relationship - A relationship (aka edge) between two entities in a health model
type Relationship struct {
	// The resource-specific properties for this resource.
	Properties *RelationshipProperties

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

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

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

// RelationshipProperties - Relationship properties
type RelationshipProperties struct {
	// REQUIRED; Resource name of the child entity
	ChildEntityName *string

	// REQUIRED; Resource name of the parent entity
	ParentEntityName *string

	// Display name
	DisplayName *string

	// Optional set of labels (key-value pairs)
	Labels map[string]*string

	// READ-ONLY; Date when the relationship was (soft-)deleted
	DeletionDate *time.Time

	// READ-ONLY; Discovered by which discovery rule. If set, the relationship cannot be deleted manually.
	DiscoveredBy *string

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

// ResourceMetricSignalDefinitionProperties - Azure Resource Metric Signal Definition properties
type ResourceMetricSignalDefinitionProperties struct {
	// REQUIRED; Type of aggregation to apply to the metric
	AggregationType *MetricAggregationType

	// REQUIRED; Evaluation rules for the signal definition
	EvaluationRules *EvaluationRule

	// REQUIRED; Name of the metric
	MetricName *string

	// REQUIRED; Metric namespace
	MetricNamespace *string

	// CONSTANT; Kind of the signal definition
	// Field has constant value SignalKindAzureResourceMetric, any specified value is ignored.
	SignalKind *SignalKind

	// REQUIRED; Time range of signal. ISO duration format like PT10M.
	TimeGrain *string

	// Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count))
	DataUnit *string

	// Optional: Dimension to split by
	Dimension *string

	// Optional: Dimension filter to apply to the dimension. Must only be set if also Dimension is set.
	DimensionFilter *string

	// Display name
	DisplayName *string

	// Optional set of labels (key-value pairs)
	Labels map[string]*string

	// Interval in which the signal is being evaluated. Defaults to PT1M (1 minute).
	RefreshInterval *RefreshInterval

	// READ-ONLY; Date when the signal definition was (soft-)deleted
	DeletionDate *time.Time

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

// GetSignalDefinitionProperties implements the SignalDefinitionPropertiesClassification interface for type ResourceMetricSignalDefinitionProperties.
func (r *ResourceMetricSignalDefinitionProperties) GetSignalDefinitionProperties() *SignalDefinitionProperties {
	return &SignalDefinitionProperties{
		DataUnit:          r.DataUnit,
		DeletionDate:      r.DeletionDate,
		DisplayName:       r.DisplayName,
		EvaluationRules:   r.EvaluationRules,
		Labels:            r.Labels,
		ProvisioningState: r.ProvisioningState,
		RefreshInterval:   r.RefreshInterval,
		SignalKind:        r.SignalKind,
	}
}

// SignalAssignment - Group of signal definition assignments
type SignalAssignment struct {
	// REQUIRED; Signal definitions referenced by their names. All definitions are combined with an AND operator.
	SignalDefinitions []*string
}

// SignalDefinition - A signal definition in a health model
type SignalDefinition struct {
	// The resource-specific properties for this resource.
	Properties SignalDefinitionPropertiesClassification

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

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

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

// SignalDefinitionProperties - SignalDefinition properties
type SignalDefinitionProperties struct {
	// REQUIRED; Evaluation rules for the signal definition
	EvaluationRules *EvaluationRule

	// REQUIRED; Kind of the signal definition
	SignalKind *SignalKind

	// Unit of the signal result (e.g. Bytes, MilliSeconds, Percent, Count))
	DataUnit *string

	// Display name
	DisplayName *string

	// Optional set of labels (key-value pairs)
	Labels map[string]*string

	// Interval in which the signal is being evaluated. Defaults to PT1M (1 minute).
	RefreshInterval *RefreshInterval

	// READ-ONLY; Date when the signal definition was (soft-)deleted
	DeletionDate *time.Time

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

// GetSignalDefinitionProperties implements the SignalDefinitionPropertiesClassification interface for type SignalDefinitionProperties.
func (s *SignalDefinitionProperties) GetSignalDefinitionProperties() *SignalDefinitionProperties {
	return s
}

// SignalGroup - Contains various signal groups that can be assigned to an entity
type SignalGroup struct {
	// Log Analytics Signal Group
	AzureLogAnalytics *LogAnalyticsSignalGroup

	// Azure Monitor Workspace Signal Group
	AzureMonitorWorkspace *AzureMonitorWorkspaceSignalGroup

	// Azure Resource Signal Group
	AzureResource *AzureResourceSignalGroup

	// Settings for dependency signals to control how the health state of child entities influences the health state of the parent
	// entity.
	Dependencies *DependenciesSignalGroup
}

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

// ThresholdRule - Threshold-based evaluation rule for a signal definition
type ThresholdRule struct {
	// REQUIRED; Operator how to compare the signal value with the threshold
	Operator *SignalOperator

	// REQUIRED; Threshold value
	Threshold *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
}
