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

import "time"

// AADCheckRequirements - Represents AADIP (Azure Active Directory Identity Protection) requirements check request.
type AADCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindAzureActiveDirectory, any specified value is ignored.
	Kind *DataConnectorKind

	// AADIP (Azure Active Directory Identity Protection) requirements check properties.
	Properties *AADCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type AADCheckRequirements.
func (a *AADCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: a.Kind,
	}
}

// AADCheckRequirementsProperties - AADIP (Azure Active Directory Identity Protection) requirements check properties.
type AADCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// AADDataConnector - Represents AADIP (Azure Active Directory Identity Protection) data connector.
type AADDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindAzureActiveDirectory, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// AADIP (Azure Active Directory Identity Protection) data connector properties.
	Properties *AADDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type AADDataConnector.
func (a *AADDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AADDataConnectorProperties - AADIP (Azure Active Directory Identity Protection) data connector properties.
type AADDataConnectorProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The available data types for the connector.
	DataTypes *AlertsDataTypeOfDataConnector
}

// AATPCheckRequirements - Represents AATP (Azure Advanced Threat Protection) requirements check request.
type AATPCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindAzureAdvancedThreatProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// AATP (Azure Advanced Threat Protection) requirements check properties.
	Properties *AATPCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type AATPCheckRequirements.
func (a *AATPCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: a.Kind,
	}
}

// AATPCheckRequirementsProperties - AATP (Azure Advanced Threat Protection) requirements check properties.
type AATPCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// AATPDataConnector - Represents AATP (Azure Advanced Threat Protection) data connector.
type AATPDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindAzureAdvancedThreatProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// AATP (Azure Advanced Threat Protection) data connector properties.
	Properties *AATPDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type AATPDataConnector.
func (a *AATPDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AATPDataConnectorProperties - AATP (Azure Advanced Threat Protection) data connector properties.
type AATPDataConnectorProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The available data types for the connector.
	DataTypes *AlertsDataTypeOfDataConnector
}

// APIKeyAuthModel - Model for authentication with the API Key. Will result in additional header on the request (default behavior)
// to the remote server: 'ApiKeyName: ApiKeyIdentifier ApiKey'. If 'IsApiKeyInPostPayload' is true it will send it in the
// body of the request and not the header.
type APIKeyAuthModel struct {
	// REQUIRED; API Key for the user secret key credential
	APIKey *string

	// REQUIRED; API Key name
	APIKeyName *string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeAPIKey, any specified value is ignored.
	Type *CcpAuthType

	// API Key Identifier
	APIKeyIdentifier *string

	// Flag to indicate if API key is set in HTTP POST payload
	IsAPIKeyInPostPayload *bool
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type APIKeyAuthModel.
func (a *APIKeyAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: a.Type,
	}
}

// APIPollingParameters - Represents Codeless API Polling data connector
type APIPollingParameters struct {
	// Config to describe the instructions blade
	ConnectorUIConfig *CodelessUIConnectorConfigProperties

	// Config to describe the polling instructions
	PollingConfig *CodelessConnectorPollingConfigProperties
}

// ASCCheckRequirements - Represents ASC (Azure Security Center) requirements check request.
type ASCCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindAzureSecurityCenter, any specified value is ignored.
	Kind *DataConnectorKind

	// ASC (Azure Security Center) requirements check properties.
	Properties *ASCCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type ASCCheckRequirements.
func (a *ASCCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: a.Kind,
	}
}

// ASCCheckRequirementsProperties - ASC (Azure Security Center) requirements check properties.
type ASCCheckRequirementsProperties struct {
	// The subscription id to connect to, and get the data from.
	SubscriptionID *string
}

// ASCDataConnector - Represents ASC (Azure Security Center) data connector.
type ASCDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindAzureSecurityCenter, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// ASC (Azure Security Center) data connector properties.
	Properties *ASCDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type ASCDataConnector.
