// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"

// Definition of ARM tracked top level resource.
type DataCollectionRuleResource_STATUS struct {
	// Etag: Resource entity tag (ETag).
	Etag *string `json:"etag,omitempty"`

	// Id: Fully qualified ID of the resource.
	Id *string `json:"id,omitempty"`

	// Identity: Managed service identity of the resource.
	Identity *ManagedServiceIdentity_STATUS `json:"identity,omitempty"`

	// Kind: The kind of the resource.
	Kind *DataCollectionRuleResource_Kind_STATUS `json:"kind,omitempty"`

	// Location: The geo-location where the resource lives.
	Location *string `json:"location,omitempty"`

	// Name: The name of the resource.
	Name *string `json:"name,omitempty"`

	// Properties: Resource properties.
	Properties *DataCollectionRule_STATUS `json:"properties,omitempty"`

	// SystemData: Metadata pertaining to creation and last modification of the resource.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

	// Tags: Resource tags.
	Tags map[string]string `json:"tags,omitempty"`

	// Type: The type of the resource.
	Type *string `json:"type,omitempty"`
}

// Definition of what monitoring data to collect and where that data should be sent.
type DataCollectionRule_STATUS struct {
	// AgentSettings: Agent settings used to modify agent behavior on a given host
	AgentSettings *AgentSettingsSpec_STATUS `json:"agentSettings,omitempty"`

	// DataCollectionEndpointId: The resource ID of the data collection endpoint that this rule can be used with.
	DataCollectionEndpointId *string `json:"dataCollectionEndpointId,omitempty"`

	// DataFlows: The specification of data flows.
	DataFlows []DataFlow_STATUS `json:"dataFlows,omitempty"`

	// DataSources: The specification of data sources.
	// This property is optional and can be omitted if the rule is meant to be used via direct calls to the provisioned
	// endpoint.
	DataSources *DataSourcesSpec_STATUS `json:"dataSources,omitempty"`

	// Description: Description of the data collection rule.
	Description *string `json:"description,omitempty"`

	// Destinations: The specification of destinations.
	Destinations *DestinationsSpec_STATUS `json:"destinations,omitempty"`

	// Endpoints: Defines the ingestion endpoints to send data to via this rule.
	Endpoints *EndpointsSpec_STATUS `json:"endpoints,omitempty"`

	// ImmutableId: The immutable ID of this data collection rule. This property is READ-ONLY.
	ImmutableId *string `json:"immutableId,omitempty"`

	// Metadata: Metadata about the resource
	Metadata *Metadata_STATUS `json:"metadata,omitempty"`

	// ProvisioningState: The resource provisioning state.
	ProvisioningState *DataCollectionRule_ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// References: Defines all the references that may be used in other sections of the DCR
	References *ReferencesSpec_STATUS `json:"references,omitempty"`

	// StreamDeclarations: Declaration of custom streams used in this rule.
	StreamDeclarations map[string]StreamDeclaration_STATUS `json:"streamDeclarations,omitempty"`
}

type DataCollectionRuleResource_Kind_STATUS string

const (
	DataCollectionRuleResource_Kind_STATUS_Linux   = DataCollectionRuleResource_Kind_STATUS("Linux")
	DataCollectionRuleResource_Kind_STATUS_Windows = DataCollectionRuleResource_Kind_STATUS("Windows")
)

// Mapping from string to DataCollectionRuleResource_Kind_STATUS
var dataCollectionRuleResource_Kind_STATUS_Values = map[string]DataCollectionRuleResource_Kind_STATUS{
	"linux":   DataCollectionRuleResource_Kind_STATUS_Linux,
	"windows": DataCollectionRuleResource_Kind_STATUS_Windows,
}

// An agent setting
type AgentSettingsSpec_STATUS struct {
	// Logs: All the settings that are applicable to the logs agent (AMA)
	Logs []AgentSetting_STATUS `json:"logs,omitempty"`
}

type DataCollectionRule_ProvisioningState_STATUS string

const (
	DataCollectionRule_ProvisioningState_STATUS_Canceled  = DataCollectionRule_ProvisioningState_STATUS("Canceled")
	DataCollectionRule_ProvisioningState_STATUS_Creating  = DataCollectionRule_ProvisioningState_STATUS("Creating")
	DataCollectionRule_ProvisioningState_STATUS_Deleting  = DataCollectionRule_ProvisioningState_STATUS("Deleting")
	DataCollectionRule_ProvisioningState_STATUS_Failed    = DataCollectionRule_ProvisioningState_STATUS("Failed")
	DataCollectionRule_ProvisioningState_STATUS_Succeeded = DataCollectionRule_ProvisioningState_STATUS("Succeeded")
	DataCollectionRule_ProvisioningState_STATUS_Updating  = DataCollectionRule_ProvisioningState_STATUS("Updating")
)

// Mapping from string to DataCollectionRule_ProvisioningState_STATUS
var dataCollectionRule_ProvisioningState_STATUS_Values = map[string]DataCollectionRule_ProvisioningState_STATUS{
	"canceled":  DataCollectionRule_ProvisioningState_STATUS_Canceled,
	"creating":  DataCollectionRule_ProvisioningState_STATUS_Creating,
	"deleting":  DataCollectionRule_ProvisioningState_STATUS_Deleting,
	"failed":    DataCollectionRule_ProvisioningState_STATUS_Failed,
	"succeeded": DataCollectionRule_ProvisioningState_STATUS_Succeeded,
	"updating":  DataCollectionRule_ProvisioningState_STATUS_Updating,
}

