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

const (
	version20260101Preview string = "2026-01-01-preview"
)

// AliasPathAttributes - The attributes of the token that the alias path is referring to.
type AliasPathAttributes string

const (
	// AliasPathAttributesModifiable - The token that the alias path is referring to is modifiable by policies with 'modify' effect.
	AliasPathAttributesModifiable AliasPathAttributes = "Modifiable"
	// AliasPathAttributesNone - The token that the alias path is referring to has no attributes.
	AliasPathAttributesNone AliasPathAttributes = "None"
)

// PossibleAliasPathAttributesValues returns the possible values for the AliasPathAttributes const type.
func PossibleAliasPathAttributesValues() []AliasPathAttributes {
	return []AliasPathAttributes{
		AliasPathAttributesModifiable,
		AliasPathAttributesNone,
	}
}

// AliasPathTokenType - The type of the token that the alias path is referring to.
type AliasPathTokenType string

const (
	// AliasPathTokenTypeAny - The token type can be anything.
	AliasPathTokenTypeAny AliasPathTokenType = "Any"
	// AliasPathTokenTypeArray - The token type is array.
	AliasPathTokenTypeArray AliasPathTokenType = "Array"
	// AliasPathTokenTypeBoolean - The token type is boolean.
	AliasPathTokenTypeBoolean AliasPathTokenType = "Boolean"
	// AliasPathTokenTypeInteger - The token type is integer.
	AliasPathTokenTypeInteger AliasPathTokenType = "Integer"
	// AliasPathTokenTypeNotSpecified - The token type is not specified.
	AliasPathTokenTypeNotSpecified AliasPathTokenType = "NotSpecified"
	// AliasPathTokenTypeNumber - The token type is number.
	AliasPathTokenTypeNumber AliasPathTokenType = "Number"
	// AliasPathTokenTypeObject - The token type is object.
	AliasPathTokenTypeObject AliasPathTokenType = "Object"
	// AliasPathTokenTypeString - The token type is string.
	AliasPathTokenTypeString AliasPathTokenType = "String"
)

// PossibleAliasPathTokenTypeValues returns the possible values for the AliasPathTokenType const type.
func PossibleAliasPathTokenTypeValues() []AliasPathTokenType {
	return []AliasPathTokenType{
		AliasPathTokenTypeAny,
		AliasPathTokenTypeArray,
		AliasPathTokenTypeBoolean,
		AliasPathTokenTypeInteger,
		AliasPathTokenTypeNotSpecified,
		AliasPathTokenTypeNumber,
		AliasPathTokenTypeObject,
		AliasPathTokenTypeString,
	}
}

// AliasPatternType - The type of alias pattern.
type AliasPatternType string

const (
	// AliasPatternTypeExtract - Extract is the only allowed value.
	AliasPatternTypeExtract AliasPatternType = "Extract"
	// AliasPatternTypeNotSpecified - NotSpecified is not allowed.
	AliasPatternTypeNotSpecified AliasPatternType = "NotSpecified"
)

// PossibleAliasPatternTypeValues returns the possible values for the AliasPatternType const type.
func PossibleAliasPatternTypeValues() []AliasPatternType {
	return []AliasPatternType{
		AliasPatternTypeExtract,
		AliasPatternTypeNotSpecified,
	}
}

// AliasType - The type of the alias.
type AliasType string

const (
	// AliasTypeMask - Alias value is secret.
	AliasTypeMask AliasType = "Mask"
	// AliasTypeNotSpecified - Alias type is unknown (same as not providing alias type).
	AliasTypeNotSpecified AliasType = "NotSpecified"
	// AliasTypePlainText - Alias value is not secret.
	AliasTypePlainText AliasType = "PlainText"
)

// PossibleAliasTypeValues returns the possible values for the AliasType const type.
func PossibleAliasTypeValues() []AliasType {
	return []AliasType{
		AliasTypeMask,
		AliasTypeNotSpecified,
		AliasTypePlainText,
	}
}

// AssignmentScopeValidation - The option to validate whether the exemption or enrollment is at or under the assignment scope.
type AssignmentScopeValidation string