func (a *ASCDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// ASCDataConnectorProperties - ASC (Azure Security Center) data connector properties.
type ASCDataConnectorProperties struct {
	// The available data types for the connector.
	DataTypes *AlertsDataTypeOfDataConnector

	// The subscription id to connect to, and get the data from.
	SubscriptionID *string
}

// AWSAuthModel - Model for API authentication with AWS.
type AWSAuthModel struct {
	// REQUIRED; AWS STS assume role ARN
	RoleArn *string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeAWS, any specified value is ignored.
	Type *CcpAuthType

	// AWS STS assume role external ID. This is used to prevent the confused deputy problem: 'https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html'
	ExternalID *string
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type AWSAuthModel.
func (a *AWSAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: a.Type,
	}
}

// AccountEntity - Represents an account entity.
type AccountEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Account entity properties
	Properties *AccountEntityProperties

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

// GetEntity implements the EntityClassification interface for type AccountEntity.
func (a *AccountEntity) GetEntity() *Entity {
	return &Entity{
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AccountEntityProperties - Account entity property bag.
type AccountEntityProperties struct {
	// READ-ONLY; The Azure Active Directory tenant id.
	AADTenantID *string

	// READ-ONLY; The Azure Active Directory user id.
	AADUserID *string

	// READ-ONLY; The name of the account. This field should hold only the name without any domain added to it, i.e. administrator.
	AccountName *string

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The fully qualified domain DNS name.
	DNSDomain *string

	// READ-ONLY; The display name of the account.
	DisplayName *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The Host entity id that contains the account in case it is a local account (not domain joined)
	HostEntityID *string

	// READ-ONLY; Determines whether this is a domain account.
	IsDomainJoined *bool

	// READ-ONLY; The NetBIOS domain name as it appears in the alert format domain/username. Examples: NT AUTHORITY.
	NtDomain *string

	// READ-ONLY; The objectGUID attribute is a single-value attribute that is the unique identifier for the object, assigned
	// by active directory.
	ObjectGUID *string

	// READ-ONLY; The Azure Active Directory Passport User ID.
	Puid *string

	// READ-ONLY; The account security identifier, e.g. S-1-5-18.
	Sid *string

	// READ-ONLY; The user principal name suffix for the account, in some cases it is also the domain name. Examples: contoso.com.
	UpnSuffix *string
}

// ActionRequest - Action for alert rule.
type ActionRequest struct {
	// Etag of the azure resource
	Etag *string

	// Action properties for put request
	Properties *ActionRequestProperties

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

// ActionRequestProperties - Action property bag.
type ActionRequestProperties struct {
	// REQUIRED; Logic App Resource Id, /subscriptions/{my-subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my-workflow-id}.
	LogicAppResourceID *string

	// REQUIRED; Logic App Callback URL for this specific workflow.
	TriggerURI *string
}

// ActionResponse - Action for alert rule.
type ActionResponse struct {
	// Etag of the action.
	Etag *string

	// Action properties for get request
	Properties *ActionResponseProperties

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

// ActionResponseProperties - Action property bag.
type ActionResponseProperties struct {
	// REQUIRED; Logic App Resource Id, /subscriptions/{my-subscription}/resourceGroups/{my-resource-group}/providers/Microsoft.Logic/workflows/{my-workflow-id}.
	LogicAppResourceID *string

	// The name of the logic app's workflow.
	WorkflowID *string
}

// ActionsList - List all the actions.
type ActionsList struct {
	// REQUIRED; The ActionResponse items on this page
	Value []*ActionResponse

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

// ActivityCustomEntityQuery - Represents Activity entity query.
type ActivityCustomEntityQuery struct {
	// CONSTANT; the entity query kind
	// Field has constant value CustomEntityQueryKindActivity, any specified value is ignored.
	Kind *CustomEntityQueryKind

	// Etag of the azure resource
	Etag *string

	// Activity entity query properties
	Properties *ActivityEntityQueriesProperties

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

// GetCustomEntityQuery implements the CustomEntityQueryClassification interface for type ActivityCustomEntityQuery.
func (a *ActivityCustomEntityQuery) GetCustomEntityQuery() *CustomEntityQuery {
	return &CustomEntityQuery{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// ActivityEntityQueriesProperties - Describes activity entity query properties
type ActivityEntityQueriesProperties struct {
	// The entity query content to display in timeline
	Content *string

	// The entity query description
	Description *string

	// Determines whether this activity is enabled or disabled.
	Enabled *bool

	// The query applied only to entities matching to all filters
	EntitiesFilter map[string][]*string

	// The type of the query's source entity
	InputEntityType *EntityType

	// The Activity query definitions
	QueryDefinitions *ActivityEntityQueriesPropertiesQueryDefinitions

	// List of the fields of the source entity that are required to run the query
	RequiredInputFieldsSets [][]*string

	// The template id this activity was created from
	TemplateName *string

	// The entity query title
	Title *string

	// READ-ONLY; The time the activity was created
	CreatedTimeUTC *time.Time

	// READ-ONLY; The last time the activity was updated
	LastModifiedTimeUTC *time.Time
}

// ActivityEntityQueriesPropertiesQueryDefinitions - The Activity query definitions
type ActivityEntityQueriesPropertiesQueryDefinitions struct {
	// The Activity query to run on a given entity
	Query *string
}

// ActivityEntityQuery - Represents Activity entity query.
type ActivityEntityQuery struct {
	// REQUIRED; the entity query kind
	Kind *EntityQueryKind

	// Etag of the azure resource
	Etag *string

	// Activity entity query properties
	Properties *ActivityEntityQueriesProperties

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

// GetEntityQuery implements the EntityQueryClassification interface for type ActivityEntityQuery.
func (a *ActivityEntityQuery) GetEntityQuery() *EntityQuery {
	return &EntityQuery{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// ActivityEntityQueryTemplate - Represents Activity entity query.
type ActivityEntityQueryTemplate struct {
	// REQUIRED; the entity query template kind
	Kind *EntityQueryTemplateKind

	// Activity entity query properties
	Properties *ActivityEntityQueryTemplateProperties

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

// GetEntityQueryTemplate implements the EntityQueryTemplateClassification interface for type ActivityEntityQueryTemplate.
func (a *ActivityEntityQueryTemplate) GetEntityQueryTemplate() *EntityQueryTemplate {
	return &EntityQueryTemplate{
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// ActivityEntityQueryTemplateProperties - Describes activity entity query properties
type ActivityEntityQueryTemplateProperties struct {
	// The entity query content to display in timeline
	Content *string

	// List of required data types for the given entity query template
	DataTypes []*DataTypeDefinitions

	// The entity query description
	Description *string

	// The query applied only to entities matching to all filters
	EntitiesFilter map[string][]*string

	// The type of the query's source entity
	InputEntityType *EntityType

	// The Activity query definitions
	QueryDefinitions *ActivityEntityQueryTemplatePropertiesQueryDefinitions

	// List of the fields of the source entity that are required to run the query
	RequiredInputFieldsSets [][]*string

	// The entity query title
	Title *string
}

// ActivityEntityQueryTemplatePropertiesQueryDefinitions - The Activity query definitions
type ActivityEntityQueryTemplatePropertiesQueryDefinitions struct {
	// The Activity query to run on a given entity
	Query *string

	// The dimensions we want to summarize the timeline results on, this is comma separated list
	SummarizeBy *string
}

// ActivityTimelineItem - Represents Activity timeline item.
type ActivityTimelineItem struct {
	// REQUIRED; The grouping bucket end time.
	BucketEndTimeUTC *time.Time

	// REQUIRED; The grouping bucket start time.
	BucketStartTimeUTC *time.Time

	// REQUIRED; The activity timeline content.
	Content *string

	// REQUIRED; The time of the first activity in the grouping bucket.
	FirstActivityTimeUTC *time.Time

	// REQUIRED; The entity query kind type.
	Kind *EntityTimelineKind

	// REQUIRED; The time of the last activity in the grouping bucket.
	LastActivityTimeUTC *time.Time

	// REQUIRED; The activity query id.
	QueryID *string

	// REQUIRED; The activity timeline title.
	Title *string
}

// GetEntityTimelineItem implements the EntityTimelineItemClassification interface for type ActivityTimelineItem.
func (a *ActivityTimelineItem) GetEntityTimelineItem() *EntityTimelineItem {
	return &EntityTimelineItem{
		Kind: a.Kind,
	}
}

type AddIncidentTaskActionProperties struct {
	// REQUIRED; The title of the task.
	Title *string

	// The description of the task.
	Description *string
}

// AlertDetailsOverride - Settings for how to dynamically override alert static details
type AlertDetailsOverride struct {
	// the format containing columns name(s) to override the alert description
	AlertDescriptionFormat *string

	// the format containing columns name(s) to override the alert name
	AlertDisplayNameFormat *string

	// List of additional dynamic properties to override
	AlertDynamicProperties []*AlertPropertyMapping

	// the column name to take the alert severity from
	AlertSeverityColumnName *string

	// the column name to take the alert tactics from
	AlertTacticsColumnName *string
}

// AlertPropertyMapping - A single alert property mapping to override
type AlertPropertyMapping struct {
	// The V3 alert property
	AlertProperty *AlertProperty

	// the column name to use to override this property
	Value *string
}

// AlertRule - Alert rule.
type AlertRule struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *AlertRuleKind

	// Etag of the azure resource
	Etag *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
}

// GetAlertRule implements the AlertRuleClassification interface for type AlertRule.
func (a *AlertRule) GetAlertRule() *AlertRule { return a }

// AlertRuleTemplate - Alert rule template.
type AlertRuleTemplate struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *AlertRuleKind

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

// GetAlertRuleTemplate implements the AlertRuleTemplateClassification interface for type AlertRuleTemplate.
func (a *AlertRuleTemplate) GetAlertRuleTemplate() *AlertRuleTemplate { return a }

// AlertRuleTemplateDataSource - alert rule template data sources
type AlertRuleTemplateDataSource struct {
	// The connector id that provides the following data types
	ConnectorID *string

	// The data types used by the alert rule template
	DataTypes []*string
}

// AlertRuleTemplatesList - List all the alert rule templates.
type AlertRuleTemplatesList struct {
	// REQUIRED; The AlertRuleTemplate items on this page
	Value []AlertRuleTemplateClassification

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

// AlertRulesList - List all the alert rules.
type AlertRulesList struct {
	// REQUIRED; The AlertRule items on this page
	Value []AlertRuleClassification

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

// AlertsDataTypeOfDataConnector - Alerts data type for data connectors.
type AlertsDataTypeOfDataConnector struct {
	// REQUIRED; Alerts data type connection.
	Alerts *DataConnectorDataTypeCommon
}

// AnalyticsRuleRunTrigger - Analytics Rule Run Trigger request
type AnalyticsRuleRunTrigger struct {
	// REQUIRED; The analytics Rule Run Trigger request
	Properties *AnalyticsRuleRunTriggerProperties
}

// AnalyticsRuleRunTriggerProperties - The Analytics Rule Run Trigger properties
type AnalyticsRuleRunTriggerProperties struct {
	// REQUIRED
	ExecutionTimeUTC *time.Time
}

// Anomalies - Settings with single toggle.
type Anomalies struct {
	// CONSTANT; The kind of the setting
	// Field has constant value SettingKindAnomalies, any specified value is ignored.
	Kind *SettingKind

	// Etag of the azure resource
	Etag *string

	// Anomalies properties
	Properties *AnomaliesSettingsProperties

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

// GetSettings implements the SettingsClassification interface for type Anomalies.
func (a *Anomalies) GetSettings() *Settings {
	return &Settings{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AnomaliesSettingsProperties - Anomalies property bag.
type AnomaliesSettingsProperties struct {
	// READ-ONLY; Determines whether the setting is enable or disabled.
	IsEnabled *bool
}

// AnomalySecurityMLAnalyticsSettings - Represents Anomaly Security ML Analytics Settings
type AnomalySecurityMLAnalyticsSettings struct {
	// CONSTANT; The kind of security ML Analytics Settings
	// Field has constant value SecurityMLAnalyticsSettingsKindAnomaly, any specified value is ignored.
	Kind *SecurityMLAnalyticsSettingsKind

	// Etag of the azure resource
	Etag *string

	// Anomaly Security ML Analytics Settings properties
	Properties *AnomalySecurityMLAnalyticsSettingsProperties

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

// GetSecurityMLAnalyticsSetting implements the SecurityMLAnalyticsSettingClassification interface for type AnomalySecurityMLAnalyticsSettings.
func (a *AnomalySecurityMLAnalyticsSettings) GetSecurityMLAnalyticsSetting() *SecurityMLAnalyticsSetting {
	return &SecurityMLAnalyticsSetting{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AnomalySecurityMLAnalyticsSettingsProperties - AnomalySecurityMLAnalytics settings base property bag.
type AnomalySecurityMLAnalyticsSettingsProperties struct {
	// REQUIRED; The anomaly version of the AnomalySecurityMLAnalyticsSettings.
	AnomalyVersion *string

	// REQUIRED; The display name for settings created by this SecurityMLAnalyticsSettings.
	DisplayName *string

	// REQUIRED; Determines whether this settings is enabled or disabled.
	Enabled *bool

	// REQUIRED; The frequency that this SecurityMLAnalyticsSettings will be run.
	Frequency *string

	// REQUIRED; Determines whether this anomaly security ml analytics settings is a default settings
	IsDefaultSettings *bool

	// REQUIRED; The anomaly SecurityMLAnalyticsSettings status
	SettingsStatus *SettingsStatus

	// The anomaly settings version of the Anomaly security ml analytics settings that dictates whether job version gets updated
	// or not.
	AnomalySettingsVersion *int32

	// The customizable observations of the AnomalySecurityMLAnalyticsSettings.
	CustomizableObservations any

	// The description of the SecurityMLAnalyticsSettings.
	Description *string

	// The required data sources for this SecurityMLAnalyticsSettings
	RequiredDataConnectors []*SecurityMLAnalyticsSettingsDataSource

	// The anomaly settings definition Id
	SettingsDefinitionID *string

	// The tactics of the SecurityMLAnalyticsSettings
	Tactics []*AttackTactic

	// The techniques of the SecurityMLAnalyticsSettings
	Techniques []*string

	// READ-ONLY; The last time that this SecurityMLAnalyticsSettings has been modified.
	LastModifiedUTC *time.Time
}

// AnomalyTimelineItem - Represents anomaly timeline item.
type AnomalyTimelineItem struct {
	// REQUIRED; The anomaly azure resource id.
	AzureResourceID *string

	// REQUIRED; The anomaly name.
	DisplayName *string

	// REQUIRED; The anomaly end time.
	EndTimeUTC *time.Time

	// REQUIRED; The entity query kind type.
	Kind *EntityTimelineKind

	// REQUIRED; The anomaly start time.
	StartTimeUTC *time.Time

	// REQUIRED; The anomaly generated time.
	TimeGenerated *time.Time

	// The anomaly description.
	Description *string

	// The intent of the anomaly.
	Intent *string

	// The anomaly product name.
	ProductName *string

	// The reasons that cause the anomaly.
	Reasons []*string

	// The techniques of the anomaly.
	Techniques []*string

	// The name of the anomaly vendor.
	Vendor *string
}

// GetEntityTimelineItem implements the EntityTimelineItemClassification interface for type AnomalyTimelineItem.
func (a *AnomalyTimelineItem) GetEntityTimelineItem() *EntityTimelineItem {
	return &EntityTimelineItem{
		Kind: a.Kind,
	}
}

// AssignmentItem - An entity describing a content item.
type AssignmentItem struct {
	// The resource id of the content item
	ResourceID *string
}

// AttackPattern - Represents an attack pattern in Azure Security Insights.
type AttackPattern struct {
	// REQUIRED; The kind of the TI object
	Kind *TIObjectKind

	// The properties of the TI object
	Properties *TIObjectCommonProperties

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

// GetTIObject implements the TIObjectClassification interface for type AttackPattern.
func (a *AttackPattern) GetTIObject() *TIObject {
	return &TIObject{
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		Properties: a.Properties,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AutomationRule - Concrete proxy resource types can be created by aliasing this type using a specific property type.
type AutomationRule struct {
	// REQUIRED; Automation rule properties
	Properties *AutomationRuleProperties

	// Etag of the azure resource
	Etag *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
}

// AutomationRuleAction - Describes an automation rule action.
type AutomationRuleAction struct {
	// REQUIRED; The type of the automation rule action.
	ActionType *ActionType

	// REQUIRED
	Order *int32
}

// GetAutomationRuleAction implements the AutomationRuleActionClassification interface for type AutomationRuleAction.
func (a *AutomationRuleAction) GetAutomationRuleAction() *AutomationRuleAction { return a }

// AutomationRuleAddIncidentTaskAction - Describes an automation rule action to add a task to an incident
type AutomationRuleAddIncidentTaskAction struct {
	// CONSTANT; The type of the automation rule action.
	// Field has constant value ActionTypeAddIncidentTask, any specified value is ignored.
	ActionType *ActionType

	// REQUIRED
	Order               *int32
	ActionConfiguration *AddIncidentTaskActionProperties
}

// GetAutomationRuleAction implements the AutomationRuleActionClassification interface for type AutomationRuleAddIncidentTaskAction.
func (a *AutomationRuleAddIncidentTaskAction) GetAutomationRuleAction() *AutomationRuleAction {
	return &AutomationRuleAction{
		ActionType: a.ActionType,
		Order:      a.Order,
	}
}

type AutomationRuleBooleanCondition struct {
	InnerConditions []AutomationRuleConditionClassification
	Operator        *AutomationRuleBooleanConditionSupportedOperator
}

// AutomationRuleCondition - Describes an automation rule condition.
type AutomationRuleCondition struct {
	// REQUIRED
	ConditionType *ConditionType
}

// GetAutomationRuleCondition implements the AutomationRuleConditionClassification interface for type AutomationRuleCondition.
func (a *AutomationRuleCondition) GetAutomationRuleCondition() *AutomationRuleCondition { return a }

// AutomationRuleModifyPropertiesAction - Describes an automation rule action to modify an object's properties
type AutomationRuleModifyPropertiesAction struct {
	// CONSTANT; The type of the automation rule action.
	// Field has constant value ActionTypeModifyProperties, any specified value is ignored.
	ActionType *ActionType

	// REQUIRED
	Order               *int32
	ActionConfiguration *IncidentPropertiesAction
}

// GetAutomationRuleAction implements the AutomationRuleActionClassification interface for type AutomationRuleModifyPropertiesAction.
func (a *AutomationRuleModifyPropertiesAction) GetAutomationRuleAction() *AutomationRuleAction {
	return &AutomationRuleAction{
		ActionType: a.ActionType,
		Order:      a.Order,
	}
}

// AutomationRuleProperties - Automation rule properties
type AutomationRuleProperties struct {
	// REQUIRED; The actions to execute when the automation rule is triggered.
	Actions []AutomationRuleActionClassification

	// REQUIRED; The display name of the automation rule.
	DisplayName *string

	// REQUIRED; The order of execution of the automation rule.
	Order *int32

	// REQUIRED; Describes automation rule triggering logic.
	TriggeringLogic *AutomationRuleTriggeringLogic

	// READ-ONLY; Information on the client (user or application) that made some action
	CreatedBy *ClientInfo

	// READ-ONLY; The time the automation rule was created.
	CreatedTimeUTC *time.Time

	// READ-ONLY; Information on the client (user or application) that made some action
	LastModifiedBy *ClientInfo

	// READ-ONLY; The last time the automation rule was updated.
	LastModifiedTimeUTC *time.Time
}

type AutomationRulePropertyArrayChangedValuesCondition struct {
	ArrayType  *AutomationRulePropertyArrayChangedConditionSupportedArrayType
	ChangeType *AutomationRulePropertyArrayChangedConditionSupportedChangeType
}

type AutomationRulePropertyArrayValuesCondition struct {
	ArrayConditionType *AutomationRulePropertyArrayConditionSupportedArrayConditionType
	ArrayType          *AutomationRulePropertyArrayConditionSupportedArrayType
	ItemConditions     []AutomationRuleConditionClassification
}

type AutomationRulePropertyValuesChangedCondition struct {
	ChangeType     *AutomationRulePropertyChangedConditionSupportedChangedType
	Operator       *AutomationRulePropertyConditionSupportedOperator
	PropertyName   *AutomationRulePropertyChangedConditionSupportedPropertyType
	PropertyValues []*string
}

type AutomationRulePropertyValuesCondition struct {
	Operator *AutomationRulePropertyConditionSupportedOperator

	// The property to evaluate in an automation rule property condition.
	PropertyName   *AutomationRulePropertyConditionSupportedProperty
	PropertyValues []*string
}

// AutomationRuleRunPlaybookAction - Describes an automation rule action to run a playbook
type AutomationRuleRunPlaybookAction struct {
	// CONSTANT; The type of the automation rule action.
	// Field has constant value ActionTypeRunPlaybook, any specified value is ignored.
	ActionType *ActionType

	// REQUIRED
	Order               *int32
	ActionConfiguration *PlaybookActionProperties
}

// GetAutomationRuleAction implements the AutomationRuleActionClassification interface for type AutomationRuleRunPlaybookAction.
func (a *AutomationRuleRunPlaybookAction) GetAutomationRuleAction() *AutomationRuleAction {
	return &AutomationRuleAction{
		ActionType: a.ActionType,
		Order:      a.Order,
	}
}

// AutomationRuleTriggeringLogic - Describes automation rule triggering logic.
type AutomationRuleTriggeringLogic struct {
	// REQUIRED; Determines whether the automation rule is enabled or disabled.
	IsEnabled *bool

	// REQUIRED
	TriggersOn *TriggersOn

	// REQUIRED
	TriggersWhen *TriggersWhen

	// The conditions to evaluate to determine if the automation rule should be triggered on a given object.
	Conditions []AutomationRuleConditionClassification

	// Determines when the automation rule should automatically expire and be disabled.
	ExpirationTimeUTC *time.Time
}

// AutomationRulesList - Paged collection of AutomationRule items
type AutomationRulesList struct {
	// REQUIRED; The AutomationRule items on this page
	Value []*AutomationRule

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

// Availability - Connector Availability Status
type Availability struct {
	// Set connector as preview
	IsPreview *bool

	// FLAG; CONSTANT; The connector Availability Status
	// Field has constant value 1, any specified value is ignored.
	Status *int32
}

// AwsCloudTrailCheckRequirements - Amazon Web Services CloudTrail requirements check request.
type AwsCloudTrailCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindAmazonWebServicesCloudTrail, any specified value is ignored.
	Kind *DataConnectorKind
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type AwsCloudTrailCheckRequirements.
func (a *AwsCloudTrailCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: a.Kind,
	}
}

// AwsCloudTrailDataConnector - Represents Amazon Web Services CloudTrail data connector.
type AwsCloudTrailDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindAmazonWebServicesCloudTrail, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Amazon Web Services CloudTrail data connector properties.
	Properties *AwsCloudTrailDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type AwsCloudTrailDataConnector.
func (a *AwsCloudTrailDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AwsCloudTrailDataConnectorDataTypes - The available data types for Amazon Web Services CloudTrail data connector.
type AwsCloudTrailDataConnectorDataTypes struct {
	// REQUIRED; Logs data type.
	Logs *AwsCloudTrailDataConnectorDataTypesLogs
}

// AwsCloudTrailDataConnectorDataTypesLogs - Logs data type.
type AwsCloudTrailDataConnectorDataTypesLogs struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// AwsCloudTrailDataConnectorProperties - Amazon Web Services CloudTrail data connector properties.
type AwsCloudTrailDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *AwsCloudTrailDataConnectorDataTypes

	// The Aws Role Arn (with CloudTrailReadOnly policy) that is used to access the Aws account.
	AwsRoleArn *string
}

// AwsS3CheckRequirements - Amazon Web Services S3 requirements check request.
type AwsS3CheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindAmazonWebServicesS3, any specified value is ignored.
	Kind *DataConnectorKind
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type AwsS3CheckRequirements.
func (a *AwsS3CheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: a.Kind,
	}
}

// AwsS3DataConnector - Represents Amazon Web Services S3 data connector.
type AwsS3DataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindAmazonWebServicesS3, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Amazon Web Services S3 data connector properties.
	Properties *AwsS3DataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type AwsS3DataConnector.
func (a *AwsS3DataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       a.Etag,
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AwsS3DataConnectorDataTypes - The available data types for Amazon Web Services S3 data connector.
type AwsS3DataConnectorDataTypes struct {
	// REQUIRED; Logs data type.
	Logs *AwsS3DataConnectorDataTypesLogs
}

// AwsS3DataConnectorDataTypesLogs - Logs data type.
type AwsS3DataConnectorDataTypesLogs struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// AwsS3DataConnectorProperties - Amazon Web Services S3 data connector properties.
type AwsS3DataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *AwsS3DataConnectorDataTypes

	// REQUIRED; The logs destination table name in LogAnalytics.
	DestinationTable *string

	// REQUIRED; The Aws Role Arn that is used to access the Aws account.
	RoleArn *string

	// REQUIRED; The AWS sqs urls for the connector.
	SqsUrls []*string
}

// AzureDevOpsResourceInfo - Resources created in Azure DevOps repository.
type AzureDevOpsResourceInfo struct {
	// Id of the pipeline created for the source-control.
	PipelineID *string

	// Id of the service-connection created for the source-control.
	ServiceConnectionID *string
}

// AzureResourceEntity - Represents an azure resource entity.
type AzureResourceEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// AzureResource entity properties
	Properties *AzureResourceEntityProperties

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

// GetEntity implements the EntityClassification interface for type AzureResourceEntity.
func (a *AzureResourceEntity) GetEntity() *Entity {
	return &Entity{
		ID:         a.ID,
		Kind:       a.Kind,
		Name:       a.Name,
		SystemData: a.SystemData,
		Type:       a.Type,
	}
}

// AzureResourceEntityProperties - AzureResource entity property bag.
type AzureResourceEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The azure resource id of the resource
	ResourceID *string

	// READ-ONLY; The subscription id of the resource
	SubscriptionID *string
}

// BasicAuthModel - Model for API authentication with basic flow - user name + password.
type BasicAuthModel struct {
	// REQUIRED; The password
	Password *string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeBasic, any specified value is ignored.
	Type *CcpAuthType

	// REQUIRED; The user name.
	UserName *string
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type BasicAuthModel.
func (b *BasicAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: b.Type,
	}
}

// BillingStatistic - Billing statistic
type BillingStatistic struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *BillingStatisticKind

	// READ-ONLY; Resource Etag.
	Etag *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
}

// GetBillingStatistic implements the BillingStatisticClassification interface for type BillingStatistic.
func (b *BillingStatistic) GetBillingStatistic() *BillingStatistic { return b }

// BillingStatisticList - List of all Microsoft Sentinel billing statistics.
type BillingStatisticList struct {
	// REQUIRED; The BillingStatistic items on this page
	Value []BillingStatisticClassification

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

// Bookmark - Represents a bookmark in Azure Security Insights.
type Bookmark struct {
	// Etag of the azure resource
	Etag *string

	// Bookmark properties
	Properties *BookmarkProperties

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

// BookmarkEntityMappings - Describes the entity mappings of a single entity
type BookmarkEntityMappings struct {
	// The entity type
	EntityType *string

	// Array of fields mapping for that entity type
	FieldMappings []*EntityFieldMapping
}

// BookmarkExpandParameters - The parameters required to execute an expand operation on the given bookmark.
type BookmarkExpandParameters struct {
	// The end date filter, so the only expansion results returned are before this date.
	EndTime *time.Time

	// The Id of the expansion to perform.
	ExpansionID *string

	// The start date filter, so the only expansion results returned are after this date.
	StartTime *time.Time
}

// BookmarkExpandResponse - The entity expansion result operation response.
type BookmarkExpandResponse struct {
	// The metadata from the expansion operation results.
	MetaData *ExpansionResultsMetadata

	// The expansion result values.
	Value *BookmarkExpandResponseValue
}

// BookmarkExpandResponseValue - The expansion result values.
type BookmarkExpandResponseValue struct {
	// Array of expansion result connected entities
	Edges []*ConnectedEntity

	// Array of the expansion result entities.
	Entities []EntityClassification
}

// BookmarkList - List all the bookmarks.
type BookmarkList struct {
	// REQUIRED; The Bookmark items on this page
	Value []*Bookmark

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

// BookmarkProperties - Describes bookmark properties
type BookmarkProperties struct {
	// REQUIRED; The display name of the bookmark
	DisplayName *string

	// REQUIRED; The query of the bookmark.
	Query *string

	// The time the bookmark was created
	Created *time.Time

	// Describes a user that created the bookmark
	CreatedBy *UserInfo

	// Describes the entity mappings of the bookmark
	EntityMappings []*BookmarkEntityMappings

	// The bookmark event time
	EventTime *time.Time

	// Describes an incident that relates to bookmark
	IncidentInfo *IncidentInfo

	// List of labels relevant to this bookmark
	Labels []*string

	// The notes of the bookmark
	Notes *string

	// The end time for the query
	QueryEndTime *time.Time

	// The query result of the bookmark.
	QueryResult *string

	// The start time for the query
	QueryStartTime *time.Time

	// A list of relevant mitre attacks
	Tactics []*AttackTactic

	// A list of relevant mitre techniques
	Techniques []*string

	// The last time the bookmark was updated
	Updated *time.Time

	// Describes a user that updated the bookmark
	UpdatedBy *UserInfo
}

// BookmarkTimelineItem - Represents bookmark timeline item.
type BookmarkTimelineItem struct {
	// REQUIRED; The bookmark azure resource id.
	AzureResourceID *string

	// REQUIRED; The entity query kind type.
	Kind *EntityTimelineKind

	// Describes a user that created the bookmark
	CreatedBy *UserInfo

	// The bookmark display name.
	DisplayName *string

	// The bookmark end time.
	EndTimeUTC *time.Time

	// The bookmark event time.
	EventTime *time.Time

	// List of labels relevant to this bookmark
	Labels []*string

	// The notes of the bookmark
	Notes *string

	// The bookmark start time.
	StartTimeUTC *time.Time
}

// GetEntityTimelineItem implements the EntityTimelineItemClassification interface for type BookmarkTimelineItem.
func (b *BookmarkTimelineItem) GetEntityTimelineItem() *EntityTimelineItem {
	return &EntityTimelineItem{
		Kind: b.Kind,
	}
}

// BooleanConditionProperties - Describes an automation rule condition that applies a boolean operator (e.g AND, OR) to conditions
type BooleanConditionProperties struct {
	// CONSTANT; Field has constant value ConditionTypeBoolean, any specified value is ignored.
	ConditionType       *ConditionType
	ConditionProperties *AutomationRuleBooleanCondition
}

// GetAutomationRuleCondition implements the AutomationRuleConditionClassification interface for type BooleanConditionProperties.
func (b *BooleanConditionProperties) GetAutomationRuleCondition() *AutomationRuleCondition {
	return &AutomationRuleCondition{
		ConditionType: b.ConditionType,
	}
}

// CcpAuthConfig - Base Model for API authentication.
type CcpAuthConfig struct {
	// REQUIRED; The auth type
	Type *CcpAuthType
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type CcpAuthConfig.
func (c *CcpAuthConfig) GetCcpAuthConfig() *CcpAuthConfig { return c }

// CcpResponseConfig - A custom response configuration for a rule.
type CcpResponseConfig struct {
	// REQUIRED; The json paths, '$' char is the json root.
	EventsJSONPaths []*string

	// The csv delimiter, in case the response format is CSV.
	CSVDelimiter *string

	// The character used to escape characters in CSV.
	CSVEscape *string

	// The compression algorithm. For Example: 'gzip', 'multi-gzip', 'deflate'.
	CompressionAlgo *string

	// The value indicating whether the response isn't an array of events / logs. By setting this flag to true it means the remote
	// server will response with an object which each property has as a value an array of events / logs.
	ConvertChildPropertiesToArray *bool

	// The response format. possible values are json,csv,xml
	Format *string

	// The value indicating whether the response has CSV boundary in case the response in CSV format.
	HasCSVBoundary *bool

	// The value indicating whether the response has headers in case the response in CSV format.
	HasCSVHeader *bool

	// The value indicating whether the remote server support Gzip and we should expect Gzip response.
	IsGzipCompressed *bool

	// The value where the status message/code should appear in the response.
	SuccessStatusJSONPath *string

	// The status value.
	SuccessStatusValue *string
}

// ClientInfo - Information on the client (user or application) that made some action
type ClientInfo struct {
	// The email of the client.
	Email *string

	// The name of the client.
	Name *string

	// The object id of the client.
	ObjectID *string

	// The user principal name of the client.
	UserPrincipalName *string
}

// CloudApplicationEntity - Represents a cloud application entity.
type CloudApplicationEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// CloudApplication entity properties
	Properties *CloudApplicationEntityProperties

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

// GetEntity implements the EntityClassification interface for type CloudApplicationEntity.
func (c *CloudApplicationEntity) GetEntity() *Entity {
	return &Entity{
		ID:         c.ID,
		Kind:       c.Kind,
		Name:       c.Name,
		SystemData: c.SystemData,
		Type:       c.Type,
	}
}

// CloudApplicationEntityProperties - CloudApplication entity property bag.
type CloudApplicationEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The technical identifier of the application.
	AppID *int32

	// READ-ONLY; The name of the related cloud application.
	AppName *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The user defined instance name of the cloud application. It is often used to distinguish between several applications
	// of the same type that a customer has.
	InstanceName *string
}

// CodelessAPIPollingDataConnector - Represents Codeless API Polling data connector.
type CodelessAPIPollingDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindAPIPolling, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Codeless poling data connector properties
	Properties *APIPollingParameters

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

// GetDataConnector implements the DataConnectorClassification interface for type CodelessAPIPollingDataConnector.
func (c *CodelessAPIPollingDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       c.Etag,
		ID:         c.ID,
		Kind:       c.Kind,
		Name:       c.Name,
		SystemData: c.SystemData,
		Type:       c.Type,
	}
}

// CodelessConnectorPollingAuthProperties - Describe the authentication properties needed to successfully authenticate with
// the server
type CodelessConnectorPollingAuthProperties struct {
	// REQUIRED; The authentication type
	AuthType *string

	// A prefix send in the header before the actual token
	APIKeyIdentifier *string

	// The header name which the token is sent with
	APIKeyName *string

	// The endpoint used to authorize the user, used in Oauth 2.0 flow
	AuthorizationEndpoint *string

	// The query parameters used in authorization request, used in Oauth 2.0 flow
	AuthorizationEndpointQueryParameters any

	// Describes the flow name, for example 'AuthCode' for Oauth 2.0
	FlowName *string

	// Marks if the key should sent in header
	IsAPIKeyInPostPayload *string

	// Marks if we should send the client secret in header or payload, used in Oauth 2.0 flow
	IsClientSecretInHeader *bool

	// The redirect endpoint where we will get the authorization code, used in Oauth 2.0 flow
	RedirectionEndpoint *string

	// The OAuth token scope
	Scope *string

	// The endpoint used to issue a token, used in Oauth 2.0 flow
	TokenEndpoint *string

	// The query headers used in token request, used in Oauth 2.0 flow
	TokenEndpointHeaders any

	// The query parameters used in token request, used in Oauth 2.0 flow
	TokenEndpointQueryParameters any
}

// CodelessConnectorPollingConfigProperties - Config to describe the polling config for API poller connector
type CodelessConnectorPollingConfigProperties struct {
	// REQUIRED; Describe the authentication type of the poller
	Auth *CodelessConnectorPollingAuthProperties

	// REQUIRED; Describe the poll request config parameters of the poller
	Request *CodelessConnectorPollingRequestProperties

	// The poller active status
	IsActive *bool

	// Describe the poll request paging config of the poller
	Paging *CodelessConnectorPollingPagingProperties

	// Describe the response config parameters of the poller
	Response *CodelessConnectorPollingResponseProperties
}

// CodelessConnectorPollingPagingProperties - Describe the properties needed to make a pagination call
type CodelessConnectorPollingPagingProperties struct {
	// REQUIRED; Describes the type. could be 'None', 'PageToken', 'PageCount', 'TimeStamp'
	PagingType *string

	// Defines the name of a next page attribute
	NextPageParaName *string

	// Defines the path to a next page token JSON
	NextPageTokenJSONPath *string

	// Defines the path to a page count attribute
	PageCountAttributePath *string

	// Defines the paging size
	PageSize *int32

	// Defines the name of the page size parameter
	PageSizeParaName *string

	// Defines the path to a paging time stamp attribute
	PageTimeStampAttributePath *string

	// Defines the path to a page total count attribute
	PageTotalCountAttributePath *string

	// Determines whether to search for the latest time stamp in the events list
	SearchTheLatestTimeStampFromEventsList *string
}

// CodelessConnectorPollingRequestProperties - Describe the request properties needed to successfully pull from the server
type CodelessConnectorPollingRequestProperties struct {
	// REQUIRED; Describe the endpoint we should pull the data from
	APIEndpoint *string

	// REQUIRED; The http method type we will use in the poll request, GET or POST
	HTTPMethod *string

	// REQUIRED; The time format will be used the query events in a specific window
	QueryTimeFormat *string

	// REQUIRED; The window interval we will use the pull the data
	QueryWindowInMin *int32

	// This will be used the query events from the end of the time window
	EndTimeAttributeName *string

	// Describe the headers sent in the poll request
	Headers any

	// Describe the query parameters sent in the poll request
	QueryParameters any

	// For advanced scenarios for example user name/password embedded in nested JSON payload
	QueryParametersTemplate *string

	// Defines the rate limit QPS
	RateLimitQPS *int32

	// Describe the amount of time we should try and poll the data in case of failure
	RetryCount *int32

	// This will be used the query events from a start of the time window
	StartTimeAttributeName *string

	// The number of seconds we will consider as a request timeout
	TimeoutInSeconds *int32
}

// CodelessConnectorPollingResponseProperties - Describes the response from the external server
type CodelessConnectorPollingResponseProperties struct {
	// REQUIRED; Describes the path we should extract the data in the response
	EventsJSONPaths []*string

	// Describes if the data in the response is Gzip
	IsGzipCompressed *bool

	// Describes the path we should extract the status code in the response
	SuccessStatusJSONPath *string

	// Describes the path we should extract the status value in the response
	SuccessStatusValue *string
}

// CodelessParameters - Represents Codeless UI data connector
type CodelessParameters struct {
	// Config to describe the instructions blade
	ConnectorUIConfig *CodelessUIConnectorConfigProperties
}

// CodelessUIConnectorConfigProperties - Config to describe the instructions blade
type CodelessUIConnectorConfigProperties struct {
	// REQUIRED; Connector Availability Status
	Availability *Availability

	// REQUIRED; Define the way the connector check connectivity
	ConnectivityCriteria []*CodelessUIConnectorConfigPropertiesConnectivityCriteriaItem

	// REQUIRED; Data types to check for last data received
	DataTypes []*CodelessUIConnectorConfigPropertiesDataTypesItem

	// REQUIRED; Connector description
	DescriptionMarkdown *string

	// REQUIRED; The graph query to show the current data status
	GraphQueries []*CodelessUIConnectorConfigPropertiesGraphQueriesItem

	// REQUIRED; Name of the table the connector will insert the data to
	GraphQueriesTableName *string

	// REQUIRED; Instruction steps to enable the connector
	InstructionSteps []*CodelessUIConnectorConfigPropertiesInstructionStepsItem

	// REQUIRED; Permissions required for the connector
	Permissions *Permissions

	// REQUIRED; Connector publisher name
	Publisher *string

	// REQUIRED; The sample queries for the connector
	SampleQueries []*CodelessUIConnectorConfigPropertiesSampleQueriesItem

	// REQUIRED; Connector blade title
	Title *string

	// An optional custom image to be used when displaying the connector within Azure Sentinel's connector's gallery
	CustomImage *string
}

type CodelessUIConnectorConfigPropertiesConnectivityCriteriaItem struct {
	// type of connectivity
	Type *ConnectivityType

	// Queries for checking connectivity
	Value []*string
}

type CodelessUIConnectorConfigPropertiesDataTypesItem struct {
	// Query for indicate last data received
	LastDataReceivedQuery *string

	// Name of the data type to show in the graph. can be use with {{graphQueriesTableName}} placeholder
	Name *string
}

type CodelessUIConnectorConfigPropertiesGraphQueriesItem struct {
	// The base query for the graph
	BaseQuery *string

	// The legend for the graph
	Legend *string

	// the metric that the query is checking
	MetricName *string
}

type CodelessUIConnectorConfigPropertiesInstructionStepsItem struct {
	// Instruction step description
	Description *string

	// Instruction step details
	Instructions []*InstructionStepsInstructionsItem

	// Instruction step title
	Title *string
}

type CodelessUIConnectorConfigPropertiesSampleQueriesItem struct {
	// The sample query description
	Description *string

	// the sample query
	Query *string
}

// CodelessUIDataConnector - Represents Codeless UI data connector.
type CodelessUIDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindGenericUI, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Codeless UI data connector properties
	Properties *CodelessParameters

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

// GetDataConnector implements the DataConnectorClassification interface for type CodelessUIDataConnector.
func (c *CodelessUIDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       c.Etag,
		ID:         c.ID,
		Kind:       c.Kind,
		Name:       c.Name,
		SystemData: c.SystemData,
		Type:       c.Type,
	}
}

// ConditionClause - Represents a single clause to be evaluated by a NormalizedCondition.
type ConditionClause struct {
	// REQUIRED; The name of the field that is evaluated.
	Field *string

	// REQUIRED; Represents an operator in a ConditionClause.
	Operator *Operator

	// REQUIRED; The top level connective operator for this condition.
	Values []*string

	// READ-ONLY; The connective used to join all values in this ConditionClause
	ClauseConnective *Connective
}

// ConditionProperties - Represents a condition used to query for TI objects.
type ConditionProperties struct {
	// REQUIRED; The list of clauses to be evaluated in disjunction or conjunction base on the specified top level connective
	// operator.
	Clauses []*ConditionClause

	// READ-ONLY; The top level connective operator for this condition.
	ConditionConnective *Connective

	// READ-ONLY; The STIX type for the objects returned by this query.
	StixObjectType *string
}

// ConnectedEntity - Expansion result connected entities
type ConnectedEntity struct {
	// key-value pairs for a connected entity mapping
	AdditionalData any

	// Entity Id of the connected entity
	TargetEntityID *string
}

// ConnectivityCriterion - The criteria by which we determine whether the connector is connected or not.
// For Example, use a KQL query to check if the expected data type is flowing).
type ConnectivityCriterion struct {
	// REQUIRED; Gets or sets the type of connectivity.
	Type *string

	// Gets or sets the queries for checking connectivity.
	Value []*string
}

// ConnectorDataType - The data type which is created by the connector,
// including a query indicated when was the last time that data type was received in the workspace.
type ConnectorDataType struct {
	// REQUIRED; Gets or sets the query to indicate when relevant data was last received in the workspace.
	LastDataReceivedQuery *string

	// REQUIRED; Gets or sets the name of the data type to show in the graph.
	Name *string
}

// ConnectorDefinitionsAvailability - The exposure status of the connector to the customers.
type ConnectorDefinitionsAvailability struct {
	// Gets or sets a value indicating whether the connector is preview.
	IsPreview *bool

	// The exposure status of the connector to the customers. Available values are 0-4 (0=None, 1=Available, 2=FeatureFlag, 3=Internal).
	Status *int32
}

// ConnectorDefinitionsPermissions - The required Permissions for the connector.
type ConnectorDefinitionsPermissions struct {
	// Gets or sets the customs permissions required for the user to create connections.
	Customs []*CustomPermissionDetails

	// Gets or sets the required licenses for the user to create connections.
	Licenses []*string

	// Gets or sets the resource provider permissions required for the user to create connections.
	ResourceProvider []*ConnectorDefinitionsResourceProvider

	// Gets or sets the required tenant permissions for the connector.
	Tenant []*string
}

// ConnectorDefinitionsResourceProvider - The resource provider details include the required permissions for the user to create
// connections.
// The user should have the required permissions(Read\Write, ..) in the specified scope ProviderPermissionsScope against the
// specified resource provider.
type ConnectorDefinitionsResourceProvider struct {
	// REQUIRED; Gets or sets the permissions description text.
	PermissionsDisplayText *string

	// REQUIRED; Gets or sets the provider name.
	Provider *string

	// REQUIRED; Gets or sets the permissions provider display name.
	ProviderDisplayName *string

	// REQUIRED; Required permissions for the connector resource provider that define in ResourceProviders.
	// For more information about the permissions see <see href="https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions#actions-format">here</see>.
	RequiredPermissions *ResourceProviderRequiredPermissions

	// REQUIRED; The scope on which the user should have permissions, in order to be able to create connections.
	Scope *ProviderPermissionsScope
}

// CountQuery - Represents a query to run on the TI objects in the workspace.
type CountQuery struct {
	// Query properties
	Properties *QueryProperties
}

// CustomEntityQuery - Specific entity query that supports put requests.
type CustomEntityQuery struct {
	// REQUIRED; the entity query kind
	Kind *CustomEntityQueryKind

	// Etag of the azure resource
	Etag *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
}

// GetCustomEntityQuery implements the CustomEntityQueryClassification interface for type CustomEntityQuery.
func (c *CustomEntityQuery) GetCustomEntityQuery() *CustomEntityQuery { return c }

// CustomPermissionDetails - The Custom permissions required for the connector.
type CustomPermissionDetails struct {
	// REQUIRED; Gets or sets the custom permissions description.
	Description *string

	// REQUIRED; Gets or sets the custom permissions name.
	Name *string
}

// CustomizableConnectionsConfig - The UiConfig for 'Customizable' connector definition kind.
type CustomizableConnectionsConfig struct {
	// REQUIRED; Gets or sets the template name. The template includes ARM templates that can be created by the connector, usually
	// it will be the dataConnectors ARM templates.
	TemplateSpecName *string

	// REQUIRED; Gets or sets the template version.
	TemplateSpecVersion *string
}

// CustomizableConnectorDefinition - Connector definition for kind 'Customizable'.
type CustomizableConnectorDefinition struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorDefinitionKindCustomizable, any specified value is ignored.
	Kind *DataConnectorDefinitionKind

	// Etag of the azure resource
	Etag *string

	// Customizable properties.
	Properties *CustomizableConnectorDefinitionProperties

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

// GetDataConnectorDefinition implements the DataConnectorDefinitionClassification interface for type CustomizableConnectorDefinition.
func (c *CustomizableConnectorDefinition) GetDataConnectorDefinition() *DataConnectorDefinition {
	return &DataConnectorDefinition{
		Etag:       c.Etag,
		ID:         c.ID,
		Kind:       c.Kind,
		Name:       c.Name,
		SystemData: c.SystemData,
		Type:       c.Type,
	}
}

// CustomizableConnectorDefinitionProperties - The UiConfig for 'Customizable' connector definition kind.
type CustomizableConnectorDefinitionProperties struct {
	// REQUIRED; The UiConfig for 'Customizable' connector definition kind.
	ConnectorUIConfig *CustomizableConnectorUIConfig

	// The UiConfig for 'Customizable' connector definition kind.
	ConnectionsConfig *CustomizableConnectionsConfig

	// Gets or sets the connector definition created date in UTC format.
	CreatedTimeUTC *time.Time

	// Gets or sets the connector definition last modified date in UTC format.
	LastModifiedUTC *time.Time
}

// CustomizableConnectorUIConfig - The UiConfig for 'Customizable' connector definition kind.
type CustomizableConnectorUIConfig struct {
	// REQUIRED; Gets or sets the way the connector checks whether the connector is connected.
	ConnectivityCriteria []*ConnectivityCriterion

	// REQUIRED; Gets or sets the data types to check for last data received.
	DataTypes []*ConnectorDataType

	// REQUIRED; Gets or sets the connector description in markdown format.
	DescriptionMarkdown *string

	// REQUIRED; Gets or sets the graph queries to show the current data volume over time.
	GraphQueries []*GraphQuery

	// REQUIRED; Gets or sets the instruction steps to enable the connector.
	InstructionSteps []*InstructionStep

	// REQUIRED; The required Permissions for the connector.
	Permissions *ConnectorDefinitionsPermissions

	// REQUIRED; Gets or sets the connector publisher name.
	Publisher *string

	// REQUIRED; Gets or sets the connector blade title.
	Title *string

	// The exposure status of the connector to the customers.
	Availability *ConnectorDefinitionsAvailability

	// Gets or sets custom connector id. optional field.
	ID *string

	// Gets or sets a value indicating whether to use 'OR'(SOME) or 'AND' between ConnectivityCriteria items.
	IsConnectivityCriteriasMatchSome *bool

	// Gets or sets the connector logo to be used when displaying the connector within Azure Sentinel's connector's gallery.
	// The logo value should be in SVG format.
	Logo *string
}

// DCRConfiguration - The configuration of the destination of the data.
type DCRConfiguration struct {
	// REQUIRED; Represents the data collection ingestion endpoint in log analytics.
	DataCollectionEndpoint *string

	// REQUIRED; The data collection rule immutable id, the rule defines the transformation and data destination.
	DataCollectionRuleImmutableID *string

	// REQUIRED; The stream we are sending the data to.
	StreamName *string
}

// DNSEntity - Represents a dns entity.
type DNSEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Dns entity properties
	Properties *DNSEntityProperties

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

// GetEntity implements the EntityClassification interface for type DNSEntity.
func (d *DNSEntity) GetEntity() *Entity {
	return &Entity{
		ID:         d.ID,
		Kind:       d.Kind,
		Name:       d.Name,
		SystemData: d.SystemData,
		Type:       d.Type,
	}
}

// DNSEntityProperties - Dns entity property bag.
type DNSEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; An ip entity id for the dns server resolving the request
	DNSServerIPEntityID *string

	// READ-ONLY; The name of the dns record associated with the alert
	DomainName *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; An ip entity id for the dns request client
	HostIPAddressEntityID *string

	// READ-ONLY; Ip entity identifiers for the resolved ip address.
	IPAddressEntityIDs []*string
}

// DataConnector - Data connector
type DataConnector struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *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
}

// GetDataConnector implements the DataConnectorClassification interface for type DataConnector.
func (d *DataConnector) GetDataConnector() *DataConnector { return d }

// DataConnectorConnectBody - Represents Codeless API Polling data connector.
type DataConnectorConnectBody struct {
	// The API key of the audit server.
	APIKey *string

	// The authorization code used in OAuth 2.0 code flow to issue a token.
	AuthorizationCode *string

	// The client id of the OAuth 2.0 application.
	ClientID *string

	// The client secret of the OAuth 2.0 application.
	ClientSecret *string

	// Used in v2 logs connector. Represents the data collection ingestion endpoint in log analytics.
	DataCollectionEndpoint *string

	// Used in v2 logs connector. The data collection rule immutable id, the rule defines the transformation and data destination.
	DataCollectionRuleImmutableID *string

	// The authentication kind used to poll the data
	Kind *ConnectAuthKind

	// Used in v2 logs connector. The stream we are sending the data to, this is the name of the streamDeclarations defined in
	// the DCR.
	OutputStream *string

	// The user password in the audit log server.
	Password                     *string
	RequestConfigUserInputValues []any

	// The user name in the audit log server.
	UserName *string
}

// DataConnectorDataTypeCommon - Common field for data type in data connectors.
type DataConnectorDataTypeCommon struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// DataConnectorDefinition - An Azure resource, which encapsulate the entire info requires to display a data connector page
// in Azure portal,
// and the info required to define data connections.
type DataConnectorDefinition struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *DataConnectorDefinitionKind

	// Etag of the azure resource
	Etag *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
}

// GetDataConnectorDefinition implements the DataConnectorDefinitionClassification interface for type DataConnectorDefinition.
func (d *DataConnectorDefinition) GetDataConnectorDefinition() *DataConnectorDefinition { return d }

// DataConnectorDefinitionArmCollectionWrapper - Encapsulate the data connector definition object
type DataConnectorDefinitionArmCollectionWrapper struct {
	// REQUIRED; The DataConnectorDefinition items on this page
	Value []DataConnectorDefinitionClassification

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

// DataConnectorList - List all the data connectors.
type DataConnectorList struct {
	// REQUIRED; The DataConnector items on this page
	Value []DataConnectorClassification

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

// DataConnectorRequirementsState - Data connector requirements status.
type DataConnectorRequirementsState struct {
	// Authorization state for this connector
	AuthorizationState *DataConnectorAuthorizationState

	// License state for this connector
	LicenseState *DataConnectorLicenseState
}

// DataConnectorsCheckRequirements - Data connector requirements properties.
type DataConnectorsCheckRequirements struct {
	// REQUIRED; Describes the kind of connector to be checked.
	Kind *DataConnectorKind
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type DataConnectorsCheckRequirements.
func (d *DataConnectorsCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return d
}

// DataTypeDefinitions - The data type definition
type DataTypeDefinitions struct {
	// The data type name
	DataType *string
}

// Deployment - Description about a deployment.
type Deployment struct {
	// Deployment identifier.
	DeploymentID *string

	// Url to access repository action logs.
	DeploymentLogsURL *string

	// The outcome of the deployment.
	DeploymentResult *DeploymentResult

	// Current status of the deployment.
	DeploymentState *DeploymentState

	// The time when the deployment finished.
	DeploymentTime *time.Time
}

// DeploymentInfo - Information regarding a deployment.
type DeploymentInfo struct {
	// Deployment information.
	Deployment *Deployment

	// Status while fetching the last deployment.
	DeploymentFetchStatus *DeploymentFetchStatus

	// Additional details about the deployment that can be shown to the user.
	Message *string
}

// Dynamics365CheckRequirements - Represents Dynamics365 requirements check request.
type Dynamics365CheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindDynamics365, any specified value is ignored.
	Kind *DataConnectorKind

	// Dynamics365 requirements check properties.
	Properties *Dynamics365CheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type Dynamics365CheckRequirements.
func (d *Dynamics365CheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: d.Kind,
	}
}

// Dynamics365CheckRequirementsProperties - Dynamics365 requirements check properties.
type Dynamics365CheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// Dynamics365DataConnector - Represents Dynamics365 data connector.
type Dynamics365DataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindDynamics365, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Dynamics365 data connector properties.
	Properties *Dynamics365DataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type Dynamics365DataConnector.
func (d *Dynamics365DataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       d.Etag,
		ID:         d.ID,
		Kind:       d.Kind,
		Name:       d.Name,
		SystemData: d.SystemData,
		Type:       d.Type,
	}
}

// Dynamics365DataConnectorDataTypes - The available data types for Dynamics365 data connector.
type Dynamics365DataConnectorDataTypes struct {
	// REQUIRED; Common Data Service data type connection.
	Dynamics365CdsActivities *Dynamics365DataConnectorDataTypesDynamics365CdsActivities
}

// Dynamics365DataConnectorDataTypesDynamics365CdsActivities - Common Data Service data type connection.
type Dynamics365DataConnectorDataTypesDynamics365CdsActivities struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// Dynamics365DataConnectorProperties - Dynamics365 data connector properties.
type Dynamics365DataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *Dynamics365DataConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// EnrichmentDomainBody - Domain name to be enriched
type EnrichmentDomainBody struct {
	// The domain name
	Domain *string
}

// EnrichmentDomainWhois - Whois information for a given domain and associated metadata
type EnrichmentDomainWhois struct {
	// The timestamp at which this record was created
	Created *time.Time

	// The domain for this whois record
	Domain *string

	// The timestamp at which this record will expire
	Expires *time.Time

	// The whois record for a given domain
	ParsedWhois *EnrichmentDomainWhoisDetails

	// The hostname of this registrar's whois server
	Server *string

	// The timestamp at which this record was last updated
	Updated *time.Time
}

// EnrichmentDomainWhoisContact - An individual contact associated with this domain
type EnrichmentDomainWhoisContact struct {
	// The city for this contact
	City *string

	// The country for this contact
	Country *string

	// The email address for this contact
	Email *string

	// The fax number for this contact
	Fax *string

	// The name of this contact
	Name *string

	// The organization for this contact
	Org *string

	// The phone number for this contact
	Phone *string

	// The postal code for this contact
	Postal *string

	// The state for this contact
	State *string

	// A list describing the street address for this contact
	Street []*string
}

// EnrichmentDomainWhoisContacts - The set of contacts associated with this domain
type EnrichmentDomainWhoisContacts struct {
	// The admin contact for this whois record
	Admin *EnrichmentDomainWhoisContact

	// The billing contact for this whois record
	Billing *EnrichmentDomainWhoisContact

	// The registrant contact for this whois record
	Registrant *EnrichmentDomainWhoisContact

	// The technical contact for this whois record
	Tech *EnrichmentDomainWhoisContact
}

// EnrichmentDomainWhoisDetails - The whois record for a given domain
type EnrichmentDomainWhoisDetails struct {
	// The set of contacts associated with this domain
	Contacts *EnrichmentDomainWhoisContacts

	// A list of name servers associated with this domain
	NameServers []*string

	// The registrar associated with this domain
	Registrar *EnrichmentDomainWhoisRegistrarDetails

	// The set of status flags for this whois record
	Statuses []*string
}

// EnrichmentDomainWhoisRegistrarDetails - The registrar associated with this domain
type EnrichmentDomainWhoisRegistrarDetails struct {
	// This registrar's abuse contact email
	AbuseContactEmail *string

	// This registrar's abuse contact phone number
	AbuseContactPhone *string

	// This registrar's Internet Assigned Numbers Authority id
	IanaID *string

	// The name of this registrar
	Name *string

	// This registrar's URL
	URL *string

	// The hostname of this registrar's whois server
	WhoisServer *string
}

// EnrichmentIPAddressBody - IP address (v4 or v6) to be enriched
type EnrichmentIPAddressBody struct {
	// The dotted-decimal or colon-separated string representation of the IP address
	IPAddress *string
}

// EnrichmentIPGeodata - Geodata information for a given IP address
type EnrichmentIPGeodata struct {
	// The autonomous system number associated with this IP address
	Asn *string

	// The name of the carrier for this IP address
	Carrier *string

	// The city this IP address is located in
	City *string

	// A numeric rating of confidence that the value in the 'city' field is correct, on a scale of 0-100
	CityConfidenceFactor *int32

	// The continent this IP address is located on
	Continent *string

	// The county this IP address is located in
	Country *string

	// A numeric rating of confidence that the value in the 'country' field is correct on a scale of 0-100
	CountryConfidenceFactor *int32

	// The dotted-decimal or colon-separated string representation of the IP address
	IPAddr *string

	// A description of the connection type of this IP address
	IPRoutingType *string

	// The latitude of this IP address
	Latitude *string

	// The longitude of this IP address
	Longitude *string

	// The name of the organization for this IP address
	Organization *string

	// The type of the organization for this IP address
	OrganizationType *string

	// The geographic region this IP address is located in
	Region *string

	// The state this IP address is located in
	State *string

	// The abbreviated name for the state this IP address is located in
	StateCode *string

	// A numeric rating of confidence that the value in the 'state' field is correct on a scale of 0-100
	StateConfidenceFactor *int32
}

// Entity - Specific entity.
type Entity struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *EntityKindEnum

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

// GetEntity implements the EntityClassification interface for type Entity.
func (e *Entity) GetEntity() *Entity { return e }

// EntityAnalytics - Settings with single toggle.
type EntityAnalytics struct {
	// CONSTANT; The kind of the setting
	// Field has constant value SettingKindEntityAnalytics, any specified value is ignored.
	Kind *SettingKind

	// Etag of the azure resource
	Etag *string

	// EntityAnalytics properties
	Properties *EntityAnalyticsProperties

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

// GetSettings implements the SettingsClassification interface for type EntityAnalytics.
func (e *EntityAnalytics) GetSettings() *Settings {
	return &Settings{
		Etag:       e.Etag,
		ID:         e.ID,
		Kind:       e.Kind,
		Name:       e.Name,
		SystemData: e.SystemData,
		Type:       e.Type,
	}
}

// EntityAnalyticsProperties - EntityAnalytics property bag.
type EntityAnalyticsProperties struct {
	// The relevant entity providers that are synced
	EntityProviders []*EntityProviders
}

// EntityEdges - The edge that connects the entity to the other entity.
type EntityEdges struct {
	// A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// The target entity Id.
	TargetEntityID *string
}

// EntityExpandParameters - The parameters required to execute an expand operation on the given entity.
type EntityExpandParameters struct {
	// The end date filter, so the only expansion results returned are before this date.
	EndTime *time.Time

	// The Id of the expansion to perform.
	ExpansionID *string

	// The start date filter, so the only expansion results returned are after this date.
	StartTime *time.Time
}

// EntityExpandResponse - The entity expansion result operation response.
type EntityExpandResponse struct {
	// The metadata from the expansion operation results.
	MetaData *ExpansionResultsMetadata

	// The expansion result values.
	Value *EntityExpandResponseValue
}

// EntityExpandResponseValue - The expansion result values.
type EntityExpandResponseValue struct {
	// Array of edges that connects the entity to the list of entities.
	Edges []*EntityEdges

	// Array of the expansion result entities.
	Entities []EntityClassification
}

// EntityFieldMapping - Map identifiers of a single entity
type EntityFieldMapping struct {
	// Alert V3 identifier
	Identifier *string

	// The value of the identifier
	Value *string
}

// EntityGetInsightsParameters - The parameters required to execute insights operation on the given entity.
type EntityGetInsightsParameters struct {
	// REQUIRED; The end timeline date, so the results returned are before this date.
	EndTime *time.Time

	// REQUIRED; The start timeline date, so the results returned are after this date.
	StartTime *time.Time

	// Indicates if query time range should be extended with default time range of the query. Default value is false
	AddDefaultExtendedTimeRange *bool

	// List of Insights Query Id. If empty, default value is all insights of this entity
	InsightQueryIDs []*string
}

// EntityGetInsightsResponse - The Get Insights result operation response.
type EntityGetInsightsResponse struct {
	// The metadata from the get insights operation results.
	MetaData *GetInsightsResultsMetadata

	// The insights result values.
	Value []*EntityInsightItem
}

// EntityInsightItem - Entity insight Item.
type EntityInsightItem struct {
	// Query results for table insights query.
	ChartQueryResults []*InsightsTableResult

	// The query id of the insight
	QueryID *string

	// The Time interval that the query actually executed on.
	QueryTimeInterval *EntityInsightItemQueryTimeInterval

	// Query results for table insights query.
	TableQueryResults *InsightsTableResult
}

// EntityInsightItemQueryTimeInterval - The Time interval that the query actually executed on.
type EntityInsightItemQueryTimeInterval struct {
	// Insight query end time
	EndTime *time.Time

	// Insight query start time
	StartTime *time.Time
}

// EntityList - List of all the entities.
type EntityList struct {
	// REQUIRED; The Entity items on this page
	Value []EntityClassification

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

// EntityManualTriggerRequestBody - Describes the request body for triggering a playbook on an entity.
type EntityManualTriggerRequestBody struct {
	// REQUIRED; The resource id of the playbook resource.
	LogicAppsResourceID *string

	// Incident ARM id.
	IncidentArmID *string

	// The tenant id of the playbook resource.
	TenantID *string
}

// EntityMapping - Single entity mapping for the alert rule
type EntityMapping struct {
	// The V3 type of the mapped entity
	EntityType *EntityMappingType

	// array of field mappings for the given entity mapping
	FieldMappings []*FieldMapping
}

// EntityQuery - Specific entity query.
type EntityQuery struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *EntityQueryKind

	// Etag of the azure resource
	Etag *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
}

// GetEntityQuery implements the EntityQueryClassification interface for type EntityQuery.
func (e *EntityQuery) GetEntityQuery() *EntityQuery { return e }

// EntityQueryItem - An abstract Query item for entity
type EntityQueryItem struct {
	// REQUIRED; The kind of the entity query
	Kind *EntityQueryKind

	// Query Template ARM Name
	Name *string

	// ARM Type
	Type *string

	// READ-ONLY; Query Template ARM ID
	ID *string
}

// GetEntityQueryItem implements the EntityQueryItemClassification interface for type EntityQueryItem.
func (e *EntityQueryItem) GetEntityQueryItem() *EntityQueryItem { return e }

type EntityQueryItemPropertiesDataTypesItem struct {
	// Data type name
	DataType *string
}

// EntityQueryList - List of all the entity queries.
type EntityQueryList struct {
	// REQUIRED; The EntityQuery items on this page
	Value []EntityQueryClassification

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

// EntityQueryTemplate - Specific entity query template.
type EntityQueryTemplate struct {
	// REQUIRED; The kind of the entity query template.
	Kind *EntityQueryTemplateKind

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

// GetEntityQueryTemplate implements the EntityQueryTemplateClassification interface for type EntityQueryTemplate.
func (e *EntityQueryTemplate) GetEntityQueryTemplate() *EntityQueryTemplate { return e }

// EntityQueryTemplateList - List of all the entity query templates.
type EntityQueryTemplateList struct {
	// REQUIRED; The EntityQueryTemplate items on this page
	Value []EntityQueryTemplateClassification

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

// EntityTimelineItem - Entity timeline Item.
type EntityTimelineItem struct {
	// REQUIRED; The entity query kind type.
	Kind *EntityTimelineKind
}

// GetEntityTimelineItem implements the EntityTimelineItemClassification interface for type EntityTimelineItem.
func (e *EntityTimelineItem) GetEntityTimelineItem() *EntityTimelineItem { return e }

// EntityTimelineParameters - The parameters required to execute s timeline operation on the given entity.
type EntityTimelineParameters struct {
	// REQUIRED; The end timeline date, so the results returned are before this date.
	EndTime *time.Time

	// REQUIRED; The start timeline date, so the results returned are after this date.
	StartTime *time.Time

	// Array of timeline Item kinds.
	Kinds []*EntityTimelineKind

	// The number of bucket for timeline queries aggregation.
	NumberOfBucket *int32
}

// EntityTimelineResponse - The entity timeline result operation response.
type EntityTimelineResponse struct {
	// The metadata from the timeline operation results.
	MetaData *TimelineResultsMetadata

	// The timeline result values.
	Value []EntityTimelineItemClassification
}

// Error - The error description for why a publication failed
type Error struct {
	// REQUIRED; The error message
	ErrorMessage *string

	// REQUIRED; The member resource name for which the publication error occured
	MemberResourceName *string
}

// EventGroupingSettings - Event grouping settings property bag.
type EventGroupingSettings struct {
	// The event grouping aggregation kinds
	AggregationKind *EventGroupingAggregationKind
}

// ExpansionEntityQueriesProperties - Describes expansion entity query properties
type ExpansionEntityQueriesProperties struct {
	// List of the data sources that are required to run the query
	DataSources []*string

	// The query display name
	DisplayName *string

	// The type of the query's source entity
	InputEntityType *EntityType

	// List of the fields of the source entity that are required to run the query
	InputFields []*string

	// List of the desired output types to be constructed from the result
	OutputEntityTypes []*EntityType

	// The template query string to be parsed and formatted
	QueryTemplate *string
}

// ExpansionEntityQuery - Represents Expansion entity query.
type ExpansionEntityQuery struct {
	// REQUIRED; the entity query kind
	Kind *EntityQueryKind

	// Etag of the azure resource
	Etag *string

	// Expansion entity query properties
	Properties *ExpansionEntityQueriesProperties

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

// GetEntityQuery implements the EntityQueryClassification interface for type ExpansionEntityQuery.
func (e *ExpansionEntityQuery) GetEntityQuery() *EntityQuery {
	return &EntityQuery{
		Etag:       e.Etag,
		ID:         e.ID,
		Kind:       e.Kind,
		Name:       e.Name,
		SystemData: e.SystemData,
		Type:       e.Type,
	}
}

// ExpansionResultAggregation - Information of a specific aggregation in the expansion result.
type ExpansionResultAggregation struct {
	// REQUIRED; Total number of aggregations of the given kind (and aggregationType if given) in the expansion result.
	Count *int32

	// REQUIRED; The kind of the aggregated entity.
	EntityKind *EntityKindEnum

	// The common type of the aggregation. (for e.g. entity field name)
	AggregationType *string

	// The display name of the aggregation by type.
	DisplayName *string
}

// ExpansionResultsMetadata - Expansion result metadata.
type ExpansionResultsMetadata struct {
	// Information of the aggregated nodes in the expansion result.
	Aggregations []*ExpansionResultAggregation
}

// EyesOn - Settings with single toggle.
type EyesOn struct {
	// CONSTANT; The kind of the setting
	// Field has constant value SettingKindEyesOn, any specified value is ignored.
	Kind *SettingKind

	// Etag of the azure resource
	Etag *string

	// EyesOn properties
	Properties *EyesOnSettingsProperties

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

// GetSettings implements the SettingsClassification interface for type EyesOn.
func (e *EyesOn) GetSettings() *Settings {
	return &Settings{
		Etag:       e.Etag,
		ID:         e.ID,
		Kind:       e.Kind,
		Name:       e.Name,
		SystemData: e.SystemData,
		Type:       e.Type,
	}
}

// EyesOnSettingsProperties - EyesOn property bag.
type EyesOnSettingsProperties struct {
	// READ-ONLY; Determines whether the setting is enable or disabled.
	IsEnabled *bool
}

// FieldMapping - A single field mapping of the mapped entity
type FieldMapping struct {
	// the column name to be mapped to the identifier
	ColumnName *string

	// the V3 identifier of the entity
	Identifier *string
}

// FileEntity - Represents a file entity.
type FileEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// File entity properties
	Properties *FileEntityProperties

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

// GetEntity implements the EntityClassification interface for type FileEntity.
func (f *FileEntity) GetEntity() *Entity {
	return &Entity{
		ID:         f.ID,
		Kind:       f.Kind,
		Name:       f.Name,
		SystemData: f.SystemData,
		Type:       f.Type,
	}
}

// FileEntityProperties - File entity property bag.
type FileEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The full path to the file.
	Directory *string

	// READ-ONLY; The file hash entity identifiers associated with this file
	FileHashEntityIDs []*string

	// READ-ONLY; The file name without path (some alerts might not include path).
	FileName *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The Host entity id which the file belongs to
	HostEntityID *string
}

// FileHashEntity - Represents a file hash entity.
type FileHashEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// FileHash entity properties
	Properties *FileHashEntityProperties

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

// GetEntity implements the EntityClassification interface for type FileHashEntity.
func (f *FileHashEntity) GetEntity() *Entity {
	return &Entity{
		ID:         f.ID,
		Kind:       f.Kind,
		Name:       f.Name,
		SystemData: f.SystemData,
		Type:       f.Type,
	}
}

// FileHashEntityProperties - FileHash entity property bag.
type FileHashEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The hash algorithm type.
	Algorithm *FileHashAlgorithm

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The file hash value.
	HashValue *string
}

// FileImport - Represents a file import in Azure Security Insights.
type FileImport struct {
	// File import properties
	Properties *FileImportProperties

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

// FileImportList - List all the file imports.
type FileImportList struct {
	// REQUIRED; The FileImport items on this page
	Value []*FileImport

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

// FileImportProperties - Describes the FileImport's properties
type FileImportProperties struct {
	// REQUIRED; The content type of this file.
	ContentType *FileImportContentType

	// REQUIRED; Represents the imported file.
	ImportFile *FileMetadata

	// REQUIRED; Describes how to ingest the records in the file.
	IngestionMode *IngestionMode

	// REQUIRED; The source for the data in the file.
	Source *string

	// READ-ONLY; The time the file was imported.
	CreatedTimeUTC *time.Time

	// READ-ONLY; Represents the error file (if the import was ingested with errors or failed the validation).
	ErrorFile *FileMetadata

	// READ-ONLY; An ordered list of some of the errors that were encountered during validation.
	ErrorsPreview []*ValidationError

	// READ-ONLY; The time the files associated with this import are deleted from the storage account.
	FilesValidUntilTimeUTC *time.Time

	// READ-ONLY; The time the file import record is soft deleted from the database and history.
	ImportValidUntilTimeUTC *time.Time

	// READ-ONLY; The number of records that have been successfully ingested.
	IngestedRecordCount *int32

	// READ-ONLY; The state of the file import.
	State *FileImportState

	// READ-ONLY; The number of records in the file.
	TotalRecordCount *int32

	// READ-ONLY; The number of records that have passed validation.
	ValidRecordCount *int32
}

// FileMetadata - Represents a file.
type FileMetadata struct {
	// The format of the file
	FileFormat *FileFormat

	// The name of the file.
	FileName *string

	// The size of the file.
	FileSize *int32

	// READ-ONLY; Indicates whether the file was deleted from the storage account.
	DeleteStatus *DeleteStatus

	// READ-ONLY; A URI with a valid SAS token to allow uploading / downloading the file.
	FileContentURI *string
}

// FusionAlertRule - Represents Fusion alert rule.
type FusionAlertRule struct {
	// CONSTANT; The kind of the alert rule
	// Field has constant value AlertRuleKindFusion, any specified value is ignored.
	Kind *AlertRuleKind

	// Etag of the azure resource
	Etag *string

	// Fusion alert rule properties
	Properties *FusionAlertRuleProperties

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

// GetAlertRule implements the AlertRuleClassification interface for type FusionAlertRule.
func (f *FusionAlertRule) GetAlertRule() *AlertRule {
	return &AlertRule{
		Etag:       f.Etag,
		ID:         f.ID,
		Kind:       f.Kind,
		Name:       f.Name,
		SystemData: f.SystemData,
		Type:       f.Type,
	}
}

// FusionAlertRuleProperties - Fusion alert rule base property bag.
type FusionAlertRuleProperties struct {
	// REQUIRED; The Name of the alert rule template used to create this rule.
	AlertRuleTemplateName *string

	// REQUIRED; Determines whether this alert rule is enabled or disabled.
	Enabled *bool

	// Configuration to exclude scenarios in fusion detection.
	ScenarioExclusionPatterns []*FusionScenarioExclusionPattern

	// Configuration for all supported source signals in fusion detection.
	SourceSettings []*FusionSourceSettings

	// READ-ONLY; The description of the alert rule.
	Description *string

	// READ-ONLY; The display name for alerts created by this alert rule.
	DisplayName *string

	// READ-ONLY; The last time that this alert has been modified.
	LastModifiedUTC *time.Time

	// READ-ONLY; The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// READ-ONLY; The sub-techniques of the alert rule
	SubTechniques []*string

	// READ-ONLY; The tactics of the alert rule
	Tactics []*AttackTactic

	// READ-ONLY; The techniques of the alert rule
	Techniques []*string
}

// FusionAlertRuleTemplate - Represents Fusion alert rule template.
type FusionAlertRuleTemplate struct {
	// REQUIRED; The kind of the alert rule
	Kind *AlertRuleKind

	// Fusion alert rule template properties
	Properties *FusionAlertRuleTemplateProperties

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

// GetAlertRuleTemplate implements the AlertRuleTemplateClassification interface for type FusionAlertRuleTemplate.
func (f *FusionAlertRuleTemplate) GetAlertRuleTemplate() *AlertRuleTemplate {
	return &AlertRuleTemplate{
		ID:         f.ID,
		Kind:       f.Kind,
		Name:       f.Name,
		SystemData: f.SystemData,
		Type:       f.Type,
	}
}

// FusionAlertRuleTemplateProperties - Fusion alert rule template properties
type FusionAlertRuleTemplateProperties struct {
	// The number of alert rules that were created by this template
	AlertRulesCreatedByTemplateCount *int32

	// The description of the alert rule template.
	Description *string

	// The display name for alert rule template.
	DisplayName *string

	// The required data connectors for this template
	RequiredDataConnectors []*AlertRuleTemplateDataSource

	// The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// All supported source signal configurations consumed in fusion detection.
	SourceSettings []*FusionTemplateSourceSetting

	// The alert rule template status.
	Status *TemplateStatus

	// The sub-techniques of the alert rule
	SubTechniques []*string

	// The tactics of the alert rule template
	Tactics []*AttackTactic

	// The techniques of the alert rule
	Techniques []*string

	// READ-ONLY; The time that this alert rule template has been added.
	CreatedDateUTC *time.Time

	// READ-ONLY; The time that this alert rule template was last updated.
	LastUpdatedDateUTC *time.Time
}

// FusionScenarioExclusionPattern - Represents a Fusion scenario exclusion patterns in Fusion detection.
type FusionScenarioExclusionPattern struct {
	// REQUIRED; DateTime when scenario exclusion pattern is added in UTC.
	DateAddedInUTC *string

	// REQUIRED; Scenario exclusion pattern.
	ExclusionPattern *string
}

// FusionSourceSettings - Represents a supported source signal configuration in Fusion detection.
type FusionSourceSettings struct {
	// REQUIRED; Determines whether this source signal is enabled or disabled in Fusion detection.
	Enabled *bool

	// REQUIRED; Name of the Fusion source signal. Refer to Fusion alert rule template for supported values.
	SourceName *string

	// Configuration for all source subtypes under this source signal consumed in fusion detection.
	SourceSubTypes []*FusionSourceSubTypeSetting
}

// FusionSourceSubTypeSetting - Represents a supported source subtype configuration under a source signal in Fusion detection.
type FusionSourceSubTypeSetting struct {
	// REQUIRED; Determines whether this source subtype under source signal is enabled or disabled in Fusion detection.
	Enabled *bool

	// REQUIRED; Severity configuration for a source subtype consumed in fusion detection.
	SeverityFilters *FusionSubTypeSeverityFilter

	// REQUIRED; The Name of the source subtype under a given source signal in Fusion detection. Refer to Fusion alert rule template
	// for supported values.
	SourceSubTypeName *string

	// READ-ONLY; The display name of source subtype under a source signal consumed in Fusion detection.
	SourceSubTypeDisplayName *string
}

// FusionSubTypeSeverityFilter - Represents severity configuration for a source subtype consumed in Fusion detection.
type FusionSubTypeSeverityFilter struct {
	// Individual Severity configuration settings for a given source subtype consumed in Fusion detection.
	Filters []*FusionSubTypeSeverityFiltersItem

	// READ-ONLY; Determines whether this source subtype supports severity configuration or not.
	IsSupported *bool
}

// FusionSubTypeSeverityFiltersItem - Represents a Severity filter setting for a given source subtype consumed in Fusion detection.
type FusionSubTypeSeverityFiltersItem struct {
	// REQUIRED; Determines whether this severity is enabled or disabled for this source subtype consumed in Fusion detection.
	Enabled *bool

	// REQUIRED; The Severity for a given source subtype consumed in Fusion detection.
	Severity *AlertSeverity
}

// FusionTemplateSourceSetting - Represents a source signal consumed in Fusion detection.
type FusionTemplateSourceSetting struct {
	// REQUIRED; The name of a source signal consumed in Fusion detection.
	SourceName *string

	// All supported source subtypes under this source signal consumed in fusion detection.
	SourceSubTypes []*FusionTemplateSourceSubType
}

// FusionTemplateSourceSubType - Represents a source subtype under a source signal consumed in Fusion detection.
type FusionTemplateSourceSubType struct {
	// REQUIRED; Severity configuration available for a source subtype consumed in fusion detection.
	SeverityFilter *FusionTemplateSubTypeSeverityFilter

	// REQUIRED; The name of source subtype under a source signal consumed in Fusion detection.
	SourceSubTypeName *string

	// READ-ONLY; The display name of source subtype under a source signal consumed in Fusion detection.
	SourceSubTypeDisplayName *string
}

// FusionTemplateSubTypeSeverityFilter - Represents severity configurations available for a source subtype consumed in Fusion
// detection.
type FusionTemplateSubTypeSeverityFilter struct {
	// REQUIRED; Determines whether severity configuration is supported for this source subtype consumed in Fusion detection.
	IsSupported *bool

	// List of all supported severities for this source subtype consumed in Fusion detection.
	SeverityFilters []*AlertSeverity
}

// GCPAuthModel - Model for API authentication for all GCP kind connectors.
type GCPAuthModel struct {
	// REQUIRED; GCP Project Number
	ProjectNumber *string

	// REQUIRED; GCP Service Account Email
	ServiceAccountEmail *string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeGCP, any specified value is ignored.
	Type *CcpAuthType

	// REQUIRED; GCP Workload Identity Provider ID
	WorkloadIdentityProviderID *string
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type GCPAuthModel.
func (g *GCPAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: g.Type,
	}
}

// GCPAuthProperties - Google Cloud Platform auth section properties.
type GCPAuthProperties struct {
	// REQUIRED; The GCP project number.
	ProjectNumber *string

	// REQUIRED; The service account that is used to access the GCP project.
	ServiceAccountEmail *string

	// REQUIRED; The workload identity provider id that is used to gain access to the GCP project.
	WorkloadIdentityProviderID *string
}

// GCPDataConnector - Represents Google Cloud Platform data connector.
type GCPDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindGCP, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Google Cloud Platform data connector properties.
	Properties *GCPDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type GCPDataConnector.
func (g *GCPDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       g.Etag,
		ID:         g.ID,
		Kind:       g.Kind,
		Name:       g.Name,
		SystemData: g.SystemData,
		Type:       g.Type,
	}
}

// GCPDataConnectorProperties - Google Cloud Platform data connector properties.
type GCPDataConnectorProperties struct {
	// REQUIRED; The auth section of the connector.
	Auth *GCPAuthProperties

	// REQUIRED; The name of the connector definition that represents the UI config.
	ConnectorDefinitionName *string

	// REQUIRED; The request section of the connector.
	Request *GCPRequestProperties

	// The configuration of the destination of the data.
	DcrConfig *DCRConfiguration
}

// GCPRequestProperties - Google Cloud Platform request section properties.
type GCPRequestProperties struct {
	// REQUIRED; The GCP project id.
	ProjectID *string

	// REQUIRED; The GCP pub/sub subscription names.
	SubscriptionNames []*string
}

// GenericBlobSbsAuthModel - Model for API authentication for working with service bus or storage account.
type GenericBlobSbsAuthModel struct {
	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeServiceBus, any specified value is ignored.
	Type *CcpAuthType

	// Credentials for service bus namespace, keyvault uri for access key
	CredentialsConfig map[string]*string

	// Credentials for storage account, keyvault uri for access key
	StorageAccountCredentialsConfig map[string]*string
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type GenericBlobSbsAuthModel.
func (g *GenericBlobSbsAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: g.Type,
	}
}

// GeoLocation - The geo-location context attached to the ip entity
type GeoLocation struct {
	// READ-ONLY; Autonomous System Number
	Asn *int32

	// READ-ONLY; City name
	City *string

	// READ-ONLY; The country code according to ISO 3166 format
	CountryCode *string

	// READ-ONLY; Country name according to ISO 3166 Alpha 2: the lowercase of the English Short Name
	CountryName *string

	// READ-ONLY; The latitude of the identified location, expressed as a floating point number with range of - 90 to 90. Latitude
	// and longitude are derived from the city or postal code.
	Latitude *float64

	// READ-ONLY; The longitude of the identified location, expressed as a floating point number with range of -180 to 180. Latitude
	// and longitude are derived from the city or postal code.
	Longitude *float64

	// READ-ONLY; State name
	State *string
}

// GetInsightsErrorKind - GetInsights Query Errors.
type GetInsightsErrorKind struct {
	// REQUIRED; the error message
	ErrorMessage *string

	// REQUIRED; the query kind
	Kind *GetInsightsError

	// the query id
	QueryID *string
}

// GetInsightsResultsMetadata - Get Insights result metadata.
type GetInsightsResultsMetadata struct {
	// REQUIRED; the total items found for the insights request
	TotalCount *int32

	// information about the failed queries
	Errors []*GetInsightsErrorKind
}

// GetQueriesResponse - Retrieve queries for entity result operation response.
type GetQueriesResponse struct {
	NextLink *string

	// The query result values.
	Value []EntityQueryItemClassification
}

// GitHubAuthModel - Model for API authentication for GitHub. For this authentication first we need to approve the Router
// app (Microsoft Security DevOps) to access the GitHub account, Then we only need the InstallationId to get the access token
// from https://api.github.com/app/installations/{installId}/access_tokens.
type GitHubAuthModel struct {
	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeGitHub, any specified value is ignored.
	Type *CcpAuthType

	// The GitHubApp auth installation id.
	InstallationID *string
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type GitHubAuthModel.
func (g *GitHubAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: g.Type,
	}
}

// GitHubResourceInfo - Resources created in GitHub repository.
type GitHubResourceInfo struct {
	// GitHub application installation id.
	AppInstallationID *string
}

// GraphQuery - The graph query to show the volume of data arriving into the workspace over time.
type GraphQuery struct {
	// REQUIRED; Gets or sets the base query for the graph.
	// The base query is wrapped by Sentinel UI infra with a KQL query, that measures the volume over time.
	BaseQuery *string

	// REQUIRED; Gets or sets the legend for the graph.
	Legend *string

	// REQUIRED; Gets or sets the metric name that the query is checking. For example: 'Total data receive'.
	MetricName *string
}

// GroupingConfiguration - Grouping configuration property bag.
type GroupingConfiguration struct {
	// REQUIRED; Grouping enabled
	Enabled *bool

	// REQUIRED; Limit the group to alerts created within the lookback duration (in ISO 8601 duration format)
	LookbackDuration *string

	// REQUIRED; Grouping matching method. When method is Selected at least one of groupByEntities, groupByAlertDetails, groupByCustomDetails
	// must be provided and not empty.
	MatchingMethod *MatchingMethod

	// REQUIRED; Re-open closed matching incidents
	ReopenClosedIncident *bool

	// A list of alert details to group by (when matchingMethod is Selected)
	GroupByAlertDetails []*AlertDetail

	// A list of custom details keys to group by (when matchingMethod is Selected). Only keys defined in the current alert rule
	// may be used.
	GroupByCustomDetails []*string

	// A list of entity types to group by (when matchingMethod is Selected). Only entities defined in the current alert rule may
	// be used.
	GroupByEntities []*EntityMappingType
}

// HostEntity - Represents a host entity.
type HostEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Host entity properties
	Properties *HostEntityProperties

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

// GetEntity implements the EntityClassification interface for type HostEntity.
func (h *HostEntity) GetEntity() *Entity {
	return &Entity{
		ID:         h.ID,
		Kind:       h.Kind,
		Name:       h.Name,
		SystemData: h.SystemData,
		Type:       h.Type,
	}
}

// HostEntityProperties - Host entity property bag.
type HostEntityProperties struct {
	// The operating system type.
	OSFamily *OSFamily

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The azure resource id of the VM.
	AzureID *string

	// READ-ONLY; The DNS domain that this host belongs to. Should contain the compete DNS suffix for the domain
	DNSDomain *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The hostname without the domain suffix.
	HostName *string

	// READ-ONLY; Determines whether this host belongs to a domain.
	IsDomainJoined *bool

	// READ-ONLY; The host name (pre-windows2000).
	NetBiosName *string

	// READ-ONLY; The NT domain that this host belongs to.
	NtDomain *string

	// READ-ONLY; A free text representation of the operating system. This field is meant to hold specific versions the are more
	// fine grained than OSFamily or future values not supported by OSFamily enumeration
	OSVersion *string

	// READ-ONLY; The OMS agent id, if the host has OMS agent installed.
	OmsAgentID *string
}

// Hunt - Represents a Hunt in Azure Security Insights.
type Hunt struct {
	// Etag of the azure resource
	Etag *string

	// Hunt properties
	Properties *HuntProperties

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

// HuntComment - Represents a Hunt Comment in Azure Security Insights
type HuntComment struct {
	// Etag of the azure resource
	Etag *string

	// Hunt Comment properties
	Properties *HuntCommentProperties

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

// HuntCommentList - List of all hunt comments
type HuntCommentList struct {
	// REQUIRED; The HuntComment items on this page
	Value []*HuntComment

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

// HuntCommentProperties - Describes a hunt comment properties
type HuntCommentProperties struct {
	// REQUIRED; The message for the comment
	Message *string
}

// HuntList - List all the hunts.
type HuntList struct {
	// REQUIRED; The Hunt items on this page
	Value []*Hunt

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

// HuntOwner - Describes a user that the hunt is assigned to
type HuntOwner struct {
	// The name of the user the hunt is assigned to.
	AssignedTo *string

	// The email of the user the hunt is assigned to.
	Email *string

	// The object id of the user the hunt is assigned to.
	ObjectID *string

	// The type of the owner the hunt is assigned to.
	OwnerType *OwnerType

	// The user principal name of the user the hunt is assigned to.
	UserPrincipalName *string
}

// HuntProperties - Describes hunt properties
type HuntProperties struct {
	// REQUIRED; The description of the hunt
	Description *string

	// REQUIRED; The display name of the hunt
	DisplayName *string

	// A list of mitre attack tactics the hunt is associated with
	AttackTactics []*AttackTactic

	// A list of a mitre attack techniques the hunt is associated with
	AttackTechniques []*string

	// The hypothesis status of the hunt.
	HypothesisStatus *HypothesisStatus

	// List of labels relevant to this hunt
	Labels []*string

	// Describes a user that the hunt is assigned to
	Owner *HuntOwner

	// The status of the hunt.
	Status *Status
}

// HuntRelation - Represents a Hunt Relation in Azure Security Insights.
type HuntRelation struct {
	// Hunt Relation properties
	Properties *HuntRelationProperties

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

// HuntRelationList - List of all the hunt relations
type HuntRelationList struct {
	// REQUIRED; The HuntRelation items on this page
	Value []*HuntRelation

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

// HuntRelationProperties - Describes hunt relation properties
type HuntRelationProperties struct {
	// REQUIRED; The id of the related resource
	RelatedResourceID *string

	// List of labels relevant to this hunt
	Labels []*string

	// READ-ONLY; The resource that the relation is related to
	RelatedResourceKind *string

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

	// READ-ONLY; The type of the hunt relation
	RelationType *string
}

// HuntingBookmark - Represents a Hunting bookmark entity.
type HuntingBookmark struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// HuntingBookmark entity properties
	Properties *HuntingBookmarkProperties

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

// GetEntity implements the EntityClassification interface for type HuntingBookmark.
func (h *HuntingBookmark) GetEntity() *Entity {
	return &Entity{
		ID:         h.ID,
		Kind:       h.Kind,
		Name:       h.Name,
		SystemData: h.SystemData,
		Type:       h.Type,
	}
}

// HuntingBookmarkProperties - Describes bookmark properties
type HuntingBookmarkProperties struct {
	// REQUIRED; The display name of the bookmark
	DisplayName *string

	// REQUIRED; The query of the bookmark.
	Query *string

	// The time the bookmark was created
	Created *time.Time

	// Describes a user that created the bookmark
	CreatedBy *UserInfo

	// The time of the event
	EventTime *time.Time

	// Describes an incident that relates to bookmark
	IncidentInfo *IncidentInfo

	// List of labels relevant to this bookmark
	Labels []*string

	// The notes of the bookmark
	Notes *string

	// The query result of the bookmark.
	QueryResult *string

	// The last time the bookmark was updated
	Updated *time.Time

	// Describes a user that updated the bookmark
	UpdatedBy *UserInfo

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string
}

// IPEntity - Represents an ip entity.
type IPEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Ip entity properties
	Properties *IPEntityProperties

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

// GetEntity implements the EntityClassification interface for type IPEntity.
func (i *IPEntity) GetEntity() *Entity {
	return &Entity{
		ID:         i.ID,
		Kind:       i.Kind,
		Name:       i.Name,
		SystemData: i.SystemData,
		Type:       i.Type,
	}
}

// IPEntityProperties - Ip entity property bag.
type IPEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The IP address as string, e.g. 127.0.0.1 (either in Ipv4 or Ipv6)
	Address *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The geo-location context attached to the ip entity
	Location *GeoLocation

	// READ-ONLY; A list of TI contexts attached to the ip entity.
	ThreatIntelligence []*ThreatIntelligence
}

// Identity - Represents an identity in Azure Security Insights.
type Identity struct {
	// REQUIRED; The kind of the TI object
	Kind *TIObjectKind

	// The properties of the TI object
	Properties *TIObjectCommonProperties

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

// GetTIObject implements the TIObjectClassification interface for type Identity.
func (i *Identity) GetTIObject() *TIObject {
	return &TIObject{
		ID:         i.ID,
		Kind:       i.Kind,
		Name:       i.Name,
		Properties: i.Properties,
		SystemData: i.SystemData,
		Type:       i.Type,
	}
}

// Incident - Represents an incident in Azure Security Insights.
type Incident struct {
	// Etag of the azure resource
	Etag *string

	// Incident properties
	Properties *IncidentProperties

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

// IncidentAdditionalData - Incident additional data property bag.
type IncidentAdditionalData struct {
	// READ-ONLY; List of product names of alerts in the incident
	AlertProductNames []*string

	// READ-ONLY; The number of alerts in the incident
	AlertsCount *int32

	// READ-ONLY; The number of bookmarks in the incident
	BookmarksCount *int32

	// READ-ONLY; The number of comments in the incident
	CommentsCount *int32

	// READ-ONLY; The incident number of the incident that the current incident was merged into
	MergedIncidentNumber *string

	// READ-ONLY; The URL to the incident that the current incident was merged into
	MergedIncidentURL *string

	// READ-ONLY; The provider incident url to the incident in Microsoft 365 Defender portal
	ProviderIncidentURL *string

	// READ-ONLY; The tactics associated with incident
	Tactics []*AttackTactic

	// READ-ONLY; The techniques associated with incident's tactics
	Techniques []*string
}

// IncidentAlertList - List of incident alerts.
type IncidentAlertList struct {
	// REQUIRED; Array of incident alerts.
	Value []*SecurityAlert
}

// IncidentBookmarkList - List of incident bookmarks.
type IncidentBookmarkList struct {
	// REQUIRED; Array of incident bookmarks.
	Value []*HuntingBookmark
}

// IncidentComment - Represents an incident comment
type IncidentComment struct {
	// Etag of the azure resource
	Etag *string

	// Incident comment properties
	Properties *IncidentCommentProperties

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

// IncidentCommentList - List of incident comments.
type IncidentCommentList struct {
	// REQUIRED; The IncidentComment items on this page
	Value []*IncidentComment

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

// IncidentCommentProperties - Incident comment property bag.
type IncidentCommentProperties struct {
	// REQUIRED; The comment message
	Message *string

	// READ-ONLY; Describes the client that created the comment
	Author *ClientInfo

	// READ-ONLY; The time the comment was created
	CreatedTimeUTC *time.Time

	// READ-ONLY; The time the comment was updated
	LastModifiedTimeUTC *time.Time
}

// IncidentConfiguration - Incident Configuration property bag.
type IncidentConfiguration struct {
	// REQUIRED; Create incidents from alerts triggered by this analytics rule
	CreateIncident *bool

	// Set how the alerts that are triggered by this analytics rule, are grouped into incidents
	GroupingConfiguration *GroupingConfiguration
}

// IncidentEntitiesResponse - The incident related entities response.
type IncidentEntitiesResponse struct {
	// Array of the incident related entities.
	Entities []EntityClassification

	// The metadata from the incident related entities results.
	MetaData []*IncidentEntitiesResultsMetadata
}

// IncidentEntitiesResultsMetadata - Information of a specific aggregation in the incident related entities result.
type IncidentEntitiesResultsMetadata struct {
	// REQUIRED; Total number of aggregations of the given kind in the incident related entities result.
	Count *int32

	// REQUIRED; The kind of the aggregated entity.
	EntityKind *EntityKindEnum
}

// IncidentInfo - Describes related incident information for the bookmark
type IncidentInfo struct {
	// Incident Id
	IncidentID *string

	// Relation Name
	RelationName *string

	// The severity of the incident
	Severity *IncidentSeverity

	// The title of the incident
	Title *string
}

// IncidentLabel - Represents an incident label
type IncidentLabel struct {
	// REQUIRED; The name of the label
	LabelName *string

	// READ-ONLY; The type of the label
	LabelType *IncidentLabelType
}

// IncidentList - List all the incidents.
type IncidentList struct {
	// REQUIRED; The Incident items on this page
	Value []*Incident

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

// IncidentOwnerInfo - Information on the user an incident is assigned to
type IncidentOwnerInfo struct {
	// The name of the user the incident is assigned to.
	AssignedTo *string

	// The email of the user the incident is assigned to.
	Email *string

	// The object id of the user the incident is assigned to.
	ObjectID *string

	// The type of the owner the incident is assigned to.
	OwnerType *OwnerType

	// The user principal name of the user the incident is assigned to.
	UserPrincipalName *string
}

// IncidentProperties - Describes incident properties
type IncidentProperties struct {
	// REQUIRED; The severity of the incident
	Severity *IncidentSeverity

	// REQUIRED; The status of the incident
	Status *IncidentStatus

	// REQUIRED; The title of the incident
	Title *string

	// The reason the incident was closed
	Classification *IncidentClassification

	// Describes the reason the incident was closed
	ClassificationComment *string

	// The classification reason the incident was closed with
	ClassificationReason *IncidentClassificationReason

	// The description of the incident
	Description *string

	// The time of the first activity in the incident
	FirstActivityTimeUTC *time.Time

	// List of labels relevant to this incident
	Labels []*IncidentLabel

	// The time of the last activity in the incident
	LastActivityTimeUTC *time.Time

	// Describes a user that the incident is assigned to
	Owner *IncidentOwnerInfo

	// Describes a team for the incident
	TeamInformation *TeamInformation

	// READ-ONLY; Additional data on the incident
	AdditionalData *IncidentAdditionalData

	// READ-ONLY; The time the incident was created
	CreatedTimeUTC *time.Time

	// READ-ONLY; A sequential number
	IncidentNumber *int32

	// READ-ONLY; The deep-link url to the incident in Azure portal
	IncidentURL *string

	// READ-ONLY; The last time the incident was updated
	LastModifiedTimeUTC *time.Time

	// READ-ONLY; The incident ID assigned by the incident provider
	ProviderIncidentID *string

	// READ-ONLY; The name of the source provider that generated the incident
	ProviderName *string

	// READ-ONLY; List of resource ids of Analytic rules related to the incident
	RelatedAnalyticRuleIDs []*string
}

type IncidentPropertiesAction struct {
	// The reason the incident was closed
	Classification *IncidentClassification

	// Describes the reason the incident was closed.
	ClassificationComment *string

	// The classification reason the incident was closed with
	ClassificationReason *IncidentClassificationReason

	// List of labels to add to the incident.
	Labels []*IncidentLabel

	// Information on the user an incident is assigned to
	Owner *IncidentOwnerInfo

	// The severity of the incident
	Severity *IncidentSeverity

	// The status of the incident
	Status *IncidentStatus
}

// IncidentTask - Describes incident task properties
type IncidentTask struct {
	// REQUIRED; Describes the properties of an incident task
	Properties *IncidentTaskProperties

	// Etag of the azure resource
	Etag *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
}

// IncidentTaskList - List of incident tasks
type IncidentTaskList struct {
	// REQUIRED; The IncidentTask items on this page
	Value []*IncidentTask

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

// IncidentTaskProperties - Describes the properties of an incident task
type IncidentTaskProperties struct {
	// REQUIRED; The status of the task
	Status *IncidentTaskStatus

	// REQUIRED; The title of the task
	Title *string

	// Information on the client (user or application) that made some action
	CreatedBy *ClientInfo

	// The description of the task
	Description *string

	// Information on the client (user or application) that made some action
	LastModifiedBy *ClientInfo

	// READ-ONLY; The time the task was created
	CreatedTimeUTC *time.Time

	// READ-ONLY; The last time the task was updated
	LastModifiedTimeUTC *time.Time
}

// Indicator - Represents an indicator in Azure Security Insights.
type Indicator struct {
	// REQUIRED; The kind of the TI object
	Kind *TIObjectKind

	// The observables of this indicator
	Observables []*IndicatorObservablesItem

	// The properties of the TI object
	Properties *TIObjectCommonProperties

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

// GetTIObject implements the TIObjectClassification interface for type Indicator.
func (i *Indicator) GetTIObject() *TIObject {
	return &TIObject{
		ID:         i.ID,
		Kind:       i.Kind,
		Name:       i.Name,
		Properties: i.Properties,
		SystemData: i.SystemData,
		Type:       i.Type,
	}
}

// IndicatorObservablesItem - An observable of this indicator
type IndicatorObservablesItem struct {
	// The type of the observable of this indicator
	Type *string

	// The value of the observable of this indicator
	Value *string
}

// InsightQueryItem - Represents Insight Query.
type InsightQueryItem struct {
	// REQUIRED; The kind of the entity query
	Kind *EntityQueryKind

	// Query Template ARM Name
	Name *string

	// Properties bag for InsightQueryItem
	Properties *InsightQueryItemProperties

	// ARM Type
	Type *string

	// READ-ONLY; Query Template ARM ID
	ID *string
}

// GetEntityQueryItem implements the EntityQueryItemClassification interface for type InsightQueryItem.
func (i *InsightQueryItem) GetEntityQueryItem() *EntityQueryItem {
	return &EntityQueryItem{
		ID:   i.ID,
		Kind: i.Kind,
		Name: i.Name,
		Type: i.Type,
	}
}

// InsightQueryItemProperties - Represents Insight Query.
type InsightQueryItemProperties struct {
	// The activity query definitions.
	AdditionalQuery *InsightQueryItemPropertiesAdditionalQuery

	// The base query of the insight.
	BaseQuery *string

	// The insight chart query.
	ChartQuery any

	// Data types for template
	DataTypes []*EntityQueryItemPropertiesDataTypesItem

	// The insight chart query.
	DefaultTimeRange *InsightQueryItemPropertiesDefaultTimeRange

	// The insight description.
	Description *string

	// The insight display name.
	DisplayName *string

	// The query applied only to entities matching to all filters
	EntitiesFilter any

	// The type of the entity
	InputEntityType *EntityType

	// The insight chart query.
	ReferenceTimeRange *InsightQueryItemPropertiesReferenceTimeRange

	// Data types for template
	RequiredInputFieldsSets [][]*string

	// The insight table query.
	TableQuery *InsightQueryItemPropertiesTableQuery
}

// InsightQueryItemPropertiesAdditionalQuery - The activity query definitions.
type InsightQueryItemPropertiesAdditionalQuery struct {
	// The insight query.
	Query *string

	// The insight text.
	Text *string
}

// InsightQueryItemPropertiesDefaultTimeRange - The insight chart query.
type InsightQueryItemPropertiesDefaultTimeRange struct {
	// The padding for the end time of the query.
	AfterRange *string

	// The padding for the start time of the query.
	BeforeRange *string
}

// InsightQueryItemPropertiesReferenceTimeRange - The insight chart query.
type InsightQueryItemPropertiesReferenceTimeRange struct {
	// Additional query time for looking back.
	BeforeRange *string
}

// InsightQueryItemPropertiesTableQuery - The insight table query.
type InsightQueryItemPropertiesTableQuery struct {
	// List of insight column definitions.
	ColumnsDefinitions []*InsightQueryItemPropertiesTableQueryColumnsDefinitionsItem

	// List of insight queries definitions.
	QueriesDefinitions []*InsightQueryItemPropertiesTableQueryQueriesDefinitionsItem
}

type InsightQueryItemPropertiesTableQueryColumnsDefinitionsItem struct {
	// Insight column header.
	Header *string

	// Insights Column type.
	OutputType *OutputType

	// Is query supports deep-link.
	SupportDeepLink *bool
}

type InsightQueryItemPropertiesTableQueryQueriesDefinitionsItem struct {
	// Insight column header.
	Filter *string

	// Insight column header.
	LinkColumnsDefinitions []*InsightQueryItemPropertiesTableQueryQueriesDefinitionsPropertiesItemsItem

	// Insight column header.
	Project *string

	// Insight column header.
	Summarize *string
}

type InsightQueryItemPropertiesTableQueryQueriesDefinitionsPropertiesItemsItem struct {
	// Insight Link Definition Projected Name.
	ProjectedName *string

	// Insight Link Definition Query.
	Query *string
}

// InsightsTableResult - Query results for table insights query.
type InsightsTableResult struct {
	// Columns Metadata of the table
	Columns []*InsightsTableResultColumnsItem

	// Rows data of the table
	Rows [][]*string
}

type InsightsTableResultColumnsItem struct {
	// the name of the column
	Name *string

	// the type of the column
	Type *string
}

// InstructionStep - Instruction steps to enable the connector.
type InstructionStep struct {
	// Gets or sets the instruction step description.
	Description *string

	// Gets or sets the inner instruction steps details.
	// For Example: instruction step 1 might contain inner instruction steps: [instruction step 1.1, instruction step 1.2].
	InnerSteps []*InstructionStep

	// Gets or sets the instruction step details.
	Instructions []*InstructionStepDetails

	// Gets or sets the instruction step title.
	Title *string
}

// InstructionStepDetails - Instruction step details, to be displayed in the Instructions steps section in the connector's
// page in Sentinel Portal.
type InstructionStepDetails struct {
	// REQUIRED; Gets or sets the instruction type parameters settings.
	Parameters any

	// REQUIRED; Gets or sets the instruction type name.
	Type *string
}

type InstructionStepsInstructionsItem struct {
	// REQUIRED; The kind of the setting
	Type *SettingType

	// The parameters for the setting
	Parameters any
}

// IoTCheckRequirements - Represents IoT requirements check request.
type IoTCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindIOT, any specified value is ignored.
	Kind *DataConnectorKind

	// IoT requirements check properties.
	Properties *IoTCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type IoTCheckRequirements.
func (i *IoTCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: i.Kind,
	}
}

// IoTCheckRequirementsProperties - IoT requirements check properties.
type IoTCheckRequirementsProperties struct {
	// The subscription id to connect to, and get the data from.
	SubscriptionID *string
}

// IoTDataConnector - Represents IoT data connector.
type IoTDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindIOT, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// IoT data connector properties.
	Properties *IoTDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type IoTDataConnector.
func (i *IoTDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       i.Etag,
		ID:         i.ID,
		Kind:       i.Kind,
		Name:       i.Name,
		SystemData: i.SystemData,
		Type:       i.Type,
	}
}

// IoTDataConnectorProperties - IoT data connector properties.
type IoTDataConnectorProperties struct {
	// The available data types for the connector.
	DataTypes *AlertsDataTypeOfDataConnector

	// The subscription id to connect to, and get the data from.
	SubscriptionID *string
}

// IoTDeviceEntity - Represents an IoT device entity.
type IoTDeviceEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// IoTDevice entity properties
	Properties *IoTDeviceEntityProperties

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

// GetEntity implements the EntityClassification interface for type IoTDeviceEntity.
func (i *IoTDeviceEntity) GetEntity() *Entity {
	return &Entity{
		ID:         i.ID,
		Kind:       i.Kind,
		Name:       i.Name,
		SystemData: i.SystemData,
		Type:       i.Type,
	}
}

// IoTDeviceEntityProperties - IoTDevice entity property bag.
type IoTDeviceEntityProperties struct {
	// Device importance, determines if the device classified as 'crown jewel'
	Importance *DeviceImportance

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The ID of the IoT Device in the IoT Hub
	DeviceID *string

	// READ-ONLY; The friendly name of the device
	DeviceName *string

	// READ-ONLY; The subType of the device ('PLC', 'HMI', 'EWS', etc.)
	DeviceSubType *string

	// READ-ONLY; The type of the device
	DeviceType *string

	// READ-ONLY; The ID of the edge device
	EdgeID *string

	// READ-ONLY; The firmware version of the device
	FirmwareVersion *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The Host entity id of this device
	HostEntityID *string

	// READ-ONLY; The IP entity if of this device
	IPAddressEntityID *string

	// READ-ONLY; The AzureResource entity id of the IoT Hub
	IotHubEntityID *string

	// READ-ONLY; The ID of the security agent running on the device
	IotSecurityAgentID *string

	// READ-ONLY; Determines whether the device classified as authorized device
	IsAuthorized *bool

	// READ-ONLY; Determines whether the device classified as programming device
	IsProgramming *bool

	// READ-ONLY; Is the device classified as a scanner device
	IsScanner *bool

	// READ-ONLY; The MAC address of the device
	MacAddress *string

	// READ-ONLY; The model of the device
	Model *string

	// READ-ONLY; A list of Nic entity ids of the IoTDevice entity.
	NicEntityIDs []*string

	// READ-ONLY; The operating system of the device
	OperatingSystem *string

	// READ-ONLY; A list of owners of the IoTDevice entity.
	Owners []*string

	// READ-ONLY; A list of protocols of the IoTDevice entity.
	Protocols []*string

	// READ-ONLY; The Purdue Layer of the device
	PurdueLayer *string

	// READ-ONLY; The sensor the device is monitored by
	Sensor *string

	// READ-ONLY; The serial number of the device
	SerialNumber *string

	// READ-ONLY; The site of the device
	Site *string

	// READ-ONLY; The source of the device
	Source *string

	// READ-ONLY; A list of TI contexts attached to the IoTDevice entity.
	ThreatIntelligence []*ThreatIntelligence

	// READ-ONLY; The vendor of the device
	Vendor *string

	// READ-ONLY; The zone location of the device within a site
	Zone *string
}

// Job - The assignment job
type Job struct {
	// Etag of the azure resource
	Etag *string

	// The job object
	Properties *JobProperties

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

// JobItem - An entity describing the publish status of a content item.
type JobItem struct {
	// The list of error descriptions if the item publication fails.
	Errors []*Error

	// The resource id of the content item
	ResourceID *string

	// READ-ONLY; The time the item publishing was completed
	ExecutionTime *time.Time

	// READ-ONLY; Status of the item publication
	Status *Status
}

// JobList - List of all the jobs
type JobList struct {
	// REQUIRED; The Job items on this page
	Value []*Job

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

// JobProperties - The job properties
type JobProperties struct {
	// List of items published by the job
	Items []*JobItem

	// READ-ONLY; The time the job completed
	EndTime *time.Time

	// READ-ONLY; Message to describe error, if an error exists
	ErrorMessage *string

	// READ-ONLY; State of the job
	ProvisioningState *ProvisioningState

	// READ-ONLY; The time the job started
	StartTime *time.Time
}

// JwtAuthModel - Model for API authentication with JWT. Simple exchange between user name + password to access token.
type JwtAuthModel struct {
	// REQUIRED; The password
	Password map[string]*string

	// REQUIRED; Token endpoint to request JWT
	TokenEndpoint *string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeJwtToken, any specified value is ignored.
	Type *CcpAuthType

	// REQUIRED; The user name. If user name and password sent in header request we only need to populate the `value` property
	// with the user name (Same as basic auth). If user name and password sent in body request we need to specify the `Key` and
	// `Value`.
	UserName map[string]*string

	// The custom headers we want to add once we send request to token endpoint.
	Headers map[string]*string

	// Flag indicating whether we want to send the user name and password to token endpoint in the headers.
	IsCredentialsInHeaders *bool

	// Flag indicating whether the body request is JSON (header Content-Type = application/json), meaning its a Form URL encoded
	// request (header Content-Type = application/x-www-form-urlencoded).
	IsJSONRequest *bool

	// The custom query parameter we want to add once we send request to token endpoint.
	QueryParameters map[string]*string

	// Request timeout in seconds.
	RequestTimeoutInSeconds *int32
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type JwtAuthModel.
func (j *JwtAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: j.Type,
	}
}

// MCASCheckRequirements - Represents MCAS (Microsoft Cloud App Security) requirements check request.
type MCASCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindMicrosoftCloudAppSecurity, any specified value is ignored.
	Kind *DataConnectorKind

	// MCAS (Microsoft Cloud App Security) requirements check properties.
	Properties *MCASCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type MCASCheckRequirements.
func (m *MCASCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: m.Kind,
	}
}

// MCASCheckRequirementsProperties - MCAS (Microsoft Cloud App Security) requirements check properties.
type MCASCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MCASDataConnector - Represents MCAS (Microsoft Cloud App Security) data connector.
type MCASDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindMicrosoftCloudAppSecurity, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// MCAS (Microsoft Cloud App Security) data connector properties.
	Properties *MCASDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type MCASDataConnector.
func (m *MCASDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       m.Etag,
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MCASDataConnectorDataTypes - The available data types for MCAS (Microsoft Cloud App Security) data connector.
type MCASDataConnectorDataTypes struct {
	// REQUIRED; Alerts data type connection.
	Alerts *DataConnectorDataTypeCommon

	// Discovery log data type connection.
	DiscoveryLogs *DataConnectorDataTypeCommon
}

// MCASDataConnectorProperties - MCAS (Microsoft Cloud App Security) data connector properties.
type MCASDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *MCASDataConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MDATPCheckRequirements - Represents MDATP (Microsoft Defender Advanced Threat Protection) requirements check request.
type MDATPCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindMicrosoftDefenderAdvancedThreatProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// MDATP (Microsoft Defender Advanced Threat Protection) requirements check properties.
	Properties *MDATPCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type MDATPCheckRequirements.
func (m *MDATPCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: m.Kind,
	}
}

// MDATPCheckRequirementsProperties - MDATP (Microsoft Defender Advanced Threat Protection) requirements check properties.
type MDATPCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MDATPDataConnector - Represents MDATP (Microsoft Defender Advanced Threat Protection) data connector.
type MDATPDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindMicrosoftDefenderAdvancedThreatProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// MDATP (Microsoft Defender Advanced Threat Protection) data connector properties.
	Properties *MDATPDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type MDATPDataConnector.
func (m *MDATPDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       m.Etag,
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MDATPDataConnectorProperties - MDATP (Microsoft Defender Advanced Threat Protection) data connector properties.
type MDATPDataConnectorProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The available data types for the connector.
	DataTypes *AlertsDataTypeOfDataConnector
}

// MLBehaviorAnalyticsAlertRule - Represents MLBehaviorAnalytics alert rule.
type MLBehaviorAnalyticsAlertRule struct {
	// CONSTANT; The kind of the alert rule
	// Field has constant value AlertRuleKindMLBehaviorAnalytics, any specified value is ignored.
	Kind *AlertRuleKind

	// Etag of the azure resource
	Etag *string

	// MLBehaviorAnalytics alert rule properties
	Properties *MLBehaviorAnalyticsAlertRuleProperties

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

// GetAlertRule implements the AlertRuleClassification interface for type MLBehaviorAnalyticsAlertRule.
func (m *MLBehaviorAnalyticsAlertRule) GetAlertRule() *AlertRule {
	return &AlertRule{
		Etag:       m.Etag,
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MLBehaviorAnalyticsAlertRuleProperties - MLBehaviorAnalytics alert rule base property bag.
type MLBehaviorAnalyticsAlertRuleProperties struct {
	// REQUIRED; The Name of the alert rule template used to create this rule.
	AlertRuleTemplateName *string

	// REQUIRED; Determines whether this alert rule is enabled or disabled.
	Enabled *bool

	// READ-ONLY; The description of the alert rule.
	Description *string

	// READ-ONLY; The display name for alerts created by this alert rule.
	DisplayName *string

	// READ-ONLY; The last time that this alert rule has been modified.
	LastModifiedUTC *time.Time

	// READ-ONLY; The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// READ-ONLY; The sub-techniques of the alert rule
	SubTechniques []*string

	// READ-ONLY; The tactics of the alert rule
	Tactics []*AttackTactic

	// READ-ONLY; The techniques of the alert rule
	Techniques []*string
}

// MLBehaviorAnalyticsAlertRuleTemplate - Represents MLBehaviorAnalytics alert rule template.
type MLBehaviorAnalyticsAlertRuleTemplate struct {
	// REQUIRED; The kind of the alert rule
	Kind *AlertRuleKind

	// MLBehaviorAnalytics alert rule template properties.
	Properties *MLBehaviorAnalyticsAlertRuleTemplateProperties

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

// GetAlertRuleTemplate implements the AlertRuleTemplateClassification interface for type MLBehaviorAnalyticsAlertRuleTemplate.
func (m *MLBehaviorAnalyticsAlertRuleTemplate) GetAlertRuleTemplate() *AlertRuleTemplate {
	return &AlertRuleTemplate{
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MLBehaviorAnalyticsAlertRuleTemplateProperties - MLBehaviorAnalytics alert rule template properties.
type MLBehaviorAnalyticsAlertRuleTemplateProperties struct {
	// REQUIRED; The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// The number of alert rules that were created by this template
	AlertRulesCreatedByTemplateCount *int32

	// The description of the alert rule template.
	Description *string

	// The display name for alert rule template.
	DisplayName *string

	// The required data sources for this template
	RequiredDataConnectors []*AlertRuleTemplateDataSource

	// The alert rule template status.
	Status *TemplateStatus

	// The tactics of the alert rule
	Tactics []*AttackTactic

	// The techniques of the alert rule
	Techniques []*string

	// READ-ONLY; The time that this alert rule template has been added.
	CreatedDateUTC *time.Time

	// READ-ONLY; The last time that this alert rule template has been updated.
	LastUpdatedDateUTC *time.Time
}

// MSTICheckRequirements - Represents Microsoft Threat Intelligence requirements check request.
type MSTICheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindMicrosoftThreatIntelligence, any specified value is ignored.
	Kind *DataConnectorKind

	// Microsoft Threat Intelligence requirements check properties.
	Properties *MSTICheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type MSTICheckRequirements.
func (m *MSTICheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: m.Kind,
	}
}

// MSTICheckRequirementsProperties - Microsoft Threat Intelligence requirements check properties.
type MSTICheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MSTIDataConnector - Represents Microsoft Threat Intelligence data connector.
type MSTIDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindMicrosoftThreatIntelligence, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Microsoft Threat Intelligence data connector properties.
	Properties *MSTIDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type MSTIDataConnector.
func (m *MSTIDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       m.Etag,
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MSTIDataConnectorDataTypes - The available data types for Microsoft Threat Intelligence Platforms data connector.
type MSTIDataConnectorDataTypes struct {
	// REQUIRED; Data type for Microsoft Threat Intelligence Platforms data connector.
	MicrosoftEmergingThreatFeed *MSTIDataConnectorDataTypesMicrosoftEmergingThreatFeed
}

// MSTIDataConnectorDataTypesMicrosoftEmergingThreatFeed - Data type for Microsoft Threat Intelligence Platforms data connector.
type MSTIDataConnectorDataTypesMicrosoftEmergingThreatFeed struct {
	// REQUIRED; The lookback period for the feed to be imported.
	LookbackPeriod *time.Time

	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// MSTIDataConnectorProperties - Microsoft Threat Intelligence data connector properties.
type MSTIDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *MSTIDataConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MTPCheckRequirementsProperties - MTP (Microsoft Threat Protection) requirements check properties.
type MTPCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MTPDataConnector - Represents MTP (Microsoft Threat Protection) data connector.
type MTPDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindMicrosoftThreatProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// MTP (Microsoft Threat Protection) data connector properties.
	Properties *MTPDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type MTPDataConnector.
func (m *MTPDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       m.Etag,
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MTPDataConnectorDataTypes - The available data types for Microsoft Threat Protection Platforms data connector.
type MTPDataConnectorDataTypes struct {
	// REQUIRED; Incidents data type for Microsoft Threat Protection Platforms data connector.
	Incidents *MTPDataConnectorDataTypesIncidents

	// Alerts data type for Microsoft Threat Protection Platforms data connector.
	Alerts *MTPDataConnectorDataTypesAlerts
}

// MTPDataConnectorDataTypesAlerts - Alerts data type for Microsoft Threat Protection Platforms data connector.
type MTPDataConnectorDataTypesAlerts struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// MTPDataConnectorDataTypesIncidents - Incidents data type for Microsoft Threat Protection Platforms data connector.
type MTPDataConnectorDataTypesIncidents struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// MTPDataConnectorProperties - MTP (Microsoft Threat Protection) data connector properties.
type MTPDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *MTPDataConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The available filtered providers for the connector.
	FilteredProviders *MtpFilteredProviders
}

// MailClusterEntity - Represents a mail cluster entity.
type MailClusterEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Mail cluster entity properties
	Properties *MailClusterEntityProperties

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

// GetEntity implements the EntityClassification interface for type MailClusterEntity.
func (m *MailClusterEntity) GetEntity() *Entity {
	return &Entity{
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MailClusterEntityProperties - Mail cluster entity property bag.
type MailClusterEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The cluster group
	ClusterGroup *string

	// READ-ONLY; The cluster query end time
	ClusterQueryEndTime *time.Time

	// READ-ONLY; The cluster query start time
	ClusterQueryStartTime *time.Time

	// READ-ONLY; The id of the cluster source
	ClusterSourceIdentifier *string

	// READ-ONLY; The type of the cluster source
	ClusterSourceType *string

	// READ-ONLY; Count of mail messages by DeliveryStatus string representation
	CountByDeliveryStatus any

	// READ-ONLY; Count of mail messages by ProtectionStatus string representation
	CountByProtectionStatus any

	// READ-ONLY; Count of mail messages by ThreatType string representation
	CountByThreatType any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; Is this a volume anomaly mail cluster
	IsVolumeAnomaly *bool

	// READ-ONLY; The number of mail messages that are part of the mail cluster
	MailCount *int32

	// READ-ONLY; The mail message IDs that are part of the mail cluster
	NetworkMessageIDs []*string

	// READ-ONLY; The query that was used to identify the messages of the mail cluster
	Query *string

	// READ-ONLY; The query time
	QueryTime *time.Time

	// READ-ONLY; The source of the mail cluster (default is 'O365 ATP')
	Source *string

	// READ-ONLY; The threats of mail messages that are part of the mail cluster
	Threats []*string
}

// MailMessageEntity - Represents a mail message entity.
type MailMessageEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Mail message entity properties
	Properties *MailMessageEntityProperties

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

// GetEntity implements the EntityClassification interface for type MailMessageEntity.
func (m *MailMessageEntity) GetEntity() *Entity {
	return &Entity{
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MailMessageEntityProperties - Mail message entity property bag.
type MailMessageEntityProperties struct {
	// The directionality of this mail message
	AntispamDirection *AntispamMailDirection

	// The bodyFingerprintBin1
	BodyFingerprintBin1 *int32

	// The bodyFingerprintBin2
	BodyFingerprintBin2 *int32

	// The bodyFingerprintBin3
	BodyFingerprintBin3 *int32

	// The bodyFingerprintBin4
	BodyFingerprintBin4 *int32

	// The bodyFingerprintBin5
	BodyFingerprintBin5 *int32

	// The delivery action of this mail message like Delivered, Blocked, Replaced etc
	DeliveryAction *DeliveryAction

	// The delivery location of this mail message like Inbox, JunkFolder etc
	DeliveryLocation *DeliveryLocation

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The File entity ids of this mail message's attachments
	FileEntityIDs []*string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The internet message id of this mail message
	InternetMessageID *string

	// READ-ONLY; The language of this mail message
	Language *string

	// READ-ONLY; The network message id of this mail message
	NetworkMessageID *string

	// READ-ONLY; The p1 sender's email address
	P1Sender *string

	// READ-ONLY; The p1 sender's display name
	P1SenderDisplayName *string

	// READ-ONLY; The p1 sender's domain
	P1SenderDomain *string

	// READ-ONLY; The p2 sender's email address
	P2Sender *string

	// READ-ONLY; The p2 sender's display name
	P2SenderDisplayName *string

	// READ-ONLY; The p2 sender's domain
	P2SenderDomain *string

	// READ-ONLY; The receive date of this message
	ReceiveDate *time.Time

	// READ-ONLY; The recipient of this mail message. Note that in case of multiple recipients the mail message is forked and
	// each copy has one recipient
	Recipient *string

	// READ-ONLY; The sender's IP address
	SenderIP *string

	// READ-ONLY; The subject of this mail message
	Subject *string

	// READ-ONLY; The threat detection methods
	ThreatDetectionMethods []*string

	// READ-ONLY; The threats of this mail message
	Threats []*string

	// READ-ONLY; The Urls contained in this mail message
	Urls []*string
}

// MailboxEntity - Represents a mailbox entity.
type MailboxEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Mailbox entity properties
	Properties *MailboxEntityProperties

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

// GetEntity implements the EntityClassification interface for type MailboxEntity.
func (m *MailboxEntity) GetEntity() *Entity {
	return &Entity{
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MailboxEntityProperties - Mailbox entity property bag.
type MailboxEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The mailbox's display name
	DisplayName *string

	// READ-ONLY; The AzureAD identifier of mailbox. Similar to AadUserId in account entity but this property is specific to mailbox
	// object on office side
	ExternalDirectoryObjectID *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The mailbox's primary address
	MailboxPrimaryAddress *string

	// READ-ONLY; The mailbox's UPN
	Upn *string
}

// MalwareEntity - Represents a malware entity.
type MalwareEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// File entity properties
	Properties *MalwareEntityProperties

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

// GetEntity implements the EntityClassification interface for type MalwareEntity.
func (m *MalwareEntity) GetEntity() *Entity {
	return &Entity{
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MalwareEntityProperties - Malware entity property bag.
type MalwareEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The malware category by the vendor, e.g. Trojan
	Category *string

	// READ-ONLY; List of linked file entity identifiers on which the malware was found
	FileEntityIDs []*string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The malware name by the vendor, e.g. Win32/Toga!rfn
	MalwareName *string

	// READ-ONLY; List of linked process entity identifiers on which the malware was found.
	ProcessEntityIDs []*string
}

type ManualTriggerRequestBody struct {
	// REQUIRED
	LogicAppsResourceID *string
	TenantID            *string
}

// MetadataAuthor - Publisher or creator of the content item.
type MetadataAuthor struct {
	// Email of author contact
	Email *string

	// Link for author/vendor page
	Link *string

	// Name of the author. Company or person.
	Name *string
}

// MetadataCategories - ies for the solution content item
type MetadataCategories struct {
	// domain for the solution content item
	Domains []*string

	// Industry verticals for the solution content item
	Verticals []*string
}

// MetadataDependencies - Dependencies for the content item, what other content items it requires to work. Can describe more
// complex dependencies using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or
// operator/criteria for complex dependencies.
type MetadataDependencies struct {
	// Id of the content item we depend on
	ContentID *string

	// This is the list of dependencies we must fulfill, according to the AND/OR operator
	Criteria []*MetadataDependencies

	// Type of the content item we depend on
	Kind *Kind

	// Name of the content item
	Name *string

	// Operator used for list of dependencies in criteria array.
	Operator *Operator

	// Version of the the content item we depend on. Can be blank, * or missing to indicate any version fulfills the dependency.
	// If version does not match our defined numeric format then an exact match is required.
	Version *string
}

// MetadataList - List of all the metadata.
type MetadataList struct {
	// REQUIRED; The MetadataModel items on this page
	Value []*MetadataModel

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

// MetadataModel - Metadata resource definition.
type MetadataModel struct {
	// Etag of the azure resource
	Etag *string

	// Metadata properties
	Properties *MetadataProperties

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

// MetadataPatch - Metadata patch request body.
type MetadataPatch struct {
	// Etag of the azure resource
	Etag *string

	// Metadata patch request body
	Properties *MetadataPropertiesPatch

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

// MetadataProperties - Metadata property bag.
type MetadataProperties struct {
	// REQUIRED; The kind of content the metadata is for.
	Kind *string

	// REQUIRED; Full parent resource ID of the content item the metadata is for. This is the full resource ID including the scope
	// (subscription and resource group)
	ParentID *string

	// The creator of the content item.
	Author *MetadataAuthor

	// Categories for the solution content item
	Categories *MetadataCategories

	// Static ID for the content. Used to identify dependencies and content from solutions or community. Hard-coded/static for
	// out of the box content and solutions. Can be optionally set for user created content to define dependencies. If an active
	// content item is made from a template, both will have the same contentId.
	ContentID *string

	// Schema version of the content. Can be used to distinguish between different flow based on the schema version
	ContentSchemaVersion *string

	// The custom version of the content. A optional free text
	CustomVersion *string

	// Dependencies for the content item, what other content items it requires to work. Can describe more complex dependencies
	// using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for
	// complex formats.
	Dependencies *MetadataDependencies

	// first publish date of solution content item
	FirstPublishDate *time.Time

	// the icon identifier. this id can later be fetched from the solution template
	Icon *string

	// last publish date of solution content item
	LastPublishDate *time.Time

	// preview image file names. These will be taken from the solution artifacts
	PreviewImages []*string

	// preview image file names. These will be taken from the solution artifacts. used for dark theme support
	PreviewImagesDark []*string

	// Providers for the solution content item
	Providers []*string

	// Source of the content. This is where/how it was created.
	Source *MetadataSource

	// Support information for the metadata - type, name, contact information
	Support *MetadataSupport

	// the tactics the resource covers
	ThreatAnalysisTactics []*string

	// the techniques the resource covers, these have to be aligned with the tactics being used
	ThreatAnalysisTechniques []*string

	// Version of the content. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM template
	// best practices. Can also be any string, but then we cannot guarantee any version checks
	Version *string
}

// MetadataPropertiesPatch - Metadata property bag for patch requests. This is the same as the MetadataProperties, but with
// nothing required
type MetadataPropertiesPatch struct {
	// The creator of the content item.
	Author *MetadataAuthor

	// Categories for the solution content item
	Categories *MetadataCategories

	// Static ID for the content. Used to identify dependencies and content from solutions or community. Hard-coded/static for
	// out of the box content and solutions. Can be optionally set for user created content to define dependencies. If an active
	// content item is made from a template, both will have the same contentId.
	ContentID *string

	// Schema version of the content. Can be used to distinguish between different flow based on the schema version
	ContentSchemaVersion *string

	// The custom version of the content. A optional free text
	CustomVersion *string

	// Dependencies for the content item, what other content items it requires to work. Can describe more complex dependencies
	// using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for
	// complex formats.
	Dependencies *MetadataDependencies

	// first publish date of solution content item
	FirstPublishDate *time.Time

	// the icon identifier. this id can later be fetched from the solution template
	Icon *string

	// The kind of content the metadata is for.
	Kind *string

	// last publish date of solution content item
	LastPublishDate *time.Time

	// Full parent resource ID of the content item the metadata is for. This is the full resource ID including the scope (subscription
	// and resource group)
	ParentID *string

	// preview image file names. These will be taken from the solution artifacts
	PreviewImages []*string

	// preview image file names. These will be taken from the solution artifacts. used for dark theme support
	PreviewImagesDark []*string

	// Providers for the solution content item
	Providers []*string

	// Source of the content. This is where/how it was created.
	Source *MetadataSource

	// Support information for the metadata - type, name, contact information
	Support *MetadataSupport

	// the tactics the resource covers
	ThreatAnalysisTactics []*string

	// the techniques the resource covers, these have to be aligned with the tactics being used
	ThreatAnalysisTechniques []*string

	// Version of the content. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM template
	// best practices. Can also be any string, but then we cannot guarantee any version checks
	Version *string
}

// MetadataSource - The original source of the content item, where it comes from.
type MetadataSource struct {
	// REQUIRED; Source type of the content
	Kind *SourceKind

	// Name of the content source. The repo name, solution name, LA workspace name etc.
	Name *string

	// ID of the content source. The solution ID, workspace ID, etc
	SourceID *string
}

// MetadataSupport - Support information for the content item.
type MetadataSupport struct {
	// REQUIRED; Type of support for content item
	Tier *SupportTier

	// Email of support contact
	Email *string

	// Link for support help, like to support page to open a ticket etc.
	Link *string

	// Name of the support contact. Company or person.
	Name *string
}

// MicrosoftPurviewInformationProtectionCheckRequirements - Represents MicrosoftPurviewInformationProtection requirements
// check request.
type MicrosoftPurviewInformationProtectionCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindMicrosoftPurviewInformationProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// MicrosoftPurviewInformationProtection requirements check properties.
	Properties *MicrosoftPurviewInformationProtectionCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type MicrosoftPurviewInformationProtectionCheckRequirements.
func (m *MicrosoftPurviewInformationProtectionCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: m.Kind,
	}
}

// MicrosoftPurviewInformationProtectionCheckRequirementsProperties - MicrosoftPurviewInformationProtection requirements check
// properties.
type MicrosoftPurviewInformationProtectionCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MicrosoftPurviewInformationProtectionConnectorDataTypes - The available data types for Microsoft Purview Information Protection
// data connector.
type MicrosoftPurviewInformationProtectionConnectorDataTypes struct {
	// REQUIRED; Logs data type.
	Logs *MicrosoftPurviewInformationProtectionConnectorDataTypesLogs
}

// MicrosoftPurviewInformationProtectionConnectorDataTypesLogs - Logs data type.
type MicrosoftPurviewInformationProtectionConnectorDataTypesLogs struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// MicrosoftPurviewInformationProtectionDataConnector - Represents Microsoft Purview Information Protection data connector.
type MicrosoftPurviewInformationProtectionDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindMicrosoftPurviewInformationProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Microsoft Purview Information Protection data connector properties.
	Properties *MicrosoftPurviewInformationProtectionDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type MicrosoftPurviewInformationProtectionDataConnector.
func (m *MicrosoftPurviewInformationProtectionDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       m.Etag,
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MicrosoftPurviewInformationProtectionDataConnectorProperties - Microsoft Purview Information Protection data connector
// properties.
type MicrosoftPurviewInformationProtectionDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *MicrosoftPurviewInformationProtectionConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// MicrosoftSecurityIncidentCreationAlertRule - Represents MicrosoftSecurityIncidentCreation rule.
type MicrosoftSecurityIncidentCreationAlertRule struct {
	// CONSTANT; The kind of the alert rule
	// Field has constant value AlertRuleKindMicrosoftSecurityIncidentCreation, any specified value is ignored.
	Kind *AlertRuleKind

	// Etag of the azure resource
	Etag *string

	// MicrosoftSecurityIncidentCreation rule properties
	Properties *MicrosoftSecurityIncidentCreationAlertRuleProperties

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

// GetAlertRule implements the AlertRuleClassification interface for type MicrosoftSecurityIncidentCreationAlertRule.
func (m *MicrosoftSecurityIncidentCreationAlertRule) GetAlertRule() *AlertRule {
	return &AlertRule{
		Etag:       m.Etag,
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MicrosoftSecurityIncidentCreationAlertRuleProperties - MicrosoftSecurityIncidentCreation rule property bag.
type MicrosoftSecurityIncidentCreationAlertRuleProperties struct {
	// REQUIRED; The display name for alerts created by this alert rule.
	DisplayName *string

	// REQUIRED; Determines whether this alert rule is enabled or disabled.
	Enabled *bool

	// REQUIRED; The alerts' productName on which the cases will be generated
	ProductFilter *MicrosoftSecurityProductName

	// The Name of the alert rule template used to create this rule.
	AlertRuleTemplateName *string

	// The description of the alert rule.
	Description *string

	// the alerts' displayNames on which the cases will not be generated
	DisplayNamesExcludeFilter []*string

	// the alerts' displayNames on which the cases will be generated
	DisplayNamesFilter []*string

	// the alerts' severities on which the cases will be generated
	SeveritiesFilter []*AlertSeverity

	// READ-ONLY; The last time that this alert has been modified.
	LastModifiedUTC *time.Time
}

// MicrosoftSecurityIncidentCreationAlertRuleTemplate - Represents MicrosoftSecurityIncidentCreation rule template.
type MicrosoftSecurityIncidentCreationAlertRuleTemplate struct {
	// REQUIRED; The kind of the alert rule
	Kind *AlertRuleKind

	// MicrosoftSecurityIncidentCreation rule template properties
	Properties *MicrosoftSecurityIncidentCreationAlertRuleTemplateProperties

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

// GetAlertRuleTemplate implements the AlertRuleTemplateClassification interface for type MicrosoftSecurityIncidentCreationAlertRuleTemplate.
func (m *MicrosoftSecurityIncidentCreationAlertRuleTemplate) GetAlertRuleTemplate() *AlertRuleTemplate {
	return &AlertRuleTemplate{
		ID:         m.ID,
		Kind:       m.Kind,
		Name:       m.Name,
		SystemData: m.SystemData,
		Type:       m.Type,
	}
}

// MicrosoftSecurityIncidentCreationAlertRuleTemplateProperties - MicrosoftSecurityIncidentCreation rule template properties
type MicrosoftSecurityIncidentCreationAlertRuleTemplateProperties struct {
	// The number of alert rules that were created by this template
	AlertRulesCreatedByTemplateCount *int32

	// The description of the alert rule template.
	Description *string

	// The display name for alert rule template.
	DisplayName *string

	// the alerts' displayNames on which the cases will not be generated
	DisplayNamesExcludeFilter []*string

	// the alerts' displayNames on which the cases will be generated
	DisplayNamesFilter []*string

	// The alerts' productName on which the cases will be generated
	ProductFilter *MicrosoftSecurityProductName

	// The required data sources for this template
	RequiredDataConnectors []*AlertRuleTemplateDataSource

	// the alerts' severities on which the cases will be generated
	SeveritiesFilter []*AlertSeverity

	// The alert rule template status.
	Status *TemplateStatus

	// READ-ONLY; The time that this alert rule template has been added.
	CreatedDateUTC *time.Time

	// READ-ONLY; The last time that this alert rule template has been updated.
	LastUpdatedDateUTC *time.Time
}

// MtpCheckRequirements - Represents MTP (Microsoft Threat Protection) requirements check request.
type MtpCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindMicrosoftThreatProtection, any specified value is ignored.
	Kind *DataConnectorKind

	// MTP (Microsoft Threat Protection) requirements check properties.
	Properties *MTPCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type MtpCheckRequirements.
func (m *MtpCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: m.Kind,
	}
}

// MtpFilteredProviders - Represents the connector's Filtered providers
type MtpFilteredProviders struct {
	// REQUIRED; Alerts filtered providers. When filters are not applied, all alerts will stream through the MTP pipeline, still
	// in private preview for all products EXCEPT MDA and MDI, which are in GA state.
	Alerts []*MtpProvider
}

// NicEntity - Represents an network interface entity.
type NicEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Network interface entity properties
	Properties *NicEntityProperties

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

// GetEntity implements the EntityClassification interface for type NicEntity.
func (n *NicEntity) GetEntity() *Entity {
	return &Entity{
		ID:         n.ID,
		Kind:       n.Kind,
		Name:       n.Name,
		SystemData: n.SystemData,
		Type:       n.Type,
	}
}

// NicEntityProperties - Nic entity property bag.
type NicEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The IP entity id of this network interface
	IPAddressEntityID *string

	// READ-ONLY; The MAC address of this network interface
	MacAddress *string

	// READ-ONLY; A list of VLANs of the network interface entity.
	Vlans []*string
}

// NoneAuthModel - Model for API authentication with no authentication method - public API.
type NoneAuthModel struct {
	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeNone, any specified value is ignored.
	Type *CcpAuthType
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type NoneAuthModel.
func (n *NoneAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: n.Type,
	}
}

// NrtAlertRule - Represents NRT alert rule.
type NrtAlertRule struct {
	// CONSTANT; The kind of the alert rule
	// Field has constant value AlertRuleKindNRT, any specified value is ignored.
	Kind *AlertRuleKind

	// Etag of the azure resource
	Etag *string

	// NRT alert rule properties
	Properties *NrtAlertRuleProperties

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

// GetAlertRule implements the AlertRuleClassification interface for type NrtAlertRule.
func (n *NrtAlertRule) GetAlertRule() *AlertRule {
	return &AlertRule{
		Etag:       n.Etag,
		ID:         n.ID,
		Kind:       n.Kind,
		Name:       n.Name,
		SystemData: n.SystemData,
		Type:       n.Type,
	}
}

// NrtAlertRuleProperties - Nrt alert rule base property bag.
type NrtAlertRuleProperties struct {
	// REQUIRED; The display name for alerts created by this alert rule.
	DisplayName *string

	// REQUIRED; Determines whether this alert rule is enabled or disabled.
	Enabled *bool

	// REQUIRED; The query that creates alerts for this rule.
	Query *string

	// REQUIRED; The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// REQUIRED; The suppression (in ISO 8601 duration format) to wait since last time this alert rule been triggered.
	SuppressionDuration *string

	// REQUIRED; Determines whether the suppression for this alert rule is enabled or disabled.
	SuppressionEnabled *bool

	// The alert details override settings
	AlertDetailsOverride *AlertDetailsOverride

	// The Name of the alert rule template used to create this rule.
	AlertRuleTemplateName *string

	// Dictionary of string key-value pairs of columns to be attached to the alert
	CustomDetails map[string]*string

	// The description of the alert rule.
	Description *string

	// Array of the entity mappings of the alert rule
	EntityMappings []*EntityMapping

	// The event grouping settings.
	EventGroupingSettings *EventGroupingSettings

	// The settings of the incidents that created from alerts triggered by this analytics rule
	IncidentConfiguration *IncidentConfiguration

	// Array of the sentinel entity mappings of the alert rule
	SentinelEntitiesMappings []*SentinelEntityMapping

	// The sub-techniques of the alert rule
	SubTechniques []*string

	// The tactics of the alert rule
	Tactics []*AttackTactic

	// The techniques of the alert rule
	Techniques []*string

	// The version of the alert rule template used to create this rule - in format <a.b.c>, where all are numbers, for example
	// 0 <1.0.2>
	TemplateVersion *string

	// READ-ONLY; The last time that this alert rule has been modified.
	LastModifiedUTC *time.Time
}

// NrtAlertRuleTemplate - Represents NRT alert rule template.
type NrtAlertRuleTemplate struct {
	// REQUIRED; The kind of the alert rule
	Kind *AlertRuleKind

	// NRT alert rule template properties
	Properties *NrtAlertRuleTemplateProperties

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

// GetAlertRuleTemplate implements the AlertRuleTemplateClassification interface for type NrtAlertRuleTemplate.
func (n *NrtAlertRuleTemplate) GetAlertRuleTemplate() *AlertRuleTemplate {
	return &AlertRuleTemplate{
		ID:         n.ID,
		Kind:       n.Kind,
		Name:       n.Name,
		SystemData: n.SystemData,
		Type:       n.Type,
	}
}

// NrtAlertRuleTemplateProperties - NRT alert rule template properties
type NrtAlertRuleTemplateProperties struct {
	// The alert details override settings
	AlertDetailsOverride *AlertDetailsOverride

	// The number of alert rules that were created by this template
	AlertRulesCreatedByTemplateCount *int32

	// Dictionary of string key-value pairs of columns to be attached to the alert
	CustomDetails map[string]*string

	// The description of the alert rule template.
	Description *string

	// The display name for alert rule template.
	DisplayName *string

	// Array of the entity mappings of the alert rule
	EntityMappings []*EntityMapping

	// The event grouping settings.
	EventGroupingSettings *EventGroupingSettings

	// The query that creates alerts for this rule.
	Query *string

	// The required data sources for this template
	RequiredDataConnectors []*AlertRuleTemplateDataSource

	// Array of the sentinel entity mappings of the alert rule
	SentinelEntitiesMappings []*SentinelEntityMapping

	// The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// The alert rule template status.
	Status *TemplateStatus

	// The tactics of the alert rule
	Tactics []*AttackTactic

	// The techniques of the alert rule
	Techniques []*string

	// The version of this template - in format <a.b.c>, where all are numbers. For example <1.0.2>.
	Version *string

	// READ-ONLY; The time that this alert rule template has been added.
	CreatedDateUTC *time.Time

	// READ-ONLY; The last time that this alert rule template has been updated.
	LastUpdatedDateUTC *time.Time
}

// OAuthModel - Model for API authentication with OAuth2.
type OAuthModel struct {
	// REQUIRED; The Application (client) ID that the OAuth provider assigned to your app.
	ClientID *string

	// REQUIRED; The Application (client) secret that the OAuth provider assigned to your app.
	ClientSecret *string

	// REQUIRED; The grant type, usually will be 'authorization code'.
	GrantType *string

	// REQUIRED; The token endpoint. Defines the OAuth2 refresh token.
	TokenEndpoint *string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeOAuth2, any specified value is ignored.
	Type *CcpAuthType

	// Access token prepend. Default is 'Bearer'.
	AccessTokenPrepend *string

	// The user's authorization code.
	AuthorizationCode *string

	// The authorization endpoint.
	AuthorizationEndpoint *string

	// The authorization endpoint headers.
	AuthorizationEndpointHeaders map[string]*string

	// The authorization endpoint query parameters.
	AuthorizationEndpointQueryParameters map[string]*string

	// Indicating whether we want to send the clientId and clientSecret to token endpoint in the headers.
	IsCredentialsInHeaders *bool

	// A value indicating whether it's a JWT flow.
	IsJwtBearerFlow *bool

	// The Application redirect url that the user config in the OAuth provider.
	RedirectURI *string

	// The Application (client) Scope that the OAuth provider assigned to your app.
	Scope *string

	// The token endpoint headers.
	TokenEndpointHeaders map[string]*string

	// The token endpoint query parameters.
	TokenEndpointQueryParameters map[string]*string
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type OAuthModel.
func (o *OAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: o.Type,
	}
}

// Office365ProjectCheckRequirements - Represents Office365 Project requirements check request.
type Office365ProjectCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindOffice365Project, any specified value is ignored.
	Kind *DataConnectorKind

	// Office365 Project requirements check properties.
	Properties *Office365ProjectCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type Office365ProjectCheckRequirements.
func (o *Office365ProjectCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: o.Kind,
	}
}

// Office365ProjectCheckRequirementsProperties - Office365 Project requirements check properties.
type Office365ProjectCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// Office365ProjectConnectorDataTypes - The available data types for Office Microsoft Project data connector.
type Office365ProjectConnectorDataTypes struct {
	// REQUIRED; Logs data type.
	Logs *Office365ProjectConnectorDataTypesLogs
}

// Office365ProjectConnectorDataTypesLogs - Logs data type.
type Office365ProjectConnectorDataTypesLogs struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// Office365ProjectDataConnector - Represents Office Microsoft Project data connector.
type Office365ProjectDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindOffice365Project, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Office Microsoft Project data connector properties.
	Properties *Office365ProjectDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type Office365ProjectDataConnector.
func (o *Office365ProjectDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       o.Etag,
		ID:         o.ID,
		Kind:       o.Kind,
		Name:       o.Name,
		SystemData: o.SystemData,
		Type:       o.Type,
	}
}

// Office365ProjectDataConnectorProperties - Office Microsoft Project data connector properties.
type Office365ProjectDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *Office365ProjectConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// OfficeATPCheckRequirements - Represents OfficeATP (Office 365 Advanced Threat Protection) requirements check request.
type OfficeATPCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindOfficeATP, any specified value is ignored.
	Kind *DataConnectorKind

	// OfficeATP (Office 365 Advanced Threat Protection) requirements check properties.
	Properties *OfficeATPCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type OfficeATPCheckRequirements.
func (o *OfficeATPCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: o.Kind,
	}
}

// OfficeATPCheckRequirementsProperties - OfficeATP (Office 365 Advanced Threat Protection) requirements check properties.
type OfficeATPCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// OfficeATPDataConnector - Represents OfficeATP (Office 365 Advanced Threat Protection) data connector.
type OfficeATPDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindOfficeATP, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// OfficeATP (Office 365 Advanced Threat Protection) data connector properties.
	Properties *OfficeATPDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type OfficeATPDataConnector.
func (o *OfficeATPDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       o.Etag,
		ID:         o.ID,
		Kind:       o.Kind,
		Name:       o.Name,
		SystemData: o.SystemData,
		Type:       o.Type,
	}
}

// OfficeATPDataConnectorProperties - OfficeATP (Office 365 Advanced Threat Protection) data connector properties.
type OfficeATPDataConnectorProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The available data types for the connector.
	DataTypes *AlertsDataTypeOfDataConnector
}

// OfficeConsent - Consent for Office365 tenant that already made.
type OfficeConsent struct {
	// Office consent properties
	Properties *OfficeConsentProperties

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

// OfficeConsentList - List of all the office365 consents.
type OfficeConsentList struct {
	// REQUIRED; The OfficeConsent items on this page
	Value []*OfficeConsent

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

// OfficeConsentProperties - Consent property bag.
type OfficeConsentProperties struct {
	// Help to easily cascade among the data layers.
	ConsentID *string

	// The tenantId of the Office365 with the consent.
	TenantID *string
}

// OfficeDataConnector - Represents office data connector.
type OfficeDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindOffice365, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Office data connector properties.
	Properties *OfficeDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type OfficeDataConnector.
func (o *OfficeDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       o.Etag,
		ID:         o.ID,
		Kind:       o.Kind,
		Name:       o.Name,
		SystemData: o.SystemData,
		Type:       o.Type,
	}
}

// OfficeDataConnectorDataTypes - The available data types for office data connector.
type OfficeDataConnectorDataTypes struct {
	// REQUIRED; Exchange data type connection.
	Exchange *OfficeDataConnectorDataTypesExchange

	// REQUIRED; SharePoint data type connection.
	SharePoint *OfficeDataConnectorDataTypesSharePoint

	// REQUIRED; Teams data type connection.
	Teams *OfficeDataConnectorDataTypesTeams
}

// OfficeDataConnectorDataTypesExchange - Exchange data type connection.
type OfficeDataConnectorDataTypesExchange struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// OfficeDataConnectorDataTypesSharePoint - SharePoint data type connection.
type OfficeDataConnectorDataTypesSharePoint struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// OfficeDataConnectorDataTypesTeams - Teams data type connection.
type OfficeDataConnectorDataTypesTeams struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// OfficeDataConnectorProperties - Office data connector properties.
type OfficeDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *OfficeDataConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// OfficeIRMCheckRequirements - Represents OfficeIRM (Microsoft Insider Risk Management) requirements check request.
type OfficeIRMCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindOfficeIRM, any specified value is ignored.
	Kind *DataConnectorKind

	// OfficeIRM (Microsoft Insider Risk Management) requirements check properties.
	Properties *OfficeIRMCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type OfficeIRMCheckRequirements.
func (o *OfficeIRMCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: o.Kind,
	}
}

// OfficeIRMCheckRequirementsProperties - OfficeIRM (Microsoft Insider Risk Management) requirements check properties.
type OfficeIRMCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// OfficeIRMDataConnector - Represents OfficeIRM (Microsoft Insider Risk Management) data connector.
type OfficeIRMDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindOfficeIRM, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// OfficeIRM (Microsoft Insider Risk Management) data connector properties.
	Properties *OfficeIRMDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type OfficeIRMDataConnector.
func (o *OfficeIRMDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       o.Etag,
		ID:         o.ID,
		Kind:       o.Kind,
		Name:       o.Name,
		SystemData: o.SystemData,
		Type:       o.Type,
	}
}

// OfficeIRMDataConnectorProperties - OfficeIRM (Microsoft Insider Risk Management) data connector properties.
type OfficeIRMDataConnectorProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The available data types for the connector.
	DataTypes *AlertsDataTypeOfDataConnector
}

// OfficePowerBICheckRequirements - Represents Office PowerBI requirements check request.
type OfficePowerBICheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindOfficePowerBI, any specified value is ignored.
	Kind *DataConnectorKind

	// Office Power BI requirements check properties.
	Properties *OfficePowerBICheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type OfficePowerBICheckRequirements.
func (o *OfficePowerBICheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: o.Kind,
	}
}

// OfficePowerBICheckRequirementsProperties - Office PowerBI requirements check properties.
type OfficePowerBICheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// OfficePowerBIConnectorDataTypes - The available data types for Office Microsoft PowerBI data connector.
type OfficePowerBIConnectorDataTypes struct {
	// REQUIRED; Logs data type.
	Logs *OfficePowerBIConnectorDataTypesLogs
}

// OfficePowerBIConnectorDataTypesLogs - Logs data type.
type OfficePowerBIConnectorDataTypesLogs struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// OfficePowerBIDataConnector - Represents Office Microsoft PowerBI data connector.
type OfficePowerBIDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindOfficePowerBI, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Office Microsoft PowerBI data connector properties.
	Properties *OfficePowerBIDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type OfficePowerBIDataConnector.
func (o *OfficePowerBIDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       o.Etag,
		ID:         o.ID,
		Kind:       o.Kind,
		Name:       o.Name,
		SystemData: o.SystemData,
		Type:       o.Type,
	}
}

// OfficePowerBIDataConnectorProperties - Office Microsoft PowerBI data connector properties.
type OfficePowerBIDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *OfficePowerBIConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// Operation provided by provider
type Operation struct {
	// Properties of the operation
	Display *OperationDisplay

	// Indicates whether the operation is a data action
	IsDataAction *bool

	// Name of the operation
	Name *string

	// The origin of the operation
	Origin *string
}

// OperationDisplay - Properties of the operation
type OperationDisplay struct {
	// Description of the operation
	Description *string

	// Operation name
	Operation *string

	// Provider name
	Provider *string

	// Resource name
	Resource *string
}

// OperationsList - Lists the operations available in the SecurityInsights RP.
type OperationsList struct {
	// REQUIRED; Array of operations
	Value []*Operation

	// READ-ONLY; URL to fetch the next set of operations.
	NextLink *string
}

// OracleAuthModel - Model for API authentication for Oracle.
type OracleAuthModel struct {
	// REQUIRED; Content of the PRM file
	PemFile *string

	// REQUIRED; Public Fingerprint
	PublicFingerprint *string

	// REQUIRED; Oracle tenant ID
	TenantID *string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeOracle, any specified value is ignored.
	Type *CcpAuthType

	// REQUIRED; Oracle user ID
	UserID *string
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type OracleAuthModel.
func (o *OracleAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: o.Type,
	}
}

// PackageList - List available packages.
type PackageList struct {
	// REQUIRED; The PackageModel items on this page
	Value []*PackageModel

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

// PackageModel - Represents a Package in Azure Security Insights.
type PackageModel struct {
	// Etag of the azure resource
	Etag *string

	// package properties
	Properties *PackageProperties

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

// PackageProperties - Describes package properties
type PackageProperties struct {
	// The author of the package
	Author *MetadataAuthor

	// The categories of the package
	Categories *MetadataCategories

	// The content id of the package
	ContentID *string

	// The package kind
	ContentKind *PackageKind

	// Unique ID for the content. It should be generated based on the contentId, contentKind and the contentVersion of the package
	ContentProductID *string

	// The version of the content schema.
	ContentSchemaVersion *string

	// The support tier of the package
	Dependencies *MetadataDependencies

	// The description of the package
	Description *string

	// The display name of the package
	DisplayName *string

	// first publish date package item
	FirstPublishDate *time.Time

	// the icon identifier. this id can later be fetched from the content metadata
	Icon *string

	// Flag indicates if this template is deprecated
	IsDeprecated *Flag

	// Flag indicates if this package is among the featured list.
	IsFeatured *Flag

	// Flag indicates if this is a newly published package.
	IsNew *Flag

	// Flag indicates if this package is in preview.
	IsPreview *Flag

	// last publish date for the package item
	LastPublishDate *time.Time

	// Providers for the package item
	Providers []*string

	// The publisher display name of the package
	PublisherDisplayName *string

	// The source of the package
	Source *MetadataSource

	// The support tier of the package
	Support *MetadataSupport

	// the tactics the resource covers
	ThreatAnalysisTactics []*string

	// the techniques the resource covers, these have to be aligned with the tactics being used
	ThreatAnalysisTechniques []*string

	// the latest version number of the package
	Version *string
}

// Permissions required for the connector
type Permissions struct {
	// Customs permissions required for the connector
	Customs []*PermissionsCustomsItem

	// Resource provider permissions required for the connector
	ResourceProvider []*PermissionsResourceProviderItem
}

type PermissionsCustomsItem struct {
	// Customs permissions description
	Description *string

	// Customs permissions name
	Name *string
}

type PermissionsResourceProviderItem struct {
	// Permission description text
	PermissionsDisplayText *string

	// Provider name
	Provider *ProviderName

	// Permission provider display name
	ProviderDisplayName *string

	// Required permissions for the connector
	RequiredPermissions *RequiredPermissions

	// Permission provider scope
	Scope *PermissionProviderScope
}

type PlaybookActionProperties struct {
	// REQUIRED; The resource id of the playbook resource.
	LogicAppResourceID *string

	// The tenant id of the playbook resource.
	TenantID *string
}

// PremiumMdtiDataConnectorDataTypes - The available data types for Microsoft Defender for Threat Intelligence Premium data
// connector.
type PremiumMdtiDataConnectorDataTypes struct {
	// REQUIRED; Data type for Microsoft Defender for Threat Intelligence Premium data connector.
	Connector *PremiumMdtiDataConnectorDataTypesConnector
}

// PremiumMdtiDataConnectorDataTypesConnector - Data type for Microsoft Defender for Threat Intelligence Premium data connector.
type PremiumMdtiDataConnectorDataTypesConnector struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// PremiumMdtiDataConnectorProperties - Microsoft Defender for Threat Intelligence Premium data connector properties.
type PremiumMdtiDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *PremiumMdtiDataConnectorDataTypes

	// REQUIRED; The lookback period for the feed to be imported. The date-time to begin importing the feed from, for example:
	// 2024-01-01T00:00:00.000Z.
	LookbackPeriod *time.Time

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The flag to indicate whether the tenant has the premium SKU required to access this connector.
	RequiredSKUsPresent *bool
}

// PremiumMicrosoftDefenderForThreatIntelligence - Represents Microsoft Defender for Threat Intelligence Premium data connector.
type PremiumMicrosoftDefenderForThreatIntelligence struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindPremiumMicrosoftDefenderForThreatIntelligence, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Microsoft Defender for Threat Intelligence Premium data connector properties.
	Properties *PremiumMdtiDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type PremiumMicrosoftDefenderForThreatIntelligence.
func (p *PremiumMicrosoftDefenderForThreatIntelligence) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       p.Etag,
		ID:         p.ID,
		Kind:       p.Kind,
		Name:       p.Name,
		SystemData: p.SystemData,
		Type:       p.Type,
	}
}

// ProcessEntity - Represents a process entity.
type ProcessEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Process entity properties
	Properties *ProcessEntityProperties

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

// GetEntity implements the EntityClassification interface for type ProcessEntity.
func (p *ProcessEntity) GetEntity() *Entity {
	return &Entity{
		ID:         p.ID,
		Kind:       p.Kind,
		Name:       p.Name,
		SystemData: p.SystemData,
		Type:       p.Type,
	}
}

// ProcessEntityProperties - Process entity property bag.
type ProcessEntityProperties struct {
	// The elevation token associated with the process.
	ElevationToken *ElevationToken

	// READ-ONLY; The account entity id running the processes.
	AccountEntityID *string

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The command line used to create the process
	CommandLine *string

	// READ-ONLY; The time when the process started to run
	CreationTimeUTC *time.Time

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The host entity id on which the process was running
	HostEntityID *string

	// READ-ONLY; The session entity id in which the process was running
	HostLogonSessionEntityID *string

	// READ-ONLY; Image file entity id
	ImageFileEntityID *string

	// READ-ONLY; The parent process entity id.
	ParentProcessEntityID *string

	// READ-ONLY; The process ID
	ProcessID *string
}

// ProductPackageList - List available packages.
type ProductPackageList struct {
	// REQUIRED; The ProductPackageModel items on this page
	Value []*ProductPackageModel

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

// ProductPackageModel - Represents a Package in Azure Security Insights.
type ProductPackageModel struct {
	// Etag of the azure resource
	Etag *string

	// package properties
	Properties *ProductPackageProperties

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

// ProductPackageProperties - Describes package properties
type ProductPackageProperties struct {
	// The author of the package
	Author *MetadataAuthor

	// The categories of the package
	Categories *MetadataCategories

	// The content id of the package
	ContentID *string

	// The package kind
	ContentKind *PackageKind

	// Unique ID for the content. It should be generated based on the contentId, contentKind and the contentVersion of the package
	ContentProductID *string

	// The version of the content schema.
	ContentSchemaVersion *string

	// The support tier of the package
	Dependencies *MetadataDependencies

	// The description of the package
	Description *string

	// The display name of the package
	DisplayName *string

	// first publish date package item
	FirstPublishDate *time.Time

	// the icon identifier. this id can later be fetched from the content metadata
	Icon *string

	// The version of the installed package, null or absent means not installed.
	InstalledVersion *string

	// Flag indicates if this template is deprecated
	IsDeprecated *Flag

	// Flag indicates if this package is among the featured list.
	IsFeatured *Flag

	// Flag indicates if this is a newly published package.
	IsNew *Flag

	// Flag indicates if this package is in preview.
	IsPreview *Flag

	// last publish date for the package item
	LastPublishDate *time.Time

	// The metadata resource id.
	MetadataResourceID *string

	// The json of the ARM template to deploy. Expandable.
	PackagedContent any

	// Providers for the package item
	Providers []*string

	// The publisher display name of the package
	PublisherDisplayName *string

	// The source of the package
	Source *MetadataSource

	// The support tier of the package
	Support *MetadataSupport

	// the tactics the resource covers
	ThreatAnalysisTactics []*string

	// the techniques the resource covers, these have to be aligned with the tactics being used
	ThreatAnalysisTechniques []*string

	// the latest version number of the package
	Version *string
}

// ProductTemplateList - List of all the template.
type ProductTemplateList struct {
	// REQUIRED; The ProductTemplateModel items on this page
	Value []*ProductTemplateModel

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

// ProductTemplateModel - Template resource definition.
type ProductTemplateModel struct {
	// Etag of the azure resource
	Etag *string

	// template properties
	Properties *ProductTemplateProperties

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

// ProductTemplateProperties - Template property bag.
type ProductTemplateProperties struct {
	// The creator of the content item.
	Author *MetadataAuthor

	// Categories for the item
	Categories *MetadataCategories

	// Static ID for the content. Used to identify dependencies and content from solutions or community. Hard-coded/static for
	// out of the box content and solutions. Dynamic for user-created. This is the resource name
	ContentID *string

	// The kind of content the template is for.
	ContentKind *Kind

	// Unique ID for the content. It should be generated based on the contentId of the package, contentId of the template, contentKind
	// of the template and the contentVersion of the template
	ContentProductID *string

	// Schema version of the content. Can be used to distinguish between different flow based on the schema version
	ContentSchemaVersion *string

	// The custom version of the content. A optional free text
	CustomVersion *string

	// Dependencies for the content item, what other content items it requires to work. Can describe more complex dependencies
	// using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for
	// complex formats.
	Dependencies *MetadataDependencies

	// The display name of the template
	DisplayName *string

	// first publish date content item
	FirstPublishDate *time.Time

	// the icon identifier. this id can later be fetched from the content metadata
	Icon *string

	// last publish date for the content item
	LastPublishDate *time.Time

	// the package Id contains this template
	PackageID *string

	// the packageKind of the package contains this template
	PackageKind *PackageKind

	// the name of the package contains this template
	PackageName *string

	// Version of the package. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM metadata
	// best practices. Can also be any string, but then we cannot guarantee any version checks
	PackageVersion *string

	// The json of the ARM template to deploy
	PackagedContent any

	// preview image file names. These will be taken from the solution artifacts
	PreviewImages []*string

	// preview image file names. These will be taken from the solution artifacts. used for dark theme support
	PreviewImagesDark []*string

	// Providers for the content item
	Providers []*string

	// Source of the content. This is where/how it was created.
	Source *MetadataSource

	// Support information for the template - type, name, contact information
	Support *MetadataSupport

	// the tactics the resource covers
	ThreatAnalysisTactics []*string

	// the techniques the resource covers, these have to be aligned with the tactics being used
	ThreatAnalysisTechniques []*string

	// Version of the content. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM metadata
	// best practices. Can also be any string, but then we cannot guarantee any version checks
	Version *string

	// READ-ONLY; Flag indicates if this template is deprecated
	IsDeprecated *Flag
}

// PropertyArrayChangedConditionProperties - Describes an automation rule condition that evaluates an array property's value
// change
type PropertyArrayChangedConditionProperties struct {
	// CONSTANT; Field has constant value ConditionTypePropertyArrayChanged, any specified value is ignored.
	ConditionType       *ConditionType
	ConditionProperties *AutomationRulePropertyArrayChangedValuesCondition
}

// GetAutomationRuleCondition implements the AutomationRuleConditionClassification interface for type PropertyArrayChangedConditionProperties.
func (p *PropertyArrayChangedConditionProperties) GetAutomationRuleCondition() *AutomationRuleCondition {
	return &AutomationRuleCondition{
		ConditionType: p.ConditionType,
	}
}

// PropertyArrayConditionProperties - Describes an automation rule condition that evaluates an array property's value
type PropertyArrayConditionProperties struct {
	// CONSTANT; Field has constant value ConditionTypePropertyArray, any specified value is ignored.
	ConditionType       *ConditionType
	ConditionProperties *AutomationRulePropertyArrayValuesCondition
}

// GetAutomationRuleCondition implements the AutomationRuleConditionClassification interface for type PropertyArrayConditionProperties.
func (p *PropertyArrayConditionProperties) GetAutomationRuleCondition() *AutomationRuleCondition {
	return &AutomationRuleCondition{
		ConditionType: p.ConditionType,
	}
}

// PropertyChangedConditionProperties - Describes an automation rule condition that evaluates a property's value change
type PropertyChangedConditionProperties struct {
	// CONSTANT; Field has constant value ConditionTypePropertyChanged, any specified value is ignored.
	ConditionType       *ConditionType
	ConditionProperties *AutomationRulePropertyValuesChangedCondition
}

// GetAutomationRuleCondition implements the AutomationRuleConditionClassification interface for type PropertyChangedConditionProperties.
func (p *PropertyChangedConditionProperties) GetAutomationRuleCondition() *AutomationRuleCondition {
	return &AutomationRuleCondition{
		ConditionType: p.ConditionType,
	}
}

// PropertyConditionProperties - Describes an automation rule condition that evaluates a property's value
type PropertyConditionProperties struct {
	// CONSTANT; Field has constant value ConditionTypeProperty, any specified value is ignored.
	ConditionType       *ConditionType
	ConditionProperties *AutomationRulePropertyValuesCondition
}

// GetAutomationRuleCondition implements the AutomationRuleConditionClassification interface for type PropertyConditionProperties.
func (p *PropertyConditionProperties) GetAutomationRuleCondition() *AutomationRuleCondition {
	return &AutomationRuleCondition{
		ConditionType: p.ConditionType,
	}
}

// PullRequest - Information regarding pull request for protected branches.
type PullRequest struct {
	// READ-ONLY; State of the pull request
	State *State

	// READ-ONLY; URL of pull request
	URL *string
}

// PurviewAuditCheckRequirements - Represents PurviewAudit requirements check request.
type PurviewAuditCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindPurviewAudit, any specified value is ignored.
	Kind *DataConnectorKind

	// PurviewAudit requirements check properties.
	Properties *PurviewAuditCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type PurviewAuditCheckRequirements.
func (p *PurviewAuditCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: p.Kind,
	}
}

// PurviewAuditCheckRequirementsProperties - PurviewAudit requirements check properties.
type PurviewAuditCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// PurviewAuditConnectorDataTypes - The available data types for PurviewAudit data connector.
type PurviewAuditConnectorDataTypes struct {
	// REQUIRED; Logs data type.
	Logs *PurviewAuditConnectorDataTypesLogs
}

// PurviewAuditConnectorDataTypesLogs - Logs data type.
type PurviewAuditConnectorDataTypesLogs struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// PurviewAuditDataConnector - Represents PurviewAudit data connector.
type PurviewAuditDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindPurviewAudit, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// PurviewAudit data connector properties.
	Properties *PurviewAuditDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type PurviewAuditDataConnector.
func (p *PurviewAuditDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       p.Etag,
		ID:         p.ID,
		Kind:       p.Kind,
		Name:       p.Name,
		SystemData: p.SystemData,
		Type:       p.Type,
	}
}

// PurviewAuditDataConnectorProperties - PurviewAudit data connector properties.
type PurviewAuditDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *PurviewAuditConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The connector definition name (the dataConnectorDefinition resource id).
	ConnectorDefinitionName *string

	// The DCR related properties.
	DcrConfig *DCRConfiguration

	// The source type indicates which kind of data is relevant for this connector.
	SourceType *string
}

// Query - Represents a query to run on the TI objects in the workspace.
type Query struct {
	// Represents a condition used to query for TI objects.
	Condition *QueryCondition

	// Represents the maximum size of the page that will be returned from the query API.
	MaxPageSize *int32

	// Represents the minimum size of the page that will be returned from the query API.
	MinPageSize *int32

	// Specifies how to sort the query results.
	SortBy *QuerySortBy
}

// QueryCondition - Represents a condition used to query for TI objects.
type QueryCondition struct {
	// REQUIRED; The list of clauses to be evaluated in disjunction or conjunction base on the specified top level connective
	// operator.
	Clauses []*ConditionClause

	// The top level connective operator for this condition.
	ConditionConnective *Connective

	// The STIX type for the objects returned by this query.
	StixObjectType *string
}

// QueryProperties - Describes the query properties
type QueryProperties struct {
	// Represents a condition used to query for TI objects.
	Condition *ConditionProperties
}

// QuerySortBy - Specifies how to sort the query results.
type QuerySortBy struct {
	// The direction to sort the results by.
	Direction *SortingDirection

	// Represents the field to sort the results by.
	Field *string
}

// Recommendation object.
type Recommendation struct {
	// Etag of the azure resource
	Etag *string

	// Recommendation properties object.
	Properties *RecommendationProperties

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

// RecommendationList - A list of recommendations
type RecommendationList struct {
	// REQUIRED; The Recommendation items on this page
	Value []*Recommendation

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

// RecommendationPatch - Recommendation Fields to update.
type RecommendationPatch struct {
	// Recommendation Fields Properties to update.
	Properties *RecommendationPatchProperties
}

// RecommendationPatchProperties - Recommendation Fields Properties to update.
type RecommendationPatchProperties struct {
	// State of the recommendation.
	State *State
}

// RecommendationProperties - Recommendation properties object.
type RecommendationProperties struct {
	// REQUIRED; The time stamp (UTC) when the recommendation was created.
	CreationTimeUTC *time.Time

	// REQUIRED; Description of the recommendation.
	Description *string

	// REQUIRED; The time stamp (UTC) when the recommendation was last evaluated.
	LastEvaluatedTimeUTC *time.Time

	// REQUIRED; The time stamp (UTC) when the recommendation was last modified.
	LastModifiedTimeUTC *time.Time

	// REQUIRED; Id of the recommendation type.
	RecommendationTypeID *string

	// REQUIRED; State of the recommendation.
	State *State

	// REQUIRED; List of suggestions to take for this recommendation.
	Suggestions []*RecommendedSuggestion

	// REQUIRED; Title of the recommendation.
	Title *string

	// Collection of additional properties for the recommendation.
	AdditionalProperties map[string]*string

	// Id of the resource this recommendation refers to.
	ResourceID *string
}

// RecommendedSuggestion - What suggestions should be taken to complete the recommendation.
type RecommendedSuggestion struct {
	// REQUIRED; Action of the suggestion.
	Action *string

	// REQUIRED; Description of the suggestion.
	Description *string

	// REQUIRED; Id of the suggestion type.
	SuggestionTypeID *string

	// REQUIRED; Title of the suggestion.
	Title *string

	// Collection of additional properties for the suggestion.
	AdditionalProperties map[string]*string
}

// ReevaluateResponse - Reevaluate response object.
type ReevaluateResponse struct {
	// The time stamp (UTC) when the recommendation was last evaluated.
	LastEvaluatedTimeUTC *time.Time
}

// RegistryKeyEntity - Represents a registry key entity.
type RegistryKeyEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// RegistryKey entity properties
	Properties *RegistryKeyEntityProperties

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

// GetEntity implements the EntityClassification interface for type RegistryKeyEntity.
func (r *RegistryKeyEntity) GetEntity() *Entity {
	return &Entity{
		ID:         r.ID,
		Kind:       r.Kind,
		Name:       r.Name,
		SystemData: r.SystemData,
		Type:       r.Type,
	}
}

// RegistryKeyEntityProperties - RegistryKey entity property bag.
type RegistryKeyEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; the hive that holds the registry key.
	Hive *RegistryHive

	// READ-ONLY; The registry key path.
	Key *string
}

// RegistryValueEntity - Represents a registry value entity.
type RegistryValueEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// RegistryKey entity properties
	Properties *RegistryValueEntityProperties

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

// GetEntity implements the EntityClassification interface for type RegistryValueEntity.
func (r *RegistryValueEntity) GetEntity() *Entity {
	return &Entity{
		ID:         r.ID,
		Kind:       r.Kind,
		Name:       r.Name,
		SystemData: r.SystemData,
		Type:       r.Type,
	}
}

// RegistryValueEntityProperties - RegistryValue entity property bag.
type RegistryValueEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The registry key entity id.
	KeyEntityID *string

	// READ-ONLY; String formatted representation of the value data.
	ValueData *string

	// READ-ONLY; The registry value name.
	ValueName *string

	// READ-ONLY; Specifies the data types to use when storing values in the registry, or identifies the data type of a value
	// in the registry.
	ValueType *RegistryValueKind
}

// Relation - Represents a relation between two resources
type Relation struct {
	// Etag of the azure resource
	Etag *string

	// Relation properties
	Properties *RelationProperties

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

// RelationList - List of relations.
type RelationList struct {
	// REQUIRED; The Relation items on this page
	Value []*Relation

	// READ-ONLY; The link to the next page of items
	NextLink *string
}

// RelationProperties - Relation property bag.
type RelationProperties struct {
	// REQUIRED; The resource ID of the related resource
	RelatedResourceID *string

	// READ-ONLY; The resource kind of the related resource
	RelatedResourceKind *string

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

	// READ-ONLY; The resource type of the related resource
	RelatedResourceType *string
}

// Relationship - Represents a relationship in Azure Security Insights.
type Relationship struct {
	// REQUIRED; The kind of the TI object
	Kind *TIObjectKind

	// The properties of the TI object
	Properties *TIObjectCommonProperties

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

// GetTIObject implements the TIObjectClassification interface for type Relationship.
func (r *Relationship) GetTIObject() *TIObject {
	return &TIObject{
		ID:         r.ID,
		Kind:       r.Kind,
		Name:       r.Name,
		Properties: r.Properties,
		SystemData: r.SystemData,
		Type:       r.Type,
	}
}

// RelationshipHint - An object used to help follow relationships from this object to other STIX objects.
type RelationshipHint struct {
	FieldName *string
	Source    *string
}

// Repo - Represents a repository.
type Repo struct {
	// Array of branches.
	Branches []*string

	// The name of the repository.
	FullName *string

	// The installation id of the repository.
	InstallationID *int64

	// The url to access the repository.
	URL *string
}

// RepoList - List all the source controls.
type RepoList struct {
	// REQUIRED; The Repo items on this page
	Value []*Repo

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

// Repository - metadata of a repository.
type Repository struct {
	// REQUIRED; Branch name of repository.
	Branch *string

	// REQUIRED; Url of repository.
	URL *string

	// Display url of repository.
	DisplayURL *string

	// READ-ONLY; Url to access repository action logs.
	DeploymentLogsURL *string
}

// RepositoryAccess - Credentials to access repository.
type RepositoryAccess struct {
	// REQUIRED; The kind of repository access credentials
	Kind *RepositoryAccessKind

	// OAuth ClientId. Required when `kind` is `OAuth`
	ClientID *string

	// OAuth Code. Required when `kind` is `OAuth`
	Code *string

	// Application installation ID. Required when `kind` is `App`. Supported by `GitHub` only.
	InstallationID *string

	// OAuth State. Required when `kind` is `OAuth`
	State *string

	// Personal Access Token. Required when `kind` is `PAT`
	Token *string
}

// RepositoryAccessObject - Credentials to access repository.
type RepositoryAccessObject struct {
	// REQUIRED; RepositoryAccess properties
	RepositoryAccess *RepositoryAccess
}

// RepositoryAccessProperties - Credentials to access repository.
type RepositoryAccessProperties struct {
	// REQUIRED; RepositoryAccess properties
	Properties *RepositoryAccessObject
}

// RepositoryResourceInfo - Resources created in user's repository for the source-control.
type RepositoryResourceInfo struct {
	// The webhook object created for the source-control.
	Webhook *Webhook

	// READ-ONLY; Resources created in Azure DevOps for this source-control.
	AzureDevOpsResourceInfo *AzureDevOpsResourceInfo

	// READ-ONLY; Resources created in GitHub for this source-control.
	GitHubResourceInfo *GitHubResourceInfo
}

// RequiredPermissions - Required permissions for the connector
type RequiredPermissions struct {
	// action permission
	Action *bool

	// delete permission
	Delete *bool

	// read permission
	Read *bool

	// write permission
	Write *bool
}

// ResourceProviderRequiredPermissions - Required permissions for the connector resource provider that define in ResourceProviders.
// For more information about the permissions see <see href="https://docs.microsoft.com/en-us/azure/role-based-access-control/role-definitions#actions-format">here</see>.
type ResourceProviderRequiredPermissions struct {
	// Gets or sets a value indicating whether the permission is custom actions (POST).
	Action *bool

	// Gets or sets a value indicating whether the permission is delete action (DELETE).
	Delete *bool

	// Gets or sets a value indicating whether the permission is read action (GET).
	Read *bool

	// Gets or sets a value indicating whether the permission is write action (PUT or PATCH).
	Write *bool
}

// RestAPIPollerDataConnector - Represents Rest Api Poller data connector.
type RestAPIPollerDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindRestAPIPoller, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Rest Api Poller data connector properties.
	Properties *RestAPIPollerDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type RestAPIPollerDataConnector.
func (r *RestAPIPollerDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       r.Etag,
		ID:         r.ID,
		Kind:       r.Kind,
		Name:       r.Name,
		SystemData: r.SystemData,
		Type:       r.Type,
	}
}

// RestAPIPollerDataConnectorProperties - Rest Api Poller data connector properties.
type RestAPIPollerDataConnectorProperties struct {
	// REQUIRED; The a authentication model.
	Auth CcpAuthConfigClassification

	// REQUIRED; The connector definition name (the dataConnectorDefinition resource id).
	ConnectorDefinitionName *string

	// REQUIRED; The request configuration.
	Request *RestAPIPollerRequestConfig

	// The add on attributes. The key name will become attribute name (a column) and the value will become the attribute value
	// in the payload.
	AddOnAttributes map[string]*string

	// The Log Analytics table destination.
	DataType *string

	// The DCR related properties.
	DcrConfig *DCRConfiguration

	// Indicates whether the connector is active or not.
	IsActive *bool

	// The paging configuration.
	Paging *RestAPIPollerRequestPagingConfig

	// The response configuration.
	Response *CcpResponseConfig
}

// RestAPIPollerRequestConfig - The request configuration.
type RestAPIPollerRequestConfig struct {
	// REQUIRED; The API endpoint.
	APIEndpoint *string

	// The query parameter name which the remote server expect to end query. This property goes hand to hand with `startTimeAttributeName`
	EndTimeAttributeName *string

	// The HTTP method, default value GET.
	HTTPMethod *HTTPMethodVerb

	// The header for the request for the remote server.
	Headers map[string]*string

	// Flag to indicate if HTTP POST payload is in JSON format (vs form-urlencoded).
	IsPostPayloadJSON *bool

	// The HTTP query parameters to RESTful API.
	QueryParameters map[string]any

	// the query parameters template. Defines the query parameters template to use when passing query parameters in advanced scenarios.
	QueryParametersTemplate *string

	// The query time format. A remote server can have a query to pull data from range 'start' to 'end'. This property indicate
	// what is the expected time format the remote server know to parse.
	QueryTimeFormat *string

	// The query parameter name which we need to send the server for query logs in time interval. Should be defined with `queryTimeIntervalPrepend`
	// and `queryTimeIntervalDelimiter`
	QueryTimeIntervalAttributeName *string

	// The delimiter string between 2 QueryTimeFormat in the query parameter `queryTimeIntervalAttributeName`.
	QueryTimeIntervalDelimiter *string

	// The string prepend to the value of the query parameter in `queryTimeIntervalAttributeName`.
	QueryTimeIntervalPrepend *string

	// The query window in minutes for the request.
	QueryWindowInMin *int32

	// The Rate limit queries per second for the request..
	RateLimitQPS *int32

	// The retry count.
	RetryCount *int32

	// The query parameter name which the remote server expect to start query. This property goes hand to hand with `endTimeAttributeName`.
	StartTimeAttributeName *string

	// The timeout in seconds.
	TimeoutInSeconds *int32
}

// RestAPIPollerRequestPagingConfig - The request paging configuration.
type RestAPIPollerRequestPagingConfig struct {
	// REQUIRED; Type of paging
	PagingType *RestAPIPollerRequestPagingKind

	// Page size
	PageSize *int32

	// Page size parameter name
	PageSizeParameterName *string
}

// SapSolutionUsageStatistic - Billing statistic about the Microsoft Sentinel solution for SAP Usage
type SapSolutionUsageStatistic struct {
	// REQUIRED; The kind of the billing statistic
	Kind *BillingStatisticKind

	// The SAP solution usage object
	Properties *SapSolutionUsageStatisticProperties

	// READ-ONLY; Resource Etag.
	Etag *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
}

// GetBillingStatistic implements the BillingStatisticClassification interface for type SapSolutionUsageStatistic.
func (s *SapSolutionUsageStatistic) GetBillingStatistic() *BillingStatistic {
	return &BillingStatistic{
		Etag:       s.Etag,
		ID:         s.ID,
		Kind:       s.Kind,
		Name:       s.Name,
		SystemData: s.SystemData,
		Type:       s.Type,
	}
}

// SapSolutionUsageStatisticProperties - Properties of the billing statistic about the Microsoft Sentinel solution for SAP
// usage
type SapSolutionUsageStatisticProperties struct {
	// READ-ONLY; The latest count of active SAP system IDs under the Microsoft Sentinel solution for SAP Usage
	ActiveSystemIDCount *int64
}

// ScheduledAlertRule - Represents scheduled alert rule.
type ScheduledAlertRule struct {
	// CONSTANT; The kind of the alert rule
	// Field has constant value AlertRuleKindScheduled, any specified value is ignored.
	Kind *AlertRuleKind

	// Etag of the azure resource
	Etag *string

	// Scheduled alert rule properties
	Properties *ScheduledAlertRuleProperties

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

// GetAlertRule implements the AlertRuleClassification interface for type ScheduledAlertRule.
func (s *ScheduledAlertRule) GetAlertRule() *AlertRule {
	return &AlertRule{
		Etag:       s.Etag,
		ID:         s.ID,
		Kind:       s.Kind,
		Name:       s.Name,
		SystemData: s.SystemData,
		Type:       s.Type,
	}
}

// ScheduledAlertRuleProperties - Scheduled alert rule base property bag.
type ScheduledAlertRuleProperties struct {
	// REQUIRED; The display name for alerts created by this alert rule.
	DisplayName *string

	// REQUIRED; Determines whether this alert rule is enabled or disabled.
	Enabled *bool

	// REQUIRED; The suppression (in ISO 8601 duration format) to wait since last time this alert rule been triggered.
	SuppressionDuration *string

	// REQUIRED; Determines whether the suppression for this alert rule is enabled or disabled.
	SuppressionEnabled *bool

	// The alert details override settings
	AlertDetailsOverride *AlertDetailsOverride

	// The Name of the alert rule template used to create this rule.
	AlertRuleTemplateName *string

	// Dictionary of string key-value pairs of columns to be attached to the alert
	CustomDetails map[string]*string

	// The description of the alert rule.
	Description *string

	// Array of the entity mappings of the alert rule
	EntityMappings []*EntityMapping

	// The event grouping settings.
	EventGroupingSettings *EventGroupingSettings

	// The settings of the incidents that created from alerts triggered by this analytics rule
	IncidentConfiguration *IncidentConfiguration

	// The query that creates alerts for this rule.
	Query *string

	// The frequency (in ISO 8601 duration format) for this alert rule to run.
	QueryFrequency *string

	// The period (in ISO 8601 duration format) that this alert rule looks at.
	QueryPeriod *string

	// Array of the sentinel entity mappings of the alert rule
	SentinelEntitiesMappings []*SentinelEntityMapping

	// The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// The sub-techniques of the alert rule
	SubTechniques []*string

	// The tactics of the alert rule
	Tactics []*AttackTactic

	// The techniques of the alert rule
	Techniques []*string

	// The version of the alert rule template used to create this rule - in format <a.b.c>, where all are numbers, for example
	// 0 <1.0.2>
	TemplateVersion *string

	// The operation against the threshold that triggers alert rule.
	TriggerOperator *TriggerOperator

	// The threshold triggers this alert rule.
	TriggerThreshold *int32

	// READ-ONLY; The last time that this alert rule has been modified.
	LastModifiedUTC *time.Time
}

// ScheduledAlertRuleTemplate - Represents scheduled alert rule template.
type ScheduledAlertRuleTemplate struct {
	// REQUIRED; The kind of the alert rule
	Kind *AlertRuleKind

	// Scheduled alert rule template properties
	Properties *ScheduledAlertRuleTemplateProperties

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

// GetAlertRuleTemplate implements the AlertRuleTemplateClassification interface for type ScheduledAlertRuleTemplate.
func (s *ScheduledAlertRuleTemplate) GetAlertRuleTemplate() *AlertRuleTemplate {
	return &AlertRuleTemplate{
		ID:         s.ID,
		Kind:       s.Kind,
		Name:       s.Name,
		SystemData: s.SystemData,
		Type:       s.Type,
	}
}

// ScheduledAlertRuleTemplateProperties - Scheduled alert rule template properties
type ScheduledAlertRuleTemplateProperties struct {
	// The alert details override settings
	AlertDetailsOverride *AlertDetailsOverride

	// The number of alert rules that were created by this template
	AlertRulesCreatedByTemplateCount *int32

	// Dictionary of string key-value pairs of columns to be attached to the alert
	CustomDetails map[string]*string

	// The description of the alert rule template.
	Description *string

	// The display name for alert rule template.
	DisplayName *string

	// Array of the entity mappings of the alert rule
	EntityMappings []*EntityMapping

	// The event grouping settings.
	EventGroupingSettings *EventGroupingSettings

	// The query that creates alerts for this rule.
	Query *string

	// The frequency (in ISO 8601 duration format) for this alert rule to run.
	QueryFrequency *string

	// The period (in ISO 8601 duration format) that this alert rule looks at.
	QueryPeriod *string

	// The required data connectors for this template
	RequiredDataConnectors []*AlertRuleTemplateDataSource

	// Array of the sentinel entity mappings of the alert rule
	SentinelEntitiesMappings []*SentinelEntityMapping

	// The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// The alert rule template status.
	Status *TemplateStatus

	// The sub-techniques of the alert rule
	SubTechniques []*string

	// The tactics of the alert rule template
	Tactics []*AttackTactic

	// The techniques of the alert rule
	Techniques []*string

	// The operation against the threshold that triggers alert rule.
	TriggerOperator *TriggerOperator

	// The threshold triggers this alert rule.
	TriggerThreshold *int32

	// The version of this template - in format <a.b.c>, where all are numbers. For example <1.0.2>.
	Version *string

	// READ-ONLY; The time that this alert rule template has been added.
	CreatedDateUTC *time.Time

	// READ-ONLY; The time that this alert rule template was last updated.
	LastUpdatedDateUTC *time.Time
}

// SecurityAlert - Represents a security alert entity.
type SecurityAlert struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// SecurityAlert entity properties
	Properties *SecurityAlertProperties

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

// GetEntity implements the EntityClassification interface for type SecurityAlert.
func (s *SecurityAlert) GetEntity() *Entity {
	return &Entity{
		ID:         s.ID,
		Kind:       s.Kind,
		Name:       s.Name,
		SystemData: s.SystemData,
		Type:       s.Type,
	}
}

// SecurityAlertProperties - SecurityAlert entity property bag.
type SecurityAlertProperties struct {
	// The severity of the alert
	Severity *AlertSeverity

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The display name of the alert.
	AlertDisplayName *string

	// READ-ONLY; The uri link of the alert.
	AlertLink *string

	// READ-ONLY; The type name of the alert.
	AlertType *string

	// READ-ONLY; Display name of the main entity being reported on.
	CompromisedEntity *string

	// READ-ONLY; The confidence level of this alert.
	ConfidenceLevel *ConfidenceLevel

	// READ-ONLY; The confidence reasons
	ConfidenceReasons []*SecurityAlertPropertiesConfidenceReasonsItem

	// READ-ONLY; The confidence score of the alert.
	ConfidenceScore *float64

	// READ-ONLY; The confidence score calculation status, i.e. indicating if score calculation is pending for this alert, not
	// applicable or final.
	ConfidenceScoreStatus *ConfidenceScoreStatus

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

	// READ-ONLY; The impact end time of the alert (the time of the last event contributing to the alert).
	EndTimeUTC *time.Time

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; Holds the alert intent stage(s) mapping for this alert.
	Intent *KillChainIntent

	// READ-ONLY; The time the alert was made available for consumption.
	ProcessingEndTime *time.Time

	// READ-ONLY; The name of a component inside the product which generated the alert.
	ProductComponentName *string

	// READ-ONLY; The name of the product which published this alert.
	ProductName *string

	// READ-ONLY; The version of the product generating the alert.
	ProductVersion *string

	// READ-ONLY; The identifier of the alert inside the product which generated the alert.
	ProviderAlertID *string

	// READ-ONLY; Manual action items to take to remediate the alert.
	RemediationSteps []*string

	// READ-ONLY; The list of resource identifiers of the alert.
	ResourceIdentifiers []any

	// READ-ONLY; The impact start time of the alert (the time of the first event contributing to the alert).
	StartTimeUTC *time.Time

	// READ-ONLY; The lifecycle status of the alert.
	Status *AlertStatus

	// READ-ONLY; Holds the product identifier of the alert for the product.
	SystemAlertID *string

	// READ-ONLY; The tactics of the alert
	Tactics []*AttackTactic

	// READ-ONLY; The time the alert was generated.
	TimeGenerated *time.Time

	// READ-ONLY; The name of the vendor that raise the alert.
	VendorName *string
}

// SecurityAlertPropertiesConfidenceReasonsItem - confidence reason item
type SecurityAlertPropertiesConfidenceReasonsItem struct {
	// READ-ONLY; The reason's description
	Reason *string

	// READ-ONLY; The type (category) of the reason
	ReasonType *string
}

// SecurityAlertTimelineItem - Represents security alert timeline item.
type SecurityAlertTimelineItem struct {
	// REQUIRED; The name of the alert type.
	AlertType *string

	// REQUIRED; The alert azure resource id.
	AzureResourceID *string

	// REQUIRED; The alert name.
	DisplayName *string

	// REQUIRED; The alert end time.
	EndTimeUTC *time.Time

	// REQUIRED; The entity query kind type.
	Kind *EntityTimelineKind

	// REQUIRED; The alert severity.
	Severity *AlertSeverity

	// REQUIRED; The alert start time.
	StartTimeUTC *time.Time

	// REQUIRED; The alert generated time.
	TimeGenerated *time.Time

	// The alert description.
	Description *string

	// The alert product name.
	ProductName *string

	// The techniques of the alert.
	Techniques []*string

	// READ-ONLY; The intent of the alert.
	Intent *KillChainIntent
}

// GetEntityTimelineItem implements the EntityTimelineItemClassification interface for type SecurityAlertTimelineItem.
func (s *SecurityAlertTimelineItem) GetEntityTimelineItem() *EntityTimelineItem {
	return &EntityTimelineItem{
		Kind: s.Kind,
	}
}

// SecurityGroupEntity - Represents a security group entity.
type SecurityGroupEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// SecurityGroup entity properties
	Properties *SecurityGroupEntityProperties

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

// GetEntity implements the EntityClassification interface for type SecurityGroupEntity.
func (s *SecurityGroupEntity) GetEntity() *Entity {
	return &Entity{
		ID:         s.ID,
		Kind:       s.Kind,
		Name:       s.Name,
		SystemData: s.SystemData,
		Type:       s.Type,
	}
}

// SecurityGroupEntityProperties - SecurityGroup entity property bag.
type SecurityGroupEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The group distinguished name
	DistinguishedName *string

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; A single-value attribute that is the unique identifier for the object, assigned by active directory.
	ObjectGUID *string

	// READ-ONLY; The SID attribute is a single-value attribute that specifies the security identifier (SID) of the group
	Sid *string
}

// SecurityMLAnalyticsSetting - Security ML Analytics Setting
type SecurityMLAnalyticsSetting struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *SecurityMLAnalyticsSettingsKind

	// Etag of the azure resource
	Etag *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
}

// GetSecurityMLAnalyticsSetting implements the SecurityMLAnalyticsSettingClassification interface for type SecurityMLAnalyticsSetting.
func (s *SecurityMLAnalyticsSetting) GetSecurityMLAnalyticsSetting() *SecurityMLAnalyticsSetting {
	return s
}

// SecurityMLAnalyticsSettingsDataSource - security ml analytics settings data sources
type SecurityMLAnalyticsSettingsDataSource struct {
	// The connector id that provides the following data types
	ConnectorID *string

	// The data types used by the security ml analytics settings
	DataTypes []*string
}

// SecurityMLAnalyticsSettingsList - List all the SecurityMLAnalyticsSettings
type SecurityMLAnalyticsSettingsList struct {
	// REQUIRED; The SecurityMLAnalyticsSetting items on this page
	Value []SecurityMLAnalyticsSettingClassification

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

// SentinelEntityMapping - A single sentinel entity mapping
type SentinelEntityMapping struct {
	// the column name to be mapped to the SentinelEntities
	ColumnName *string
}

// SentinelOnboardingState - Sentinel onboarding state
type SentinelOnboardingState struct {
	// Etag of the azure resource
	Etag *string

	// The Sentinel onboarding state object
	Properties *SentinelOnboardingStateProperties

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

// SentinelOnboardingStateProperties - The Sentinel onboarding state properties
type SentinelOnboardingStateProperties struct {
	// Flag that indicates the status of the CMK setting
	CustomerManagedKey *bool
}

// SentinelOnboardingStatesList - List of the Sentinel onboarding states
type SentinelOnboardingStatesList struct {
	// REQUIRED; Array of Sentinel onboarding states
	Value []*SentinelOnboardingState
}

// ServicePrincipal - Service principal metadata.
type ServicePrincipal struct {
	// Expiration time of service principal credentials.
	CredentialsExpireOn *time.Time

	// READ-ONLY; App id of service principal.
	AppID *string

	// READ-ONLY; Id of service principal.
	ID *string

	// READ-ONLY; Tenant id of service principal.
	TenantID *string
}

// SessionAuthModel - Model for API authentication with session cookie.
type SessionAuthModel struct {
	// REQUIRED; The password attribute name.
	Password map[string]*string

	// CONSTANT; The auth type
	// Field has constant value CcpAuthTypeSession, any specified value is ignored.
	Type *CcpAuthType

	// REQUIRED; The user name attribute key value.
	UserName map[string]*string

	// HTTP request headers to session service endpoint.
	Headers map[string]*string

	// Indicating whether API key is set in HTTP POST payload.
	IsPostPayloadJSON *bool

	// Query parameters to session service endpoint.
	QueryParameters map[string]any

	// Session id attribute name from HTTP response header.
	SessionIDName *string

	// HTTP request URL to session service endpoint.
	SessionLoginRequestURI *string

	// Session timeout in minutes.
	SessionTimeoutInMinutes *int32
}

// GetCcpAuthConfig implements the CcpAuthConfigClassification interface for type SessionAuthModel.
func (s *SessionAuthModel) GetCcpAuthConfig() *CcpAuthConfig {
	return &CcpAuthConfig{
		Type: s.Type,
	}
}

// SettingList - List of all the settings.
type SettingList struct {
	// REQUIRED; The Settings items on this page
	Value []SettingsClassification

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

// Settings - The Setting.
type Settings struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *SettingKind

	// Etag of the azure resource
	Etag *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
}

// GetSettings implements the SettingsClassification interface for type Settings.
func (s *Settings) GetSettings() *Settings { return s }

// SourceControl - Represents a SourceControl in Azure Security Insights.
type SourceControl struct {
	// REQUIRED; source control properties
	Properties *SourceControlProperties

	// Etag of the azure resource
	Etag *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
}

// SourceControlList - List all the source controls.
type SourceControlList struct {
	// REQUIRED; The SourceControl items on this page
	Value []*SourceControl

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

// SourceControlProperties - Describes source control properties
type SourceControlProperties struct {
	// REQUIRED; Array of source control content types.
	ContentTypes []*ContentType

	// REQUIRED; The display name of the source control
	DisplayName *string

	// REQUIRED; The repository type of the source control
	RepoType *RepoType

	// REQUIRED; Repository metadata.
	Repository *Repository

	// A description of the source control
	Description *string

	// Repository access credentials. This is write-only object and it never returns back to a user.
	RepositoryAccess *RepositoryAccess

	// Information regarding the resources created in user's repository.
	RepositoryResourceInfo *RepositoryResourceInfo

	// Service principal metadata.
	ServicePrincipal *ServicePrincipal

	// READ-ONLY; The id (a Guid) of the source control
	ID *string

	// READ-ONLY; Information regarding the latest deployment for the source control.
	LastDeploymentInfo *DeploymentInfo

	// READ-ONLY; Information regarding the pull request of the source control.
	PullRequest *PullRequest

	// READ-ONLY; The version number associated with the source control
	Version *Version

	// READ-ONLY; Workload Identity metadata.
	WorkloadIdentityFederation *WorkloadIdentityFederation
}

// SubmissionMailEntity - Represents a submission mail entity.
type SubmissionMailEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Submission mail entity properties
	Properties *SubmissionMailEntityProperties

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

// GetEntity implements the EntityClassification interface for type SubmissionMailEntity.
func (s *SubmissionMailEntity) GetEntity() *Entity {
	return &Entity{
		ID:         s.ID,
		Kind:       s.Kind,
		Name:       s.Name,
		SystemData: s.SystemData,
		Type:       s.Type,
	}
}

// SubmissionMailEntityProperties - Submission mail entity property bag.
type SubmissionMailEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; The network message id of email to which submission belongs
	NetworkMessageID *string

	// READ-ONLY; The recipient of the mail
	Recipient *string

	// READ-ONLY; The submission type for the given instance. This maps to Junk, Phish, Malware or NotJunk.
	ReportType *string

	// READ-ONLY; The sender of the mail
	Sender *string

	// READ-ONLY; The sender's IP
	SenderIP *string

	// READ-ONLY; The subject of submission mail
	Subject *string

	// READ-ONLY; The submission date
	SubmissionDate *time.Time

	// READ-ONLY; The submission id
	SubmissionID *string

	// READ-ONLY; The submitter
	Submitter *string

	// READ-ONLY; The Time stamp when the message is received (Mail)
	Timestamp *time.Time
}

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

// TICheckRequirements - Threat Intelligence Platforms data connector check requirements
type TICheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindThreatIntelligence, any specified value is ignored.
	Kind *DataConnectorKind

	// Threat Intelligence Platforms data connector check required properties
	Properties *TICheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type TICheckRequirements.
func (t *TICheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: t.Kind,
	}
}

// TICheckRequirementsProperties - Threat Intelligence Platforms data connector required properties.
type TICheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// TIDataConnector - Represents threat intelligence data connector.
type TIDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindThreatIntelligence, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// TI (Threat Intelligence) data connector properties.
	Properties *TIDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type TIDataConnector.
func (t *TIDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       t.Etag,
		ID:         t.ID,
		Kind:       t.Kind,
		Name:       t.Name,
		SystemData: t.SystemData,
		Type:       t.Type,
	}
}

// TIDataConnectorDataTypes - The available data types for TI (Threat Intelligence) data connector.
type TIDataConnectorDataTypes struct {
	// REQUIRED; Data type for indicators connection.
	Indicators *TIDataConnectorDataTypesIndicators
}

// TIDataConnectorDataTypesIndicators - Data type for indicators connection.
type TIDataConnectorDataTypesIndicators struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// TIDataConnectorProperties - TI (Threat Intelligence) data connector properties.
type TIDataConnectorProperties struct {
	// REQUIRED; The available data types for the connector.
	DataTypes *TIDataConnectorDataTypes

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The lookback period for the feed to be imported.
	TipLookbackPeriod *time.Time
}

// TIObject - Represents a threat intelligence object in Azure Security Insights.
type TIObject struct {
	// REQUIRED; The kind of the TI object
	Kind *TIObjectKind

	// The properties of the TI object
	Properties *TIObjectCommonProperties

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

// GetTIObject implements the TIObjectClassification interface for type TIObject.
func (t *TIObject) GetTIObject() *TIObject { return t }

// TIObjectCommonProperties - Describes properties common to all threat intelligence objects
type TIObjectCommonProperties struct {
	// READ-ONLY; The UserInfo of the user/entity which originally created this TI object.
	CreatedBy *UserInfo

	// READ-ONLY; The core STIX object that this TI object represents.
	Data map[string]any

	// READ-ONLY; The timestamp for the first time this object was ingested.
	FirstIngestedTimeUTC *time.Time

	// READ-ONLY; The ID of the rules version that was active when this TI object was last ingested.
	IngestionRulesVersion *string

	// READ-ONLY; The timestamp for the last time this object was ingested.
	LastIngestedTimeUTC *time.Time

	// READ-ONLY; The UserInfo of the user/entity which last modified this TI object.
	LastModifiedBy *UserInfo

	// READ-ONLY; The name of the method/application that initiated the last write to this TI object.
	LastUpdateMethod *string

	// READ-ONLY; The timestamp for the last time this TI object was updated.
	LastUpdatedDateTimeUTC *time.Time

	// READ-ONLY; A dictionary used to help follow relationships from this object to other STIX objects. The keys are field names
	// from the STIX object (in the 'data' field), and the values are lists of sources that can be prepended to the object ID
	// in order to efficiently locate the target TI object.
	RelationshipHints []*RelationshipHint

	// READ-ONLY; The source name for this TI object.
	Source *string
}

// TeamInformation - Describes team information
type TeamInformation struct {
	// READ-ONLY; The description of the team
	Description *string

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

	// READ-ONLY; The primary channel URL of the team
	PrimaryChannelURL *string

	// READ-ONLY; The time the team was created
	TeamCreationTimeUTC *time.Time

	// READ-ONLY; Team ID
	TeamID *string
}

// TemplateList - List of all the template.
type TemplateList struct {
	// REQUIRED; The TemplateModel items on this page
	Value []*TemplateModel

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

// TemplateModel - Template resource definition.
type TemplateModel struct {
	// Etag of the azure resource
	Etag *string

	// template properties
	Properties *TemplateProperties

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

// TemplateProperties - Template property bag.
type TemplateProperties struct {
	// The creator of the content item.
	Author *MetadataAuthor

	// Categories for the item
	Categories *MetadataCategories

	// Static ID for the content. Used to identify dependencies and content from solutions or community. Hard-coded/static for
	// out of the box content and solutions. Dynamic for user-created. This is the resource name
	ContentID *string

	// The kind of content the template is for.
	ContentKind *Kind

	// Unique ID for the content. It should be generated based on the contentId of the package, contentId of the template, contentKind
	// of the template and the contentVersion of the template
	ContentProductID *string

	// Schema version of the content. Can be used to distinguish between different flow based on the schema version
	ContentSchemaVersion *string

	// The custom version of the content. A optional free text
	CustomVersion *string

	// Dependencies for the content item, what other content items it requires to work. Can describe more complex dependencies
	// using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for
	// complex formats.
	Dependencies *MetadataDependencies

	// The display name of the template
	DisplayName *string

	// first publish date content item
	FirstPublishDate *time.Time

	// the icon identifier. this id can later be fetched from the content metadata
	Icon *string

	// last publish date for the content item
	LastPublishDate *time.Time

	// The JSON of the ARM template to deploy active content. Expandable.
	MainTemplate any

	// the package Id contains this template
	PackageID *string

	// the packageKind of the package contains this template
	PackageKind *PackageKind

	// the name of the package contains this template
	PackageName *string

	// Version of the package. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM metadata
	// best practices. Can also be any string, but then we cannot guarantee any version checks
	PackageVersion *string

	// preview image file names. These will be taken from the solution artifacts
	PreviewImages []*string

	// preview image file names. These will be taken from the solution artifacts. used for dark theme support
	PreviewImagesDark []*string

	// Providers for the content item
	Providers []*string

	// Source of the content. This is where/how it was created.
	Source *MetadataSource

	// Support information for the template - type, name, contact information
	Support *MetadataSupport

	// the tactics the resource covers
	ThreatAnalysisTactics []*string

	// the techniques the resource covers, these have to be aligned with the tactics being used
	ThreatAnalysisTechniques []*string

	// Version of the content. Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM metadata
	// best practices. Can also be any string, but then we cannot guarantee any version checks
	Version *string

	// READ-ONLY; Dependant templates. Expandable.
	DependantTemplates []*TemplateProperties

	// READ-ONLY; Flag indicates if this template is deprecated
	IsDeprecated *Flag
}

// ThreatActor - Represents a threat actor in Azure Security Insights.
type ThreatActor struct {
	// REQUIRED; The kind of the TI object
	Kind *TIObjectKind

	// The properties of the TI object
	Properties *TIObjectCommonProperties

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

// GetTIObject implements the TIObjectClassification interface for type ThreatActor.
func (t *ThreatActor) GetTIObject() *TIObject {
	return &TIObject{
		ID:         t.ID,
		Kind:       t.Kind,
		Name:       t.Name,
		Properties: t.Properties,
		SystemData: t.SystemData,
		Type:       t.Type,
	}
}

// ThreatIntelligence property bag.
type ThreatIntelligence struct {
	// READ-ONLY; Confidence (must be between 0 and 1)
	Confidence *float64

	// READ-ONLY; Name of the provider from whom this Threat Intelligence information was received
	ProviderName *string

	// READ-ONLY; Report link
	ReportLink *string

	// READ-ONLY; Threat description (free text)
	ThreatDescription *string

	// READ-ONLY; Threat name (e.g. "Jedobot malware")
	ThreatName *string

	// READ-ONLY; Threat type (e.g. "Botnet")
	ThreatType *string
}

// ThreatIntelligenceAlertRule - Represents Threat Intelligence alert rule.
type ThreatIntelligenceAlertRule struct {
	// CONSTANT; The kind of the alert rule
	// Field has constant value AlertRuleKindThreatIntelligence, any specified value is ignored.
	Kind *AlertRuleKind

	// Etag of the azure resource
	Etag *string

	// Threat Intelligence alert rule properties
	Properties *ThreatIntelligenceAlertRuleProperties

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

// GetAlertRule implements the AlertRuleClassification interface for type ThreatIntelligenceAlertRule.
func (t *ThreatIntelligenceAlertRule) GetAlertRule() *AlertRule {
	return &AlertRule{
		Etag:       t.Etag,
		ID:         t.ID,
		Kind:       t.Kind,
		Name:       t.Name,
		SystemData: t.SystemData,
		Type:       t.Type,
	}
}

// ThreatIntelligenceAlertRuleProperties - Threat Intelligence alert rule base property bag.
type ThreatIntelligenceAlertRuleProperties struct {
	// REQUIRED; The Name of the alert rule template used to create this rule.
	AlertRuleTemplateName *string

	// REQUIRED; Determines whether this alert rule is enabled or disabled.
	Enabled *bool

	// READ-ONLY; The description of the alert rule.
	Description *string

	// READ-ONLY; The display name for alerts created by this alert rule.
	DisplayName *string

	// READ-ONLY; The last time that this alert has been modified.
	LastModifiedUTC *time.Time

	// READ-ONLY; The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// READ-ONLY; The sub-techniques of the alert rule
	SubTechniques []*string

	// READ-ONLY; The tactics of the alert rule
	Tactics []*AttackTactic

	// READ-ONLY; The techniques of the alert rule
	Techniques []*string
}

// ThreatIntelligenceAlertRuleTemplate - Represents Threat Intelligence alert rule template.
type ThreatIntelligenceAlertRuleTemplate struct {
	// REQUIRED; The kind of the alert rule
	Kind *AlertRuleKind

	// Threat Intelligence alert rule template properties
	Properties *ThreatIntelligenceAlertRuleTemplateProperties

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

// GetAlertRuleTemplate implements the AlertRuleTemplateClassification interface for type ThreatIntelligenceAlertRuleTemplate.
func (t *ThreatIntelligenceAlertRuleTemplate) GetAlertRuleTemplate() *AlertRuleTemplate {
	return &AlertRuleTemplate{
		ID:         t.ID,
		Kind:       t.Kind,
		Name:       t.Name,
		SystemData: t.SystemData,
		Type:       t.Type,
	}
}

// ThreatIntelligenceAlertRuleTemplateProperties - Threat Intelligence alert rule template properties
type ThreatIntelligenceAlertRuleTemplateProperties struct {
	// REQUIRED; The severity for alerts created by this alert rule.
	Severity *AlertSeverity

	// The number of alert rules that were created by this template
	AlertRulesCreatedByTemplateCount *int32

	// The description of the alert rule template.
	Description *string

	// The display name for alert rule template.
	DisplayName *string

	// The required data sources for this template
	RequiredDataConnectors []*AlertRuleTemplateDataSource

	// The alert rule template status.
	Status *TemplateStatus

	// The tactics of the alert rule
	Tactics []*AttackTactic

	// The techniques of the alert rule
	Techniques []*string

	// READ-ONLY; The time that this alert rule template has been added.
	CreatedDateUTC *time.Time

	// READ-ONLY; The last time that this alert rule template has been updated.
	LastUpdatedDateUTC *time.Time
}

// ThreatIntelligenceAppendTags - Array of tags to be appended to the threat intelligence indicator.
type ThreatIntelligenceAppendTags struct {
	// List of tags to be appended.
	ThreatIntelligenceTags []*string
}

// ThreatIntelligenceCount - Count of all the threat intelligence objects on the workspace that match the provided query.
type ThreatIntelligenceCount struct {
	// READ-ONLY; Count of all the threat intelligence objects on the workspace that match the provided query.
	Count *int32
}

// ThreatIntelligenceExternalReference - Describes external reference
type ThreatIntelligenceExternalReference struct {
	// External reference description
	Description *string

	// External reference ID
	ExternalID *string

	// External reference hashes
	Hashes map[string]*string

	// External reference source name
	SourceName *string

	// External reference URL
	URL *string
}

// ThreatIntelligenceFilteringCriteria - Filtering criteria for querying threat intelligence indicators.
type ThreatIntelligenceFilteringCriteria struct {
	// Ids of threat intelligence indicators
	IDs []*string

	// Parameter to include/exclude disabled indicators.
	IncludeDisabled *bool

	// Keywords for searching threat intelligence indicators
	Keywords []*string

	// Maximum confidence.
	MaxConfidence *int32

	// End time for ValidUntil filter.
	MaxValidUntil *string

	// Minimum confidence.
	MinConfidence *int32

	// Start time for ValidUntil filter.
	MinValidUntil *string

	// Page size
	PageSize *int32

	// Pattern types
	PatternTypes []*string

	// Skip token.
	SkipToken *string

	// Columns to sort by and sorting order
	SortBy []*ThreatIntelligenceSortingCriteria

	// Sources of threat intelligence indicators
	Sources []*string

	// Threat types of threat intelligence indicators
	ThreatTypes []*string
}

// ThreatIntelligenceGranularMarkingModel - Describes threat granular marking model entity
type ThreatIntelligenceGranularMarkingModel struct {
	// Language granular marking model
	Language *string

	// marking reference granular marking model
	MarkingRef *int32

	// granular marking model selectors
	Selectors []*string
}

// ThreatIntelligenceIndicatorModel - Threat intelligence indicator entity.
type ThreatIntelligenceIndicatorModel struct {
	// CONSTANT; Field has constant value ThreatIntelligenceResourceInnerKindIndicator, any specified value is ignored.
	Kind *ThreatIntelligenceResourceInnerKind

	// Etag of the azure resource
	Etag *string

	// Threat Intelligence Entity properties
	Properties *ThreatIntelligenceIndicatorProperties

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

// GetThreatIntelligenceInformation implements the ThreatIntelligenceInformationClassification interface for type ThreatIntelligenceIndicatorModel.
func (t *ThreatIntelligenceIndicatorModel) GetThreatIntelligenceInformation() *ThreatIntelligenceInformation {
	return &ThreatIntelligenceInformation{
		Etag:       t.Etag,
		ID:         t.ID,
		Kind:       t.Kind,
		Name:       t.Name,
		SystemData: t.SystemData,
		Type:       t.Type,
	}
}

// ThreatIntelligenceIndicatorProperties - Describes threat intelligence entity properties
type ThreatIntelligenceIndicatorProperties struct {
	// Confidence of threat intelligence entity
	Confidence *int32

	// Created by
	Created *string

	// Created by reference of threat intelligence entity
	CreatedByRef *string

	// Is threat intelligence entity defanged
	Defanged *bool

	// Description of a threat intelligence entity
	Description *string

	// Display name of a threat intelligence entity
	DisplayName *string

	// Extensions map
	Extensions map[string]any

	// External ID of threat intelligence entity
	ExternalID *string

	// External last updated time in UTC
	ExternalLastUpdatedTimeUTC *string

	// External References
	ExternalReferences []*ThreatIntelligenceExternalReference

	// Granular Markings
	GranularMarkings []*ThreatIntelligenceGranularMarkingModel

	// Indicator types of threat intelligence entities
	IndicatorTypes []*string

	// Kill chain phases
	KillChainPhases []*ThreatIntelligenceKillChainPhase

	// Labels of threat intelligence entity
	Labels []*string

	// Language of threat intelligence entity
	Language *string

	// Last updated time in UTC
	LastUpdatedTimeUTC *string

	// Modified by
	Modified *string

	// Threat intelligence entity object marking references
	ObjectMarkingRefs []*string

	// Parsed patterns
	ParsedPattern []*ThreatIntelligenceParsedPattern

	// Pattern of a threat intelligence entity
	Pattern *string

	// Pattern type of a threat intelligence entity
	PatternType *string

	// Pattern version of a threat intelligence entity
	PatternVersion *string

	// Is threat intelligence entity revoked
	Revoked *bool

	// Source of a threat intelligence entity
	Source *string

	// List of tags
	ThreatIntelligenceTags []*string

	// Threat types
	ThreatTypes []*string

	// Valid from
	ValidFrom *string

	// Valid until
	ValidUntil *string

	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string
}

// ThreatIntelligenceInformation - Threat intelligence information object.
type ThreatIntelligenceInformation struct {
	// REQUIRED; Metadata used by portal/tooling/etc to render different UX experiences for resources of the same type; e.g. ApiApps
	// are a kind of Microsoft.Web/sites type. If supported, the resource provider must validate and persist this value.
	Kind *ThreatIntelligenceResourceInnerKind

	// Etag of the azure resource
	Etag *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
}

// GetThreatIntelligenceInformation implements the ThreatIntelligenceInformationClassification interface for type ThreatIntelligenceInformation.
func (t *ThreatIntelligenceInformation) GetThreatIntelligenceInformation() *ThreatIntelligenceInformation {
	return t
}

// ThreatIntelligenceInformationList - List of all the threat intelligence information objects.
type ThreatIntelligenceInformationList struct {
	// REQUIRED; The ThreatIntelligenceInformation items on this page
	Value []ThreatIntelligenceInformationClassification

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

// ThreatIntelligenceKillChainPhase - Describes threat kill chain phase entity
type ThreatIntelligenceKillChainPhase struct {
	// Kill chainName name
	KillChainName *string

	// Phase name
	PhaseName *string
}

// ThreatIntelligenceList - List all the threat intelligence objects on the workspace that match the provided query.
type ThreatIntelligenceList struct {
	// REQUIRED; The TIObject items on this page
	Value []TIObjectClassification

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

// ThreatIntelligenceMetric - Describes threat intelligence metric
type ThreatIntelligenceMetric struct {
	// Last updated indicator metric
	LastUpdatedTimeUTC *string

	// Pattern type metrics
	PatternTypeMetrics []*ThreatIntelligenceMetricEntity

	// Source metrics
	SourceMetrics []*ThreatIntelligenceMetricEntity

	// Threat type metrics
	ThreatTypeMetrics []*ThreatIntelligenceMetricEntity
}

// ThreatIntelligenceMetricEntity - Describes threat intelligence metric entity
type ThreatIntelligenceMetricEntity struct {
	// Metric name
	MetricName *string

	// Metric value
	MetricValue *int32
}

// ThreatIntelligenceMetrics - Threat intelligence metrics.
type ThreatIntelligenceMetrics struct {
	// Threat intelligence metrics.
	Properties *ThreatIntelligenceMetric
}

// ThreatIntelligenceMetricsList - List of all the threat intelligence metric fields (type/threat type/source).
type ThreatIntelligenceMetricsList struct {
	// REQUIRED; Array of threat intelligence metric fields (type/threat type/source).
	Value []*ThreatIntelligenceMetrics
}

// ThreatIntelligenceParsedPattern - Describes parsed pattern entity
type ThreatIntelligenceParsedPattern struct {
	// Pattern type key
	PatternTypeKey *string

	// Pattern type keys
	PatternTypeValues []*ThreatIntelligenceParsedPatternTypeValue
}

// ThreatIntelligenceParsedPatternTypeValue - Describes threat kill chain phase entity
type ThreatIntelligenceParsedPatternTypeValue struct {
	// Value of parsed pattern
	Value *string

	// Type of the value
	ValueType *string
}

// ThreatIntelligenceSortingCriteria - List of available columns for sorting
type ThreatIntelligenceSortingCriteria struct {
	// Column name
	ItemKey *string

	// Sorting order (ascending/descending/unsorted).
	SortOrder *ThreatIntelligenceSortingOrder
}

// TiTaxiiCheckRequirements - Threat Intelligence TAXII data connector check requirements
type TiTaxiiCheckRequirements struct {
	// CONSTANT; Describes the kind of connector to be checked.
	// Field has constant value DataConnectorKindThreatIntelligenceTaxii, any specified value is ignored.
	Kind *DataConnectorKind

	// Threat Intelligence TAXII check required properties.
	Properties *TiTaxiiCheckRequirementsProperties
}

// GetDataConnectorsCheckRequirements implements the DataConnectorsCheckRequirementsClassification interface for type TiTaxiiCheckRequirements.
func (t *TiTaxiiCheckRequirements) GetDataConnectorsCheckRequirements() *DataConnectorsCheckRequirements {
	return &DataConnectorsCheckRequirements{
		Kind: t.Kind,
	}
}

// TiTaxiiCheckRequirementsProperties - Threat Intelligence TAXII data connector required properties.
type TiTaxiiCheckRequirementsProperties struct {
	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string
}

// TiTaxiiDataConnector - Data connector to pull Threat intelligence data from TAXII 2.0/2.1 server
type TiTaxiiDataConnector struct {
	// CONSTANT; The data connector kind
	// Field has constant value DataConnectorKindThreatIntelligenceTaxii, any specified value is ignored.
	Kind *DataConnectorKind

	// Etag of the azure resource
	Etag *string

	// Threat intelligence TAXII data connector properties.
	Properties *TiTaxiiDataConnectorProperties

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

// GetDataConnector implements the DataConnectorClassification interface for type TiTaxiiDataConnector.
func (t *TiTaxiiDataConnector) GetDataConnector() *DataConnector {
	return &DataConnector{
		Etag:       t.Etag,
		ID:         t.ID,
		Kind:       t.Kind,
		Name:       t.Name,
		SystemData: t.SystemData,
		Type:       t.Type,
	}
}

// TiTaxiiDataConnectorDataTypes - The available data types for Threat Intelligence TAXII data connector.
type TiTaxiiDataConnectorDataTypes struct {
	// REQUIRED; Data type for TAXII connector.
	TaxiiClient *TiTaxiiDataConnectorDataTypesTaxiiClient
}

// TiTaxiiDataConnectorDataTypesTaxiiClient - Data type for TAXII connector.
type TiTaxiiDataConnectorDataTypesTaxiiClient struct {
	// REQUIRED; Describe whether this data type connection is enabled or not.
	State *DataTypeState
}

// TiTaxiiDataConnectorProperties - Threat Intelligence TAXII data connector properties.
type TiTaxiiDataConnectorProperties struct {
	// REQUIRED; The available data types for Threat Intelligence TAXII data connector.
	DataTypes *TiTaxiiDataConnectorDataTypes

	// REQUIRED; The polling frequency for the TAXII server.
	PollingFrequency *PollingFrequency

	// REQUIRED; The tenant id to connect to, and get the data from.
	TenantID *string

	// The collection id of the TAXII server.
	CollectionID *string

	// The friendly name for the TAXII server.
	FriendlyName *string

	// The password for the TAXII server.
	Password *string

	// The lookback period for the TAXII server.
	TaxiiLookbackPeriod *time.Time

	// The API root for the TAXII server.
	TaxiiServer *string

	// The userName for the TAXII server.
	UserName *string

	// The workspace id.
	WorkspaceID *string
}

// TimelineAggregation - timeline aggregation information per kind
type TimelineAggregation struct {
	// REQUIRED; the total items found for a kind
	Count *int32

	// REQUIRED; the query kind
	Kind *EntityTimelineKind
}

// TimelineError - Timeline Query Errors.
type TimelineError struct {
	// REQUIRED; the error message
	ErrorMessage *string

	// REQUIRED; the query kind
	Kind *EntityTimelineKind

	// the query id
	QueryID *string
}

// TimelineResultsMetadata - Expansion result metadata.
type TimelineResultsMetadata struct {
	// REQUIRED; timeline aggregation per kind
	Aggregations []*TimelineAggregation

	// REQUIRED; the total items found for the timeline request
	TotalCount *int32

	// information about the failure queries
	Errors []*TimelineError
}

// TriggeredAnalyticsRuleRun - The triggered analytics rule run
type TriggeredAnalyticsRuleRun struct {
	// REQUIRED; The triggered analytics rule run Properties
	Properties *TriggeredAnalyticsRuleRunProperties

	// Etag of the azure resource
	Etag *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
}

// TriggeredAnalyticsRuleRunProperties - The triggered analytics rule run Properties
type TriggeredAnalyticsRuleRunProperties struct {
	// REQUIRED
	ExecutionTimeUTC *time.Time

	// REQUIRED
	RuleID *string

	// REQUIRED
	TriggeredAnalyticsRuleRunID *string

	// Dictionary of <any>
	RuleRunAdditionalData map[string]any

	// READ-ONLY; The triggered analytics rule run provisioning state
	ProvisioningState *ProvisioningState
}

// TriggeredAnalyticsRuleRuns - The triggered analytics rule run array
type TriggeredAnalyticsRuleRuns struct {
	// REQUIRED; The TriggeredAnalyticsRuleRun items on this page
	Value []*TriggeredAnalyticsRuleRun

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

// URLEntity - Represents a url entity.
type URLEntity struct {
	// REQUIRED; The kind of the entity.
	Kind *EntityKindEnum

	// Url entity properties
	Properties *URLEntityProperties

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

// GetEntity implements the EntityClassification interface for type URLEntity.
func (u *URLEntity) GetEntity() *Entity {
	return &Entity{
		ID:         u.ID,
		Kind:       u.Kind,
		Name:       u.Name,
		SystemData: u.SystemData,
		Type:       u.Type,
	}
}

// URLEntityProperties - Url entity property bag.
type URLEntityProperties struct {
	// READ-ONLY; A bag of custom fields that should be part of the entity and will be presented to the user.
	AdditionalData map[string]any

	// READ-ONLY; The graph item display name which is a short humanly readable description of the graph item instance. This property
	// is optional and might be system generated.
	FriendlyName *string

	// READ-ONLY; A full URL the entity points to
	URL *string
}

// Ueba - Settings with single toggle.
type Ueba struct {
	// CONSTANT; The kind of the setting
	// Field has constant value SettingKindUeba, any specified value is ignored.
	Kind *SettingKind

	// Etag of the azure resource
	Etag *string

	// Ueba properties
	Properties *UebaProperties

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

// GetSettings implements the SettingsClassification interface for type Ueba.
func (u *Ueba) GetSettings() *Settings {
	return &Settings{
		Etag:       u.Etag,
		ID:         u.ID,
		Kind:       u.Kind,
		Name:       u.Name,
		SystemData: u.SystemData,
		Type:       u.Type,
	}
}

// UebaProperties - Ueba property bag.
type UebaProperties struct {
	// The relevant data sources that enriched by ueba
	DataSources []*UebaDataSources
}

// UserInfo - User information that made some action
type UserInfo struct {
	// The object id of the user.
	ObjectID *string

	// READ-ONLY; The email of the user.
	Email *string

	// READ-ONLY; The name of the user.
	Name *string
}

// ValidationError - Describes an error encountered in the file during validation.
type ValidationError struct {
	// The number of the record that has the error.
	RecordIndex *int32

	// READ-ONLY; A list of descriptions of the error.
	ErrorMessages []*string
}

// Warning response structure.
type Warning struct {
	// READ-ONLY; Warning data.
	Warning *WarningBody
}

// WarningBody - Warning details.
type WarningBody struct {
	// READ-ONLY; An identifier for the warning. Codes are invariant and are intended to be consumed programmatically.
	Code *WarningCode

	// READ-ONLY
	Details []*WarningBody

	// READ-ONLY; A message describing the warning, intended to be suitable for display in a user interface.
	Message *string
}

// Watchlist - Represents a Watchlist in Azure Security Insights.
type Watchlist struct {
	// Etag of the azure resource
	Etag *string

	// Watchlist properties
	Properties *WatchlistProperties

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

// WatchlistItem - Represents a Watchlist Item in Azure Security Insights.
type WatchlistItem struct {
	// Etag of the azure resource
	Etag *string

	// Watchlist Item properties
	Properties *WatchlistItemProperties

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

// WatchlistItemList - List all the watchlist items.
type WatchlistItemList struct {
	// REQUIRED; The WatchlistItem items on this page
	Value []*WatchlistItem

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

// WatchlistItemProperties - Describes watchlist item properties
type WatchlistItemProperties struct {
	// REQUIRED; key-value pairs for a watchlist item
	ItemsKeyValue any

	// The time the watchlist item was created
	Created *time.Time

	// Describes a user that created the watchlist item
	CreatedBy *UserInfo

	// key-value pairs for a watchlist item entity mapping
	EntityMapping any

	// A flag that indicates if the watchlist item is deleted or not
	IsDeleted *bool

	// The tenantId to which the watchlist item belongs to
	TenantID *string

	// The last time the watchlist item was updated
	Updated *time.Time

	// Describes a user that updated the watchlist item
	UpdatedBy *UserInfo

	// The id (a Guid) of the watchlist item
	WatchlistItemID *string

	// The type of the watchlist item
	WatchlistItemType *string
}

// WatchlistList - List all the watchlists.
type WatchlistList struct {
	// REQUIRED; The Watchlist items on this page
	Value []*Watchlist

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

// WatchlistProperties - Describes watchlist properties
type WatchlistProperties struct {
	// REQUIRED; The display name of the watchlist
	DisplayName *string

	// REQUIRED; The search key is used to optimize query performance when using watchlists for joins with other data. For example,
	// enable a column with IP addresses to be the designated SearchKey field, then use this field as the key field when joining
	// to other event data by IP address.
	ItemsSearchKey *string

	// REQUIRED; The provider of the watchlist
	Provider *string

	// The content type of the raw content. Example : text/csv or text/tsv
	ContentType *string

	// The time the watchlist was created
	Created *time.Time

	// Describes a user that created the watchlist
	CreatedBy *UserInfo

	// The default duration of a watchlist (in ISO 8601 duration format)
	DefaultDuration *string

	// A description of the watchlist
	Description *string

	// A flag that indicates if the watchlist is deleted or not
	IsDeleted *bool

	// List of labels relevant to this watchlist
	Labels []*string

	// The number of lines in a csv/tsv content to skip before the header
	NumberOfLinesToSkip *int32

	// The raw content that represents to watchlist items to create. In case of csv/tsv content type, it's the content of the
	// file that will parsed by the endpoint
	RawContent *string

	// The filename of the watchlist, called 'source'
	Source *string

	// The sourceType of the watchlist
	SourceType *SourceType

	// The tenantId where the watchlist belongs to
	TenantID *string

	// The last time the watchlist was updated
	Updated *time.Time

	// Describes a user that updated the watchlist
	UpdatedBy *UserInfo

	// The status of the Watchlist upload : New, InProgress or Complete. **Note** : When a Watchlist upload status is InProgress,
	// the Watchlist cannot be deleted
	UploadStatus *string

	// The alias of the watchlist
	WatchlistAlias *string

	// The id (a Guid) of the watchlist
	WatchlistID *string

	// The type of the watchlist
	WatchlistType *string

	// READ-ONLY; Describes provisioning state
	ProvisioningState *ProvisioningState
}

// Webhook - Detail about the webhook object.
type Webhook struct {
	// A flag to instruct the backend service to rotate webhook secret.
	RotateWebhookSecret *bool

	// READ-ONLY; Unique identifier for the webhook.
	WebhookID *string

	// READ-ONLY; Time when the webhook secret was updated.
	WebhookSecretUpdateTime *time.Time

	// READ-ONLY; URL that gets invoked by the webhook.
	WebhookURL *string
}

// WorkloadIdentityFederation - Workload Identity Federation metadata.
type WorkloadIdentityFederation struct {
	// READ-ONLY; App id of Workload Identity Federation.
	AppID *string

	// READ-ONLY; Id of Workload Identity Federation.
	ID *string

	// READ-ONLY; Issuer of Workload Identity Federation.
	Issuer *string

	// READ-ONLY; Subject of Workload Identity Federation.
	Subject *string

	// READ-ONLY; Tenant id of Workload Identity Federation.
	TenantID *string
}

// WorkspaceManagerAssignment - The workspace manager assignment
type WorkspaceManagerAssignment struct {
	// The workspace manager assignment object
	Properties *WorkspaceManagerAssignmentProperties

	// READ-ONLY; Resource Etag.
	Etag *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
}

// WorkspaceManagerAssignmentList - List of all the workspace manager assignments.
type WorkspaceManagerAssignmentList struct {
	// REQUIRED; The WorkspaceManagerAssignment items on this page
	Value []*WorkspaceManagerAssignment

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

// WorkspaceManagerAssignmentProperties - The workspace manager assignment properties
type WorkspaceManagerAssignmentProperties struct {
	// REQUIRED; List of resources included in this workspace manager assignment
	Items []*AssignmentItem

	// REQUIRED; The resource name of the workspace manager group targeted by the workspace manager assignment
	TargetResourceName *string

	// READ-ONLY; The time the last job associated to this assignment ended at
	LastJobEndTime *time.Time

	// READ-ONLY; State of the last job associated to this assignment
	LastJobProvisioningState *ProvisioningState
}

// WorkspaceManagerConfiguration - The workspace manager configuration
type WorkspaceManagerConfiguration struct {
	// The workspace manager configuration object
	Properties *WorkspaceManagerConfigurationProperties

	// READ-ONLY; Resource Etag.
	Etag *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
}

// WorkspaceManagerConfigurationList - List all the workspace manager configurations for the workspace.
type WorkspaceManagerConfigurationList struct {
	// REQUIRED; The WorkspaceManagerConfiguration items on this page
	Value []*WorkspaceManagerConfiguration

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

// WorkspaceManagerConfigurationProperties - The workspace manager configuration properties
type WorkspaceManagerConfigurationProperties struct {
	// REQUIRED; The current mode of the workspace manager configuration
	Mode *Mode
}

// WorkspaceManagerGroup - The workspace manager group
type WorkspaceManagerGroup struct {
	// The workspace manager group object
	Properties *WorkspaceManagerGroupProperties

	// READ-ONLY; Resource Etag.
	Etag *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
}

// WorkspaceManagerGroupList - List of all the workspace manager groups.
type WorkspaceManagerGroupList struct {
	// REQUIRED; The WorkspaceManagerGroup items on this page
	Value []*WorkspaceManagerGroup

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

// WorkspaceManagerGroupProperties - The workspace manager group properties
type WorkspaceManagerGroupProperties struct {
	// REQUIRED; The display name of the workspace manager group
	DisplayName *string

	// REQUIRED; The names of the workspace manager members participating in this group.
	MemberResourceNames []*string

	// The description of the workspace manager group
	Description *string
}

// WorkspaceManagerMember - The workspace manager member
type WorkspaceManagerMember struct {
	// The workspace manager member object
	Properties *WorkspaceManagerMemberProperties

	// READ-ONLY; Resource Etag.
	Etag *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
}

// WorkspaceManagerMemberProperties - The workspace manager member properties
type WorkspaceManagerMemberProperties struct {
	// REQUIRED; Fully qualified resource ID of the target Sentinel workspace joining the given Sentinel workspace manager
	TargetWorkspaceResourceID *string

	// REQUIRED; Tenant id of the target Sentinel workspace joining the given Sentinel workspace manager
	TargetWorkspaceTenantID *string
}

// WorkspaceManagerMembersList - List of workspace manager members
type WorkspaceManagerMembersList struct {
	// REQUIRED; The WorkspaceManagerMember items on this page
	Value []*WorkspaceManagerMember

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