// Definition of which streams are sent to which destinations.
type DataFlow_STATUS struct {
	// BuiltInTransform: The builtIn transform to transform stream data
	BuiltInTransform *string `json:"builtInTransform,omitempty"`

	// CaptureOverflow: Flag to enable overflow column in LA destinations
	CaptureOverflow *bool `json:"captureOverflow,omitempty"`

	// Destinations: List of destinations for this data flow.
	Destinations []string `json:"destinations,omitempty"`

	// OutputStream: The output stream of the transform. Only required if the transform changes data to a different stream.
	OutputStream *string `json:"outputStream,omitempty"`

	// Streams: List of streams for this data flow.
	Streams []DataFlow_Streams_STATUS `json:"streams,omitempty"`

	// TransformKql: The KQL query to transform stream data.
	TransformKql *string `json:"transformKql,omitempty"`
}

// Specification of data sources that will be collected.
type DataSourcesSpec_STATUS struct {
	// DataImports: Specifications of pull based data sources
	DataImports *DataImportSources_STATUS `json:"dataImports,omitempty"`

	// Extensions: The list of Azure VM extension data source configurations.
	Extensions []ExtensionDataSource_STATUS `json:"extensions,omitempty"`

	// IisLogs: The list of IIS logs source configurations.
	IisLogs []IisLogsDataSource_STATUS `json:"iisLogs,omitempty"`

	// LogFiles: The list of Log files source configurations.
	LogFiles []LogFilesDataSource_STATUS `json:"logFiles,omitempty"`

	// PerformanceCounters: The list of performance counter data source configurations.
	PerformanceCounters []PerfCounterDataSource_STATUS `json:"performanceCounters,omitempty"`

	// PlatformTelemetry: The list of platform telemetry configurations
	PlatformTelemetry []PlatformTelemetryDataSource_STATUS `json:"platformTelemetry,omitempty"`

	// PrometheusForwarder: The list of Prometheus forwarder data source configurations.
	PrometheusForwarder []PrometheusForwarderDataSource_STATUS `json:"prometheusForwarder,omitempty"`

	// Syslog: The list of Syslog data source configurations.
	Syslog []SyslogDataSource_STATUS `json:"syslog,omitempty"`

	// WindowsEventLogs: The list of Windows Event Log data source configurations.
	WindowsEventLogs []WindowsEventLogDataSource_STATUS `json:"windowsEventLogs,omitempty"`

	// WindowsFirewallLogs: The list of Windows Firewall logs source configurations.
	WindowsFirewallLogs []WindowsFirewallLogsDataSource_STATUS `json:"windowsFirewallLogs,omitempty"`
}

// Specification of destinations that can be used in data flows.
type DestinationsSpec_STATUS struct {
	// AzureDataExplorer: List of Azure Data Explorer destinations.
	AzureDataExplorer []AdxDestination_STATUS `json:"azureDataExplorer,omitempty"`

	// AzureMonitorMetrics: Azure Monitor Metrics destination.
	AzureMonitorMetrics *AzureMonitorMetricsDestination_STATUS `json:"azureMonitorMetrics,omitempty"`

	// EventHubs: List of Event Hubs destinations.
	EventHubs []EventHubDestination_STATUS `json:"eventHubs,omitempty"`

	// EventHubsDirect: List of Event Hubs Direct destinations.
	EventHubsDirect []EventHubDirectDestination_STATUS `json:"eventHubsDirect,omitempty"`

	// LogAnalytics: List of Log Analytics destinations.
	LogAnalytics []LogAnalyticsDestination_STATUS `json:"logAnalytics,omitempty"`

	// MicrosoftFabric: List of Microsoft Fabric destinations.
	MicrosoftFabric []MicrosoftFabricDestination_STATUS `json:"microsoftFabric,omitempty"`

	// MonitoringAccounts: List of monitoring account destinations.
	MonitoringAccounts []MonitoringAccountDestination_STATUS `json:"monitoringAccounts,omitempty"`

	// StorageAccounts: List of storage accounts destinations.
	StorageAccounts []StorageBlobDestination_STATUS `json:"storageAccounts,omitempty"`

	// StorageBlobsDirect: List of Storage Blob Direct destinations. To be used only for sending data directly to store from
	// the agent.
	StorageBlobsDirect []StorageBlobDestination_STATUS `json:"storageBlobsDirect,omitempty"`

	// StorageTablesDirect: List of Storage Table Direct destinations.
	StorageTablesDirect []StorageTableDestination_STATUS `json:"storageTablesDirect,omitempty"`
}

// This defines all the ingestion endpoints that can be used by this rule
type EndpointsSpec_STATUS struct {
	// LogsIngestion: The ingestion endpoint for logs
	LogsIngestion *string `json:"logsIngestion,omitempty"`

	// MetricsIngestion: The ingestion endpoint for metrics
	MetricsIngestion *string `json:"metricsIngestion,omitempty"`
}

// This section defines all the references that may be used in other sections of the DCR
type ReferencesSpec_STATUS struct {
	// EnrichmentData: All the enrichment data sources referenced in data flows
	EnrichmentData *EnrichmentData_STATUS `json:"enrichmentData,omitempty"`
}

// Declaration of a custom stream.
type StreamDeclaration_STATUS struct {
	// Columns: List of columns used by data in this stream.
	Columns []ColumnDefinition_STATUS `json:"columns,omitempty"`
}

