/*
 * Copyright (c) Microsoft Corporation.
 * Licensed under the MIT License.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is regenerated.
 */

import * as coreClient from "@azure/core-client";

export type RuleConditionUnion =
  | RuleCondition
  | ThresholdRuleCondition
  | LocationThresholdRuleCondition
  | ManagementEventRuleCondition;
export type RuleDataSourceUnion =
  | RuleDataSource
  | RuleMetricDataSource
  | RuleManagementEventDataSource;
export type RuleActionUnion = RuleAction | RuleEmailAction | RuleWebhookAction;
export type MetricAlertCriteriaUnion =
  | MetricAlertCriteria
  | MetricAlertSingleResourceMultipleMetricCriteria
  | WebtestLocationAvailabilityCriteria
  | MetricAlertMultipleResourceMultipleMetricCriteria;
export type ActionUnion = Action | AlertingAction | LogToMetricAction;
export type MultiMetricCriteriaUnion =
  | MultiMetricCriteria
  | MetricCriteria
  | DynamicMetricCriteria;

/** Represents a collection of autoscale setting resources. */
export interface AutoscaleSettingResourceCollection {
  /** the values for the autoscale setting resources. */
  value: AutoscaleSettingResource[];
  /** URL to get the next set of results. */
  nextLink?: string;
}

/** Autoscale profile. */
export interface AutoscaleProfile {
  /** the name of the profile. */
  name: string;
  /** the number of instances that can be used during this profile. */
  capacity: ScaleCapacity;
  /** the collection of rules that provide the triggers and parameters for the scaling action. A maximum of 10 rules can be specified. */
  rules: ScaleRule[];
  /** the specific date-time for the profile. This element is not used if the Recurrence element is used. */
  fixedDate?: TimeWindow;
  /** the repeating times at which this profile begins. This element is not used if the FixedDate element is used. */
  recurrence?: Recurrence;
}

/** The number of instances that can be used during this profile. */
export interface ScaleCapacity {
  /** the minimum number of instances for the resource. */
  minimum: string;
  /** the maximum number of instances for the resource. The actual maximum number of instances is limited by the cores that are available in the subscription. */
  maximum: string;
  /** the number of instances that will be set if metrics are not available for evaluation. The default is only used if the current instance count is lower than the default. */
  default: string;
}

/** A rule that provide the triggers and parameters for the scaling action. */
export interface ScaleRule {
  /** the trigger that results in a scaling action. */
  metricTrigger: MetricTrigger;
  /** the parameters for the scaling action. */
  scaleAction: ScaleAction;
}

/** The trigger that results in a scaling action. */
export interface MetricTrigger {
  /** the name of the metric that defines what the rule monitors. */
  metricName: string;
  /** the namespace of the metric that defines what the rule monitors. */
  metricNamespace?: string;
  /** the resource identifier of the resource the rule monitors. */
  metricResourceUri: string;
  /** the location of the resource the rule monitors. */
  metricResourceLocation?: string;
  /** the granularity of metrics the rule monitors. Must be one of the predefined values returned from metric definitions for the metric. Must be between 12 hours and 1 minute. */
  timeGrain: string;
  /** the metric statistic type. How the metrics from multiple instances are combined. */
  statistic: MetricStatisticType;
  /** the range of time in which instance data is collected. This value must be greater than the delay in metric collection, which can vary from resource-to-resource. Must be between 12 hours and 5 minutes. */
  timeWindow: string;
  /** time aggregation type. How the data that is collected should be combined over time. The default value is Average. */
  timeAggregation: TimeAggregationType;
  /** the operator that is used to compare the metric data and the threshold. */
  operator: ComparisonOperationType;
  /** the threshold of the metric that triggers the scale action. */
  threshold: number;
  /** List of dimension conditions. For example: [{"DimensionName":"AppName","Operator":"Equals","Values":["App1"]},{"DimensionName":"Deployment","Operator":"Equals","Values":["default"]}]. */
  dimensions?: ScaleRuleMetricDimension[];
  /** a value indicating whether metric should divide per instance. */
  dividePerInstance?: boolean;
}

/** Specifies an auto scale rule metric dimension. */
export interface ScaleRuleMetricDimension {
  /** Name of the dimension. */
  dimensionName: string;
  /** the dimension operator. Only 'Equals' and 'NotEquals' are supported. 'Equals' being equal to any of the values. 'NotEquals' being not equal to all of the values */
  operator: ScaleRuleMetricDimensionOperationType;
  /** list of dimension values. For example: ["App1","App2"]. */
  values: string[];
}

/** The parameters for the scaling action. */
export interface ScaleAction {
  /** the scale direction. Whether the scaling action increases or decreases the number of instances. */
  direction: ScaleDirection;
  /** the type of action that should occur when the scale rule fires. */
  type: ScaleType;
  /** the number of instances that are involved in the scaling action. This value must be 1 or greater. The default value is 1. */
  value?: string;
  /** the amount of time to wait since the last scaling action before this action occurs. It must be between 1 week and 1 minute in ISO 8601 format. */
  cooldown: string;
}

/** A specific date-time for the profile. */
export interface TimeWindow {
  /** the timezone of the start and end times for the profile. Some examples of valid time zones are: Dateline Standard Time, UTC-11, Hawaiian Standard Time, Alaskan Standard Time, Pacific Standard Time (Mexico), Pacific Standard Time, US Mountain Standard Time, Mountain Standard Time (Mexico), Mountain Standard Time, Central America Standard Time, Central Standard Time, Central Standard Time (Mexico), Canada Central Standard Time, SA Pacific Standard Time, Eastern Standard Time, US Eastern Standard Time, Venezuela Standard Time, Paraguay Standard Time, Atlantic Standard Time, Central Brazilian Standard Time, SA Western Standard Time, Pacific SA Standard Time, Newfoundland Standard Time, E. South America Standard Time, Argentina Standard Time, SA Eastern Standard Time, Greenland Standard Time, Montevideo Standard Time, Bahia Standard Time, UTC-02, Mid-Atlantic Standard Time, Azores Standard Time, Cape Verde Standard Time, Morocco Standard Time, UTC, GMT Standard Time, Greenwich Standard Time, W. Europe Standard Time, Central Europe Standard Time, Romance Standard Time, Central European Standard Time, W. Central Africa Standard Time, Namibia Standard Time, Jordan Standard Time, GTB Standard Time, Middle East Standard Time, Egypt Standard Time, Syria Standard Time, E. Europe Standard Time, South Africa Standard Time, FLE Standard Time, Turkey Standard Time, Israel Standard Time, Kaliningrad Standard Time, Libya Standard Time, Arabic Standard Time, Arab Standard Time, Belarus Standard Time, Russian Standard Time, E. Africa Standard Time, Iran Standard Time, Arabian Standard Time, Azerbaijan Standard Time, Russia Time Zone 3, Mauritius Standard Time, Georgian Standard Time, Caucasus Standard Time, Afghanistan Standard Time, West Asia Standard Time, Ekaterinburg Standard Time, Pakistan Standard Time, India Standard Time, Sri Lanka Standard Time, Nepal Standard Time, Central Asia Standard Time, Bangladesh Standard Time, N. Central Asia Standard Time, Myanmar Standard Time, SE Asia Standard Time, North Asia Standard Time, China Standard Time, North Asia East Standard Time, Singapore Standard Time, W. Australia Standard Time, Taipei Standard Time, Ulaanbaatar Standard Time, Tokyo Standard Time, Korea Standard Time, Yakutsk Standard Time, Cen. Australia Standard Time, AUS Central Standard Time, E. Australia Standard Time, AUS Eastern Standard Time, West Pacific Standard Time, Tasmania Standard Time, Magadan Standard Time, Vladivostok Standard Time, Russia Time Zone 10, Central Pacific Standard Time, Russia Time Zone 11, New Zealand Standard Time, UTC+12, Fiji Standard Time, Kamchatka Standard Time, Tonga Standard Time, Samoa Standard Time, Line Islands Standard Time */
  timeZone?: string;
  /** the start time for the profile in ISO 8601 format. */
  start: Date;
  /** the end time for the profile in ISO 8601 format. */
  end: Date;
}

/** The repeating times at which this profile begins. This element is not used if the FixedDate element is used. */
export interface Recurrence {
  /** the recurrence frequency. How often the schedule profile should take effect. This value must be Week, meaning each week will have the same set of profiles. For example, to set a daily schedule, set **schedule** to every day of the week. The frequency property specifies that the schedule is repeated weekly. */
  frequency: RecurrenceFrequency;
  /** the scheduling constraints for when the profile begins. */
  schedule: RecurrentSchedule;
}

/** The scheduling constraints for when the profile begins. */
export interface RecurrentSchedule {
  /** the timezone for the hours of the profile. Some examples of valid time zones are: Dateline Standard Time, UTC-11, Hawaiian Standard Time, Alaskan Standard Time, Pacific Standard Time (Mexico), Pacific Standard Time, US Mountain Standard Time, Mountain Standard Time (Mexico), Mountain Standard Time, Central America Standard Time, Central Standard Time, Central Standard Time (Mexico), Canada Central Standard Time, SA Pacific Standard Time, Eastern Standard Time, US Eastern Standard Time, Venezuela Standard Time, Paraguay Standard Time, Atlantic Standard Time, Central Brazilian Standard Time, SA Western Standard Time, Pacific SA Standard Time, Newfoundland Standard Time, E. South America Standard Time, Argentina Standard Time, SA Eastern Standard Time, Greenland Standard Time, Montevideo Standard Time, Bahia Standard Time, UTC-02, Mid-Atlantic Standard Time, Azores Standard Time, Cape Verde Standard Time, Morocco Standard Time, UTC, GMT Standard Time, Greenwich Standard Time, W. Europe Standard Time, Central Europe Standard Time, Romance Standard Time, Central European Standard Time, W. Central Africa Standard Time, Namibia Standard Time, Jordan Standard Time, GTB Standard Time, Middle East Standard Time, Egypt Standard Time, Syria Standard Time, E. Europe Standard Time, South Africa Standard Time, FLE Standard Time, Turkey Standard Time, Israel Standard Time, Kaliningrad Standard Time, Libya Standard Time, Arabic Standard Time, Arab Standard Time, Belarus Standard Time, Russian Standard Time, E. Africa Standard Time, Iran Standard Time, Arabian Standard Time, Azerbaijan Standard Time, Russia Time Zone 3, Mauritius Standard Time, Georgian Standard Time, Caucasus Standard Time, Afghanistan Standard Time, West Asia Standard Time, Ekaterinburg Standard Time, Pakistan Standard Time, India Standard Time, Sri Lanka Standard Time, Nepal Standard Time, Central Asia Standard Time, Bangladesh Standard Time, N. Central Asia Standard Time, Myanmar Standard Time, SE Asia Standard Time, North Asia Standard Time, China Standard Time, North Asia East Standard Time, Singapore Standard Time, W. Australia Standard Time, Taipei Standard Time, Ulaanbaatar Standard Time, Tokyo Standard Time, Korea Standard Time, Yakutsk Standard Time, Cen. Australia Standard Time, AUS Central Standard Time, E. Australia Standard Time, AUS Eastern Standard Time, West Pacific Standard Time, Tasmania Standard Time, Magadan Standard Time, Vladivostok Standard Time, Russia Time Zone 10, Central Pacific Standard Time, Russia Time Zone 11, New Zealand Standard Time, UTC+12, Fiji Standard Time, Kamchatka Standard Time, Tonga Standard Time, Samoa Standard Time, Line Islands Standard Time */
  timeZone: string;
  /** the collection of days that the profile takes effect on. Possible values are Sunday through Saturday. */
  days: string[];
  /** A collection of hours that the profile takes effect on. Values supported are 0 to 23 on the 24-hour clock (AM/PM times are not supported). */
  hours: number[];
  /** A collection of minutes at which the profile takes effect at. */
  minutes: number[];
}

/** Autoscale notification. */
export interface AutoscaleNotification {
  /** the operation associated with the notification and its value must be "scale" */
  operation: "Scale";
  /** the email notification. */
  email?: EmailNotification;
  /** the collection of webhook notifications. */
  webhooks?: WebhookNotification[];
}

/** Email notification of an autoscale event. */
export interface EmailNotification {
  /** a value indicating whether to send email to subscription administrator. */
  sendToSubscriptionAdministrator?: boolean;
  /** a value indicating whether to send email to subscription co-administrators. */
  sendToSubscriptionCoAdministrators?: boolean;
  /** the custom e-mails list. This value can be null or empty, in which case this attribute will be ignored. */
  customEmails?: string[];
}

/** Webhook notification of an autoscale event. */
export interface WebhookNotification {
  /** the service address to receive the notification. */
  serviceUri?: string;
  /** a property bag of settings. This value can be empty. */
  properties?: { [propertyName: string]: string };
}

/** An azure resource object */
export interface Resource {
  /**
   * Azure resource Id
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * Azure resource name
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * Azure resource type
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /** Resource location */
  location: string;
  /** Resource tags */
  tags?: { [propertyName: string]: string };
}

/** Describes the format of Error response. */
export interface ErrorResponse {
  /** Error code */
  code?: string;
  /** Error message indicating why the operation failed. */
  message?: string;
}

/** The autoscale setting object for patch operations. */
export interface AutoscaleSettingResourcePatch {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /** the collection of automatic scaling profiles that specify different scaling parameters for different time periods. A maximum of 20 profiles can be specified. */
  profiles?: AutoscaleProfile[];
  /** the collection of notifications. */
  notifications?: AutoscaleNotification[];
  /** the enabled flag. Specifies whether automatic scaling is enabled for the resource. The default value is 'true'. */
  enabled?: boolean;
  /** the name of the autoscale setting. */
  name?: string;
  /** the resource identifier of the resource that the autoscale setting should be added to. */
  targetResourceUri?: string;
  /** the location of the resource that the autoscale setting should be added to. */
  targetResourceLocation?: string;
}

/** Result of the request to list Microsoft.Insights operations. It contains a list of operations and a URL link to get the next set of results. */
export interface OperationListResult {
  /** List of operations supported by the Microsoft.Insights provider. */
  value?: Operation[];
  /** URL to get the next set of operation list results if there are any. */
  nextLink?: string;
}

/** Microsoft Insights API operation definition. */
export interface Operation {
  /** Operation name: {provider}/{resource}/{operation} */
  name?: string;
  /** Display metadata associated with the operation. */
  display?: OperationDisplay;
}

/** Display metadata associated with the operation. */
export interface OperationDisplay {
  /** Service provider: Microsoft.Insights */
  provider?: string;
  /** Resource on which the operation is performed: AlertRules, Autoscale, etc. */
  resource?: string;
  /** Operation type: Read, write, delete, etc. */
  operation?: string;
}

