// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) Go Code Generator. DO NOT EDIT.

package armcarbonoptimization

// AccessDecisionEnum - Enum for Access Decision
type AccessDecisionEnum string

const (
	// AccessDecisionEnumAllowed - Access allowed
	AccessDecisionEnumAllowed AccessDecisionEnum = "Allowed"
	// AccessDecisionEnumDenied - Access denied
	AccessDecisionEnumDenied AccessDecisionEnum = "Denied"
)

// PossibleAccessDecisionEnumValues returns the possible values for the AccessDecisionEnum const type.
func PossibleAccessDecisionEnumValues() []AccessDecisionEnum {
	return []AccessDecisionEnum{
		AccessDecisionEnumAllowed,
		AccessDecisionEnumDenied,
	}
}

// ActionType - Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
type ActionType string

const (
	// ActionTypeInternal - Actions are for internal-only APIs.
	ActionTypeInternal ActionType = "Internal"
)

// PossibleActionTypeValues returns the possible values for the ActionType const type.
func PossibleActionTypeValues() []ActionType {
	return []ActionType{
		ActionTypeInternal,
	}
}

// CategoryTypeEnum - Supported category types to be used with QueryParameter. Each type represents a different level of emissions
// data aggregation.
type CategoryTypeEnum string

const (
	// CategoryTypeEnumLocation - Emissions aggregated at the location level.
	CategoryTypeEnumLocation CategoryTypeEnum = "Location"
	// CategoryTypeEnumResource - Emissions aggregated at the resource level.
	CategoryTypeEnumResource CategoryTypeEnum = "Resource"
	// CategoryTypeEnumResourceGroup - Emissions aggregated at the resource group level.
	CategoryTypeEnumResourceGroup CategoryTypeEnum = "ResourceGroup"
	// CategoryTypeEnumResourceType - Emissions aggregated at the resource type level.
	CategoryTypeEnumResourceType CategoryTypeEnum = "ResourceType"
	// CategoryTypeEnumSubscription - Emissions aggregated at the subscription level.
	CategoryTypeEnumSubscription CategoryTypeEnum = "Subscription"
)

// PossibleCategoryTypeEnumValues returns the possible values for the CategoryTypeEnum const type.
func PossibleCategoryTypeEnumValues() []CategoryTypeEnum {
	return []CategoryTypeEnum{
		CategoryTypeEnumLocation,
		CategoryTypeEnumResource,
		CategoryTypeEnumResourceGroup,
		CategoryTypeEnumResourceType,
		CategoryTypeEnumSubscription,
	}
}

// EmissionScopeEnum - Supported carbon emission scopes to be used with QueryParameter, as defined by the GHG Protocol. At
// least one scope must be specified. The output will return a total of all specified scopes.
type EmissionScopeEnum string

const (
	// EmissionScopeEnumScope1 - Scope1 carbon emission
	EmissionScopeEnumScope1 EmissionScopeEnum = "Scope1"
	// EmissionScopeEnumScope2 - Scope2 carbon emission
	EmissionScopeEnumScope2 EmissionScopeEnum = "Scope2"
	// EmissionScopeEnumScope3 - Scope3 carbon emission
	EmissionScopeEnumScope3 EmissionScopeEnum = "Scope3"
)

// PossibleEmissionScopeEnumValues returns the possible values for the EmissionScopeEnum const type.
func PossibleEmissionScopeEnumValues() []EmissionScopeEnum {
	return []EmissionScopeEnum{
		EmissionScopeEnumScope1,
		EmissionScopeEnumScope2,
		EmissionScopeEnumScope3,
	}
}

// OrderByColumnEnum - Sorting is supported for columns in ItemDetailsReport. This object includes the column names that sorting
// is allowed for. Select one of these supported values
type OrderByColumnEnum string

const (
	// OrderByColumnEnumItemName - The itemName filed in ItemDetailsReport result, see CarbonEmissionItemDetailData for more information.
	OrderByColumnEnumItemName OrderByColumnEnum = "ItemName"
	// OrderByColumnEnumLatestMonthEmissions - The latestMonthEmissions filed in ItemDetailsReport result, see CarbonEmissionItemDetailData
	// for more information.
	OrderByColumnEnumLatestMonthEmissions OrderByColumnEnum = "LatestMonthEmissions"
	// OrderByColumnEnumMonthOverMonthEmissionsChangeRatio - The monthOverMonthEmissionsChangeRatio filed in ItemDetailsReport
	// result, see CarbonEmissionItemDetailData for more information.
	OrderByColumnEnumMonthOverMonthEmissionsChangeRatio OrderByColumnEnum = "MonthOverMonthEmissionsChangeRatio"
	// OrderByColumnEnumMonthlyEmissionsChangeValue - The monthlyEmissionsChangeValue filed in ItemDetailsReport result, see CarbonEmissionItemDetailData
	// for more information.
	OrderByColumnEnumMonthlyEmissionsChangeValue OrderByColumnEnum = "MonthlyEmissionsChangeValue"
	// OrderByColumnEnumPreviousMonthEmissions - The previousMonthEmissions filed in ItemDetailsReport result, see CarbonEmissionItemDetailData
	// for more information.
	OrderByColumnEnumPreviousMonthEmissions OrderByColumnEnum = "PreviousMonthEmissions"
	// OrderByColumnEnumResourceGroup - The resourceGroup filed in ResourceCarbonEmissionItemDetailData result, see ResourceCarbonEmissionItemDetailData
	// for more information.
	OrderByColumnEnumResourceGroup OrderByColumnEnum = "ResourceGroup"
)