// Azure Data Explorer (Adx) destination.
type AdxDestination_STATUS struct {
	// DatabaseName: The name of the database to which data will be ingested.
	DatabaseName *string `json:"databaseName,omitempty"`

	// IngestionUri: The ingestion uri of the Adx resource.
	IngestionUri *string `json:"ingestionUri,omitempty"`

	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// ResourceId: The ARM resource id of the Adx resource.
	ResourceId *string `json:"resourceId,omitempty"`
}

// A setting used to control an agent behavior on a host machine
type AgentSetting_STATUS struct {
	// Name: The name of the setting.
	// Must be part of the list of supported settings
	Name *AgentSetting_Name_STATUS `json:"name,omitempty"`

	// Value: The value of the setting
	Value *string `json:"value,omitempty"`
}

// Azure Monitor Metrics destination.
type AzureMonitorMetricsDestination_STATUS struct {
	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`
}

// Definition of custom data column.
type ColumnDefinition_STATUS struct {
	// Name: The name of the column.
	Name *string `json:"name,omitempty"`

	// Type: The type of the column data.
	Type *ColumnDefinition_Type_STATUS `json:"type,omitempty"`
}

type DataFlow_Streams_STATUS string

const (
	DataFlow_Streams_STATUS_MicrosoftEvent           = DataFlow_Streams_STATUS("Microsoft-Event")
	DataFlow_Streams_STATUS_MicrosoftInsightsMetrics = DataFlow_Streams_STATUS("Microsoft-InsightsMetrics")
	DataFlow_Streams_STATUS_MicrosoftPerf            = DataFlow_Streams_STATUS("Microsoft-Perf")
	DataFlow_Streams_STATUS_MicrosoftSyslog          = DataFlow_Streams_STATUS("Microsoft-Syslog")
	DataFlow_Streams_STATUS_MicrosoftWindowsEvent    = DataFlow_Streams_STATUS("Microsoft-WindowsEvent")
)

// Mapping from string to DataFlow_Streams_STATUS
var dataFlow_Streams_STATUS_Values = map[string]DataFlow_Streams_STATUS{
	"microsoft-event":           DataFlow_Streams_STATUS_MicrosoftEvent,
	"microsoft-insightsmetrics": DataFlow_Streams_STATUS_MicrosoftInsightsMetrics,
	"microsoft-perf":            DataFlow_Streams_STATUS_MicrosoftPerf,
	"microsoft-syslog":          DataFlow_Streams_STATUS_MicrosoftSyslog,
	"microsoft-windowsevent":    DataFlow_Streams_STATUS_MicrosoftWindowsEvent,
}

type DataImportSources_STATUS struct {
	// EventHub: Definition of Event Hub configuration.
	EventHub *EventHubDataSource_STATUS `json:"eventHub,omitempty"`
}

// All the enrichment data sources referenced in data flows
type EnrichmentData_STATUS struct {
	// StorageBlobs: All the storage blobs used as enrichment data sources
	StorageBlobs []StorageBlob_STATUS `json:"storageBlobs,omitempty"`
}

type EventHubDestination_STATUS struct {
	// EventHubResourceId: The resource ID of the event hub.
	EventHubResourceId *string `json:"eventHubResourceId,omitempty"`

	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`
}

type EventHubDirectDestination_STATUS struct {
	// EventHubResourceId: The resource ID of the event hub.
	EventHubResourceId *string `json:"eventHubResourceId,omitempty"`

	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`
}

// Definition of which data will be collected from a separate VM extension that integrates with the Azure Monitor
// Agent.
// Collected from either Windows and Linux machines, depending on which extension is defined.
type ExtensionDataSource_STATUS struct {
	// ExtensionName: The name of the VM extension.
	ExtensionName *string `json:"extensionName,omitempty"`

	// ExtensionSettings: The extension settings. The format is specific for particular extension.
	ExtensionSettings map[string]v1.JSON `json:"extensionSettings,omitempty"`

	// InputDataSources: The list of data sources this extension needs data from.
	InputDataSources []string `json:"inputDataSources,omitempty"`

	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Streams: List of streams that this data source will be sent to.
	// A stream indicates what schema will be used for this data and usually what table in Log Analytics the data will be sent
	// to.
	Streams []ExtensionDataSource_Streams_STATUS `json:"streams,omitempty"`
}

// Enables IIS logs to be collected by this data collection rule.
type IisLogsDataSource_STATUS struct {
	// LogDirectories: Absolute paths file location
	LogDirectories []string `json:"logDirectories,omitempty"`

	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Streams: IIS streams
	Streams []string `json:"streams,omitempty"`

	// TransformKql: The KQL query to transform the data source.
	TransformKql *string `json:"transformKql,omitempty"`
}

// Log Analytics destination.
type LogAnalyticsDestination_STATUS struct {
	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// WorkspaceId: The Customer ID of the Log Analytics workspace.
	WorkspaceId *string `json:"workspaceId,omitempty"`

	// WorkspaceResourceId: The resource ID of the Log Analytics workspace.
	WorkspaceResourceId *string `json:"workspaceResourceId,omitempty"`
}

// Definition of which custom log files will be collected by this data collection rule
type LogFilesDataSource_STATUS struct {
	// FilePatterns: File Patterns where the log files are located
	FilePatterns []string `json:"filePatterns,omitempty"`

	// Format: The data format of the log files
	Format *LogFilesDataSource_Format_STATUS `json:"format,omitempty"`

	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Settings: The log files specific settings.
	Settings *LogFileSettings_STATUS `json:"settings,omitempty"`

	// Streams: List of streams that this data source will be sent to.
	// A stream indicates what schema will be used for this data source
	Streams []string `json:"streams,omitempty"`

	// TransformKql: The KQL query to transform the data source.
	TransformKql *string `json:"transformKql,omitempty"`
}

// Microsoft Fabric destination (non-Azure).
type MicrosoftFabricDestination_STATUS struct {
	// ArtifactId: The artifact id of the Microsoft Fabric resource.
	ArtifactId *string `json:"artifactId,omitempty"`

	// DatabaseName: The name of the database to which data will be ingested.
	DatabaseName *string `json:"databaseName,omitempty"`

	// IngestionUri: The ingestion uri of the Microsoft Fabric resource.
	IngestionUri *string `json:"ingestionUri,omitempty"`

	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// TenantId: The tenant id of the Microsoft Fabric resource.
	TenantId *string `json:"tenantId,omitempty"`
}

// Monitoring account destination.
type MonitoringAccountDestination_STATUS struct {
	// AccountId: The immutable ID  of the account.
	AccountId *string `json:"accountId,omitempty"`

	// AccountResourceId: The resource ID of the monitoring account.
	AccountResourceId *string `json:"accountResourceId,omitempty"`

	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`
}