const (
	// AssignmentScopeValidationDefault - This option will validate the exemption is at or under the assignment scope.
	AssignmentScopeValidationDefault AssignmentScopeValidation = "Default"
	// AssignmentScopeValidationDoNotValidate - This option will bypass the validation the exemption scope is at or under the
	// policy assignment scope.
	AssignmentScopeValidationDoNotValidate AssignmentScopeValidation = "DoNotValidate"
)

// PossibleAssignmentScopeValidationValues returns the possible values for the AssignmentScopeValidation const type.
func PossibleAssignmentScopeValidationValues() []AssignmentScopeValidation {
	return []AssignmentScopeValidation{
		AssignmentScopeValidationDefault,
		AssignmentScopeValidationDoNotValidate,
	}
}

// AssignmentType - The type of policy assignment. Possible values are NotSpecified, System, SystemHidden, and Custom. Immutable.
type AssignmentType string

const (
	// AssignmentTypeCustom - The custom assignment type.
	AssignmentTypeCustom AssignmentType = "Custom"
	// AssignmentTypeNotSpecified - The not specified assignment type.
	AssignmentTypeNotSpecified AssignmentType = "NotSpecified"
	// AssignmentTypeSystem - The system assignment type.
	AssignmentTypeSystem AssignmentType = "System"
	// AssignmentTypeSystemHidden - The system hidden assignment type.
	AssignmentTypeSystemHidden AssignmentType = "SystemHidden"
)

// PossibleAssignmentTypeValues returns the possible values for the AssignmentType const type.
func PossibleAssignmentTypeValues() []AssignmentType {
	return []AssignmentType{
		AssignmentTypeCustom,
		AssignmentTypeNotSpecified,
		AssignmentTypeSystem,
		AssignmentTypeSystemHidden,
	}
}

// CreatedByType - The kind of entity that created the resource.
type CreatedByType string

const (
	// CreatedByTypeApplication - The entity was created by an application.
	CreatedByTypeApplication CreatedByType = "Application"
	// CreatedByTypeKey - The entity was created by a key.
	CreatedByTypeKey CreatedByType = "Key"
	// CreatedByTypeManagedIdentity - The entity was created by a managed identity.
	CreatedByTypeManagedIdentity CreatedByType = "ManagedIdentity"
	// CreatedByTypeUser - The entity was created by a user.
	CreatedByTypeUser CreatedByType = "User"
)

// PossibleCreatedByTypeValues returns the possible values for the CreatedByType const type.
func PossibleCreatedByTypeValues() []CreatedByType {
	return []CreatedByType{
		CreatedByTypeApplication,
		CreatedByTypeKey,
		CreatedByTypeManagedIdentity,
		CreatedByTypeUser,
	}
}

// EnforcementMode - The policy assignment enforcement mode. Possible values are Default, DoNotEnforce, and Enroll
type EnforcementMode string

const (
	// EnforcementModeDefault - The policy effect is enforced during resource creation or update.
	EnforcementModeDefault EnforcementMode = "Default"
	// EnforcementModeDoNotEnforce - The policy effect is not enforced during resource creation or update.
	EnforcementModeDoNotEnforce EnforcementMode = "DoNotEnforce"
	// EnforcementModeEnroll - The policy effect is not enforced during resource creation or update until the resource or scope
	// of the resource is enrolled to the assignment instance. Enrollment occurs upon deployment of the policy enrollment resource.
	EnforcementModeEnroll EnforcementMode = "Enroll"
)

// PossibleEnforcementModeValues returns the possible values for the EnforcementMode const type.
func PossibleEnforcementModeValues() []EnforcementMode {
	return []EnforcementMode{
		EnforcementModeDefault,
		EnforcementModeDoNotEnforce,
		EnforcementModeEnroll,
	}
}

// ExemptionCategory - The policy exemption category. Possible values are Waiver and Mitigated.
type ExemptionCategory string

const (
	// ExemptionCategoryMitigated - This category of exemptions usually means the mitigation actions have been applied to the
	// scope.
	ExemptionCategoryMitigated ExemptionCategory = "Mitigated"
	// ExemptionCategoryWaiver - This category of exemptions usually means the scope is not applicable for the policy.
	ExemptionCategoryWaiver ExemptionCategory = "Waiver"
)