/** An alert incident indicates the activation status of an alert rule. */
export interface Incident {
  /**
   * Incident name.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * Rule name that is associated with the incident.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly ruleName?: string;
  /**
   * A boolean to indicate whether the incident is active or resolved.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly isActive?: boolean;
  /**
   * The time at which the incident was activated in ISO8601 format.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly activatedTime?: Date;
  /**
   * The time at which the incident was resolved in ISO8601 format. If null, it means the incident is still active.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly resolvedTime?: Date;
}

/** The List incidents operation response. */
export interface IncidentListResult {
  /** the incident collection. */
  value?: Incident[];
}

/** The condition that results in the alert rule being activated. */
export interface RuleCondition {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType:
    | "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition"
    | "Microsoft.Azure.Management.Insights.Models.LocationThresholdRuleCondition"
    | "Microsoft.Azure.Management.Insights.Models.ManagementEventRuleCondition";
  /** the resource from which the rule collects its data. For this type dataSource will always be of type RuleMetricDataSource. */
  dataSource?: RuleDataSourceUnion;
}

/** The resource from which the rule collects its data. */
export interface RuleDataSource {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType:
    | "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource"
    | "Microsoft.Azure.Management.Insights.Models.RuleManagementEventDataSource";
  /** the resource identifier of the resource the rule monitors. **NOTE**: this property cannot be updated for an existing rule. */
  resourceUri?: string;
  /** the legacy resource identifier of the resource the rule monitors. **NOTE**: this property cannot be updated for an existing rule. */
  legacyResourceId?: string;
  /** the location of the resource. */
  resourceLocation?: string;
  /** the namespace of the metric. */
  metricNamespace?: string;
}

/** The action that is performed when the alert rule becomes active, and when an alert condition is resolved. */
export interface RuleAction {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType:
    | "Microsoft.Azure.Management.Insights.Models.RuleEmailAction"
    | "Microsoft.Azure.Management.Insights.Models.RuleWebhookAction";
}

/** The alert rule object for patch operations. */
export interface AlertRuleResourcePatch {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /** the name of the alert rule. */
  name?: string;
  /** the description of the alert rule that will be included in the alert email. */
  description?: string;
  /** the provisioning state. */
  provisioningState?: string;
  /** the flag that indicates whether the alert rule is enabled. */
  isEnabled?: boolean;
  /** the condition that results in the alert rule being activated. */
  condition?: RuleConditionUnion;
  /** action that is performed when the alert rule becomes active, and when an alert condition is resolved. */
  action?: RuleActionUnion;
  /** the array of actions that are performed when the alert rule becomes active, and when an alert condition is resolved. */
  actions?: RuleActionUnion[];
  /**
   * Last time the rule was updated in ISO8601 format.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly lastUpdatedTime?: Date;
}

/** Represents a collection of alert rule resources. */
export interface AlertRuleResourceCollection {
  /** the values for the alert rule resources. */
  value?: AlertRuleResource[];
}

/** Specifies the retention policy for the log. */
export interface RetentionPolicy {
  /** a value indicating whether the retention policy is enabled. */
  enabled: boolean;
  /** the number of days for the retention in days. A value of 0 will retain the events indefinitely. */
  days: number;
}

/** The log profile resource for patch operations. */
export interface LogProfileResourcePatch {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /** the resource id of the storage account to which you would like to send the Activity Log. */
  storageAccountId?: string;
  /** The service bus rule ID of the service bus namespace in which you would like to have Event Hubs created for streaming the Activity Log. The rule ID is of the format: '{service bus resource ID}/authorizationrules/{key name}'. */
  serviceBusRuleId?: string;
  /** List of regions for which Activity Log events should be stored or streamed. It is a comma separated list of valid ARM locations including the 'global' location. */
  locations?: string[];
  /** the categories of the logs. These categories are created as is convenient to the user. Some values are: 'Write', 'Delete', and/or 'Action.' */
  categories?: string[];
  /** the retention policy for the events in the log. */
  retentionPolicy?: RetentionPolicy;
}

/** Represents a collection of log profiles. */
export interface LogProfileCollection {
  /** the values of the log profiles. */
  value: LogProfileResource[];
}

/** Part of MultiTenantDiagnosticSettings. Specifies the settings for a particular metric. */
export interface MetricSettings {
  /** the timegrain of the metric in ISO8601 format. */
  timeGrain?: string;
  /** Name of a Diagnostic Metric category for a resource type this setting is applied to. To obtain the list of Diagnostic metric categories for a resource, first perform a GET diagnostic settings operation. */
  category?: string;
  /** a value indicating whether this category is enabled. */
  enabled: boolean;
  /** the retention policy for this category. */
  retentionPolicy?: RetentionPolicy;
}

/** Part of MultiTenantDiagnosticSettings. Specifies the settings for a particular log. */
export interface LogSettings {
  /** Name of a Diagnostic Log category for a resource type this setting is applied to. To obtain the list of Diagnostic Log categories for a resource, first perform a GET diagnostic settings operation. */
  category?: string;
  /** a value indicating whether this log is enabled. */
  enabled: boolean;
  /** the retention policy for this log. */
  retentionPolicy?: RetentionPolicy;
}

/** A proxy only azure resource object */
export interface ProxyOnlyResource {
  /**
   * Azure resource Id
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * Azure resource name
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * Azure resource type
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
}

/** Represents a collection of alert rule resources. */
export interface DiagnosticSettingsResourceCollection {
  /** The collection of diagnostic settings resources;. */
  value?: DiagnosticSettingsResource[];
}

/** Represents a collection of diagnostic setting category resources. */
export interface DiagnosticSettingsCategoryResourceCollection {
  /** The collection of diagnostic settings category resources. */
  value?: DiagnosticSettingsCategoryResource[];
}

/** An email receiver. */
export interface EmailReceiver {
  /** The name of the email receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The email address of this receiver. */
  emailAddress: string;
  /** Indicates whether to use common alert schema. */
  useCommonAlertSchema?: boolean;
  /**
   * The receiver status of the e-mail.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly status?: ReceiverStatus;
}

/** An SMS receiver. */
export interface SmsReceiver {
  /** The name of the SMS receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The country code of the SMS receiver. */
  countryCode: string;
  /** The phone number of the SMS receiver. */
  phoneNumber: string;
  /**
   * The status of the receiver.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly status?: ReceiverStatus;
}

/** A webhook receiver. */
export interface WebhookReceiver {
  /** The name of the webhook receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The URI where webhooks should be sent. */
  serviceUri: string;
  /** Indicates whether to use common alert schema. */
  useCommonAlertSchema?: boolean;
  /** Indicates whether or not use AAD authentication. */
  useAadAuth?: boolean;
  /** Indicates the webhook app object Id for aad auth. */
  objectId?: string;
  /** Indicates the identifier uri for aad auth. */
  identifierUri?: string;
  /** Indicates the tenant id for aad auth. */
  tenantId?: string;
}

/** An Itsm receiver. */
export interface ItsmReceiver {
  /** The name of the Itsm receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** OMS LA instance identifier. */
  workspaceId: string;
  /** Unique identification of ITSM connection among multiple defined in above workspace. */
  connectionId: string;
  /** JSON blob for the configurations of the ITSM action. CreateMultipleWorkItems option will be part of this blob as well. */
  ticketConfiguration: string;
  /** Region in which workspace resides. Supported values:'centralindia','japaneast','southeastasia','australiasoutheast','uksouth','westcentralus','canadacentral','eastus','westeurope' */
  region: string;
}

/** The Azure mobile App push notification receiver. */
export interface AzureAppPushReceiver {
  /** The name of the Azure mobile app push receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The email address registered for the Azure mobile app. */
  emailAddress: string;
}

/** The Azure Automation Runbook notification receiver. */
export interface AutomationRunbookReceiver {
  /** The Azure automation account Id which holds this runbook and authenticate to Azure resource. */
  automationAccountId: string;
  /** The name for this runbook. */
  runbookName: string;
  /** The resource id for webhook linked to this runbook. */
  webhookResourceId: string;
  /** Indicates whether this instance is global runbook. */
  isGlobalRunbook: boolean;
  /** Indicates name of the webhook. */
  name?: string;
  /** The URI where webhooks should be sent. */
  serviceUri?: string;
  /** Indicates whether to use common alert schema. */
  useCommonAlertSchema?: boolean;
}

/** A voice receiver. */
export interface VoiceReceiver {
  /** The name of the voice receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The country code of the voice receiver. */
  countryCode: string;
  /** The phone number of the voice receiver. */
  phoneNumber: string;
}

/** A logic app receiver. */
export interface LogicAppReceiver {
  /** The name of the logic app receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The azure resource id of the logic app receiver. */
  resourceId: string;
  /** The callback url where http request sent to. */
  callbackUrl: string;
  /** Indicates whether to use common alert schema. */
  useCommonAlertSchema?: boolean;
}

/** An azure function receiver. */
export interface AzureFunctionReceiver {
  /** The name of the azure function receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The azure resource id of the function app. */
  functionAppResourceId: string;
  /** The function name in the function app. */
  functionName: string;
  /** The http trigger url where http request sent to. */
  httpTriggerUrl: string;
  /** Indicates whether to use common alert schema. */
  useCommonAlertSchema?: boolean;
}

/** An arm role receiver. */
export interface ArmRoleReceiver {
  /** The name of the arm role receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The arm role id. */
  roleId: string;
  /** Indicates whether to use common alert schema. */
  useCommonAlertSchema?: boolean;
}

/** An Event hub receiver. */
export interface EventHubReceiver {
  /** The name of the Event hub receiver. Names must be unique across all receivers within an action group. */
  name: string;
  /** The Event Hub namespace */
  eventHubNameSpace: string;
  /** The name of the specific Event Hub queue */
  eventHubName: string;
  /** Indicates whether to use common alert schema. */
  useCommonAlertSchema?: boolean;
  /** The tenant Id for the subscription containing this event hub */
  tenantId?: string;
  /** The Id for the subscription containing this event hub */
  subscriptionId: string;
}

/** An azure resource object */
export interface AzureResource {
  /**
   * Azure resource Id
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * Azure resource name
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * Azure resource type
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /**
   * Azure resource kind
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly kind?: string;
  /**
   * Azure resource identity
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly identity?: string;
  /** Resource location */
  location: string;
  /** Resource tags */
  tags?: { [propertyName: string]: string };
}

/** An action group object for the body of patch operations. */
export interface ActionGroupPatchBody {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /** Indicates whether this action group is enabled. If an action group is not enabled, then none of its actions will be activated. */
  enabled?: boolean;
}

/** The request body which contain contact detail metadata */
export interface NotificationRequestBody {
  /** The name of the supported alert type. */
  alertType: string;
  /** The list of email receivers that are part of this action group. */
  emailReceivers?: EmailReceiver[];
  /** The list of SMS receivers that are part of this action group. */
  smsReceivers?: SmsReceiver[];
  /** The list of webhook receivers that are part of this action group. */
  webhookReceivers?: WebhookReceiver[];
  /** The list of ITSM receivers that are part of this action group. */
  itsmReceivers?: ItsmReceiver[];
  /** The list of AzureAppPush receivers that are part of this action group. */
  azureAppPushReceivers?: AzureAppPushReceiver[];
  /** The list of AutomationRunbook receivers that are part of this action group. */
  automationRunbookReceivers?: AutomationRunbookReceiver[];
  /** The list of voice receivers that are part of this action group. */
  voiceReceivers?: VoiceReceiver[];
  /** The list of logic app receivers that are part of this action group. */
  logicAppReceivers?: LogicAppReceiver[];
  /** The list of azure function receivers that are part of this action group. */
  azureFunctionReceivers?: AzureFunctionReceiver[];
  /** The list of ARM role receivers that are part of this action group. Roles are Azure RBAC roles and only built-in roles are supported. */
  armRoleReceivers?: ArmRoleReceiver[];
  /** The list of event hub receivers that are part of this action group. */
  eventHubReceivers?: EventHubReceiver[];
}

/** The response when test notification succeeded */
export interface TestNotificationResponse {
  /** The notification id */
  notificationId: string;
  /** The correlation id */
  correlationId: string;
  /** The created time */
  createdTime: string;
}

/** The details of the test notification results. */
export interface TestNotificationDetailsResponse {
  /** The context info */
  context?: Context;
  /** The overall state */
  state: string;
  /** The completed time */
  completedTime?: string;
  /** The created time */
  createdTime?: string;
  /** The list of action detail */
  actionDetails?: ActionDetail[];
}

/** The context info */
export interface Context {
  /** The source of the notification request */
  notificationSource?: string;
  /** The context id type */
  contextType?: string;
}

/** The action detail */
export interface ActionDetail {
  /** The mechanism type */
  mechanismType?: string;
  /** The name of the action */
  name?: string;
  /** The status of the action */
  status?: string;
  /** The substatus of the action */
  subState?: string;
  /** The send time */
  sendTime?: string;
  /** The detail of the friendly error message */
  detail?: string;
}

/** A list of action groups. */
export interface ActionGroupList {
  /** The list of action groups. */
  value?: ActionGroupResource[];
  /** Provides the link to retrieve the next set of elements. */
  nextLink?: string;
}

/** Describes a receiver that should be resubscribed. */
export interface EnableRequest {
  /** The name of the receiver to resubscribe. */
  receiverName: string;
}

/** Represents collection of events. */
export interface EventDataCollection {
  /** this list that includes the Azure audit logs. */
  value: EventData[];
  /** Provides the link to retrieve the next set of events. */
  nextLink?: string;
}

/** The Azure event log entries are of type EventData */
export interface EventData {
  /**
   * The sender authorization information.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly authorization?: SenderAuthorization;
  /**
   * key value pairs to identify ARM permissions.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly claims?: { [propertyName: string]: string };
  /**
   * the email address of the user who has performed the operation, the UPN claim or SPN claim based on availability.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly caller?: string;
  /**
   * the description of the event.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly description?: string;
  /**
   * the Id of this event as required by ARM for RBAC. It contains the EventDataID and a timestamp information.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * the event data Id. This is a unique identifier for an event.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly eventDataId?: string;
  /**
   * the correlation Id, usually a GUID in the string format. The correlation Id is shared among the events that belong to the same uber operation.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly correlationId?: string;
  /**
   * the event name. This value should not be confused with OperationName. For practical purposes, OperationName might be more appealing to end users.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly eventName?: LocalizableString;
  /**
   * the event category.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly category?: LocalizableString;
  /**
   * the HTTP request info. Usually includes the 'clientRequestId', 'clientIpAddress' (IP address of the user who initiated the event) and 'method' (HTTP method e.g. PUT).
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly httpRequest?: HttpRequestInfo;
  /**
   * the event level
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly level?: EventLevel;
  /**
   * the resource group name of the impacted resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly resourceGroupName?: string;
  /**
   * the resource provider name of the impacted resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly resourceProviderName?: LocalizableString;
  /**
   * the resource uri that uniquely identifies the resource that caused this event.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly resourceId?: string;
  /**
   * the resource type
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly resourceType?: LocalizableString;
  /**
   * It is usually a GUID shared among the events corresponding to single operation. This value should not be confused with EventName.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly operationId?: string;
  /**
   * the operation name.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly operationName?: LocalizableString;
  /**
   * the set of <Key, Value> pairs (usually a Dictionary<String, String>) that includes details about the event.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly properties?: { [propertyName: string]: string };
  /**
   * a string describing the status of the operation. Some typical values are: Started, In progress, Succeeded, Failed, Resolved.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly status?: LocalizableString;
  /**
   * the event sub status. Most of the time, when included, this captures the HTTP status code of the REST call. Common values are: OK (HTTP Status Code: 200), Created (HTTP Status Code: 201), Accepted (HTTP Status Code: 202), No Content (HTTP Status Code: 204), Bad Request(HTTP Status Code: 400), Not Found (HTTP Status Code: 404), Conflict (HTTP Status Code: 409), Internal Server Error (HTTP Status Code: 500), Service Unavailable (HTTP Status Code:503), Gateway Timeout (HTTP Status Code: 504)
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly subStatus?: LocalizableString;
  /**
   * the timestamp of when the event was generated by the Azure service processing the request corresponding the event. It in ISO 8601 format.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly eventTimestamp?: Date;
  /**
   * the timestamp of when the event became available for querying via this API. It is in ISO 8601 format. This value should not be confused eventTimestamp. As there might be a delay between the occurrence time of the event, and the time that the event is submitted to the Azure logging infrastructure.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly submissionTimestamp?: Date;
  /**
   * the Azure subscription Id usually a GUID.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly subscriptionId?: string;
  /**
   * the Azure tenant Id
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly tenantId?: string;
}

/** the authorization used by the user who has performed the operation that led to this event. This captures the RBAC properties of the event. These usually include the 'action', 'role' and the 'scope' */
export interface SenderAuthorization {
  /** the permissible actions. For instance: microsoft.support/supporttickets/write */
  action?: string;
  /** the role of the user. For instance: Subscription Admin */
  role?: string;
  /** the scope. */
  scope?: string;
}

/** The localizable string class. */
export interface LocalizableString {
  /** the invariant value. */
  value: string;
  /** the locale specific value. */
  localizedValue?: string;
}

/** The Http request info. */
export interface HttpRequestInfo {
  /** the client request id. */
  clientRequestId?: string;
  /** the client Ip Address */
  clientIpAddress?: string;
  /** the Http request method. */
  method?: string;
  /** the Uri. */
  uri?: string;
}

/** A collection of event categories. Currently possible values are: Administrative, Security, ServiceHealth, Alert, Recommendation, Policy. */
export interface EventCategoryCollection {
  /** the list that includes the Azure event categories. */
  value: LocalizableString[];
}

/** Represents collection of metric definitions. */
export interface MetricDefinitionCollection {
  /** the values for the metric definitions. */
  value: MetricDefinition[];
}

/** Metric definition class specifies the metadata for a metric. */
export interface MetricDefinition {
  /** Flag to indicate whether the dimension is required. */
  isDimensionRequired?: boolean;
  /** the resource identifier of the resource that emitted the metric. */
  resourceId?: string;
  /** the namespace the metric belongs to. */
  namespace?: string;
  /** the name and the display name of the metric, i.e. it is a localizable string. */
  name?: LocalizableString;
  /** Detailed description of this metric. */
  displayDescription?: string;
  /** Custom category name for this metric. */
  category?: string;
  /** The class of the metric. */
  metricClass?: MetricClass;
  /** The unit of the metric. */
  unit?: MetricUnit;
  /** the primary aggregation type value defining how to use the values for display. */
  primaryAggregationType?: AggregationType;
  /** the collection of what aggregation types are supported. */
  supportedAggregationTypes?: AggregationType[];
  /** the collection of what aggregation intervals are available to be queried. */
  metricAvailabilities?: MetricAvailability[];
  /** the resource identifier of the metric definition. */
  id?: string;
  /** the name and the display name of the dimension, i.e. it is a localizable string. */
  dimensions?: LocalizableString[];
}

/** Metric availability specifies the time grain (aggregation interval or frequency) and the retention period for that time grain. */
export interface MetricAvailability {
  /** the time grain specifies the aggregation interval for the metric. Expressed as a duration 'PT1M', 'P1D', etc. */
  timeGrain?: string;
  /** the retention period for the metric at the specified timegrain.  Expressed as a duration 'PT1M', 'P1D', etc. */
  retention?: string;
}

/** The response to a metrics query. */
export interface Response {
  /** The integer value representing the relative cost of the query. */
  cost?: number;
  /** The timespan for which the data was retrieved. Its value consists of two datetimes concatenated, separated by '/'.  This may be adjusted in the future and returned back from what was originally requested. */
  timespan: string;
  /** The interval (window size) for which the metric data was returned in.  This may be adjusted in the future and returned back from what was originally requested.  This is not present if a metadata request was made. */
  interval?: string;
  /** The namespace of the metrics being queried */
  namespace?: string;
  /** The region of the resource being queried for metrics. */
  resourceregion?: string;
  /** the value of the collection. */
  value: Metric[];
}

/** The result data of a query. */
export interface Metric {
  /** the metric Id. */
  id: string;
  /** the resource type of the metric resource. */
  type: string;
  /** the name and the display name of the metric, i.e. it is localizable string. */
  name: LocalizableString;
  /** Detailed description of this metric. */
  displayDescription?: string;
  /** 'Success' or the error details on query failures for this metric. */
  errorCode?: string;
  /** Error message encountered querying this specific metric. */
  errorMessage?: string;
  /** The unit of the metric. */
  unit: MetricUnit;
  /** the time series returned when a data query is performed. */
  timeseries: TimeSeriesElement[];
}

/** A time series result type. The discriminator value is always TimeSeries in this case. */
export interface TimeSeriesElement {
  /** the metadata values returned if $filter was specified in the call. */
  metadatavalues?: MetadataValue[];
  /** An array of data points representing the metric values.  This is only returned if a result type of data is specified. */
  data?: MetricValue[];
}

/** Represents a metric metadata value. */
export interface MetadataValue {
  /** the name of the metadata. */
  name?: LocalizableString;
  /** the value of the metadata. */
  value?: string;
}

/** Represents a metric value. */
export interface MetricValue {
  /** the timestamp for the metric value in ISO 8601 format. */
  timeStamp: Date;
  /** the average value in the time range. */
  average?: number;
  /** the least value in the time range. */
  minimum?: number;
  /** the greatest value in the time range. */
  maximum?: number;
  /** the sum of all of the values in the time range. */
  total?: number;
  /** the number of samples in the time range. Can be used to determine the number of values that contributed to the average value. */
  count?: number;
}

/** A list of metric baselines. */
export interface MetricBaselinesResponse {
  /** The list of metric baselines. */
  value?: SingleMetricBaseline[];
}

/** The baseline results of a single metric. */
export interface SingleMetricBaseline {
  /** The metric baseline Id. */
  id: string;
  /** The resource type of the metric baseline resource. */
  type: string;
  /** The name of the metric for which the baselines were retrieved. */
  name: string;
  /** The timespan for which the data was retrieved. Its value consists of two datetimes concatenated, separated by '/'.  This may be adjusted in the future and returned back from what was originally requested. */
  timespan: string;
  /** The interval (window size) for which the metric data was returned in.  This may be adjusted in the future and returned back from what was originally requested.  This is not present if a metadata request was made. */
  interval: string;
  /** The namespace of the metrics been queried. */
  namespace?: string;
  /** The baseline for each time series that was queried. */
  baselines: TimeSeriesBaseline[];
}

/** The baseline values for a single time series. */
export interface TimeSeriesBaseline {
  /** The aggregation type of the metric. */
  aggregation: string;
  /** The dimensions of this time series. */
  dimensions?: MetricSingleDimension[];
  /** The list of timestamps of the baselines. */
  timestamps: Date[];
  /** The baseline values for each sensitivity. */
  data: SingleBaseline[];
  /** The baseline metadata values. */
  metadataValues?: BaselineMetadata[];
}

/** The metric dimension name and value. */
export interface MetricSingleDimension {
  /** Name of the dimension. */
  name: string;
  /** Value of the dimension. */
  value: string;
}

/** The baseline values for a single sensitivity value. */
export interface SingleBaseline {
  /** the sensitivity of the baseline. */
  sensitivity: BaselineSensitivity;
  /** The low thresholds of the baseline. */
  lowThresholds: number[];
  /** The high thresholds of the baseline. */
  highThresholds: number[];
}

/** Represents a baseline metadata value. */
export interface BaselineMetadata {
  /** Name of the baseline metadata. */
  name: string;
  /** Value of the baseline metadata. */
  value: string;
}

/** Represents a collection of alert rule resources. */
export interface MetricAlertResourceCollection {
  /** the values for the alert rule resources. */
  value?: MetricAlertResource[];
}

/** The rule criteria that defines the conditions of the alert rule. */
export interface MetricAlertCriteria {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType:
    | "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria"
    | "Microsoft.Azure.Monitor.WebtestLocationAvailabilityCriteria"
    | "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria";
  /** Describes unknown properties. The value of an unknown property can be of "any" type. */
  [property: string]: any;
}

/** An alert action. */
export interface MetricAlertAction {
  /** the id of the action group to use. */
  actionGroupId?: string;
  /** This field allows specifying custom properties, which would be appended to the alert payload sent as input to the webhook. */
  webHookProperties?: { [propertyName: string]: string };
}

/** The metric alert resource for patch operations. */
export interface MetricAlertResourcePatch {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /** the description of the metric alert that will be included in the alert email. */
  description?: string;
  /** Alert severity {0, 1, 2, 3, 4} */
  severity?: number;
  /** the flag that indicates whether the metric alert is enabled. */
  enabled?: boolean;
  /** the list of resource id's that this metric alert is scoped to. */
  scopes?: string[];
  /** how often the metric alert is evaluated represented in ISO 8601 duration format. */
  evaluationFrequency?: string;
  /** the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. */
  windowSize?: string;
  /** the resource type of the target resource(s) on which the alert is created/updated. Mandatory for MultipleResourceMultipleMetricCriteria. */
  targetResourceType?: string;
  /** the region of the target resource(s) on which the alert is created/updated. Mandatory for MultipleResourceMultipleMetricCriteria. */
  targetResourceRegion?: string;
  /** defines the specific alert criteria information. */
  criteria?: MetricAlertCriteriaUnion;
  /** the flag that indicates whether the alert should be auto resolved or not. The default is true. */
  autoMitigate?: boolean;
  /** the array of actions that are performed when the alert rule becomes active, and when an alert condition is resolved. */
  actions?: MetricAlertAction[];
  /**
   * Last time the rule was updated in ISO8601 format.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly lastUpdatedTime?: Date;
  /**
   * the value indicating whether this alert rule is migrated.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly isMigrated?: boolean;
}

/** Represents a collection of alert rule resources. */
export interface MetricAlertStatusCollection {
  /** the values for the alert rule resources. */
  value?: MetricAlertStatus[];
}

/** An alert status. */
export interface MetricAlertStatus {
  /** The status name. */
  name?: string;
  /** The alert rule arm id. */
  id?: string;
  /** The extended resource type name. */
  type?: string;
  /** The alert status properties of the metric alert status. */
  properties?: MetricAlertStatusProperties;
}

/** An alert status properties. */
export interface MetricAlertStatusProperties {
  /** An object describing the type of the dimensions. */
  dimensions?: { [propertyName: string]: string };
  /** status value */
  status?: string;
  /** UTC time when the status was checked. */
  timestamp?: Date;
}

/** Specifies the log search query. */
export interface Source {
  /** Log search query. Required for action type - AlertingAction */
  query?: string;
  /** List of  Resource referred into query */
  authorizedResources?: string[];
  /** The resource uri over which log search query is to be run. */
  dataSourceId: string;
  /** Set value to 'ResultCount' . */
  queryType?: QueryType;
}

/** Defines how often to run the search and the time interval. */
export interface Schedule {
  /** frequency (in minutes) at which rule condition should be evaluated. */
  frequencyInMinutes: number;
  /** Time window for which data needs to be fetched for query (should be greater than or equal to frequencyInMinutes). */
  timeWindowInMinutes: number;
}

/** Action descriptor. */
export interface Action {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType:
    | "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.AlertingAction"
    | "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.LogToMetricAction";
}

/** An azure resource object */
export interface ResourceAutoGenerated {
  /**
   * Azure resource Id
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * Azure resource name
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * Azure resource type
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /** Resource location */
  location: string;
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /**
   * 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.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly kind?: string;
  /**
   * The etag field is *not* required. If it is provided in the response body, it must also be provided as a header per the normal etag convention.  Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly etag?: string;
}

/** Describes the format of Error response. */
export interface ErrorContract {
  /** The error details. */
  error?: ErrorResponse;
}

/** The log search rule resource for patch operations. */
export interface LogSearchRuleResourcePatch {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /** The flag which indicates whether the Log Search rule is enabled. Value should be true or false */
  enabled?: Enabled;
}

/** Represents a collection of Log Search rule resources. */
export interface LogSearchRuleResourceCollection {
  /** The values for the Log Search Rule resources. */
  value?: LogSearchRuleResource[];
}

/** Represents collection of metric namespaces. */
export interface MetricNamespaceCollection {
  /** The values for the metric namespaces. */
  value: MetricNamespace[];
}

/** Metric namespace class specifies the metadata for a metric namespace. */
export interface MetricNamespace {
  /** The ID of the metric namespace. */
  id?: string;
  /** The type of the namespace. */
  type?: string;
  /** The escaped name of the namespace. */
  name?: string;
  /** Kind of namespace */
  classification?: NamespaceClassification;
  /** Properties which include the fully qualified namespace name. */
  properties?: MetricNamespaceName;
}

/** The fully qualified metric namespace name. */
export interface MetricNamespaceName {
  /** The metric namespace name. */
  metricNamespaceName?: string;
}

/** Information about a container with data for a given resource. */
export interface DataContainer {
  /** Log Analytics workspace information. */
  workspace: WorkspaceInfo;
}

/** Information about a Log Analytics Workspace. */
export interface WorkspaceInfo {
  /** Azure Resource Manager identifier of the Log Analytics Workspace. */
  id: string;
  /** Location of the Log Analytics workspace. */
  location: string;
  /** Log Analytics workspace identifier. */
  customerId: string;
}

/** An azure resource object */
export interface ProxyResource {
  /**
   * Azure resource Id
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * Azure resource name
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * Azure resource type
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
}

/** An error response from the API. */
export interface ResponseWithError {
  /** Error information. */
  error: ErrorModel;
}

/** Error details. */
export interface ErrorModel {
  /** Error code identifying the specific error. */
  code: string;
  /** Error message in the caller's locale. */
  message?: string;
}

/** Describes the list of Azure Monitor PrivateLinkScope resources. */
export interface AzureMonitorPrivateLinkScopeListResult {
  /** List of Azure Monitor PrivateLinkScope definitions. */
  value: AzureMonitorPrivateLinkScope[];
  /** The URI to get the next set of Azure Monitor PrivateLinkScope definitions if too many PrivateLinkScopes where returned in the result set. */
  nextLink?: string;
}

/** Private endpoint which the connection belongs to. */
export interface PrivateEndpointProperty {
  /** Resource id of the private endpoint. */
  id?: string;
}

/** State of the private endpoint connection. */
export interface PrivateLinkServiceConnectionStateProperty {
  /** The private link service connection status. */
  status: string;
  /** The private link service connection description. */
  description: string;
  /**
   * The actions required for private link service connection.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly actionsRequired?: string;
}

/** An azure resource object */
export interface PrivateLinkScopesResource {
  /**
   * Azure resource Id
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * Azure resource name
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * Azure resource type
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /** Resource location */
  location: string;
  /** Resource tags */
  tags?: { [propertyName: string]: string };
}

/** A container holding only the Tags for a resource, allowing the user to update the tags on a PrivateLinkScope instance. */
export interface TagsResource {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
}

/** The status of operation. */
export interface OperationStatus {
  /** The operation Id. */
  id?: string;
  /** The operation name. */
  name?: string;
  /** Start time of the job in standard ISO8601 format. */
  startTime?: Date;
  /** End time of the job in standard ISO8601 format. */
  endTime?: Date;
  /** The status of the operation. */
  status?: string;
  /** The error detail of the operation if any. */
  error?: ErrorResponseCommon;
}

/** The resource management error additional info. */
export interface ErrorAdditionalInfo {
  /**
   * The additional info type.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /**
   * The additional info.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly info?: Record<string, unknown>;
}

/** A list of private link resources */
export interface PrivateLinkResourceListResult {
  /**
   * Array of results.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly value?: PrivateLinkResource[];
  /**
   * Link to retrieve next page of results.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly nextLink?: string;
}

/** A list of private endpoint connections. */
export interface PrivateEndpointConnectionListResult {
  /**
   * Array of results.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly value?: PrivateEndpointConnection[];
  /**
   * Link to retrieve next page of results.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly nextLink?: string;
}

/** A list of scoped resources in a private link scope. */
export interface ScopedResourceListResult {
  /**
   * Array of results.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly value?: ScopedResource[];
  /**
   * Link to retrieve next page of results.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly nextLink?: string;
}

/** An Activity Log alert condition that is met when all its member conditions are met. */
export interface ActivityLogAlertAllOfCondition {
  /** The list of activity log alert conditions. */
  allOf: ActivityLogAlertLeafCondition[];
}

/** An Activity Log alert condition that is met by comparing an activity log field and value. */
export interface ActivityLogAlertLeafCondition {
  /** The name of the field that this condition will examine. The possible values for this field are (case-insensitive): 'resourceId', 'category', 'caller', 'level', 'operationName', 'resourceGroup', 'resourceProvider', 'status', 'subStatus', 'resourceType', or anything beginning with 'properties.'. */
  field: string;
  /** The field value will be compared to this value (case-insensitive) to determine if the condition is met. */
  equals: string;
}

/** A list of activity log alert actions. */
export interface ActivityLogAlertActionList {
  /** The list of activity log alerts. */
  actionGroups?: ActivityLogAlertActionGroup[];
}

/** A pointer to an Azure Action Group. */
export interface ActivityLogAlertActionGroup {
  /** The resourceId of the action group. This cannot be null or empty. */
  actionGroupId: string;
  /** the dictionary of custom properties to include with the post operation. These data are appended to the webhook payload. */
  webhookProperties?: { [propertyName: string]: string };
}

/** An activity log alert object for the body of patch operations. */
export interface ActivityLogAlertPatchBody {
  /** Resource tags */
  tags?: { [propertyName: string]: string };
  /** Indicates whether this activity log alert is enabled. If an activity log alert is not enabled, then none of its actions will be activated. */
  enabled?: boolean;
}

/** A list of activity log alerts. */
export interface ActivityLogAlertList {
  /** The list of activity log alerts. */
  value?: ActivityLogAlertResource[];
  /** Provides the link to retrieve the next set of elements. */
  nextLink?: string;
}

/** A pageable list of resources. */
export interface DataCollectionEndpointResourceListResult {
  /** A list of resources. */
  value: DataCollectionEndpointResource[];
  /** The URL to use for getting the next set of results. */
  nextLink?: string;
}

/** Definition of ARM tracked top level resource. */
export interface DataCollectionEndpointResource {
  /** The geo-location where the resource lives. */
  location: string;
  /** Resource tags. */
  tags?: { [propertyName: string]: string };
  /** The kind of the resource. */
  kind?: KnownDataCollectionEndpointResourceKind;
  /**
   * Fully qualified ID of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * The name of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * The type of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /**
   * Resource entity tag (ETag).
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly etag?: string;
  /**
   * Metadata pertaining to creation and last modification of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly systemData?: DataCollectionEndpointResourceSystemData;
  /** Description of the data collection endpoint. */
  description?: string;
  /** The immutable ID of this data collection endpoint resource. This property is READ-ONLY. */
  immutableId?: string;
  /** The endpoint used by agents to access their configuration. */
  configurationAccess?: DataCollectionEndpointConfigurationAccess;
  /** The endpoint used by clients to ingest logs. */
  logsIngestion?: DataCollectionEndpointLogsIngestion;
  /** Network access control rules for the endpoints. */
  networkAcls?: DataCollectionEndpointNetworkAcls;
  /**
   * The resource provisioning state. This property is READ-ONLY.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: KnownDataCollectionEndpointProvisioningState;
}

/** Definition of data collection endpoint. */
export interface DataCollectionEndpoint {
  /** Description of the data collection endpoint. */
  description?: string;
  /** The immutable ID of this data collection endpoint resource. This property is READ-ONLY. */
  immutableId?: string;
  /** The endpoint used by agents to access their configuration. */
  configurationAccess?: DataCollectionEndpointConfigurationAccess;
  /** The endpoint used by clients to ingest logs. */
  logsIngestion?: DataCollectionEndpointLogsIngestion;
  /** Network access control rules for the endpoints. */
  networkAcls?: DataCollectionEndpointNetworkAcls;
  /**
   * The resource provisioning state. This property is READ-ONLY.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: KnownDataCollectionEndpointProvisioningState;
}

/** Definition of the endpoint used for accessing configuration. */
export interface ConfigurationAccessEndpointSpec {
  /**
   * The endpoint. This property is READ-ONLY.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly endpoint?: string;
}

/** Definition of the endpoint used for ingesting logs. */
export interface LogsIngestionEndpointSpec {
  /**
   * The endpoint. This property is READ-ONLY.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly endpoint?: string;
}

/** Definition of the network rules. */
export interface NetworkRuleSet {
  /** The configuration to set whether network access from public internet to the endpoints are allowed. */
  publicNetworkAccess?: KnownPublicNetworkAccessOptions;
}

/** Metadata pertaining to creation and last modification of the resource. */
export interface SystemData {
  /** The identity that created the resource. */
  createdBy?: string;
  /** The type of identity that created the resource. */
  createdByType?: CreatedByType;
  /** The timestamp of resource creation (UTC). */
  createdAt?: Date;
  /** The identity that last modified the resource. */
  lastModifiedBy?: string;
  /** The type of identity that last modified the resource. */
  lastModifiedByType?: CreatedByType;
  /** The timestamp of resource last modification (UTC) */
  lastModifiedAt?: Date;
}

/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). */
export interface ErrorResponseCommonV2 {
  /** The error object. */
  error?: ErrorDetail;
}

/** The error detail. */
export interface ErrorDetail {
  /**
   * The error code.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly code?: string;
  /**
   * The error message.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly message?: string;
  /**
   * The error target.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly target?: string;
  /**
   * The error details.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly details?: ErrorDetail[];
  /**
   * The error additional info.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly additionalInfo?: ErrorAdditionalInfo[];
}

/** Definition of ARM tracked top level resource properties for update operation. */
export interface ResourceForUpdate {
  /** Resource tags. */
  tags?: { [propertyName: string]: string };
}

/** A pageable list of resources. */
export interface DataCollectionRuleAssociationProxyOnlyResourceListResult {
  /** A list of resources. */
  value: DataCollectionRuleAssociationProxyOnlyResource[];
  /** The URL to use for getting the next set of results. */
  nextLink?: string;
}

/** Definition of generic ARM proxy resource. */
export interface DataCollectionRuleAssociationProxyOnlyResource {
  /**
   * Fully qualified ID of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * The name of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * The type of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /**
   * Resource entity tag (ETag).
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly etag?: string;
  /**
   * Metadata pertaining to creation and last modification of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly systemData?: DataCollectionRuleAssociationProxyOnlyResourceSystemData;
  /** Description of the association. */
  description?: string;
  /** The resource ID of the data collection rule that is to be associated. */
  dataCollectionRuleId?: string;
  /** The resource ID of the data collection endpoint that is to be associated. */
  dataCollectionEndpointId?: string;
  /**
   * The resource provisioning state.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: KnownDataCollectionRuleAssociationProvisioningState;
}

/** Definition of association of a data collection rule with a monitored Azure resource. */
export interface DataCollectionRuleAssociation {
  /** Description of the association. */
  description?: string;
  /** The resource ID of the data collection rule that is to be associated. */
  dataCollectionRuleId?: string;
  /** The resource ID of the data collection endpoint that is to be associated. */
  dataCollectionEndpointId?: string;
  /**
   * The resource provisioning state.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: KnownDataCollectionRuleAssociationProvisioningState;
}

/** A pageable list of resources. */
export interface DataCollectionRuleResourceListResult {
  /** A list of resources. */
  value: DataCollectionRuleResource[];
  /** The URL to use for getting the next set of results. */
  nextLink?: string;
}

/** Definition of ARM tracked top level resource. */
export interface DataCollectionRuleResource {
  /** The geo-location where the resource lives. */
  location: string;
  /** Resource tags. */
  tags?: { [propertyName: string]: string };
  /** The kind of the resource. */
  kind?: KnownDataCollectionRuleResourceKind;
  /**
   * Fully qualified ID of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly id?: string;
  /**
   * The name of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly name?: string;
  /**
   * The type of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly type?: string;
  /**
   * Resource entity tag (ETag).
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly etag?: string;
  /**
   * Metadata pertaining to creation and last modification of the resource.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly systemData?: DataCollectionRuleResourceSystemData;
  /** Description of the data collection rule. */
  description?: string;
  /**
   * The immutable ID of this data collection rule. This property is READ-ONLY.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly immutableId?: string;
  /**
   * 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?: DataCollectionRuleDataSources;
  /** The specification of destinations. */
  destinations?: DataCollectionRuleDestinations;
  /** The specification of data flows. */
  dataFlows?: DataFlow[];
  /**
   * The resource provisioning state.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: KnownDataCollectionRuleProvisioningState;
}

/** Definition of what monitoring data to collect and where that data should be sent. */
export interface DataCollectionRule {
  /** Description of the data collection rule. */
  description?: string;
  /**
   * The immutable ID of this data collection rule. This property is READ-ONLY.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly immutableId?: string;
  /**
   * 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?: DataCollectionRuleDataSources;
  /** The specification of destinations. */
  destinations?: DataCollectionRuleDestinations;
  /** The specification of data flows. */
  dataFlows?: DataFlow[];
  /**
   * The resource provisioning state.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: KnownDataCollectionRuleProvisioningState;
}

/** Specification of data sources that will be collected. */
export interface DataSourcesSpec {
  /** The list of performance counter data source configurations. */
  performanceCounters?: PerfCounterDataSource[];
  /** The list of Windows Event Log data source configurations. */
  windowsEventLogs?: WindowsEventLogDataSource[];
  /** The list of Syslog data source configurations. */
  syslog?: SyslogDataSource[];
  /** The list of Azure VM extension data source configurations. */
  extensions?: ExtensionDataSource[];
}

/**
 * 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.
 */
export interface PerfCounterDataSource {
  /**
   * 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?: KnownPerfCounterDataSourceStreams[];
  /** The number of seconds between consecutive counter measurements (samples). */
  samplingFrequencyInSeconds?: number;
  /**
   * 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[];
  /**
   * 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;
}

/**
 * Definition of which Windows Event Log events will be collected and how they will be collected.
 * Only collected from Windows machines.
 */
export interface WindowsEventLogDataSource {
  /**
   * 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?: KnownWindowsEventLogDataSourceStreams[];
  /** A list of Windows Event Log queries in XPATH format. */
  xPathQueries?: string[];
  /**
   * 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;
}

/**
 * Definition of which syslog data will be collected and how it will be collected.
 * Only collected from Linux machines.
 */
export interface SyslogDataSource {
  /**
   * 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?: KnownSyslogDataSourceStreams[];
  /** The list of facility names. */
  facilityNames?: KnownSyslogDataSourceFacilityNames[];
  /** The log levels to collect. */
  logLevels?: KnownSyslogDataSourceLogLevels[];
  /**
   * 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;
}

/**
 * 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.
 */
export interface ExtensionDataSource {
  /**
   * 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?: KnownExtensionDataSourceStreams[];
  /** The name of the VM extension. */
  extensionName: string;
  /** The extension settings. The format is specific for particular extension. */
  extensionSettings?: Record<string, unknown>;
  /** The list of data sources this extension needs data from. */
  inputDataSources?: string[];
  /**
   * 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;
}

/** Specification of destinations that can be used in data flows. */
export interface DestinationsSpec {
  /** List of Log Analytics destinations. */
  logAnalytics?: LogAnalyticsDestination[];
  /** Azure Monitor Metrics destination. */
  azureMonitorMetrics?: DestinationsSpecAzureMonitorMetrics;
}

/** Log Analytics destination. */
export interface LogAnalyticsDestination {
  /** The resource ID of the Log Analytics workspace. */
  workspaceResourceId?: string;
  /**
   * The Customer ID of the Log Analytics workspace.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly workspaceId?: string;
  /**
   * A friendly name for the destination.
   * This name should be unique across all destinations (regardless of type) within the data collection rule.
   */
  name?: string;
}

/** Azure Monitor Metrics destination. */
export interface AzureMonitorMetricsDestination {
  /**
   * A friendly name for the destination.
   * This name should be unique across all destinations (regardless of type) within the data collection rule.
   */
  name?: string;
}

/** Definition of which streams are sent to which destinations. */
export interface DataFlow {
  /** List of streams for this data flow. */
  streams?: KnownDataFlowStreams[];
  /** List of destinations for this data flow. */
  destinations?: string[];
}

/** The claims for a rule management event data source. */
export interface RuleManagementEventClaimsDataSource {
  /** the email address. */
  emailAddress?: string;
}

/** How the data that is collected should be combined over time. */
export interface ManagementEventAggregationCondition {
  /** the condition operator. */
  operator?: ConditionOperator;
  /** The threshold value that activates the alert. */
  threshold?: number;
  /** the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. If specified then it must be between 5 minutes and 1 day. */
  windowSize?: string;
}

/** The types of conditions for a multi resource alert. */
export interface MultiMetricCriteria {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  criterionType: "StaticThresholdCriterion" | "DynamicThresholdCriterion";
  /** Describes unknown properties. The value of an unknown property can be of "any" type. */
  [property: string]: any;
  /** Name of the criteria. */
  name: string;
  /** Name of the metric. */
  metricName: string;
  /** Namespace of the metric. */
  metricNamespace?: string;
  /** the criteria time aggregation types. */
  timeAggregation: AggregationTypeEnum;
  /** List of dimension conditions. */
  dimensions?: MetricDimension[];
  /** Allows creating an alert rule on a custom metric that isn't yet emitted, by causing the metric validation to be skipped. */
  skipMetricValidation?: boolean;
}

/** Specifies a metric dimension. */
export interface MetricDimension {
  /** Name of the dimension. */
  name: string;
  /** the dimension operator. Only 'Include' and 'Exclude' are supported */
  operator: string;
  /** list of dimension values. */
  values: string[];
}

/** The minimum number of violations required within the selected lookback time window required to raise an alert. */
export interface DynamicThresholdFailingPeriods {
  /** The number of aggregated lookback points. The lookback time window is calculated based on the aggregation granularity (windowSize) and the selected number of aggregated points. */
  numberOfEvaluationPeriods: number;
  /** The number of violations to trigger an alert. Should be smaller or equal to numberOfEvaluationPeriods. */
  minFailingPeriodsToAlert: number;
}

/** The condition that results in the Log Search rule. */
export interface TriggerCondition {
  /** Evaluation operation for rule - 'GreaterThan' or 'LessThan. */
  thresholdOperator: ConditionalOperator;
  /** Result or count threshold based on which rule should be triggered. */
  threshold: number;
  /** Trigger condition for metric query rule */
  metricTrigger?: LogMetricTrigger;
}

/** A log metrics trigger descriptor. */
export interface LogMetricTrigger {
  /** Evaluation operation for Metric -'GreaterThan' or 'LessThan' or 'Equal'. */
  thresholdOperator?: ConditionalOperator;
  /** The threshold of the metric trigger. */
  threshold?: number;
  /** Metric Trigger Type - 'Consecutive' or 'Total' */
  metricTriggerType?: MetricTriggerType;
  /** Evaluation of metric on a particular column */
  metricColumn?: string;
}

/** Azure action group */
export interface AzNsActionGroup {
  /** Azure Action Group reference. */
  actionGroup?: string[];
  /** Custom subject override for all email ids in Azure action group */
  emailSubject?: string;
  /** Custom payload to be sent for all webhook URI in Azure action group */
  customWebhookPayload?: string;
}

/** Specifies the criteria for converting log to metric. */
export interface Dimension {
  /** Name of the dimension */
  name: string;
  /** Operator for dimension values */
  operator: Operator;
  /** List of dimension values */
  values: string[];
}

/** Specifies the criteria for converting log to metric. */
export interface Criteria {
  /** Name of the metric */
  metricName: string;
  /** List of Dimensions for creating metric */
  dimensions?: Dimension[];
}

/** The autoscale setting resource. */
export type AutoscaleSettingResource = Resource & {
  /** the collection of automatic scaling profiles that specify different scaling parameters for different time periods. A maximum of 20 profiles can be specified. */
  profiles: AutoscaleProfile[];
  /** the collection of notifications. */
  notifications?: AutoscaleNotification[];
  /** the enabled flag. Specifies whether automatic scaling is enabled for the resource. The default value is 'true'. */
  enabled?: boolean;
  /** the name of the autoscale setting. */
  namePropertiesName?: string;
  /** the resource identifier of the resource that the autoscale setting should be added to. */
  targetResourceUri?: string;
  /** the location of the resource that the autoscale setting should be added to. */
  targetResourceLocation?: string;
};

/** The alert rule resource. */
export type AlertRuleResource = Resource & {
  /** the name of the alert rule. */
  namePropertiesName: string;
  /** the description of the alert rule that will be included in the alert email. */
  description?: string;
  /** the provisioning state. */
  provisioningState?: string;
  /** the flag that indicates whether the alert rule is enabled. */
  isEnabled: boolean;
  /** the condition that results in the alert rule being activated. */
  condition: RuleConditionUnion;
  /** action that is performed when the alert rule becomes active, and when an alert condition is resolved. */
  action?: RuleActionUnion;
  /** the array of actions that are performed when the alert rule becomes active, and when an alert condition is resolved. */
  actions?: RuleActionUnion[];
  /**
   * Last time the rule was updated in ISO8601 format.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly lastUpdatedTime?: Date;
};

/** The log profile resource. */
export type LogProfileResource = Resource & {
  /** the resource id of the storage account to which you would like to send the Activity Log. */
  storageAccountId?: string;
  /** The service bus rule ID of the service bus namespace in which you would like to have Event Hubs created for streaming the Activity Log. The rule ID is of the format: '{service bus resource ID}/authorizationrules/{key name}'. */
  serviceBusRuleId?: string;
  /** List of regions for which Activity Log events should be stored or streamed. It is a comma separated list of valid ARM locations including the 'global' location. */
  locations: string[];
  /** the categories of the logs. These categories are created as is convenient to the user. Some values are: 'Write', 'Delete', and/or 'Action.' */
  categories: string[];
  /** the retention policy for the events in the log. */
  retentionPolicy: RetentionPolicy;
};

/** The metric alert resource. */
export type MetricAlertResource = Resource & {
  /** the description of the metric alert that will be included in the alert email. */
  description?: string;
  /** Alert severity {0, 1, 2, 3, 4} */
  severity: number;
  /** the flag that indicates whether the metric alert is enabled. */
  enabled: boolean;
  /** the list of resource id's that this metric alert is scoped to. */
  scopes: string[];
  /** how often the metric alert is evaluated represented in ISO 8601 duration format. */
  evaluationFrequency: string;
  /** the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. */
  windowSize: string;
  /** the resource type of the target resource(s) on which the alert is created/updated. Mandatory if the scope contains a subscription, resource group, or more than one resource. */
  targetResourceType?: string;
  /** the region of the target resource(s) on which the alert is created/updated. Mandatory if the scope contains a subscription, resource group, or more than one resource. */
  targetResourceRegion?: string;
  /** defines the specific alert criteria information. */
  criteria: MetricAlertCriteriaUnion;
  /** the flag that indicates whether the alert should be auto resolved or not. The default is true. */
  autoMitigate?: boolean;
  /** the array of actions that are performed when the alert rule becomes active, and when an alert condition is resolved. */
  actions?: MetricAlertAction[];
  /**
   * Last time the rule was updated in ISO8601 format.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly lastUpdatedTime?: Date;
  /**
   * the value indicating whether this alert rule is migrated.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly isMigrated?: boolean;
};

/** An activity log alert resource. */
export type ActivityLogAlertResource = Resource & {
  /** A list of resourceIds that will be used as prefixes. The alert will only apply to activityLogs with resourceIds that fall under one of these prefixes. This list must include at least one item. */
  scopes?: string[];
  /** Indicates whether this activity log alert is enabled. If an activity log alert is not enabled, then none of its actions will be activated. */
  enabled?: boolean;
  /** The condition that will cause this alert to activate. */
  condition?: ActivityLogAlertAllOfCondition;
  /** The actions that will activate when the condition is met. */
  actions?: ActivityLogAlertActionList;
  /** A description of this activity log alert. */
  description?: string;
};

/** The resource management error response. */
export type ErrorResponseCommon = ErrorResponse & {
  /**
   * The error details.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly details?: ErrorResponseCommon[];
  /**
   * The error additional info.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly additionalInfo?: ErrorAdditionalInfo[];
};

/** A rule condition based on a metric crossing a threshold. */
export type ThresholdRuleCondition = RuleCondition & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Management.Insights.Models.ThresholdRuleCondition";
  /** the operator used to compare the data and the threshold. */
  operator: ConditionOperator;
  /** the threshold value that activates the alert. */
  threshold: number;
  /** the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. If specified then it must be between 5 minutes and 1 day. */
  windowSize?: string;
  /** the time aggregation operator. How the data that are collected should be combined over time. The default value is the PrimaryAggregationType of the Metric. */
  timeAggregation?: TimeAggregationOperator;
};

/** A rule condition based on a certain number of locations failing. */
export type LocationThresholdRuleCondition = RuleCondition & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Management.Insights.Models.LocationThresholdRuleCondition";
  /** the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold. If specified then it must be between 5 minutes and 1 day. */
  windowSize?: string;
  /** the number of locations that must fail to activate the alert. */
  failedLocationCount: number;
};

/** A management event rule condition. */
export type ManagementEventRuleCondition = RuleCondition & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Management.Insights.Models.ManagementEventRuleCondition";
  /** How the data that is collected should be combined over time and when the alert is activated. Note that for management event alerts aggregation is optional – if it is not provided then any event will cause the alert to activate. */
  aggregation?: ManagementEventAggregationCondition;
};

/** A rule metric data source. The discriminator value is always RuleMetricDataSource in this case. */
export type RuleMetricDataSource = RuleDataSource & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Management.Insights.Models.RuleMetricDataSource";
  /** the name of the metric that defines what the rule monitors. */
  metricName?: string;
};

/** A rule management event data source. The discriminator fields is always RuleManagementEventDataSource in this case. */
export type RuleManagementEventDataSource = RuleDataSource & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Management.Insights.Models.RuleManagementEventDataSource";
  /** the event name. */
  eventName?: string;
  /** the event source. */
  eventSource?: string;
  /** the level. */
  level?: string;
  /** The name of the operation that should be checked for. If no name is provided, any operation will match. */
  operationName?: string;
  /** the resource group name. */
  resourceGroupName?: string;
  /** the resource provider name. */
  resourceProviderName?: string;
  /** The status of the operation that should be checked for. If no status is provided, any status will match. */
  status?: string;
  /** the substatus. */
  subStatus?: string;
  /** the claims. */
  claims?: RuleManagementEventClaimsDataSource;
};

/** Specifies the action to send email when the rule condition is evaluated. The discriminator is always RuleEmailAction in this case. */
export type RuleEmailAction = RuleAction & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Management.Insights.Models.RuleEmailAction";
  /** Whether the administrators (service and co-administrators) of the service should be notified when the alert is activated. */
  sendToServiceOwners?: boolean;
  /** the list of administrator's custom email addresses to notify of the activation of the alert. */
  customEmails?: string[];
};

/** Specifies the action to post to service when the rule condition is evaluated. The discriminator is always RuleWebhookAction in this case. */
export type RuleWebhookAction = RuleAction & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Management.Insights.Models.RuleWebhookAction";
  /** the service uri to Post the notification when the alert activates or resolves. */
  serviceUri?: string;
  /** the dictionary of custom properties to include with the post operation. These data are appended to the webhook payload. */
  properties?: { [propertyName: string]: string };
};

/** The diagnostic setting resource. */
export type DiagnosticSettingsResource = ProxyOnlyResource & {
  /** The resource ID of the storage account to which you would like to send Diagnostic Logs. */
  storageAccountId?: string;
  /** The service bus rule Id of the diagnostic setting. This is here to maintain backwards compatibility. */
  serviceBusRuleId?: string;
  /** The resource Id for the event hub authorization rule. */
  eventHubAuthorizationRuleId?: string;
  /** The name of the event hub. If none is specified, the default event hub will be selected. */
  eventHubName?: string;
  /** The list of metric settings. */
  metrics?: MetricSettings[];
  /** The list of logs settings. */
  logs?: LogSettings[];
  /** The full ARM resource ID of the Log Analytics workspace to which you would like to send Diagnostic Logs. Example: /subscriptions/4b9e8510-67ab-4e9a-95a9-e2f1e570ea9c/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/viruela2 */
  workspaceId?: string;
  /** A string indicating whether the export to Log Analytics should use the default destination type, i.e. AzureDiagnostics, or use a destination type constructed as follows: <normalized service identity>_<normalized category name>. Possible values are: Dedicated and null (null is default.) */
  logAnalyticsDestinationType?: string;
};

/** The diagnostic settings category resource. */
export type DiagnosticSettingsCategoryResource = ProxyOnlyResource & {
  /** The type of the diagnostic settings category. */
  categoryType?: CategoryType;
};

/** An action group resource. */
export type ActionGroupResource = AzureResource & {
  /** The short name of the action group. This will be used in SMS messages. */
  groupShortName?: string;
  /** Indicates whether this action group is enabled. If an action group is not enabled, then none of its receivers will receive communications. */
  enabled?: boolean;
  /** The list of email receivers that are part of this action group. */
  emailReceivers?: EmailReceiver[];
  /** The list of SMS receivers that are part of this action group. */
  smsReceivers?: SmsReceiver[];
  /** The list of webhook receivers that are part of this action group. */
  webhookReceivers?: WebhookReceiver[];
  /** The list of ITSM receivers that are part of this action group. */
  itsmReceivers?: ItsmReceiver[];
  /** The list of AzureAppPush receivers that are part of this action group. */
  azureAppPushReceivers?: AzureAppPushReceiver[];
  /** The list of AutomationRunbook receivers that are part of this action group. */
  automationRunbookReceivers?: AutomationRunbookReceiver[];
  /** The list of voice receivers that are part of this action group. */
  voiceReceivers?: VoiceReceiver[];
  /** The list of logic app receivers that are part of this action group. */
  logicAppReceivers?: LogicAppReceiver[];
  /** The list of azure function receivers that are part of this action group. */
  azureFunctionReceivers?: AzureFunctionReceiver[];
  /** The list of ARM role receivers that are part of this action group. Roles are Azure RBAC roles and only built-in roles are supported. */
  armRoleReceivers?: ArmRoleReceiver[];
  /** The list of event hub receivers that are part of this action group. */
  eventHubReceivers?: EventHubReceiver[];
};

/** Specifies the metric alert criteria for a single resource that has multiple metric criteria. */
export type MetricAlertSingleResourceMultipleMetricCriteria = MetricAlertCriteria & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria";
  /** The list of metric criteria for this 'all of' operation. */
  allOf?: MetricCriteria[];
};

/** Specifies the metric alert rule criteria for a web test resource. */
export type WebtestLocationAvailabilityCriteria = MetricAlertCriteria & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Monitor.WebtestLocationAvailabilityCriteria";
  /** The Application Insights web test Id. */
  webTestId: string;
  /** The Application Insights resource Id. */
  componentId: string;
  /** The number of failed locations. */
  failedLocationCount: number;
};

/** Specifies the metric alert criteria for multiple resource that has multiple metric criteria. */
export type MetricAlertMultipleResourceMultipleMetricCriteria = MetricAlertCriteria & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria";
  /** the list of multiple metric criteria for this 'all of' operation. */
  allOf?: MultiMetricCriteriaUnion[];
};

/** Specify action need to be taken when rule type is Alert */
export type AlertingAction = Action & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.AlertingAction";
  /** Severity of the alert */
  severity: AlertSeverity;
  /** Azure action group reference. */
  aznsAction?: AzNsActionGroup;
  /** time (in minutes) for which Alerts should be throttled or suppressed. */
  throttlingInMin?: number;
  /** The trigger condition that results in the alert rule being. */
  trigger: TriggerCondition;
};

/** Specify action need to be taken when rule type is converting log to metric */
export type LogToMetricAction = Action & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  odataType: "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.LogToMetricAction";
  /** Criteria of Metric */
  criteria: Criteria[];
};

/** The Log Search Rule resource. */
export type LogSearchRuleResource = ResourceAutoGenerated & {
  /**
   * The api-version used when creating this alert rule
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly createdWithApiVersion?: string;
  /**
   * True if alert rule is legacy Log Analytic rule
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly isLegacyLogAnalyticsRule?: boolean;
  /** The description of the Log Search rule. */
  description?: string;
  /** The display name of the alert rule */
  displayName?: string;
  /** The flag that indicates whether the alert should be automatically resolved or not. The default is false. */
  autoMitigate?: boolean;
  /** The flag which indicates whether the Log Search rule is enabled. Value should be true or false */
  enabled?: Enabled;
  /**
   * Last time the rule was updated in IS08601 format.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly lastUpdatedTime?: Date;
  /**
   * Provisioning state of the scheduled query rule
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: ProvisioningState;
  /** Data Source against which rule will Query Data */
  source: Source;
  /** Schedule (Frequency, Time Window) for rule. Required for action type - AlertingAction */
  schedule?: Schedule;
  /** Action needs to be taken on rule execution. */
  action: ActionUnion;
};

/** VM Insights onboarding status for a resource. */
export type VMInsightsOnboardingStatus = ProxyResource & {
  /** Azure Resource Manager identifier of the resource whose onboarding status is being represented. */
  resourceId?: string;
  /** The onboarding status for the resource. Note that, a higher level scope, e.g., resource group or subscription, is considered onboarded if at least one resource under it is onboarded. */
  onboardingStatus?: OnboardingStatus;
  /** The status of VM Insights data from the resource. When reported as `present` the data array will contain information about the data containers to which data for the specified resource is being routed. */
  dataStatus?: DataStatus;
  /** Containers that currently store VM Insights data for the specified resource. */
  data?: DataContainer[];
};

/** A private endpoint connection */
export type PrivateEndpointConnection = ProxyResource & {
  /** Private endpoint which the connection belongs to. */
  privateEndpoint?: PrivateEndpointProperty;
  /** Connection state of the private endpoint connection. */
  privateLinkServiceConnectionState?: PrivateLinkServiceConnectionStateProperty;
  /**
   * State of the private endpoint connection.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: string;
};

/** A private link resource */
export type PrivateLinkResource = ProxyResource & {
  /**
   * The private link resource group id.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly groupId?: string;
  /**
   * The private link resource required member names.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly requiredMembers?: string[];
};

/** A private link scoped resource */
export type ScopedResource = ProxyResource & {
  /** The resource id of the scoped Azure monitor resource. */
  linkedResourceId?: string;
  /**
   * State of the private endpoint connection.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: string;
};

/** An Azure Monitor PrivateLinkScope definition. */
export type AzureMonitorPrivateLinkScope = PrivateLinkScopesResource & {
  /**
   * Current state of this PrivateLinkScope: whether or not is has been provisioned within the resource group it is defined. Users cannot change this value but are able to read from it. Values will include Provisioning ,Succeeded, Canceled and Failed.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly provisioningState?: string;
  /**
   * List of private endpoint connections.
   * NOTE: This property will not be serialized. It can only be populated by the server.
   */
  readonly privateEndpointConnections?: PrivateEndpointConnection[];
};

/** Resource properties. */
export type DataCollectionEndpointResourceProperties = DataCollectionEndpoint & {};

/** The endpoint used by agents to access their configuration. */
export type DataCollectionEndpointConfigurationAccess = ConfigurationAccessEndpointSpec & {};

/** The endpoint used by clients to ingest logs. */
export type DataCollectionEndpointLogsIngestion = LogsIngestionEndpointSpec & {};

/** Network access control rules for the endpoints. */
export type DataCollectionEndpointNetworkAcls = NetworkRuleSet & {};

/** Metadata pertaining to creation and last modification of the resource. */
export type DataCollectionEndpointResourceSystemData = SystemData & {};

/** Metadata pertaining to creation and last modification of the resource. */
export type DataCollectionRuleAssociationProxyOnlyResourceSystemData = SystemData & {};

/** Metadata pertaining to creation and last modification of the resource. */
export type DataCollectionRuleResourceSystemData = SystemData & {};

/** Resource properties. */
export type DataCollectionRuleAssociationProxyOnlyResourceProperties = DataCollectionRuleAssociation & {};

/** Resource properties. */
export type DataCollectionRuleResourceProperties = DataCollectionRule & {};

/**
 * 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.
 */
export type DataCollectionRuleDataSources = DataSourcesSpec & {};

/** The specification of destinations. */
export type DataCollectionRuleDestinations = DestinationsSpec & {};

/** Azure Monitor Metrics destination. */
export type DestinationsSpecAzureMonitorMetrics = AzureMonitorMetricsDestination & {};

/** Criterion to filter metrics. */
export type MetricCriteria = MultiMetricCriteria & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  criterionType: "StaticThresholdCriterion";
  /** the criteria operator. */
  operator: Operator;
  /** the criteria threshold value that activates the alert. */
  threshold: number;
};

/** Criterion for dynamic threshold. */
export type DynamicMetricCriteria = MultiMetricCriteria & {
  /** Polymorphic discriminator, which specifies the different types this object can be */
  criterionType: "DynamicThresholdCriterion";
  /** The operator used to compare the metric value against the threshold. */
  operator: DynamicThresholdOperator;
  /** The extent of deviation required to trigger an alert. This will affect how tight the threshold is to the metric series pattern. */
  alertSensitivity: DynamicThresholdSensitivity;
  /** The minimum number of violations required within the selected lookback time window required to raise an alert. */
  failingPeriods: DynamicThresholdFailingPeriods;
  /** Use this option to set the date from which to start learning the metric historical data and calculate the dynamic thresholds (in ISO8601 format) */
  ignoreDataBefore?: Date;
};

/** Known values of {@link ScaleRuleMetricDimensionOperationType} that the service accepts. */
export enum KnownScaleRuleMetricDimensionOperationType {
  Equals = "Equals",
  NotEquals = "NotEquals"
}

/**
 * Defines values for ScaleRuleMetricDimensionOperationType. \
 * {@link KnownScaleRuleMetricDimensionOperationType} can be used interchangeably with ScaleRuleMetricDimensionOperationType,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Equals** \
 * **NotEquals**
 */
export type ScaleRuleMetricDimensionOperationType = string;

/** Known values of {@link MetricClass} that the service accepts. */
export enum KnownMetricClass {
  Availability = "Availability",
  Transactions = "Transactions",
  Errors = "Errors",
  Latency = "Latency",
  Saturation = "Saturation"
}

/**
 * Defines values for MetricClass. \
 * {@link KnownMetricClass} can be used interchangeably with MetricClass,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Availability** \
 * **Transactions** \
 * **Errors** \
 * **Latency** \
 * **Saturation**
 */
export type MetricClass = string;

/** Known values of {@link MetricUnit} that the service accepts. */
export enum KnownMetricUnit {
  Count = "Count",
  Bytes = "Bytes",
  Seconds = "Seconds",
  CountPerSecond = "CountPerSecond",
  BytesPerSecond = "BytesPerSecond",
  Percent = "Percent",
  MilliSeconds = "MilliSeconds",
  ByteSeconds = "ByteSeconds",
  Unspecified = "Unspecified",
  Cores = "Cores",
  MilliCores = "MilliCores",
  NanoCores = "NanoCores",
  BitsPerSecond = "BitsPerSecond"
}

/**
 * Defines values for MetricUnit. \
 * {@link KnownMetricUnit} can be used interchangeably with MetricUnit,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Count** \
 * **Bytes** \
 * **Seconds** \
 * **CountPerSecond** \
 * **BytesPerSecond** \
 * **Percent** \
 * **MilliSeconds** \
 * **ByteSeconds** \
 * **Unspecified** \
 * **Cores** \
 * **MilliCores** \
 * **NanoCores** \
 * **BitsPerSecond**
 */
export type MetricUnit = string;

/** Known values of {@link BaselineSensitivity} that the service accepts. */
export enum KnownBaselineSensitivity {
  Low = "Low",
  Medium = "Medium",
  High = "High"
}

/**
 * Defines values for BaselineSensitivity. \
 * {@link KnownBaselineSensitivity} can be used interchangeably with BaselineSensitivity,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Low** \
 * **Medium** \
 * **High**
 */
export type BaselineSensitivity = string;

/** Known values of {@link Odatatype} that the service accepts. */
export enum KnownOdatatype {
  MicrosoftAzureMonitorSingleResourceMultipleMetricCriteria = "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria",
  MicrosoftAzureMonitorMultipleResourceMultipleMetricCriteria = "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
  MicrosoftAzureMonitorWebtestLocationAvailabilityCriteria = "Microsoft.Azure.Monitor.WebtestLocationAvailabilityCriteria"
}

/**
 * Defines values for Odatatype. \
 * {@link KnownOdatatype} can be used interchangeably with Odatatype,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria** \
 * **Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria** \
 * **Microsoft.Azure.Monitor.WebtestLocationAvailabilityCriteria**
 */
export type Odatatype = string;

/** Known values of {@link Enabled} that the service accepts. */
export enum KnownEnabled {
  True = "true",
  False = "false"
}

/**
 * Defines values for Enabled. \
 * {@link KnownEnabled} can be used interchangeably with Enabled,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **true** \
 * **false**
 */
export type Enabled = string;

/** Known values of {@link ProvisioningState} that the service accepts. */
export enum KnownProvisioningState {
  Succeeded = "Succeeded",
  Deploying = "Deploying",
  Canceled = "Canceled",
  Failed = "Failed"
}

/**
 * Defines values for ProvisioningState. \
 * {@link KnownProvisioningState} can be used interchangeably with ProvisioningState,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Succeeded** \
 * **Deploying** \
 * **Canceled** \
 * **Failed**
 */
export type ProvisioningState = string;

/** Known values of {@link QueryType} that the service accepts. */
export enum KnownQueryType {
  ResultCount = "ResultCount"
}

/**
 * Defines values for QueryType. \
 * {@link KnownQueryType} can be used interchangeably with QueryType,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **ResultCount**
 */
export type QueryType = string;

/** Known values of {@link NamespaceClassification} that the service accepts. */
export enum KnownNamespaceClassification {
  Platform = "Platform",
  Custom = "Custom",
  Qos = "Qos"
}

/**
 * Defines values for NamespaceClassification. \
 * {@link KnownNamespaceClassification} can be used interchangeably with NamespaceClassification,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Platform** \
 * **Custom** \
 * **Qos**
 */
export type NamespaceClassification = string;

/** Known values of {@link OnboardingStatus} that the service accepts. */
export enum KnownOnboardingStatus {
  Onboarded = "onboarded",
  NotOnboarded = "notOnboarded",
  Unknown = "unknown"
}

/**
 * Defines values for OnboardingStatus. \
 * {@link KnownOnboardingStatus} can be used interchangeably with OnboardingStatus,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **onboarded** \
 * **notOnboarded** \
 * **unknown**
 */
export type OnboardingStatus = string;

/** Known values of {@link DataStatus} that the service accepts. */
export enum KnownDataStatus {
  Present = "present",
  NotPresent = "notPresent"
}

/**
 * Defines values for DataStatus. \
 * {@link KnownDataStatus} can be used interchangeably with DataStatus,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **present** \
 * **notPresent**
 */
export type DataStatus = string;

/** Known values of {@link KnownPublicNetworkAccessOptions} that the service accepts. */
export enum KnownKnownPublicNetworkAccessOptions {
  Enabled = "Enabled",
  Disabled = "Disabled"
}

/**
 * Defines values for KnownPublicNetworkAccessOptions. \
 * {@link KnownKnownPublicNetworkAccessOptions} can be used interchangeably with KnownPublicNetworkAccessOptions,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Enabled** \
 * **Disabled**
 */
export type KnownPublicNetworkAccessOptions = string;

/** Known values of {@link KnownDataCollectionEndpointProvisioningState} that the service accepts. */
export enum KnownKnownDataCollectionEndpointProvisioningState {
  Creating = "Creating",
  Updating = "Updating",
  Deleting = "Deleting",
  Succeeded = "Succeeded",
  Failed = "Failed"
}

/**
 * Defines values for KnownDataCollectionEndpointProvisioningState. \
 * {@link KnownKnownDataCollectionEndpointProvisioningState} can be used interchangeably with KnownDataCollectionEndpointProvisioningState,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Creating** \
 * **Updating** \
 * **Deleting** \
 * **Succeeded** \
 * **Failed**
 */
export type KnownDataCollectionEndpointProvisioningState = string;

/** Known values of {@link KnownDataCollectionEndpointResourceKind} that the service accepts. */
export enum KnownKnownDataCollectionEndpointResourceKind {
  Linux = "Linux",
  Windows = "Windows"
}

/**
 * Defines values for KnownDataCollectionEndpointResourceKind. \
 * {@link KnownKnownDataCollectionEndpointResourceKind} can be used interchangeably with KnownDataCollectionEndpointResourceKind,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Linux** \
 * **Windows**
 */
export type KnownDataCollectionEndpointResourceKind = string;

/** Known values of {@link CreatedByType} that the service accepts. */
export enum KnownCreatedByType {
  User = "User",
  Application = "Application",
  ManagedIdentity = "ManagedIdentity",
  Key = "Key"
}

/**
 * Defines values for CreatedByType. \
 * {@link KnownCreatedByType} can be used interchangeably with CreatedByType,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **User** \
 * **Application** \
 * **ManagedIdentity** \
 * **Key**
 */
export type CreatedByType = string;

/** Known values of {@link KnownDataCollectionRuleAssociationProvisioningState} that the service accepts. */
export enum KnownKnownDataCollectionRuleAssociationProvisioningState {
  Creating = "Creating",
  Updating = "Updating",
  Deleting = "Deleting",
  Succeeded = "Succeeded",
  Failed = "Failed"
}

/**
 * Defines values for KnownDataCollectionRuleAssociationProvisioningState. \
 * {@link KnownKnownDataCollectionRuleAssociationProvisioningState} can be used interchangeably with KnownDataCollectionRuleAssociationProvisioningState,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Creating** \
 * **Updating** \
 * **Deleting** \
 * **Succeeded** \
 * **Failed**
 */
export type KnownDataCollectionRuleAssociationProvisioningState = string;

/** Known values of {@link KnownPerfCounterDataSourceStreams} that the service accepts. */
export enum KnownKnownPerfCounterDataSourceStreams {
  MicrosoftPerf = "Microsoft-Perf",
  MicrosoftInsightsMetrics = "Microsoft-InsightsMetrics"
}

/**
 * Defines values for KnownPerfCounterDataSourceStreams. \
 * {@link KnownKnownPerfCounterDataSourceStreams} can be used interchangeably with KnownPerfCounterDataSourceStreams,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Microsoft-Perf** \
 * **Microsoft-InsightsMetrics**
 */
export type KnownPerfCounterDataSourceStreams = string;

/** Known values of {@link KnownWindowsEventLogDataSourceStreams} that the service accepts. */
export enum KnownKnownWindowsEventLogDataSourceStreams {
  MicrosoftWindowsEvent = "Microsoft-WindowsEvent",
  MicrosoftEvent = "Microsoft-Event"
}

/**
 * Defines values for KnownWindowsEventLogDataSourceStreams. \
 * {@link KnownKnownWindowsEventLogDataSourceStreams} can be used interchangeably with KnownWindowsEventLogDataSourceStreams,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Microsoft-WindowsEvent** \
 * **Microsoft-Event**
 */
export type KnownWindowsEventLogDataSourceStreams = string;

/** Known values of {@link KnownSyslogDataSourceStreams} that the service accepts. */
export enum KnownKnownSyslogDataSourceStreams {
  MicrosoftSyslog = "Microsoft-Syslog"
}

/**
 * Defines values for KnownSyslogDataSourceStreams. \
 * {@link KnownKnownSyslogDataSourceStreams} can be used interchangeably with KnownSyslogDataSourceStreams,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Microsoft-Syslog**
 */
export type KnownSyslogDataSourceStreams = string;

/** Known values of {@link KnownSyslogDataSourceFacilityNames} that the service accepts. */
export enum KnownKnownSyslogDataSourceFacilityNames {
  Auth = "auth",
  Authpriv = "authpriv",
  Cron = "cron",
  Daemon = "daemon",
  Kern = "kern",
  Lpr = "lpr",
  Mail = "mail",
  Mark = "mark",
  News = "news",
  Syslog = "syslog",
  User = "user",
  Uucp = "uucp",
  Local0 = "local0",
  Local1 = "local1",
  Local2 = "local2",
  Local3 = "local3",
  Local4 = "local4",
  Local5 = "local5",
  Local6 = "local6",
  Local7 = "local7",
  Asterisk = "*"
}

/**
 * Defines values for KnownSyslogDataSourceFacilityNames. \
 * {@link KnownKnownSyslogDataSourceFacilityNames} can be used interchangeably with KnownSyslogDataSourceFacilityNames,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **auth** \
 * **authpriv** \
 * **cron** \
 * **daemon** \
 * **kern** \
 * **lpr** \
 * **mail** \
 * **mark** \
 * **news** \
 * **syslog** \
 * **user** \
 * **uucp** \
 * **local0** \
 * **local1** \
 * **local2** \
 * **local3** \
 * **local4** \
 * **local5** \
 * **local6** \
 * **local7** \
 * *****
 */
export type KnownSyslogDataSourceFacilityNames = string;

/** Known values of {@link KnownSyslogDataSourceLogLevels} that the service accepts. */
export enum KnownKnownSyslogDataSourceLogLevels {
  Debug = "Debug",
  Info = "Info",
  Notice = "Notice",
  Warning = "Warning",
  Error = "Error",
  Critical = "Critical",
  Alert = "Alert",
  Emergency = "Emergency",
  Asterisk = "*"
}

/**
 * Defines values for KnownSyslogDataSourceLogLevels. \
 * {@link KnownKnownSyslogDataSourceLogLevels} can be used interchangeably with KnownSyslogDataSourceLogLevels,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Debug** \
 * **Info** \
 * **Notice** \
 * **Warning** \
 * **Error** \
 * **Critical** \
 * **Alert** \
 * **Emergency** \
 * *****
 */
export type KnownSyslogDataSourceLogLevels = string;

/** Known values of {@link KnownExtensionDataSourceStreams} that the service accepts. */
export enum KnownKnownExtensionDataSourceStreams {
  MicrosoftEvent = "Microsoft-Event",
  MicrosoftInsightsMetrics = "Microsoft-InsightsMetrics",
  MicrosoftPerf = "Microsoft-Perf",
  MicrosoftSyslog = "Microsoft-Syslog",
  MicrosoftWindowsEvent = "Microsoft-WindowsEvent"
}

/**
 * Defines values for KnownExtensionDataSourceStreams. \
 * {@link KnownKnownExtensionDataSourceStreams} can be used interchangeably with KnownExtensionDataSourceStreams,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Microsoft-Event** \
 * **Microsoft-InsightsMetrics** \
 * **Microsoft-Perf** \
 * **Microsoft-Syslog** \
 * **Microsoft-WindowsEvent**
 */
export type KnownExtensionDataSourceStreams = string;

/** Known values of {@link KnownDataFlowStreams} that the service accepts. */
export enum KnownKnownDataFlowStreams {
  MicrosoftEvent = "Microsoft-Event",
  MicrosoftInsightsMetrics = "Microsoft-InsightsMetrics",
  MicrosoftPerf = "Microsoft-Perf",
  MicrosoftSyslog = "Microsoft-Syslog",
  MicrosoftWindowsEvent = "Microsoft-WindowsEvent"
}

/**
 * Defines values for KnownDataFlowStreams. \
 * {@link KnownKnownDataFlowStreams} can be used interchangeably with KnownDataFlowStreams,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Microsoft-Event** \
 * **Microsoft-InsightsMetrics** \
 * **Microsoft-Perf** \
 * **Microsoft-Syslog** \
 * **Microsoft-WindowsEvent**
 */
export type KnownDataFlowStreams = string;

/** Known values of {@link KnownDataCollectionRuleProvisioningState} that the service accepts. */
export enum KnownKnownDataCollectionRuleProvisioningState {
  Creating = "Creating",
  Updating = "Updating",
  Deleting = "Deleting",
  Succeeded = "Succeeded",
  Failed = "Failed"
}

/**
 * Defines values for KnownDataCollectionRuleProvisioningState. \
 * {@link KnownKnownDataCollectionRuleProvisioningState} can be used interchangeably with KnownDataCollectionRuleProvisioningState,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Creating** \
 * **Updating** \
 * **Deleting** \
 * **Succeeded** \
 * **Failed**
 */
export type KnownDataCollectionRuleProvisioningState = string;

/** Known values of {@link KnownDataCollectionRuleResourceKind} that the service accepts. */
export enum KnownKnownDataCollectionRuleResourceKind {
  Linux = "Linux",
  Windows = "Windows"
}

/**
 * Defines values for KnownDataCollectionRuleResourceKind. \
 * {@link KnownKnownDataCollectionRuleResourceKind} can be used interchangeably with KnownDataCollectionRuleResourceKind,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Linux** \
 * **Windows**
 */
export type KnownDataCollectionRuleResourceKind = string;

/** Known values of {@link Operator} that the service accepts. */
export enum KnownOperator {
  Equals = "Equals",
  GreaterThan = "GreaterThan",
  GreaterThanOrEqual = "GreaterThanOrEqual",
  LessThan = "LessThan",
  LessThanOrEqual = "LessThanOrEqual",
  Include = "Include"
}

/**
 * Defines values for Operator. \
 * {@link KnownOperator} can be used interchangeably with Operator,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Equals** \
 * **GreaterThan** \
 * **GreaterThanOrEqual** \
 * **LessThan** \
 * **LessThanOrEqual** \
 * **Include**
 */
export type Operator = string;

/** Known values of {@link CriterionType} that the service accepts. */
export enum KnownCriterionType {
  StaticThresholdCriterion = "StaticThresholdCriterion",
  DynamicThresholdCriterion = "DynamicThresholdCriterion"
}

/**
 * Defines values for CriterionType. \
 * {@link KnownCriterionType} can be used interchangeably with CriterionType,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **StaticThresholdCriterion** \
 * **DynamicThresholdCriterion**
 */
export type CriterionType = string;

/** Known values of {@link AggregationTypeEnum} that the service accepts. */
export enum KnownAggregationTypeEnum {
  Average = "Average",
  Count = "Count",
  Minimum = "Minimum",
  Maximum = "Maximum",
  Total = "Total"
}

/**
 * Defines values for AggregationTypeEnum. \
 * {@link KnownAggregationTypeEnum} can be used interchangeably with AggregationTypeEnum,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Average** \
 * **Count** \
 * **Minimum** \
 * **Maximum** \
 * **Total**
 */
export type AggregationTypeEnum = string;

/** Known values of {@link DynamicThresholdOperator} that the service accepts. */
export enum KnownDynamicThresholdOperator {
  GreaterThan = "GreaterThan",
  LessThan = "LessThan",
  GreaterOrLessThan = "GreaterOrLessThan"
}

/**
 * Defines values for DynamicThresholdOperator. \
 * {@link KnownDynamicThresholdOperator} can be used interchangeably with DynamicThresholdOperator,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **GreaterThan** \
 * **LessThan** \
 * **GreaterOrLessThan**
 */
export type DynamicThresholdOperator = string;

/** Known values of {@link DynamicThresholdSensitivity} that the service accepts. */
export enum KnownDynamicThresholdSensitivity {
  Low = "Low",
  Medium = "Medium",
  High = "High"
}

/**
 * Defines values for DynamicThresholdSensitivity. \
 * {@link KnownDynamicThresholdSensitivity} can be used interchangeably with DynamicThresholdSensitivity,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Low** \
 * **Medium** \
 * **High**
 */
export type DynamicThresholdSensitivity = string;

/** Known values of {@link ConditionalOperator} that the service accepts. */
export enum KnownConditionalOperator {
  GreaterThanOrEqual = "GreaterThanOrEqual",
  LessThanOrEqual = "LessThanOrEqual",
  GreaterThan = "GreaterThan",
  LessThan = "LessThan",
  Equal = "Equal"
}

/**
 * Defines values for ConditionalOperator. \
 * {@link KnownConditionalOperator} can be used interchangeably with ConditionalOperator,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **GreaterThanOrEqual** \
 * **LessThanOrEqual** \
 * **GreaterThan** \
 * **LessThan** \
 * **Equal**
 */
export type ConditionalOperator = string;

/** Known values of {@link MetricTriggerType} that the service accepts. */
export enum KnownMetricTriggerType {
  Consecutive = "Consecutive",
  Total = "Total"
}

/**
 * Defines values for MetricTriggerType. \
 * {@link KnownMetricTriggerType} can be used interchangeably with MetricTriggerType,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Consecutive** \
 * **Total**
 */
export type MetricTriggerType = string;

/** Known values of {@link AlertSeverity} that the service accepts. */
export enum KnownAlertSeverity {
  Zero = "0",
  One = "1",
  Two = "2",
  Three = "3",
  Four = "4"
}

/**
 * Defines values for AlertSeverity. \
 * {@link KnownAlertSeverity} can be used interchangeably with AlertSeverity,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **0** \
 * **1** \
 * **2** \
 * **3** \
 * **4**
 */
export type AlertSeverity = string;
/** Defines values for MetricStatisticType. */
export type MetricStatisticType = "Average" | "Min" | "Max" | "Sum" | "Count";
/** Defines values for TimeAggregationType. */
export type TimeAggregationType =
  | "Average"
  | "Minimum"
  | "Maximum"
  | "Total"
  | "Count"
  | "Last";
/** Defines values for ComparisonOperationType. */
export type ComparisonOperationType =
  | "Equals"
  | "NotEquals"
  | "GreaterThan"
  | "GreaterThanOrEqual"
  | "LessThan"
  | "LessThanOrEqual";
/** Defines values for ScaleDirection. */
export type ScaleDirection = "None" | "Increase" | "Decrease";
/** Defines values for ScaleType. */
export type ScaleType =
  | "ChangeCount"
  | "PercentChangeCount"
  | "ExactCount"
  | "ServiceAllowedNextValue";
/** Defines values for RecurrenceFrequency. */
export type RecurrenceFrequency =
  | "None"
  | "Second"
  | "Minute"
  | "Hour"
  | "Day"
  | "Week"
  | "Month"
  | "Year";
/** Defines values for CategoryType. */
export type CategoryType = "Metrics" | "Logs";
/** Defines values for ReceiverStatus. */
export type ReceiverStatus = "NotSpecified" | "Enabled" | "Disabled";
/** Defines values for EventLevel. */
export type EventLevel =
  | "Critical"
  | "Error"
  | "Warning"
  | "Informational"
  | "Verbose";
/** Defines values for AggregationType. */
export type AggregationType =
  | "None"
  | "Average"
  | "Count"
  | "Minimum"
  | "Maximum"
  | "Total";
/** Defines values for ResultType. */
export type ResultType = "Data" | "Metadata";
/** Defines values for ConditionOperator. */
export type ConditionOperator =
  | "GreaterThan"
  | "GreaterThanOrEqual"
  | "LessThan"
  | "LessThanOrEqual";
/** Defines values for TimeAggregationOperator. */
export type TimeAggregationOperator =
  | "Average"
  | "Minimum"
  | "Maximum"
  | "Total"
  | "Last";

/** Optional parameters. */
export interface AutoscaleSettingsListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type AutoscaleSettingsListByResourceGroupResponse = AutoscaleSettingResourceCollection;

/** Optional parameters. */
export interface AutoscaleSettingsCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type AutoscaleSettingsCreateOrUpdateResponse = AutoscaleSettingResource;

/** Optional parameters. */
export interface AutoscaleSettingsDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface AutoscaleSettingsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type AutoscaleSettingsGetResponse = AutoscaleSettingResource;

/** Optional parameters. */
export interface AutoscaleSettingsUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the update operation. */
export type AutoscaleSettingsUpdateResponse = AutoscaleSettingResource;

/** Optional parameters. */
export interface AutoscaleSettingsListBySubscriptionOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscription operation. */
export type AutoscaleSettingsListBySubscriptionResponse = AutoscaleSettingResourceCollection;

/** Optional parameters. */
export interface AutoscaleSettingsListByResourceGroupNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroupNext operation. */
export type AutoscaleSettingsListByResourceGroupNextResponse = AutoscaleSettingResourceCollection;

/** Optional parameters. */
export interface AutoscaleSettingsListBySubscriptionNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscriptionNext operation. */
export type AutoscaleSettingsListBySubscriptionNextResponse = AutoscaleSettingResourceCollection;

/** Optional parameters. */
export interface OperationsListOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the list operation. */
export type OperationsListResponse = OperationListResult;

/** Optional parameters. */
export interface AlertRuleIncidentsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type AlertRuleIncidentsGetResponse = Incident;

/** Optional parameters. */
export interface AlertRuleIncidentsListByAlertRuleOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByAlertRule operation. */
export type AlertRuleIncidentsListByAlertRuleResponse = IncidentListResult;

/** Optional parameters. */
export interface AlertRulesCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type AlertRulesCreateOrUpdateResponse = AlertRuleResource;

/** Optional parameters. */
export interface AlertRulesDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface AlertRulesGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type AlertRulesGetResponse = AlertRuleResource;

/** Optional parameters. */
export interface AlertRulesUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the update operation. */
export type AlertRulesUpdateResponse = AlertRuleResource;

/** Optional parameters. */
export interface AlertRulesListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type AlertRulesListByResourceGroupResponse = AlertRuleResourceCollection;

/** Optional parameters. */
export interface AlertRulesListBySubscriptionOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscription operation. */
export type AlertRulesListBySubscriptionResponse = AlertRuleResourceCollection;

/** Optional parameters. */
export interface LogProfilesDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface LogProfilesGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type LogProfilesGetResponse = LogProfileResource;

/** Optional parameters. */
export interface LogProfilesCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type LogProfilesCreateOrUpdateResponse = LogProfileResource;

/** Optional parameters. */
export interface LogProfilesUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the update operation. */
export type LogProfilesUpdateResponse = LogProfileResource;

/** Optional parameters. */
export interface LogProfilesListOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the list operation. */
export type LogProfilesListResponse = LogProfileCollection;

/** Optional parameters. */
export interface DiagnosticSettingsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type DiagnosticSettingsGetResponse = DiagnosticSettingsResource;

/** Optional parameters. */
export interface DiagnosticSettingsCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type DiagnosticSettingsCreateOrUpdateResponse = DiagnosticSettingsResource;

/** Optional parameters. */
export interface DiagnosticSettingsDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface DiagnosticSettingsListOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the list operation. */
export type DiagnosticSettingsListResponse = DiagnosticSettingsResourceCollection;

/** Optional parameters. */
export interface DiagnosticSettingsCategoryGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type DiagnosticSettingsCategoryGetResponse = DiagnosticSettingsCategoryResource;

/** Optional parameters. */
export interface DiagnosticSettingsCategoryListOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the list operation. */
export type DiagnosticSettingsCategoryListResponse = DiagnosticSettingsCategoryResourceCollection;

/** Optional parameters. */
export interface ActionGroupsCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type ActionGroupsCreateOrUpdateResponse = ActionGroupResource;

/** Optional parameters. */
export interface ActionGroupsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type ActionGroupsGetResponse = ActionGroupResource;

/** Optional parameters. */
export interface ActionGroupsDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface ActionGroupsUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the update operation. */
export type ActionGroupsUpdateResponse = ActionGroupResource;

/** Optional parameters. */
export interface ActionGroupsPostTestNotificationsOptionalParams
  extends coreClient.OperationOptions {
  /** Delay to wait until next poll, in milliseconds. */
  updateIntervalInMs?: number;
  /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
  resumeFrom?: string;
}

/** Contains response data for the postTestNotifications operation. */
export type ActionGroupsPostTestNotificationsResponse = TestNotificationResponse;

/** Optional parameters. */
export interface ActionGroupsGetTestNotificationsOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the getTestNotifications operation. */
export type ActionGroupsGetTestNotificationsResponse = TestNotificationDetailsResponse;

/** Optional parameters. */
export interface ActionGroupsListBySubscriptionIdOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscriptionId operation. */
export type ActionGroupsListBySubscriptionIdResponse = ActionGroupList;

/** Optional parameters. */
export interface ActionGroupsListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type ActionGroupsListByResourceGroupResponse = ActionGroupList;

/** Optional parameters. */
export interface ActionGroupsEnableReceiverOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface ActivityLogsListOptionalParams
  extends coreClient.OperationOptions {
  /** Used to fetch events with only the given properties.<br>The **$select** argument is a comma separated list of property names to be returned. Possible values are: *authorization*, *claims*, *correlationId*, *description*, *eventDataId*, *eventName*, *eventTimestamp*, *httpRequest*, *level*, *operationId*, *operationName*, *properties*, *resourceGroupName*, *resourceProviderName*, *resourceId*, *status*, *submissionTimestamp*, *subStatus*, *subscriptionId* */
  select?: string;
}

/** Contains response data for the list operation. */
export type ActivityLogsListResponse = EventDataCollection;

/** Optional parameters. */
export interface ActivityLogsListNextOptionalParams
  extends coreClient.OperationOptions {
  /** Used to fetch events with only the given properties.<br>The **$select** argument is a comma separated list of property names to be returned. Possible values are: *authorization*, *claims*, *correlationId*, *description*, *eventDataId*, *eventName*, *eventTimestamp*, *httpRequest*, *level*, *operationId*, *operationName*, *properties*, *resourceGroupName*, *resourceProviderName*, *resourceId*, *status*, *submissionTimestamp*, *subStatus*, *subscriptionId* */
  select?: string;
}

/** Contains response data for the listNext operation. */
export type ActivityLogsListNextResponse = EventDataCollection;

/** Optional parameters. */
export interface EventCategoriesListOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the list operation. */
export type EventCategoriesListResponse = EventCategoryCollection;

/** Optional parameters. */
export interface TenantActivityLogsListOptionalParams
  extends coreClient.OperationOptions {
  /** Used to fetch events with only the given properties.<br>The **$select** argument is a comma separated list of property names to be returned. Possible values are: *authorization*, *claims*, *correlationId*, *description*, *eventDataId*, *eventName*, *eventTimestamp*, *httpRequest*, *level*, *operationId*, *operationName*, *properties*, *resourceGroupName*, *resourceProviderName*, *resourceId*, *status*, *submissionTimestamp*, *subStatus*, *subscriptionId* */
  select?: string;
  /** Reduces the set of data collected. <br>The **$filter** is very restricted and allows only the following patterns.<br>- List events for a resource group: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation' and resourceGroupName eq '<ResourceGroupName>'.<br>- List events for resource: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation' and resourceUri eq '<ResourceURI>'.<br>- List events for a subscription: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation'.<br>- List events for a resource provider: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation' and resourceProvider eq '<ResourceProviderName>'.<br>- List events for a correlation Id: api-version=2014-04-01&$filter=eventTimestamp ge '2014-07-16T04:36:37.6407898Z' and eventTimestamp le '2014-07-20T04:36:37.6407898Z' and eventChannels eq 'Admin, Operation' and correlationId eq '<CorrelationID>'.<br>**NOTE**: No other syntax is allowed. */
  filter?: string;
}

/** Contains response data for the list operation. */
export type TenantActivityLogsListResponse = EventDataCollection;

/** Optional parameters. */
export interface TenantActivityLogsListNextOptionalParams
  extends coreClient.OperationOptions {
  /** Used to fetch events with only the given properties.<br>The **$select** argument is a comma separated list of property names to be returned. Possible values are: *authorization*, *claims*, *correlationId*, *description*, *eventDataId*, *eventName*, *eventTimestamp*, *httpRequest*, *level*, *operationId*, *operationName*, *properties*, *resourceGroupName*, *resourceProviderName*, *resourceId*, *status*, *submissionTimestamp*, *subStatus*, *subscriptionId* */
  select?: string;
  /** Reduces the set of data collected. <br>The **$filter** is very restricted and allows only the following patterns.<br>- List events for a resource group: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation' and resourceGroupName eq '<ResourceGroupName>'.<br>- List events for resource: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation' and resourceUri eq '<ResourceURI>'.<br>- List events for a subscription: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation'.<br>- List events for a resource provider: $filter=eventTimestamp ge '<Start Time>' and eventTimestamp le '<End Time>' and eventChannels eq 'Admin, Operation' and resourceProvider eq '<ResourceProviderName>'.<br>- List events for a correlation Id: api-version=2014-04-01&$filter=eventTimestamp ge '2014-07-16T04:36:37.6407898Z' and eventTimestamp le '2014-07-20T04:36:37.6407898Z' and eventChannels eq 'Admin, Operation' and correlationId eq '<CorrelationID>'.<br>**NOTE**: No other syntax is allowed. */
  filter?: string;
}

/** Contains response data for the listNext operation. */
export type TenantActivityLogsListNextResponse = EventDataCollection;

/** Optional parameters. */
export interface MetricDefinitionsListOptionalParams
  extends coreClient.OperationOptions {
  /** Metric namespace to query metric definitions for. */
  metricnamespace?: string;
}

/** Contains response data for the list operation. */
export type MetricDefinitionsListResponse = MetricDefinitionCollection;

/** Optional parameters. */
export interface MetricsListOptionalParams extends coreClient.OperationOptions {
  /** The **$filter** is used to reduce the set of metric data returned. Example: Metric contains metadata A, B and C. - Return all time series of C where A = a1 and B = b1 or b2 **$filter=A eq 'a1' and B eq 'b1' or B eq 'b2' and C eq '*'** - Invalid variant: **$filter=A eq 'a1' and B eq 'b1' and C eq '*' or B = 'b2'** This is invalid because the logical or operator cannot separate two different metadata names. - Return all time series where A = a1, B = b1 and C = c1: **$filter=A eq 'a1' and B eq 'b1' and C eq 'c1'** - Return all time series where A = a1 **$filter=A eq 'a1' and B eq '*' and C eq '*'**. Special case: When dimension name or dimension value uses round brackets. Eg: When dimension name is **dim (test) 1** Instead of using $filter= "dim (test) 1 eq '*' " use **$filter= "dim %2528test%2529 1 eq '*' "** When dimension name is **dim (test) 3** and dimension value is **dim3 (test) val** Instead of using $filter= "dim (test) 3 eq 'dim3 (test) val' " use **$filter= "dim %2528test%2529 3 eq 'dim3 %2528test%2529 val' "** */
  filter?: string;
  /** Metric namespace to query metric definitions for. */
  metricnamespace?: string;
  /** The timespan of the query. It is a string with the following format 'startDateTime_ISO/endDateTime_ISO'. */
  timespan?: string;
  /** The interval (i.e. timegrain) of the query. */
  interval?: string;
  /** The names of the metrics (comma separated) to retrieve. Special case: If a metricname itself has a comma in it then use %2 to indicate it. Eg: 'Metric,Name1' should be **'Metric%2Name1'** */
  metricnames?: string;
  /** The list of aggregation types (comma separated) to retrieve. */
  aggregation?: string;
  /**
   * The maximum number of records to retrieve.
   * Valid only if $filter is specified.
   * Defaults to 10.
   */
  top?: number;
  /**
   * The aggregation to use for sorting results and the direction of the sort.
   * Only one order can be specified.
   * Examples: sum asc.
   */
  orderby?: string;
  /** Reduces the set of data collected. The syntax allowed depends on the operation. See the operation's description for details. */
  resultType?: ResultType;
}

/** Contains response data for the list operation. */
export type MetricsListResponse = Response;

/** Optional parameters. */
export interface BaselinesListOptionalParams
  extends coreClient.OperationOptions {
  /** The **$filter** is used to reduce the set of metric data returned. Example: Metric contains metadata A, B and C. - Return all time series of C where A = a1 and B = b1 or b2 **$filter=A eq 'a1' and B eq 'b1' or B eq 'b2' and C eq '*'** - Invalid variant: **$filter=A eq 'a1' and B eq 'b1' and C eq '*' or B = 'b2'** This is invalid because the logical or operator cannot separate two different metadata names. - Return all time series where A = a1, B = b1 and C = c1: **$filter=A eq 'a1' and B eq 'b1' and C eq 'c1'** - Return all time series where A = a1 **$filter=A eq 'a1' and B eq '*' and C eq '*'**. Special case: When dimension name or dimension value uses round brackets. Eg: When dimension name is **dim (test) 1** Instead of using $filter= "dim (test) 1 eq '*' " use **$filter= "dim %2528test%2529 1 eq '*' "** When dimension name is **dim (test) 3** and dimension value is **dim3 (test) val** Instead of using $filter= "dim (test) 3 eq 'dim3 (test) val' " use **$filter= "dim %2528test%2529 3 eq 'dim3 %2528test%2529 val' "** */
  filter?: string;
  /** Metric namespace to query metric definitions for. */
  metricnamespace?: string;
  /** The timespan of the query. It is a string with the following format 'startDateTime_ISO/endDateTime_ISO'. */
  timespan?: string;
  /** The interval (i.e. timegrain) of the query. */
  interval?: string;
  /** The names of the metrics (comma separated) to retrieve. Special case: If a metricname itself has a comma in it then use %2 to indicate it. Eg: 'Metric,Name1' should be **'Metric%2Name1'** */
  metricnames?: string;
  /** The list of aggregation types (comma separated) to retrieve. */
  aggregation?: string;
  /** Allows retrieving only metadata of the baseline. On data request all information is retrieved. */
  resultType?: ResultType;
  /** The list of sensitivities (comma separated) to retrieve. */
  sensitivities?: string;
}

/** Contains response data for the list operation. */
export type BaselinesListResponse = MetricBaselinesResponse;

/** Optional parameters. */
export interface MetricAlertsListBySubscriptionOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscription operation. */
export type MetricAlertsListBySubscriptionResponse = MetricAlertResourceCollection;

/** Optional parameters. */
export interface MetricAlertsListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type MetricAlertsListByResourceGroupResponse = MetricAlertResourceCollection;

/** Optional parameters. */
export interface MetricAlertsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type MetricAlertsGetResponse = MetricAlertResource;

/** Optional parameters. */
export interface MetricAlertsCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type MetricAlertsCreateOrUpdateResponse = MetricAlertResource;

/** Optional parameters. */
export interface MetricAlertsUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the update operation. */
export type MetricAlertsUpdateResponse = MetricAlertResource;

/** Optional parameters. */
export interface MetricAlertsDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface MetricAlertsStatusListOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the list operation. */
export type MetricAlertsStatusListResponse = MetricAlertStatusCollection;

/** Optional parameters. */
export interface MetricAlertsStatusListByNameOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByName operation. */
export type MetricAlertsStatusListByNameResponse = MetricAlertStatusCollection;

/** Optional parameters. */
export interface ScheduledQueryRulesCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type ScheduledQueryRulesCreateOrUpdateResponse = LogSearchRuleResource;

/** Optional parameters. */
export interface ScheduledQueryRulesGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type ScheduledQueryRulesGetResponse = LogSearchRuleResource;

/** Optional parameters. */
export interface ScheduledQueryRulesUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the update operation. */
export type ScheduledQueryRulesUpdateResponse = LogSearchRuleResource;

/** Optional parameters. */
export interface ScheduledQueryRulesDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface ScheduledQueryRulesListBySubscriptionOptionalParams
  extends coreClient.OperationOptions {
  /** The filter to apply on the operation. For more information please see https://msdn.microsoft.com/en-us/library/azure/dn931934.aspx */
  filter?: string;
}

/** Contains response data for the listBySubscription operation. */
export type ScheduledQueryRulesListBySubscriptionResponse = LogSearchRuleResourceCollection;

/** Optional parameters. */
export interface ScheduledQueryRulesListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {
  /** The filter to apply on the operation. For more information please see https://msdn.microsoft.com/en-us/library/azure/dn931934.aspx */
  filter?: string;
}

/** Contains response data for the listByResourceGroup operation. */
export type ScheduledQueryRulesListByResourceGroupResponse = LogSearchRuleResourceCollection;

/** Optional parameters. */
export interface MetricNamespacesListOptionalParams
  extends coreClient.OperationOptions {
  /** The ISO 8601 conform Date start time from which to query for metric namespaces. */
  startTime?: string;
}

/** Contains response data for the list operation. */
export type MetricNamespacesListResponse = MetricNamespaceCollection;

/** Optional parameters. */
export interface VMInsightsGetOnboardingStatusOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the getOnboardingStatus operation. */
export type VMInsightsGetOnboardingStatusResponse = VMInsightsOnboardingStatus;

/** Optional parameters. */
export interface PrivateLinkScopesListOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the list operation. */
export type PrivateLinkScopesListResponse = AzureMonitorPrivateLinkScopeListResult;

/** Optional parameters. */
export interface PrivateLinkScopesListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type PrivateLinkScopesListByResourceGroupResponse = AzureMonitorPrivateLinkScopeListResult;

/** Optional parameters. */
export interface PrivateLinkScopesDeleteOptionalParams
  extends coreClient.OperationOptions {
  /** Delay to wait until next poll, in milliseconds. */
  updateIntervalInMs?: number;
  /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
  resumeFrom?: string;
}

/** Optional parameters. */
export interface PrivateLinkScopesGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type PrivateLinkScopesGetResponse = AzureMonitorPrivateLinkScope;

/** Optional parameters. */
export interface PrivateLinkScopesCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type PrivateLinkScopesCreateOrUpdateResponse = AzureMonitorPrivateLinkScope;

/** Optional parameters. */
export interface PrivateLinkScopesUpdateTagsOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the updateTags operation. */
export type PrivateLinkScopesUpdateTagsResponse = AzureMonitorPrivateLinkScope;

/** Optional parameters. */
export interface PrivateLinkScopesListNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listNext operation. */
export type PrivateLinkScopesListNextResponse = AzureMonitorPrivateLinkScopeListResult;

/** Optional parameters. */
export interface PrivateLinkScopesListByResourceGroupNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroupNext operation. */
export type PrivateLinkScopesListByResourceGroupNextResponse = AzureMonitorPrivateLinkScopeListResult;

/** Optional parameters. */
export interface PrivateLinkScopeOperationStatusGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type PrivateLinkScopeOperationStatusGetResponse = OperationStatus;

/** Optional parameters. */
export interface PrivateLinkResourcesListByPrivateLinkScopeOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByPrivateLinkScope operation. */
export type PrivateLinkResourcesListByPrivateLinkScopeResponse = PrivateLinkResourceListResult;

/** Optional parameters. */
export interface PrivateLinkResourcesGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type PrivateLinkResourcesGetResponse = PrivateLinkResource;

/** Optional parameters. */
export interface PrivateLinkResourcesListByPrivateLinkScopeNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByPrivateLinkScopeNext operation. */
export type PrivateLinkResourcesListByPrivateLinkScopeNextResponse = PrivateLinkResourceListResult;

/** Optional parameters. */
export interface PrivateEndpointConnectionsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type PrivateEndpointConnectionsGetResponse = PrivateEndpointConnection;

/** Optional parameters. */
export interface PrivateEndpointConnectionsCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {
  /** Delay to wait until next poll, in milliseconds. */
  updateIntervalInMs?: number;
  /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
  resumeFrom?: string;
}

/** Contains response data for the createOrUpdate operation. */
export type PrivateEndpointConnectionsCreateOrUpdateResponse = PrivateEndpointConnection;

/** Optional parameters. */
export interface PrivateEndpointConnectionsDeleteOptionalParams
  extends coreClient.OperationOptions {
  /** Delay to wait until next poll, in milliseconds. */
  updateIntervalInMs?: number;
  /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
  resumeFrom?: string;
}

/** Optional parameters. */
export interface PrivateEndpointConnectionsListByPrivateLinkScopeOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByPrivateLinkScope operation. */
export type PrivateEndpointConnectionsListByPrivateLinkScopeResponse = PrivateEndpointConnectionListResult;

/** Optional parameters. */
export interface PrivateEndpointConnectionsListByPrivateLinkScopeNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByPrivateLinkScopeNext operation. */
export type PrivateEndpointConnectionsListByPrivateLinkScopeNextResponse = PrivateEndpointConnectionListResult;

/** Optional parameters. */
export interface PrivateLinkScopedResourcesGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type PrivateLinkScopedResourcesGetResponse = ScopedResource;

/** Optional parameters. */
export interface PrivateLinkScopedResourcesCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {
  /** Delay to wait until next poll, in milliseconds. */
  updateIntervalInMs?: number;
  /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
  resumeFrom?: string;
}

/** Contains response data for the createOrUpdate operation. */
export type PrivateLinkScopedResourcesCreateOrUpdateResponse = ScopedResource;

/** Optional parameters. */
export interface PrivateLinkScopedResourcesDeleteOptionalParams
  extends coreClient.OperationOptions {
  /** Delay to wait until next poll, in milliseconds. */
  updateIntervalInMs?: number;
  /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
  resumeFrom?: string;
}

/** Optional parameters. */
export interface PrivateLinkScopedResourcesListByPrivateLinkScopeOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByPrivateLinkScope operation. */
export type PrivateLinkScopedResourcesListByPrivateLinkScopeResponse = ScopedResourceListResult;

/** Optional parameters. */
export interface PrivateLinkScopedResourcesListByPrivateLinkScopeNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByPrivateLinkScopeNext operation. */
export type PrivateLinkScopedResourcesListByPrivateLinkScopeNextResponse = ScopedResourceListResult;

/** Optional parameters. */
export interface ActivityLogAlertsCreateOrUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the createOrUpdate operation. */
export type ActivityLogAlertsCreateOrUpdateResponse = ActivityLogAlertResource;

/** Optional parameters. */
export interface ActivityLogAlertsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type ActivityLogAlertsGetResponse = ActivityLogAlertResource;

/** Optional parameters. */
export interface ActivityLogAlertsDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface ActivityLogAlertsUpdateOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the update operation. */
export type ActivityLogAlertsUpdateResponse = ActivityLogAlertResource;

/** Optional parameters. */
export interface ActivityLogAlertsListBySubscriptionIdOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscriptionId operation. */
export type ActivityLogAlertsListBySubscriptionIdResponse = ActivityLogAlertList;

/** Optional parameters. */
export interface ActivityLogAlertsListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type ActivityLogAlertsListByResourceGroupResponse = ActivityLogAlertList;

/** Optional parameters. */
export interface DataCollectionEndpointsListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type DataCollectionEndpointsListByResourceGroupResponse = DataCollectionEndpointResourceListResult;

/** Optional parameters. */
export interface DataCollectionEndpointsListBySubscriptionOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscription operation. */
export type DataCollectionEndpointsListBySubscriptionResponse = DataCollectionEndpointResourceListResult;

/** Optional parameters. */
export interface DataCollectionEndpointsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type DataCollectionEndpointsGetResponse = DataCollectionEndpointResource;

/** Optional parameters. */
export interface DataCollectionEndpointsCreateOptionalParams
  extends coreClient.OperationOptions {
  /** The payload */
  body?: DataCollectionEndpointResource;
}

/** Contains response data for the create operation. */
export type DataCollectionEndpointsCreateResponse = DataCollectionEndpointResource;

/** Optional parameters. */
export interface DataCollectionEndpointsUpdateOptionalParams
  extends coreClient.OperationOptions {
  /** The payload */
  body?: ResourceForUpdate;
}

/** Contains response data for the update operation. */
export type DataCollectionEndpointsUpdateResponse = DataCollectionEndpointResource;

/** Optional parameters. */
export interface DataCollectionEndpointsDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface DataCollectionEndpointsListByResourceGroupNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroupNext operation. */
export type DataCollectionEndpointsListByResourceGroupNextResponse = DataCollectionEndpointResourceListResult;

/** Optional parameters. */
export interface DataCollectionEndpointsListBySubscriptionNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscriptionNext operation. */
export type DataCollectionEndpointsListBySubscriptionNextResponse = DataCollectionEndpointResourceListResult;

/** Optional parameters. */
export interface DataCollectionRuleAssociationsListByResourceOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResource operation. */
export type DataCollectionRuleAssociationsListByResourceResponse = DataCollectionRuleAssociationProxyOnlyResourceListResult;

/** Optional parameters. */
export interface DataCollectionRuleAssociationsListByRuleOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByRule operation. */
export type DataCollectionRuleAssociationsListByRuleResponse = DataCollectionRuleAssociationProxyOnlyResourceListResult;

/** Optional parameters. */
export interface DataCollectionRuleAssociationsGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type DataCollectionRuleAssociationsGetResponse = DataCollectionRuleAssociationProxyOnlyResource;

/** Optional parameters. */
export interface DataCollectionRuleAssociationsCreateOptionalParams
  extends coreClient.OperationOptions {
  /** The payload */
  body?: DataCollectionRuleAssociationProxyOnlyResource;
}

/** Contains response data for the create operation. */
export type DataCollectionRuleAssociationsCreateResponse = DataCollectionRuleAssociationProxyOnlyResource;

/** Optional parameters. */
export interface DataCollectionRuleAssociationsDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface DataCollectionRuleAssociationsListByResourceNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceNext operation. */
export type DataCollectionRuleAssociationsListByResourceNextResponse = DataCollectionRuleAssociationProxyOnlyResourceListResult;

/** Optional parameters. */
export interface DataCollectionRuleAssociationsListByRuleNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByRuleNext operation. */
export type DataCollectionRuleAssociationsListByRuleNextResponse = DataCollectionRuleAssociationProxyOnlyResourceListResult;

/** Optional parameters. */
export interface DataCollectionRulesListByResourceGroupOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroup operation. */
export type DataCollectionRulesListByResourceGroupResponse = DataCollectionRuleResourceListResult;

/** Optional parameters. */
export interface DataCollectionRulesListBySubscriptionOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscription operation. */
export type DataCollectionRulesListBySubscriptionResponse = DataCollectionRuleResourceListResult;

/** Optional parameters. */
export interface DataCollectionRulesGetOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the get operation. */
export type DataCollectionRulesGetResponse = DataCollectionRuleResource;

/** Optional parameters. */
export interface DataCollectionRulesCreateOptionalParams
  extends coreClient.OperationOptions {
  /** The payload */
  body?: DataCollectionRuleResource;
}

/** Contains response data for the create operation. */
export type DataCollectionRulesCreateResponse = DataCollectionRuleResource;

/** Optional parameters. */
export interface DataCollectionRulesUpdateOptionalParams
  extends coreClient.OperationOptions {
  /** The payload */
  body?: ResourceForUpdate;
}

/** Contains response data for the update operation. */
export type DataCollectionRulesUpdateResponse = DataCollectionRuleResource;

/** Optional parameters. */
export interface DataCollectionRulesDeleteOptionalParams
  extends coreClient.OperationOptions {}

/** Optional parameters. */
export interface DataCollectionRulesListByResourceGroupNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listByResourceGroupNext operation. */
export type DataCollectionRulesListByResourceGroupNextResponse = DataCollectionRuleResourceListResult;

/** Optional parameters. */
export interface DataCollectionRulesListBySubscriptionNextOptionalParams
  extends coreClient.OperationOptions {}

/** Contains response data for the listBySubscriptionNext operation. */
export type DataCollectionRulesListBySubscriptionNextResponse = DataCollectionRuleResourceListResult;

/** Optional parameters. */
export interface MonitorClientOptionalParams
  extends coreClient.ServiceClientOptions {
  /** server parameter */
  $host?: string;
  /** Overrides client endpoint. */
  endpoint?: string;
}