// Definition of which performance counters will be collected and how they will be collected by this data collection
// rule.
// Collected from both Windows and Linux machines where the counter is present.
type PerfCounterDataSource_STATUS struct {
	// CounterSpecifiers: A list of specifier names of the performance counters you want to collect.
	// Use a wildcard (*) to collect a counter for all instances.
	// To get a list of performance counters on Windows, run the command 'typeperf'.
	CounterSpecifiers []string `json:"counterSpecifiers,omitempty"`

	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// SamplingFrequencyInSeconds: The number of seconds between consecutive counter measurements (samples).
	SamplingFrequencyInSeconds *int `json:"samplingFrequencyInSeconds,omitempty"`

	// Streams: List of streams that this data source will be sent to.
	// A stream indicates what schema will be used for this data and usually what table in Log Analytics the data will be sent
	// to.
	Streams []PerfCounterDataSource_Streams_STATUS `json:"streams,omitempty"`

	// TransformKql: The KQL query to transform the data source.
	TransformKql *string `json:"transformKql,omitempty"`
}

// Definition of platform telemetry data source configuration
type PlatformTelemetryDataSource_STATUS struct {
	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Streams: List of platform telemetry streams to collect
	Streams []string `json:"streams,omitempty"`
}

// Definition of Prometheus metrics forwarding configuration.
type PrometheusForwarderDataSource_STATUS struct {
	// LabelIncludeFilter: The list of label inclusion filters in the form of label "name-value" pairs.
	// Currently only one label is supported: 'microsoft_metrics_include_label'.
	// Label values are matched case-insensitively.
	LabelIncludeFilter map[string]string `json:"labelIncludeFilter,omitempty"`

	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Streams: List of streams that this data source will be sent to.
	Streams []PrometheusForwarderDataSource_Streams_STATUS `json:"streams,omitempty"`
}

type StorageBlobDestination_STATUS struct {
	// ContainerName: The container name of the Storage Blob.
	ContainerName *string `json:"containerName,omitempty"`

	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// StorageAccountResourceId: The resource ID of the storage account.
	StorageAccountResourceId *string `json:"storageAccountResourceId,omitempty"`
}

type StorageTableDestination_STATUS struct {
	// Name: A friendly name for the destination.
	// This name should be unique across all destinations (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// StorageAccountResourceId: The resource ID of the storage account.
	StorageAccountResourceId *string `json:"storageAccountResourceId,omitempty"`

	// TableName: The name of the Storage Table.
	TableName *string `json:"tableName,omitempty"`
}

// Definition of which syslog data will be collected and how it will be collected.
// Only collected from Linux machines.
type SyslogDataSource_STATUS struct {
	// FacilityNames: The list of facility names.
	FacilityNames []SyslogDataSource_FacilityNames_STATUS `json:"facilityNames,omitempty"`

	// LogLevels: The log levels to collect.
	LogLevels []SyslogDataSource_LogLevels_STATUS `json:"logLevels,omitempty"`

	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Streams: List of streams that this data source will be sent to.
	// A stream indicates what schema will be used for this data and usually what table in Log Analytics the data will be sent
	// to.
	Streams []SyslogDataSource_Streams_STATUS `json:"streams,omitempty"`

	// TransformKql: The KQL query to transform the data source.
	TransformKql *string `json:"transformKql,omitempty"`
}

// Definition of which Windows Event Log events will be collected and how they will be collected.
// Only collected from
// Windows machines.
type WindowsEventLogDataSource_STATUS struct {
	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Streams: List of streams that this data source will be sent to.
	// A stream indicates what schema will be used for this data and usually what table in Log Analytics the data will be sent
	// to.
	Streams []WindowsEventLogDataSource_Streams_STATUS `json:"streams,omitempty"`

	// TransformKql: The KQL query to transform the data source.
	TransformKql *string `json:"transformKql,omitempty"`

	// XPathQueries: A list of Windows Event Log queries in XPATH format.
	XPathQueries []string `json:"xPathQueries,omitempty"`
}

// Enables Firewall logs to be collected by this data collection rule.
type WindowsFirewallLogsDataSource_STATUS struct {
	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// ProfileFilter: Firewall logs profile filter
	ProfileFilter []WindowsFirewallLogsDataSource_ProfileFilter_STATUS `json:"profileFilter,omitempty"`

	// Streams: Firewall logs streams
	Streams []string `json:"streams,omitempty"`
}

