# pylint: disable=too-many-lines
# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# Code generated by Microsoft (R) Python Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from enum import Enum
from azure.core import CaseInsensitiveEnumMeta


class AccumulatedType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Show costs accumulated over time."""

    TRUE = "true"
    """TRUE."""
    FALSE = "false"
    """FALSE."""


class ActionType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal
    only APIs.
    """

    INTERNAL = "Internal"
    """Actions are for internal-only APIs."""


class AlertCategory(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Alert category."""

    COST = "Cost"
    """COST."""
    USAGE = "Usage"
    """USAGE."""
    BILLING = "Billing"
    """BILLING."""
    SYSTEM = "System"
    """SYSTEM."""


class AlertCriteria(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Criteria that triggered alert."""

    COST_THRESHOLD_EXCEEDED = "CostThresholdExceeded"
    """COST_THRESHOLD_EXCEEDED."""
    USAGE_THRESHOLD_EXCEEDED = "UsageThresholdExceeded"
    """USAGE_THRESHOLD_EXCEEDED."""
    CREDIT_THRESHOLD_APPROACHING = "CreditThresholdApproaching"
    """CREDIT_THRESHOLD_APPROACHING."""
    CREDIT_THRESHOLD_REACHED = "CreditThresholdReached"
    """CREDIT_THRESHOLD_REACHED."""
    QUOTA_THRESHOLD_APPROACHING = "QuotaThresholdApproaching"
    """QUOTA_THRESHOLD_APPROACHING."""
    QUOTA_THRESHOLD_REACHED = "QuotaThresholdReached"
    """QUOTA_THRESHOLD_REACHED."""
    MULTI_CURRENCY = "MultiCurrency"
    """MULTI_CURRENCY."""
    FORECAST_COST_THRESHOLD_EXCEEDED = "ForecastCostThresholdExceeded"
    """FORECAST_COST_THRESHOLD_EXCEEDED."""
    FORECAST_USAGE_THRESHOLD_EXCEEDED = "ForecastUsageThresholdExceeded"
    """FORECAST_USAGE_THRESHOLD_EXCEEDED."""
    INVOICE_DUE_DATE_APPROACHING = "InvoiceDueDateApproaching"
    """INVOICE_DUE_DATE_APPROACHING."""
    INVOICE_DUE_DATE_REACHED = "InvoiceDueDateReached"
    """INVOICE_DUE_DATE_REACHED."""
    CROSS_CLOUD_NEW_DATA_AVAILABLE = "CrossCloudNewDataAvailable"
    """CROSS_CLOUD_NEW_DATA_AVAILABLE."""
    CROSS_CLOUD_COLLECTION_ERROR = "CrossCloudCollectionError"
    """CROSS_CLOUD_COLLECTION_ERROR."""
    GENERAL_THRESHOLD_ERROR = "GeneralThresholdError"
    """GENERAL_THRESHOLD_ERROR."""


class AlertOperator(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """operator used to compare currentSpend with amount."""

    NONE = "None"
    """NONE."""
    EQUAL_TO = "EqualTo"
    """EQUAL_TO."""
    GREATER_THAN = "GreaterThan"
    """GREATER_THAN."""
    GREATER_THAN_OR_EQUAL_TO = "GreaterThanOrEqualTo"
    """GREATER_THAN_OR_EQUAL_TO."""
    LESS_THAN = "LessThan"
    """LESS_THAN."""
    LESS_THAN_OR_EQUAL_TO = "LessThanOrEqualTo"
    """LESS_THAN_OR_EQUAL_TO."""


class AlertSource(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Source of alert."""

    PRESET = "Preset"
    """PRESET."""
    USER = "User"
    """USER."""


class AlertStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """alert status."""

    NONE = "None"
    """NONE."""
    ACTIVE = "Active"
    """ACTIVE."""
    OVERRIDDEN = "Overridden"
    """OVERRIDDEN."""
    RESOLVED = "Resolved"
    """RESOLVED."""
    DISMISSED = "Dismissed"
    """DISMISSED."""


class AlertTimeGrainType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of timegrain cadence."""

    NONE = "None"
    """NONE."""
    MONTHLY = "Monthly"
    """MONTHLY."""
    QUARTERLY = "Quarterly"
    """QUARTERLY."""
    ANNUALLY = "Annually"
    """ANNUALLY."""
    BILLING_MONTH = "BillingMonth"
    """BILLING_MONTH."""
    BILLING_QUARTER = "BillingQuarter"
    """BILLING_QUARTER."""
    BILLING_ANNUAL = "BillingAnnual"
    """BILLING_ANNUAL."""


class AlertType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """type of alert."""

    BUDGET = "Budget"
    """BUDGET."""
    INVOICE = "Invoice"
    """INVOICE."""
    CREDIT = "Credit"
    """CREDIT."""
    QUOTA = "Quota"
    """QUOTA."""
    GENERAL = "General"
    """GENERAL."""
    X_CLOUD = "xCloud"
    """X_CLOUD."""
    BUDGET_FORECAST = "BudgetForecast"
    """BUDGET_FORECAST."""


class BenefitKind(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Kind/type of the benefit."""

    INCLUDED_QUANTITY = "IncludedQuantity"
    """Benefit is IncludedQuantity."""
    RESERVATION = "Reservation"
    """Benefit is Reservation."""
    SAVINGS_PLAN = "SavingsPlan"
    """Benefit is SavingsPlan."""


class BenefitUtilizationSummaryReportSchema(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The CSV file from the reportUrl and secondaryReportUrl blob link will consist of the following
    columns of benefit utilization data. UtilizedPercentage will be 0 for savings plans reports and
    non data bricks reservations. Utilization percentages will be 0 for data bricks reservations.
    """

    KIND = "Kind"
    """KIND."""
    AVG_UTILIZATION_PERCENTAGE = "AvgUtilizationPercentage"
    """AVG_UTILIZATION_PERCENTAGE."""
    BENEFIT_ORDER_ID = "BenefitOrderId"
    """BENEFIT_ORDER_ID."""
    BENEFIT_ID = "BenefitId"
    """BENEFIT_ID."""
    BENEFIT_TYPE = "BenefitType"
    """BENEFIT_TYPE."""
    MAX_UTILIZATION_PERCENTAGE = "MaxUtilizationPercentage"
    """MAX_UTILIZATION_PERCENTAGE."""
    MIN_UTILIZATION_PERCENTAGE = "MinUtilizationPercentage"
    """MIN_UTILIZATION_PERCENTAGE."""
    USAGE_DATE = "UsageDate"
    """USAGE_DATE."""
    UTILIZED_PERCENTAGE = "UtilizedPercentage"
    """UTILIZED_PERCENTAGE."""


class BudgetNotificationOperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The comparison operator.

    Supported for CategoryType(s): Cost, ReservationUtilization.

    Supported operators for **CategoryType: Cost**

    * GreaterThan
    * GreaterThanOrEqualTo

    Supported operators for **CategoryType: ReservationUtilization**

    * LessThan.
    """

    EQUAL_TO = "EqualTo"
    """Notification will be triggered if the evaluated cost is the same as threshold value. Note: It’s
    not recommended to use this OperatorType as there’s low chance of cost being exactly the same
    as threshold value, leading to missing of your alert. This OperatorType will be deprecated in
    future.
    
    Supported for CategoryType(s): Cost."""
    GREATER_THAN = "GreaterThan"
    """Notification will be triggered if the evaluated cost is greater than the threshold value. Note:
    This is the recommended OperatorType while configuring Budget Alert.
    
    Supported for CategoryType(s): Cost."""
    GREATER_THAN_OR_EQUAL_TO = "GreaterThanOrEqualTo"
    """Notification will be triggered if the evaluated cost is greater than or equal to the threshold
    value.
    
    Supported for CategoryType(s): Cost."""
    LESS_THAN = "LessThan"
    """Notification will be triggered if any Reservations in the scope of the Reservation Utilization
    Alert Rule have a utilization less than the threshold percentage.
    
    Supported for CategoryType(s): ReservationUtilization."""


class BudgetOperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The operator to use for comparison."""

    IN = "In"
    """IN."""


class CategoryType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The category of the budget.

    * 'Cost' defines a Budget.
    * 'ReservationUtilization' defines a Reservation Utilization Alert Rule.
    """

    COST = "Cost"
    """A Budget that evaluates monetary cost of Azure resources against an amount, and alerts based on
    a configured notification threshold."""
    RESERVATION_UTILIZATION = "ReservationUtilization"
    """An Alert Rule that evaluates the utilization percentage of Azure Reservations, and alerts based
    on a configured notification threshold."""


class ChartType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Chart type of the main view in Cost Analysis. Required."""

    AREA = "Area"
    """AREA."""
    LINE = "Line"
    """LINE."""
    STACKED_COLUMN = "StackedColumn"
    """STACKED_COLUMN."""
    GROUPED_COLUMN = "GroupedColumn"
    """GROUPED_COLUMN."""
    TABLE = "Table"
    """TABLE."""


class CheckNameAvailabilityReason(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Possible reasons for a name not being available."""

    INVALID = "Invalid"
    """Name is invalid."""
    ALREADY_EXISTS = "AlreadyExists"
    """Name already exists."""


class CompressionModeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Allow customers to select compress data for exports. This setting will enable destination file
    compression scheme at runtime. By default set to None. Gzip is for csv and snappy for parquet.
    """

    GZIP = "gzip"
    """GZIP."""
    SNAPPY = "snappy"
    """SNAPPY."""
    NONE = "none"
    """NONE."""


class CostAllocationPolicyType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Method to use for allocating cost. FixedProportion indicates that cost will be split based on
    specified percentage values.
    """

    FIXED_PROPORTION = "FixedProportion"
    """FIXED_PROPORTION."""


class CostAllocationResourceType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Category of resource to use for allocation."""

    DIMENSION = "Dimension"
    """Indicates an Azure dimension such as a subscription id or resource group name is being used for
    allocation."""
    TAG = "Tag"
    """Allocates cost based on Azure Tag key value pairs."""


class CostDetailsDataFormat(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The data format of the report."""

    CSV_COST_DETAILS_DATA_FORMAT = "Csv"
    """Csv data format."""


class CostDetailsMetricType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the detailed report. By default ActualCost is provided."""

    ACTUAL_COST_COST_DETAILS_METRIC_TYPE = "ActualCost"
    """Actual cost data."""
    AMORTIZED_COST_COST_DETAILS_METRIC_TYPE = "AmortizedCost"
    """Amortized cost data."""


class CostDetailsStatusType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The status of the cost details operation."""

    COMPLETED_COST_DETAILS_STATUS_TYPE = "Completed"
    """Operation is Completed."""
    NO_DATA_FOUND_COST_DETAILS_STATUS_TYPE = "NoDataFound"
    """Operation is Completed and no cost data found."""
    FAILED_COST_DETAILS_STATUS_TYPE = "Failed"
    """Operation Failed."""


class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The kind of entity that created the resource."""

    USER = "User"
    """The entity was created by a user."""
    APPLICATION = "Application"
    """The entity was created by an application."""
    MANAGED_IDENTITY = "ManagedIdentity"
    """The entity was created by a managed identity."""
    KEY = "Key"
    """The entity was created by a key."""


class CultureCode(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Language in which the recipient will receive the notification,

    Supported for CategoryType(s): Cost, ReservationUtilization.
    """

    EN_US = "en-us"
    """EN_US."""
    JA_JP = "ja-jp"
    """JA_JP."""
    ZH_CN = "zh-cn"
    """ZH_CN."""
    DE_DE = "de-de"
    """DE_DE."""
    ES_ES = "es-es"
    """ES_ES."""
    FR_FR = "fr-fr"
    """FR_FR."""
    IT_IT = "it-it"
    """IT_IT."""
    KO_KR = "ko-kr"
    """KO_KR."""
    PT_BR = "pt-br"
    """PT_BR."""
    RU_RU = "ru-ru"
    """RU_RU."""
    ZH_TW = "zh-tw"
    """ZH_TW."""
    CS_CZ = "cs-cz"
    """CS_CZ."""
    PL_PL = "pl-pl"
    """PL_PL."""
    TR_TR = "tr-tr"
    """TR_TR."""
    DA_DK = "da-dk"
    """DA_DK."""
    EN_GB = "en-gb"
    """EN_GB."""
    HU_HU = "hu-hu"
    """HU_HU."""
    NB_NO = "nb-no"
    """NB_NO."""
    NL_NL = "nl-nl"
    """NL_NL."""
    PT_PT = "pt-pt"
    """PT_PT."""
    SV_SE = "sv-se"
    """SV_SE."""


class DataOverwriteBehaviorType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Allow customers to select overwrite data(OverwritePreviousReport) for exports. This setting
    will enable overwrite data for the same month in customer storage account. By default set to
    CreateNewReport.
    """

    OVERWRITE_PREVIOUS_REPORT = "OverwritePreviousReport"
    """OVERWRITE_PREVIOUS_REPORT."""
    CREATE_NEW_REPORT = "CreateNewReport"
    """CREATE_NEW_REPORT."""


class DaysOfWeek(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Days of Week."""

    MONDAY = "Monday"
    """MONDAY."""
    TUESDAY = "Tuesday"
    """TUESDAY."""
    WEDNESDAY = "Wednesday"
    """WEDNESDAY."""
    THURSDAY = "Thursday"
    """THURSDAY."""
    FRIDAY = "Friday"
    """FRIDAY."""
    SATURDAY = "Saturday"
    """SATURDAY."""
    SUNDAY = "Sunday"
    """SUNDAY."""


class DestinationType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The export delivery destination type. Currently only 'AzureBlob' is supported."""

    AZURE_BLOB = "AzureBlob"
    """AZURE_BLOB."""


class ExecutionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The last known status of the export run."""

    QUEUED = "Queued"
    """QUEUED."""
    IN_PROGRESS = "InProgress"
    """IN_PROGRESS."""
    COMPLETED = "Completed"
    """COMPLETED."""
    FAILED = "Failed"
    """FAILED."""
    TIMEOUT = "Timeout"
    """TIMEOUT."""
    NEW_DATA_NOT_AVAILABLE = "NewDataNotAvailable"
    """NEW_DATA_NOT_AVAILABLE."""
    DATA_NOT_AVAILABLE = "DataNotAvailable"
    """DATA_NOT_AVAILABLE."""


class ExecutionType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the export run."""

    ON_DEMAND = "OnDemand"
    """ON_DEMAND."""
    SCHEDULED = "Scheduled"
    """SCHEDULED."""


class ExportType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the export. Note that 'Usage' is equivalent to 'ActualCost' and is applicable to
    exports that do not yet provide data for charges or amortization for service reservations.
    """

    USAGE = "Usage"
    """USAGE."""
    ACTUAL_COST = "ActualCost"
    """ACTUAL_COST."""
    AMORTIZED_COST = "AmortizedCost"
    """AMORTIZED_COST."""
    FOCUS_COST = "FocusCost"
    """FOCUS_COST."""
    PRICE_SHEET = "PriceSheet"
    """PRICE_SHEET."""
    RESERVATION_TRANSACTIONS = "ReservationTransactions"
    """RESERVATION_TRANSACTIONS."""
    RESERVATION_RECOMMENDATIONS = "ReservationRecommendations"
    """RESERVATION_RECOMMENDATIONS."""
    RESERVATION_DETAILS = "ReservationDetails"
    """RESERVATION_DETAILS."""


class ExternalCloudProviderType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of ExternalCloudProviderType."""

    EXTERNAL_SUBSCRIPTIONS = "externalSubscriptions"
    """EXTERNAL_SUBSCRIPTIONS."""
    EXTERNAL_BILLING_ACCOUNTS = "externalBillingAccounts"
    """EXTERNAL_BILLING_ACCOUNTS."""


class FileFormat(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Destination of the view data. Currently only CSV format is supported."""

    CSV = "Csv"
    """CSV."""


class FilterItemNames(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The name of the filter. This is currently only supported for Export Definition type of
    ReservationRecommendations. Supported names are ['ReservationScope', 'LookBackPeriod',
    'ResourceType'].
    """

    RESERVATION_SCOPE = "ReservationScope"
    """RESERVATION_SCOPE."""
    RESOURCE_TYPE = "ResourceType"
    """RESOURCE_TYPE."""
    LOOK_BACK_PERIOD = "LookBackPeriod"
    """LOOK_BACK_PERIOD."""


class ForecastOperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The operator to use for comparison."""

    IN = "In"
    """IN."""


class ForecastTimeframe(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The time frame for pulling data for the forecast."""

    CUSTOM = "Custom"
    """CUSTOM."""


class ForecastType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the forecast."""

    USAGE = "Usage"
    """USAGE."""
    ACTUAL_COST = "ActualCost"
    """ACTUAL_COST."""
    AMORTIZED_COST = "AmortizedCost"
    """AMORTIZED_COST."""


class FormatType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The format of the export being delivered."""

    CSV = "Csv"
    """CSV."""
    PARQUET = "Parquet"
    """PARQUET."""


class Frequency(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Frequency of a notification. Represents how long the notification will be silent after
    triggering an alert for a threshold breach. If not specified, the frequency will be set by
    default based on the timeGrain (Weekly when timeGrain: Last7Days, Monthly when timeGrain:
    Last30Days).

    Supported for CategoryType(s): ReservationUtilization.
    """

    DAILY = "Daily"
    """After the threshold breaches and an Alert is fired, no further alerts will be sent until the
    next calendar day."""
    WEEKLY = "Weekly"
    """After the threshold breaches and an Alert is fired, no further alerts will be sent for 7
    calendar days."""
    MONTHLY = "Monthly"
    """After the threshold breaches and an Alert is fired, no further alerts will be sent for 30
    calendar days."""


class FunctionName(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The name of the column to aggregate."""

    PRE_TAX_COST_USD = "PreTaxCostUSD"
    """PRE_TAX_COST_USD."""
    COST = "Cost"
    """COST."""
    COST_USD = "CostUSD"
    """COST_USD."""
    PRE_TAX_COST = "PreTaxCost"
    """PRE_TAX_COST."""


class FunctionType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The name of the aggregation function to use."""

    SUM = "Sum"
    """SUM."""


class GenerateDetailedCostReportMetricType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the detailed report. By default ActualCost is provided."""

    ACTUAL_COST = "ActualCost"
    """ACTUAL_COST."""
    AMORTIZED_COST = "AmortizedCost"
    """AMORTIZED_COST."""


class Grain(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Grain which corresponds to value."""

    HOURLY = "Hourly"
    """Hourly grain corresponds to value per hour."""
    DAILY = "Daily"
    """Hourly grain corresponds to value per day."""
    MONTHLY = "Monthly"
    """Hourly grain corresponds to value per month."""


class GrainParameter(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of GrainParameter."""

    HOURLY = "Hourly"
    """Hourly grain corresponds to value per hour."""
    DAILY = "Daily"
    """Hourly grain corresponds to value per day."""
    MONTHLY = "Monthly"
    """Hourly grain corresponds to value per month."""


class GranularityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The granularity of rows in the export. Currently 'Daily' is supported for most cases."""

    DAILY = "Daily"
    """DAILY."""
    MONTHLY = "Monthly"
    """MONTHLY."""


class KpiType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """KPI type (Forecast, Budget)."""

    FORECAST = "Forecast"
    """FORECAST."""
    BUDGET = "Budget"
    """BUDGET."""


class LookBackPeriod(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The number of days used to look back."""

    LAST7_DAYS = "Last7Days"
    """7 days used to look back."""
    LAST30_DAYS = "Last30Days"
    """30 days used to look back."""
    LAST60_DAYS = "Last60Days"
    """60 days used to look back."""


class MetricType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Metric to use when displaying costs."""

    ACTUAL_COST = "ActualCost"
    """ACTUAL_COST."""
    AMORTIZED_COST = "AmortizedCost"
    """AMORTIZED_COST."""
    AHUB = "AHUB"
    """AHUB."""


class OperationStatusType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Enum representing the status of an async operation."""

    RUNNING = "Running"
    """RUNNING."""
    COMPLETED = "Completed"
    """COMPLETED."""
    FAILED = "Failed"
    """FAILED."""


class OperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The operator to use for comparison."""

    IN = "In"
    """IN."""
    CONTAINS = "Contains"
    """CONTAINS."""


class Origin(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit
    logs UX. Default value is "user,system".
    """

    USER = "user"
    """Indicates the operation is initiated by a user."""
    SYSTEM = "system"
    """Indicates the operation is initiated by a system."""
    USER_SYSTEM = "user,system"
    """Indicates the operation is initiated by a user or system."""


class PivotType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Data type to show in view."""

    DIMENSION = "Dimension"
    """DIMENSION."""
    TAG_KEY = "TagKey"
    """TAG_KEY."""


class QueryColumnType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the column in the report."""

    TAG_KEY = "TagKey"
    """The tag associated with the cost data."""
    DIMENSION = "Dimension"
    """The dimension of cost data."""


class QueryOperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The operator to use for comparison."""

    IN = "In"
    """IN."""


class Reason(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The reason this name is not available."""

    INVALID = "Invalid"
    """INVALID."""
    ALREADY_EXISTS = "AlreadyExists"
    """ALREADY_EXISTS."""
    VALID = "Valid"
    """VALID."""


class RecurrenceType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The schedule recurrence."""

    DAILY = "Daily"
    """DAILY."""
    WEEKLY = "Weekly"
    """WEEKLY."""
    MONTHLY = "Monthly"
    """MONTHLY."""
    ANNUALLY = "Annually"
    """ANNUALLY."""


class ReportConfigSortingType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Direction of sort."""

    ASCENDING = "Ascending"
    """ASCENDING."""
    DESCENDING = "Descending"
    """DESCENDING."""


class ReportGranularityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The granularity of rows in the report."""

    DAILY = "Daily"
    """DAILY."""
    MONTHLY = "Monthly"
    """MONTHLY."""


class ReportOperationStatusType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The status of the long running operation."""

    IN_PROGRESS = "InProgress"
    """IN_PROGRESS."""
    COMPLETED = "Completed"
    """COMPLETED."""
    FAILED = "Failed"
    """FAILED."""
    QUEUED = "Queued"
    """QUEUED."""
    NO_DATA_FOUND = "NoDataFound"
    """NO_DATA_FOUND."""
    READY_TO_DOWNLOAD = "ReadyToDownload"
    """READY_TO_DOWNLOAD."""
    TIMED_OUT = "TimedOut"
    """TIMED_OUT."""


class ReportTimeframeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The time frame for pulling data for the report. If custom, then a specific time period must be
    provided.
    """

    WEEK_TO_DATE = "WeekToDate"
    """WEEK_TO_DATE."""
    MONTH_TO_DATE = "MonthToDate"
    """MONTH_TO_DATE."""
    YEAR_TO_DATE = "YearToDate"
    """YEAR_TO_DATE."""
    CUSTOM = "Custom"
    """CUSTOM."""


class ReportType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of the report. Usage represents actual usage, forecast represents forecasted data and
    UsageAndForecast represents both usage and forecasted data. Actual usage and forecasted data
    can be differentiated based on dates.
    """

    USAGE = "Usage"
    """USAGE."""


class ReservationReportSchema(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The CSV file from the reportUrl blob link consists of reservation usage data with the following
    schema at daily granularity.
    """

    INSTANCE_FLEXIBILITY_GROUP = "InstanceFlexibilityGroup"
    """INSTANCE_FLEXIBILITY_GROUP."""
    INSTANCE_FLEXIBILITY_RATIO = "InstanceFlexibilityRatio"
    """INSTANCE_FLEXIBILITY_RATIO."""
    INSTANCE_ID = "InstanceId"
    """INSTANCE_ID."""
    KIND = "Kind"
    """KIND."""
    RESERVATION_ID = "ReservationId"
    """RESERVATION_ID."""
    RESERVATION_ORDER_ID = "ReservationOrderId"
    """RESERVATION_ORDER_ID."""
    RESERVED_HOURS = "ReservedHours"
    """RESERVED_HOURS."""
    SKU_NAME = "SkuName"
    """SKU_NAME."""
    TOTAL_RESERVED_QUANTITY = "TotalReservedQuantity"
    """TOTAL_RESERVED_QUANTITY."""
    USAGE_DATE = "UsageDate"
    """USAGE_DATE."""
    USED_HOURS = "UsedHours"
    """USED_HOURS."""


class RuleStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Current status of the rule."""

    NOT_ACTIVE = "NotActive"
    """Rule is saved but not used to allocate costs."""
    ACTIVE = "Active"
    """Rule is saved and impacting cost allocation."""
    PROCESSING = "Processing"
    """Rule is saved and cost allocation is being updated. Readonly value that cannot be submitted in
    a put request."""


class ScheduledActionKind(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Kind of the scheduled action."""

    EMAIL = "Email"
    """Cost analysis data will be emailed."""
    INSIGHT_ALERT = "InsightAlert"
    """Cost anomaly information will be emailed. Available only on subscription scope at daily
    frequency. If no anomaly is detected on the resource, an email won't be sent."""


class ScheduledActionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Status of the scheduled action."""

    ENABLED = "Enabled"
    """Scheduled action is saved and will be run."""
    EXPIRED = "Expired"
    """Scheduled action is expired."""
    DISABLED = "Disabled"
    """Scheduled action is saved but will not be run."""


class ScheduleFrequency(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Frequency of the schedule."""

    DAILY = "Daily"
    """Cost analysis data will be emailed every day."""
    WEEKLY = "Weekly"
    """Cost analysis data will be emailed every week."""
    MONTHLY = "Monthly"
    """Cost analysis data will be emailed every month."""


class Scope(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Kind of the recommendation scope."""

    SINGLE = "Single"
    """Single scope recommendation."""
    SHARED = "Shared"
    """Shared scope recommendation."""


class SettingsKind(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Specifies the kind of settings."""

    TAGINHERITANCE = "taginheritance"
    """TAGINHERITANCE."""


class SettingType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of SettingType."""

    TAGINHERITANCE = "taginheritance"
    """This setting applies billing profile, invoice section, subscription and resource group tags to
    current month's usage data of child resources."""


class StatusType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The status of the export's schedule. If 'Inactive', the export's schedule is paused. To enable
    export set the status to be Active and then make a PUT request.
    """

    ACTIVE = "Active"
    """ACTIVE."""
    INACTIVE = "Inactive"
    """INACTIVE."""


class SystemAssignedServiceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Type of managed service identity (either system assigned, or none)."""

    NONE = "None"
    """No managed system identity."""
    SYSTEM_ASSIGNED = "SystemAssigned"
    """System assigned managed system identity."""


class Term(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Grain which corresponds to value."""

    P1_Y = "P1Y"
    """Benefit term is 1 year."""
    P3_Y = "P3Y"
    """Benefit term is 3 years."""


class ThresholdType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The type of threshold.

    Supported for CategoryType(s): Cost.
    """

    ACTUAL = "Actual"
    """Actual costs budget alerts notify when the actual accrued cost exceeds the allocated budget."""
    FORECASTED = "Forecasted"
    """Forecasted costs budget alerts provide advanced notification that your spending trends are
    likely to exceed your allocated budget, as it relies on forecasted cost predictions."""


class TimeframeType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The time frame for pulling data for the export. If custom, then a specific time period must be
    provided.
    """

    MONTH_TO_DATE = "MonthToDate"
    """MONTH_TO_DATE."""
    BILLING_MONTH_TO_DATE = "BillingMonthToDate"
    """BILLING_MONTH_TO_DATE."""
    THE_LAST_MONTH = "TheLastMonth"
    """THE_LAST_MONTH."""
    THE_LAST_BILLING_MONTH = "TheLastBillingMonth"
    """THE_LAST_BILLING_MONTH."""
    WEEK_TO_DATE = "WeekToDate"
    """WEEK_TO_DATE."""
    CUSTOM = "Custom"
    """CUSTOM."""
    THE_CURRENT_MONTH = "TheCurrentMonth"
    """THE_CURRENT_MONTH."""


class TimeGrainType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """The time covered by a budget. Tracking of the amount will be reset based on the time grain.

    Supported for CategoryType(s): Cost, ReservationUtilization.

    Supported timeGrainTypes for **CategoryType: Cost**



    * Monthly
    * Quarterly
    * Annually
    * BillingMonth*
    * BillingQuarter*
    * BillingAnnual*

    *only supported for Web Direct customers.

    Supported timeGrainTypes for **CategoryType: ReservationUtilization**

    * Last7Days
    * Last30Days

    Required for CategoryType(s): Cost, ReservationUtilization.
    """

    MONTHLY = "Monthly"
    """The budget will track costs in the current calendar month against the amount.
    
    Supported for CategoryType: Cost only."""
    QUARTERLY = "Quarterly"
    """The budget will track costs in the current calendar quarter against the amount.
    
    Supported for CategoryType: Cost only."""
    ANNUALLY = "Annually"
    """The budget will track costs in the current calendar year against the amount.
    
    Supported for CategoryType: Cost only."""
    BILLING_MONTH = "BillingMonth"
    """The budget will track costs in the current billing month against the amount.
    
    Supported for CategoryType: Cost and Web Direct customers only."""
    BILLING_QUARTER = "BillingQuarter"
    """The budget will track costs in the current billing quarter against the amount.
    
    Supported for CategoryType: Cost and Web Direct customers only."""
    BILLING_ANNUAL = "BillingAnnual"
    """The budget will track costs in the current billing year against the amount.
    
    Supported for CategoryType: Cost and Web Direct customers only."""
    LAST7_DAYS = "Last7Days"
    """The Reservation Utilization Alert Rule will evaluate reservations based on their 7-Day
    utilization percentage.
    
    Supported for CategoryType: ReservationUtilization only."""
    LAST30_DAYS = "Last30Days"
    """The Reservation Utilization Alert Rule will evaluate reservations based on their 30-Day
    utilization percentage.
    
    Supported for CategoryType: ReservationUtilization only."""


class WeeksOfMonth(str, Enum, metaclass=CaseInsensitiveEnumMeta):
    """Weeks of month."""

    FIRST = "First"
    """FIRST."""
    SECOND = "Second"
    """SECOND."""
    THIRD = "Third"
    """THIRD."""
    FOURTH = "Fourth"
    """FOURTH."""
    LAST = "Last"
    """LAST."""