// PossibleOrderByColumnEnumValues returns the possible values for the OrderByColumnEnum const type.
func PossibleOrderByColumnEnumValues() []OrderByColumnEnum {
	return []OrderByColumnEnum{
		OrderByColumnEnumItemName,
		OrderByColumnEnumLatestMonthEmissions,
		OrderByColumnEnumMonthOverMonthEmissionsChangeRatio,
		OrderByColumnEnumMonthlyEmissionsChangeValue,
		OrderByColumnEnumPreviousMonthEmissions,
		OrderByColumnEnumResourceGroup,
	}
}

// Origin - The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
// value is "user,system"
type Origin string

const (
	// OriginSystem - Indicates the operation is initiated by a system.
	OriginSystem Origin = "system"
	// OriginUser - Indicates the operation is initiated by a user.
	OriginUser Origin = "user"
	// OriginUserSystem - Indicates the operation is initiated by a user or system.
	OriginUserSystem Origin = "user,system"
)

// PossibleOriginValues returns the possible values for the Origin const type.
func PossibleOriginValues() []Origin {
	return []Origin{
		OriginSystem,
		OriginUser,
		OriginUserSystem,
	}
}

// ReportTypeEnum - Enum for Report Type, specifying different report formats for carbon emissions data. Each report type
// returns different aggregations of carbon emissions across various categories, date range, emissions scope, and other parameters.
type ReportTypeEnum string

const (
	// ReportTypeEnumItemDetailsReport - ItemDetailsReport provides a granular list of items based on the specified CategoryType
	// (e.g., Resource, ResourceGroup, ResourceType, Location, or Subscription) for the query filter. This report can be queried
	// for only one month at a time, requiring the same values in the start and end fields within DateRange.
	ReportTypeEnumItemDetailsReport ReportTypeEnum = "ItemDetailsReport"
	// ReportTypeEnumMonthlySummaryReport - MonthlySummaryReport provides carbon emissions data by month for the specified query
	// parameters. This report type can accept different values in the start and end fields within DateRange (e.g., start: 2024-03-01
	// and end: 2024-06-01).
	ReportTypeEnumMonthlySummaryReport ReportTypeEnum = "MonthlySummaryReport"
	// ReportTypeEnumOverallSummaryReport - Overall summary report provides total carbon emissions for the specified date range
	// and query parameters, as well as comparative values for a high-level overview. This report type can accept different values
	// in the start and end fields within DateRange (e.g., start: 2024-03-01 and end: 2024-06-01).
	ReportTypeEnumOverallSummaryReport ReportTypeEnum = "OverallSummaryReport"
	// ReportTypeEnumTopItemsMonthlySummaryReport - TopItemsMonthlyReport provides the N highest-emitting items by month for the
	// specified query filter. Returns emissions data for the top N items by month within the given date range. A maximum of N=10
	// items can be returned at a time.
	ReportTypeEnumTopItemsMonthlySummaryReport ReportTypeEnum = "TopItemsMonthlySummaryReport"
	// ReportTypeEnumTopItemsSummaryReport - TopItemsSummaryReport provides the N highest-emitting items for the specified query
	// filters. This report returns data for a single month at a time, so it requires the same values for the start and end fields
	// within DateRange. A maximum of N=10 items can be returned at a time.
	ReportTypeEnumTopItemsSummaryReport ReportTypeEnum = "TopItemsSummaryReport"
)

// PossibleReportTypeEnumValues returns the possible values for the ReportTypeEnum const type.
func PossibleReportTypeEnumValues() []ReportTypeEnum {
	return []ReportTypeEnum{
		ReportTypeEnumItemDetailsReport,
		ReportTypeEnumMonthlySummaryReport,
		ReportTypeEnumOverallSummaryReport,
		ReportTypeEnumTopItemsMonthlySummaryReport,
		ReportTypeEnumTopItemsSummaryReport,
	}
}