type AgentSetting_Name_STATUS string

const (
	AgentSetting_Name_STATUS_MaxDiskQuotaInMB                  = AgentSetting_Name_STATUS("MaxDiskQuotaInMB")
	AgentSetting_Name_STATUS_UseTimeReceivedForForwardedEvents = AgentSetting_Name_STATUS("UseTimeReceivedForForwardedEvents")
)

// Mapping from string to AgentSetting_Name_STATUS
var agentSetting_Name_STATUS_Values = map[string]AgentSetting_Name_STATUS{
	"maxdiskquotainmb":                  AgentSetting_Name_STATUS_MaxDiskQuotaInMB,
	"usetimereceivedforforwardedevents": AgentSetting_Name_STATUS_UseTimeReceivedForForwardedEvents,
}

type ColumnDefinition_Type_STATUS string

const (
	ColumnDefinition_Type_STATUS_Boolean  = ColumnDefinition_Type_STATUS("boolean")
	ColumnDefinition_Type_STATUS_Datetime = ColumnDefinition_Type_STATUS("datetime")
	ColumnDefinition_Type_STATUS_Dynamic  = ColumnDefinition_Type_STATUS("dynamic")
	ColumnDefinition_Type_STATUS_Int      = ColumnDefinition_Type_STATUS("int")
	ColumnDefinition_Type_STATUS_Long     = ColumnDefinition_Type_STATUS("long")
	ColumnDefinition_Type_STATUS_Real     = ColumnDefinition_Type_STATUS("real")
	ColumnDefinition_Type_STATUS_String   = ColumnDefinition_Type_STATUS("string")
)

// Mapping from string to ColumnDefinition_Type_STATUS
var columnDefinition_Type_STATUS_Values = map[string]ColumnDefinition_Type_STATUS{
	"boolean":  ColumnDefinition_Type_STATUS_Boolean,
	"datetime": ColumnDefinition_Type_STATUS_Datetime,
	"dynamic":  ColumnDefinition_Type_STATUS_Dynamic,
	"int":      ColumnDefinition_Type_STATUS_Int,
	"long":     ColumnDefinition_Type_STATUS_Long,
	"real":     ColumnDefinition_Type_STATUS_Real,
	"string":   ColumnDefinition_Type_STATUS_String,
}

type EventHubDataSource_STATUS struct {
	// ConsumerGroup: Event Hub consumer group name
	ConsumerGroup *string `json:"consumerGroup,omitempty"`

	// Name: A friendly name for the data source.
	// This name should be unique across all data sources (regardless of type) within the data collection rule.
	Name *string `json:"name,omitempty"`

	// Stream: The stream to collect from EventHub
	Stream *string `json:"stream,omitempty"`
}

type ExtensionDataSource_Streams_STATUS string

const (
	ExtensionDataSource_Streams_STATUS_MicrosoftEvent           = ExtensionDataSource_Streams_STATUS("Microsoft-Event")
	ExtensionDataSource_Streams_STATUS_MicrosoftInsightsMetrics = ExtensionDataSource_Streams_STATUS("Microsoft-InsightsMetrics")
	ExtensionDataSource_Streams_STATUS_MicrosoftPerf            = ExtensionDataSource_Streams_STATUS("Microsoft-Perf")
	ExtensionDataSource_Streams_STATUS_MicrosoftSyslog          = ExtensionDataSource_Streams_STATUS("Microsoft-Syslog")
	ExtensionDataSource_Streams_STATUS_MicrosoftWindowsEvent    = ExtensionDataSource_Streams_STATUS("Microsoft-WindowsEvent")
)

// Mapping from string to ExtensionDataSource_Streams_STATUS
var extensionDataSource_Streams_STATUS_Values = map[string]ExtensionDataSource_Streams_STATUS{
	"microsoft-event":           ExtensionDataSource_Streams_STATUS_MicrosoftEvent,
	"microsoft-insightsmetrics": ExtensionDataSource_Streams_STATUS_MicrosoftInsightsMetrics,
	"microsoft-perf":            ExtensionDataSource_Streams_STATUS_MicrosoftPerf,
	"microsoft-syslog":          ExtensionDataSource_Streams_STATUS_MicrosoftSyslog,
	"microsoft-windowsevent":    ExtensionDataSource_Streams_STATUS_MicrosoftWindowsEvent,
}

type LogFilesDataSource_Format_STATUS string

const (
	LogFilesDataSource_Format_STATUS_Json = LogFilesDataSource_Format_STATUS("json")
	LogFilesDataSource_Format_STATUS_Text = LogFilesDataSource_Format_STATUS("text")
)

// Mapping from string to LogFilesDataSource_Format_STATUS
var logFilesDataSource_Format_STATUS_Values = map[string]LogFilesDataSource_Format_STATUS{
	"json": LogFilesDataSource_Format_STATUS_Json,
	"text": LogFilesDataSource_Format_STATUS_Text,
}

// Settings for different log file formats
type LogFileSettings_STATUS struct {
	// Text: Text settings
	Text *LogFileTextSettings_STATUS `json:"text,omitempty"`
}

type PerfCounterDataSource_Streams_STATUS string

const (
	PerfCounterDataSource_Streams_STATUS_MicrosoftInsightsMetrics = PerfCounterDataSource_Streams_STATUS("Microsoft-InsightsMetrics")
	PerfCounterDataSource_Streams_STATUS_MicrosoftPerf            = PerfCounterDataSource_Streams_STATUS("Microsoft-Perf")
)