// PossibleExemptionCategoryValues returns the possible values for the ExemptionCategory const type.
func PossibleExemptionCategoryValues() []ExemptionCategory {
	return []ExemptionCategory{
		ExemptionCategoryMitigated,
		ExemptionCategoryWaiver,
	}
}

// ExternalEndpointResult - The result of the external endpoint. Possible values are Succeeded and Failed.
type ExternalEndpointResult string

const (
	// ExternalEndpointResultFailed - The external endpoint failed.
	ExternalEndpointResultFailed ExternalEndpointResult = "Failed"
	// ExternalEndpointResultSucceeded - The external endpoint succeeded.
	ExternalEndpointResultSucceeded ExternalEndpointResult = "Succeeded"
)

// PossibleExternalEndpointResultValues returns the possible values for the ExternalEndpointResult const type.
func PossibleExternalEndpointResultValues() []ExternalEndpointResult {
	return []ExternalEndpointResult{
		ExternalEndpointResultFailed,
		ExternalEndpointResultSucceeded,
	}
}

// OverrideKind - The override kind.
type OverrideKind string

const (
	// OverrideKindDefinitionVersion - It will override the definition version property value of the policy assignment.
	OverrideKindDefinitionVersion OverrideKind = "definitionVersion"
	// OverrideKindPolicyEffect - It will override the policy effect type.
	OverrideKindPolicyEffect OverrideKind = "policyEffect"
)

// PossibleOverrideKindValues returns the possible values for the OverrideKind const type.
func PossibleOverrideKindValues() []OverrideKind {
	return []OverrideKind{
		OverrideKindDefinitionVersion,
		OverrideKindPolicyEffect,
	}
}

// ParameterType - The data type of the parameter.
type ParameterType string

const (
	// ParameterTypeArray - The array parameter type.
	ParameterTypeArray ParameterType = "Array"
	// ParameterTypeBoolean - The boolean parameter type.
	ParameterTypeBoolean ParameterType = "Boolean"
	// ParameterTypeDateTime - The date-time parameter type.
	ParameterTypeDateTime ParameterType = "DateTime"
	// ParameterTypeFloat - The float parameter type.
	ParameterTypeFloat ParameterType = "Float"
	// ParameterTypeInteger - The integer parameter type.
	ParameterTypeInteger ParameterType = "Integer"
	// ParameterTypeObject - The object parameter type.
	ParameterTypeObject ParameterType = "Object"
	// ParameterTypeString - The string parameter type.
	ParameterTypeString ParameterType = "String"
)

// PossibleParameterTypeValues returns the possible values for the ParameterType const type.
func PossibleParameterTypeValues() []ParameterType {
	return []ParameterType{
		ParameterTypeArray,
		ParameterTypeBoolean,
		ParameterTypeDateTime,
		ParameterTypeFloat,
		ParameterTypeInteger,
		ParameterTypeObject,
		ParameterTypeString,
	}
}

// PolicyAction - The effective outcome of the policy evaluation based on both the policy effect and evaluation result. Possible
// values are Unknown, Allow, Audit, Deny, Error.
type PolicyAction string

const (
	// PolicyActionAllow - The effective outcome of policy evaluation is to allow the request.
	PolicyActionAllow PolicyAction = "Allow"
	// PolicyActionAudit - The effective outcome of policy evaluation is to audit the request.
	PolicyActionAudit PolicyAction = "Audit"
	// PolicyActionDeny - The effective outcome of policy evaluation is to deny the request.
	PolicyActionDeny PolicyAction = "Deny"
	// PolicyActionError - The policy evaluation resulted in an error.
	PolicyActionError PolicyAction = "Error"
	// PolicyActionUnknown - The effective outcome of policy evaluation is unknown.
	PolicyActionUnknown PolicyAction = "Unknown"
)

// PossiblePolicyActionValues returns the possible values for the PolicyAction const type.
func PossiblePolicyActionValues() []PolicyAction {
	return []PolicyAction{
		PolicyActionAllow,
		PolicyActionAudit,
		PolicyActionDeny,
		PolicyActionError,
		PolicyActionUnknown,
	}
}

// PolicyTokenResult - The result of the completed token acquisition operation. Possible values are Succeeded and Failed.
type PolicyTokenResult string