// ResponseDataTypeEnum - The response data type of Carbon emission data
type ResponseDataTypeEnum string

const (
	// ResponseDataTypeEnumItemDetailsData - The response data type for ItemDetailsReport
	ResponseDataTypeEnumItemDetailsData ResponseDataTypeEnum = "ItemDetailsData"
	// ResponseDataTypeEnumMonthlySummaryData - The response data type for MonthlySummaryReport
	ResponseDataTypeEnumMonthlySummaryData ResponseDataTypeEnum = "MonthlySummaryData"
	// ResponseDataTypeEnumOverallSummaryData - The response data type for OverallSummaryReport
	ResponseDataTypeEnumOverallSummaryData ResponseDataTypeEnum = "OverallSummaryData"
	// ResponseDataTypeEnumResourceGroupItemDetailsData - The response data type for ResourceGroup's ItemDetailsReport
	ResponseDataTypeEnumResourceGroupItemDetailsData ResponseDataTypeEnum = "ResourceGroupItemDetailsData"
	// ResponseDataTypeEnumResourceGroupTopItemsMonthlySummaryData - The response data type for ResourceGroup's TopItemsMonthlySummaryReport
	ResponseDataTypeEnumResourceGroupTopItemsMonthlySummaryData ResponseDataTypeEnum = "ResourceGroupTopItemsMonthlySummaryData"
	// ResponseDataTypeEnumResourceGroupTopItemsSummaryData - The response data type for ResourceGroup's TopItemsSummaryReport
	ResponseDataTypeEnumResourceGroupTopItemsSummaryData ResponseDataTypeEnum = "ResourceGroupTopItemsSummaryData"
	// ResponseDataTypeEnumResourceItemDetailsData - The response data type for Resource's ItemDetailsReport
	ResponseDataTypeEnumResourceItemDetailsData ResponseDataTypeEnum = "ResourceItemDetailsData"
	// ResponseDataTypeEnumResourceTopItemsMonthlySummaryData - The response data type for Resource's TopItemsMonthlySummaryReport
	ResponseDataTypeEnumResourceTopItemsMonthlySummaryData ResponseDataTypeEnum = "ResourceTopItemsMonthlySummaryData"
	// ResponseDataTypeEnumResourceTopItemsSummaryData - The response data type for Resource's TopItemsSummaryReport
	ResponseDataTypeEnumResourceTopItemsSummaryData ResponseDataTypeEnum = "ResourceTopItemsSummaryData"
	// ResponseDataTypeEnumTopItemsMonthlySummaryData - The response data type for TopItemsMonthlySummaryReport
	ResponseDataTypeEnumTopItemsMonthlySummaryData ResponseDataTypeEnum = "TopItemsMonthlySummaryData"
	// ResponseDataTypeEnumTopItemsSummaryData - The response data type for TopItemsSummaryReport
	ResponseDataTypeEnumTopItemsSummaryData ResponseDataTypeEnum = "TopItemsSummaryData"
)

// PossibleResponseDataTypeEnumValues returns the possible values for the ResponseDataTypeEnum const type.
func PossibleResponseDataTypeEnumValues() []ResponseDataTypeEnum {
	return []ResponseDataTypeEnum{
		ResponseDataTypeEnumItemDetailsData,
		ResponseDataTypeEnumMonthlySummaryData,
		ResponseDataTypeEnumOverallSummaryData,
		ResponseDataTypeEnumResourceGroupItemDetailsData,
		ResponseDataTypeEnumResourceGroupTopItemsMonthlySummaryData,
		ResponseDataTypeEnumResourceGroupTopItemsSummaryData,
		ResponseDataTypeEnumResourceItemDetailsData,
		ResponseDataTypeEnumResourceTopItemsMonthlySummaryData,
		ResponseDataTypeEnumResourceTopItemsSummaryData,
		ResponseDataTypeEnumTopItemsMonthlySummaryData,
		ResponseDataTypeEnumTopItemsSummaryData,
	}
}

// SortDirectionEnum - Sorting is supported for columns in ItemDetailsReport. This object define sorting direction.
type SortDirectionEnum string

const (
	// SortDirectionEnumAsc - Ascending order for query result.
	SortDirectionEnumAsc SortDirectionEnum = "Asc"
	// SortDirectionEnumDesc - Descending order for query result.
	SortDirectionEnumDesc SortDirectionEnum = "Desc"
)

// PossibleSortDirectionEnumValues returns the possible values for the SortDirectionEnum const type.
func PossibleSortDirectionEnumValues() []SortDirectionEnum {
	return []SortDirectionEnum{
		SortDirectionEnumAsc,
		SortDirectionEnumDesc,
	}
}