// Mapping from string to PerfCounterDataSource_Streams_STATUS
var perfCounterDataSource_Streams_STATUS_Values = map[string]PerfCounterDataSource_Streams_STATUS{
	"microsoft-insightsmetrics": PerfCounterDataSource_Streams_STATUS_MicrosoftInsightsMetrics,
	"microsoft-perf":            PerfCounterDataSource_Streams_STATUS_MicrosoftPerf,
}

type PrometheusForwarderDataSource_Streams_STATUS string

const PrometheusForwarderDataSource_Streams_STATUS_MicrosoftPrometheusMetrics = PrometheusForwarderDataSource_Streams_STATUS("Microsoft-PrometheusMetrics")

// Mapping from string to PrometheusForwarderDataSource_Streams_STATUS
var prometheusForwarderDataSource_Streams_STATUS_Values = map[string]PrometheusForwarderDataSource_Streams_STATUS{
	"microsoft-prometheusmetrics": PrometheusForwarderDataSource_Streams_STATUS_MicrosoftPrometheusMetrics,
}

type StorageBlob_STATUS struct {
	// BlobUrl: Url of the storage blob
	BlobUrl *string `json:"blobUrl,omitempty"`

	// LookupType: The type of lookup to perform on the blob
	LookupType *StorageBlob_LookupType_STATUS `json:"lookupType,omitempty"`

	// Name: The name of the enrichment data source used as an alias when referencing this data source in data flows
	Name *string `json:"name,omitempty"`

	// ResourceId: Resource Id of the storage account that hosts the blob
	ResourceId *string `json:"resourceId,omitempty"`
}

type SyslogDataSource_FacilityNames_STATUS string

const (
	SyslogDataSource_FacilityNames_STATUS_Alert    = SyslogDataSource_FacilityNames_STATUS("alert")
	SyslogDataSource_FacilityNames_STATUS_Audit    = SyslogDataSource_FacilityNames_STATUS("audit")
	SyslogDataSource_FacilityNames_STATUS_Auth     = SyslogDataSource_FacilityNames_STATUS("auth")
	SyslogDataSource_FacilityNames_STATUS_Authpriv = SyslogDataSource_FacilityNames_STATUS("authpriv")
	SyslogDataSource_FacilityNames_STATUS_Clock    = SyslogDataSource_FacilityNames_STATUS("clock")
	SyslogDataSource_FacilityNames_STATUS_Cron     = SyslogDataSource_FacilityNames_STATUS("cron")
	SyslogDataSource_FacilityNames_STATUS_Daemon   = SyslogDataSource_FacilityNames_STATUS("daemon")
	SyslogDataSource_FacilityNames_STATUS_Ftp      = SyslogDataSource_FacilityNames_STATUS("ftp")
	SyslogDataSource_FacilityNames_STATUS_Kern     = SyslogDataSource_FacilityNames_STATUS("kern")
	SyslogDataSource_FacilityNames_STATUS_Local0   = SyslogDataSource_FacilityNames_STATUS("local0")
	SyslogDataSource_FacilityNames_STATUS_Local1   = SyslogDataSource_FacilityNames_STATUS("local1")
	SyslogDataSource_FacilityNames_STATUS_Local2   = SyslogDataSource_FacilityNames_STATUS("local2")
	SyslogDataSource_FacilityNames_STATUS_Local3   = SyslogDataSource_FacilityNames_STATUS("local3")
	SyslogDataSource_FacilityNames_STATUS_Local4   = SyslogDataSource_FacilityNames_STATUS("local4")
	SyslogDataSource_FacilityNames_STATUS_Local5   = SyslogDataSource_FacilityNames_STATUS("local5")
	SyslogDataSource_FacilityNames_STATUS_Local6   = SyslogDataSource_FacilityNames_STATUS("local6")
	SyslogDataSource_FacilityNames_STATUS_Local7   = SyslogDataSource_FacilityNames_STATUS("local7")
	SyslogDataSource_FacilityNames_STATUS_Lpr      = SyslogDataSource_FacilityNames_STATUS("lpr")
	SyslogDataSource_FacilityNames_STATUS_Mail     = SyslogDataSource_FacilityNames_STATUS("mail")
	SyslogDataSource_FacilityNames_STATUS_Mark     = SyslogDataSource_FacilityNames_STATUS("mark")
	SyslogDataSource_FacilityNames_STATUS_News     = SyslogDataSource_FacilityNames_STATUS("news")
	SyslogDataSource_FacilityNames_STATUS_Nopri    = SyslogDataSource_FacilityNames_STATUS("nopri")
	SyslogDataSource_FacilityNames_STATUS_Ntp      = SyslogDataSource_FacilityNames_STATUS("ntp")
	SyslogDataSource_FacilityNames_STATUS_Star     = SyslogDataSource_FacilityNames_STATUS("*")
	SyslogDataSource_FacilityNames_STATUS_Syslog   = SyslogDataSource_FacilityNames_STATUS("syslog")
	SyslogDataSource_FacilityNames_STATUS_User     = SyslogDataSource_FacilityNames_STATUS("user")
	SyslogDataSource_FacilityNames_STATUS_Uucp     = SyslogDataSource_FacilityNames_STATUS("uucp")
)