const (
	// PolicyTokenResultFailed - The token acquisition failed.
	PolicyTokenResultFailed PolicyTokenResult = "Failed"
	// PolicyTokenResultSucceeded - The token acquisition succeeded.
	PolicyTokenResultSucceeded PolicyTokenResult = "Succeeded"
)

// PossiblePolicyTokenResultValues returns the possible values for the PolicyTokenResult const type.
func PossiblePolicyTokenResultValues() []PolicyTokenResult {
	return []PolicyTokenResult{
		PolicyTokenResultFailed,
		PolicyTokenResultSucceeded,
	}
}

// PolicyType - The type of policy definition. Possible values are NotSpecified, BuiltIn, Custom, and Static.
type PolicyType string

const (
	// PolicyTypeBuiltIn - The built in policy definition type.
	PolicyTypeBuiltIn PolicyType = "BuiltIn"
	// PolicyTypeCustom - The custom policy definition type.
	PolicyTypeCustom PolicyType = "Custom"
	// PolicyTypeNotSpecified - The not specified policy definition type.
	PolicyTypeNotSpecified PolicyType = "NotSpecified"
	// PolicyTypeStatic - The static policy definition type.
	PolicyTypeStatic PolicyType = "Static"
)

// PossiblePolicyTypeValues returns the possible values for the PolicyType const type.
func PossiblePolicyTypeValues() []PolicyType {
	return []PolicyType{
		PolicyTypeBuiltIn,
		PolicyTypeCustom,
		PolicyTypeNotSpecified,
		PolicyTypeStatic,
	}
}

// ResourceIdentityType - The identity type. This is the only required field when adding a system or user assigned identity
// to a resource.
type ResourceIdentityType string

const (
	// ResourceIdentityTypeNone - Indicates that no identity is associated with the resource or that the existing identity should
	// be removed.
	ResourceIdentityTypeNone ResourceIdentityType = "None"
	// ResourceIdentityTypeSystemAssigned - Indicates that a system assigned identity is associated with the resource.
	ResourceIdentityTypeSystemAssigned ResourceIdentityType = "SystemAssigned"
	// ResourceIdentityTypeUserAssigned - Indicates that a system assigned identity is associated with the resource.
	ResourceIdentityTypeUserAssigned ResourceIdentityType = "UserAssigned"
)

// PossibleResourceIdentityTypeValues returns the possible values for the ResourceIdentityType const type.
func PossibleResourceIdentityTypeValues() []ResourceIdentityType {
	return []ResourceIdentityType{
		ResourceIdentityTypeNone,
		ResourceIdentityTypeSystemAssigned,
		ResourceIdentityTypeUserAssigned,
	}
}

// SelectorKind - The selector kind.
type SelectorKind string

const (
	// SelectorKindGroupPrincipalID - The selector kind to filter policies by the security group membership ID.
	SelectorKindGroupPrincipalID SelectorKind = "groupPrincipalId"
	// SelectorKindPolicyDefinitionReferenceID - The selector kind to filter policies by the policy definition reference ID.
	SelectorKindPolicyDefinitionReferenceID SelectorKind = "policyDefinitionReferenceId"
	// SelectorKindResourceLocation - The selector kind to filter policies by the resource location.
	SelectorKindResourceLocation SelectorKind = "resourceLocation"
	// SelectorKindResourceType - The selector kind to filter policies by the resource type.
	SelectorKindResourceType SelectorKind = "resourceType"
	// SelectorKindResourceWithoutLocation - The selector kind to filter policies by the resource without location.
	SelectorKindResourceWithoutLocation SelectorKind = "resourceWithoutLocation"
	// SelectorKindUserPrincipalID - The selector kind to filter policies by the user principal ID.
	SelectorKindUserPrincipalID SelectorKind = "userPrincipalId"
)

// PossibleSelectorKindValues returns the possible values for the SelectorKind const type.
func PossibleSelectorKindValues() []SelectorKind {
	return []SelectorKind{
		SelectorKindGroupPrincipalID,
		SelectorKindPolicyDefinitionReferenceID,
		SelectorKindResourceLocation,
		SelectorKindResourceType,
		SelectorKindResourceWithoutLocation,
		SelectorKindUserPrincipalID,
	}
}