// Mapping from string to SyslogDataSource_FacilityNames_STATUS
var syslogDataSource_FacilityNames_STATUS_Values = map[string]SyslogDataSource_FacilityNames_STATUS{
	"alert":    SyslogDataSource_FacilityNames_STATUS_Alert,
	"audit":    SyslogDataSource_FacilityNames_STATUS_Audit,
	"auth":     SyslogDataSource_FacilityNames_STATUS_Auth,
	"authpriv": SyslogDataSource_FacilityNames_STATUS_Authpriv,
	"clock":    SyslogDataSource_FacilityNames_STATUS_Clock,
	"cron":     SyslogDataSource_FacilityNames_STATUS_Cron,
	"daemon":   SyslogDataSource_FacilityNames_STATUS_Daemon,
	"ftp":      SyslogDataSource_FacilityNames_STATUS_Ftp,
	"kern":     SyslogDataSource_FacilityNames_STATUS_Kern,
	"local0":   SyslogDataSource_FacilityNames_STATUS_Local0,
	"local1":   SyslogDataSource_FacilityNames_STATUS_Local1,
	"local2":   SyslogDataSource_FacilityNames_STATUS_Local2,
	"local3":   SyslogDataSource_FacilityNames_STATUS_Local3,
	"local4":   SyslogDataSource_FacilityNames_STATUS_Local4,
	"local5":   SyslogDataSource_FacilityNames_STATUS_Local5,
	"local6":   SyslogDataSource_FacilityNames_STATUS_Local6,
	"local7":   SyslogDataSource_FacilityNames_STATUS_Local7,
	"lpr":      SyslogDataSource_FacilityNames_STATUS_Lpr,
	"mail":     SyslogDataSource_FacilityNames_STATUS_Mail,
	"mark":     SyslogDataSource_FacilityNames_STATUS_Mark,
	"news":     SyslogDataSource_FacilityNames_STATUS_News,
	"nopri":    SyslogDataSource_FacilityNames_STATUS_Nopri,
	"ntp":      SyslogDataSource_FacilityNames_STATUS_Ntp,
	"*":        SyslogDataSource_FacilityNames_STATUS_Star,
	"syslog":   SyslogDataSource_FacilityNames_STATUS_Syslog,
	"user":     SyslogDataSource_FacilityNames_STATUS_User,
	"uucp":     SyslogDataSource_FacilityNames_STATUS_Uucp,
}

type SyslogDataSource_LogLevels_STATUS string

const (
	SyslogDataSource_LogLevels_STATUS_Alert     = SyslogDataSource_LogLevels_STATUS("Alert")
	SyslogDataSource_LogLevels_STATUS_Critical  = SyslogDataSource_LogLevels_STATUS("Critical")
	SyslogDataSource_LogLevels_STATUS_Debug     = SyslogDataSource_LogLevels_STATUS("Debug")
	SyslogDataSource_LogLevels_STATUS_Emergency = SyslogDataSource_LogLevels_STATUS("Emergency")
	SyslogDataSource_LogLevels_STATUS_Error     = SyslogDataSource_LogLevels_STATUS("Error")
	SyslogDataSource_LogLevels_STATUS_Info      = SyslogDataSource_LogLevels_STATUS("Info")
	SyslogDataSource_LogLevels_STATUS_Notice    = SyslogDataSource_LogLevels_STATUS("Notice")
	SyslogDataSource_LogLevels_STATUS_Star      = SyslogDataSource_LogLevels_STATUS("*")
	SyslogDataSource_LogLevels_STATUS_Warning   = SyslogDataSource_LogLevels_STATUS("Warning")
)

// Mapping from string to SyslogDataSource_LogLevels_STATUS
var syslogDataSource_LogLevels_STATUS_Values = map[string]SyslogDataSource_LogLevels_STATUS{
	"alert":     SyslogDataSource_LogLevels_STATUS_Alert,
	"critical":  SyslogDataSource_LogLevels_STATUS_Critical,
	"debug":     SyslogDataSource_LogLevels_STATUS_Debug,
	"emergency": SyslogDataSource_LogLevels_STATUS_Emergency,
	"error":     SyslogDataSource_LogLevels_STATUS_Error,
	"info":      SyslogDataSource_LogLevels_STATUS_Info,
	"notice":    SyslogDataSource_LogLevels_STATUS_Notice,
	"*":         SyslogDataSource_LogLevels_STATUS_Star,
	"warning":   SyslogDataSource_LogLevels_STATUS_Warning,
}

type SyslogDataSource_Streams_STATUS string

const SyslogDataSource_Streams_STATUS_MicrosoftSyslog = SyslogDataSource_Streams_STATUS("Microsoft-Syslog")

// Mapping from string to SyslogDataSource_Streams_STATUS
var syslogDataSource_Streams_STATUS_Values = map[string]SyslogDataSource_Streams_STATUS{
	"microsoft-syslog": SyslogDataSource_Streams_STATUS_MicrosoftSyslog,
}

type WindowsEventLogDataSource_Streams_STATUS string

const (
	WindowsEventLogDataSource_Streams_STATUS_MicrosoftEvent        = WindowsEventLogDataSource_Streams_STATUS("Microsoft-Event")
	WindowsEventLogDataSource_Streams_STATUS_MicrosoftWindowsEvent = WindowsEventLogDataSource_Streams_STATUS("Microsoft-WindowsEvent")
)

// Mapping from string to WindowsEventLogDataSource_Streams_STATUS
var windowsEventLogDataSource_Streams_STATUS_Values = map[string]WindowsEventLogDataSource_Streams_STATUS{
	"microsoft-event":        WindowsEventLogDataSource_Streams_STATUS_MicrosoftEvent,
	"microsoft-windowsevent": WindowsEventLogDataSource_Streams_STATUS_MicrosoftWindowsEvent,
}

type WindowsFirewallLogsDataSource_ProfileFilter_STATUS string

const (
	WindowsFirewallLogsDataSource_ProfileFilter_STATUS_Domain  = WindowsFirewallLogsDataSource_ProfileFilter_STATUS("Domain")
	WindowsFirewallLogsDataSource_ProfileFilter_STATUS_Private = WindowsFirewallLogsDataSource_ProfileFilter_STATUS("Private")
	WindowsFirewallLogsDataSource_ProfileFilter_STATUS_Public  = WindowsFirewallLogsDataSource_ProfileFilter_STATUS("Public")
)

// Mapping from string to WindowsFirewallLogsDataSource_ProfileFilter_STATUS
var windowsFirewallLogsDataSource_ProfileFilter_STATUS_Values = map[string]WindowsFirewallLogsDataSource_ProfileFilter_STATUS{
	"domain":  WindowsFirewallLogsDataSource_ProfileFilter_STATUS_Domain,
	"private": WindowsFirewallLogsDataSource_ProfileFilter_STATUS_Private,
	"public":  WindowsFirewallLogsDataSource_ProfileFilter_STATUS_Public,
}

// Settings for text log files
type LogFileTextSettings_STATUS struct {
	// RecordStartTimestampFormat: One of the supported timestamp formats
	RecordStartTimestampFormat *LogFileTextSettings_RecordStartTimestampFormat_STATUS `json:"recordStartTimestampFormat,omitempty"`
}

type StorageBlob_LookupType_STATUS string

const (
	StorageBlob_LookupType_STATUS_Cidr   = StorageBlob_LookupType_STATUS("Cidr")
	StorageBlob_LookupType_STATUS_String = StorageBlob_LookupType_STATUS("String")
)

// Mapping from string to StorageBlob_LookupType_STATUS
var storageBlob_LookupType_STATUS_Values = map[string]StorageBlob_LookupType_STATUS{
	"cidr":   StorageBlob_LookupType_STATUS_Cidr,
	"string": StorageBlob_LookupType_STATUS_String,
}

type LogFileTextSettings_RecordStartTimestampFormat_STATUS string

const (
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_DdMMMYyyyHHMmSsZzz = LogFileTextSettings_RecordStartTimestampFormat_STATUS("dd/MMM/yyyy:HH:mm:ss zzz")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_DdMMyyHHMmSs       = LogFileTextSettings_RecordStartTimestampFormat_STATUS("ddMMyy HH:mm:ss")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_ISO8601            = LogFileTextSettings_RecordStartTimestampFormat_STATUS("ISO 8601")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_MDYYYYHHMMSSAMPM   = LogFileTextSettings_RecordStartTimestampFormat_STATUS("M/D/YYYY HH:MM:SS AM/PM")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_MMMDHhMmSs         = LogFileTextSettings_RecordStartTimestampFormat_STATUS("MMM d hh:mm:ss")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_MonDDYYYYHHMMSS    = LogFileTextSettings_RecordStartTimestampFormat_STATUS("Mon DD, YYYY HH:MM:SS")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_YYYYMMDDHHMMSS     = LogFileTextSettings_RecordStartTimestampFormat_STATUS("YYYY-MM-DD HH:MM:SS")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_YyMMddHHMmSs       = LogFileTextSettings_RecordStartTimestampFormat_STATUS("yyMMdd HH:mm:ss")
	LogFileTextSettings_RecordStartTimestampFormat_STATUS_YyyyMMDdTHHMmSsK   = LogFileTextSettings_RecordStartTimestampFormat_STATUS("yyyy-MM-ddTHH:mm:ssK")
)

// Mapping from string to LogFileTextSettings_RecordStartTimestampFormat_STATUS
var logFileTextSettings_RecordStartTimestampFormat_STATUS_Values = map[string]LogFileTextSettings_RecordStartTimestampFormat_STATUS{
	"dd/mmm/yyyy:hh:mm:ss zzz": LogFileTextSettings_RecordStartTimestampFormat_STATUS_DdMMMYyyyHHMmSsZzz,
	"ddmmyy hh:mm:ss":          LogFileTextSettings_RecordStartTimestampFormat_STATUS_DdMMyyHHMmSs,
	"iso 8601":                 LogFileTextSettings_RecordStartTimestampFormat_STATUS_ISO8601,
	"m/d/yyyy hh:mm:ss am/pm":  LogFileTextSettings_RecordStartTimestampFormat_STATUS_MDYYYYHHMMSSAMPM,
	"mmm d hh:mm:ss":           LogFileTextSettings_RecordStartTimestampFormat_STATUS_MMMDHhMmSs,
	"mon dd, yyyy hh:mm:ss":    LogFileTextSettings_RecordStartTimestampFormat_STATUS_MonDDYYYYHHMMSS,
	"yyyy-mm-dd hh:mm:ss":      LogFileTextSettings_RecordStartTimestampFormat_STATUS_YYYYMMDDHHMMSS,
	"yymmdd hh:mm:ss":          LogFileTextSettings_RecordStartTimestampFormat_STATUS_YyMMddHHMmSs,
	"yyyy-mm-ddthh:mm:ssk":     LogFileTextSettings_RecordStartTimestampFormat_STATUS_YyyyMMDdTHHMmSsK,
}
