// 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) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

package armresources

import "time"

type APIProfile struct {
	// READ-ONLY; The API version.
	APIVersion *string

	// READ-ONLY; The profile version.
	ProfileVersion *string
}

// Alias - The alias type.
type Alias struct {
	// The default path for an alias.
	DefaultPath *string

	// The default pattern for an alias.
	DefaultPattern *AliasPattern

	// The alias name.
	Name *string

	// The paths for an alias.
	Paths []*AliasPath

	// The type of the alias.
	Type *AliasType

	// READ-ONLY; The default alias path metadata. Applies to the default path and to any alias path that doesn't have metadata
	DefaultMetadata *AliasPathMetadata
}

// AliasPath - The type of the paths for alias.
type AliasPath struct {
	// The API versions.
	APIVersions []*string

	// The path of an alias.
	Path *string

	// The pattern for an alias path.
	Pattern *AliasPattern

	// READ-ONLY; The metadata of the alias path. If missing, fall back to the default metadata of the alias.
	Metadata *AliasPathMetadata
}

type AliasPathMetadata struct {
	// READ-ONLY; The attributes of the token that the alias path is referring to.
	Attributes *AliasPathAttributes

	// READ-ONLY; The type of the token that the alias path is referring to.
	Type *AliasPathTokenType
}

// AliasPattern - The type of the pattern for an alias path.
type AliasPattern struct {
	// The alias pattern phrase.
	Phrase *string

	// The type of alias pattern
	Type *AliasPatternType

	// The alias pattern variable.
	Variable *string
}

// ErrorAdditionalInfo - The resource management error additional info.
type ErrorAdditionalInfo struct {
	// READ-ONLY; The additional info.
	Info any

	// READ-ONLY; The additional info type.
	Type *string
}

// ErrorResponse - Common error response for all Azure Resource Manager APIs to return error details for failed operations.
// (This also follows the OData error response format.)
type ErrorResponse struct {
	// READ-ONLY; The error additional info.
	AdditionalInfo []*ErrorAdditionalInfo

	// READ-ONLY; The error code.
	Code *string

	// READ-ONLY; The error details.
	Details []*ErrorResponse

	// READ-ONLY; The error message.
	Message *string

	// READ-ONLY; The error target.
	Target *string
}

// ExportTemplateRequest - Export resource group template request parameters.
type ExportTemplateRequest struct {
	// The export template options. A CSV-formatted list containing zero or more of the following: 'IncludeParameterDefaultValue',
	// 'IncludeComments', 'SkipResourceNameParameterization',
	// 'SkipAllParameterization'
	Options *string

	// The output format for the exported resources.
	OutputFormat *ExportTemplateOutputFormat

	// The IDs of the resources to filter the export by. To export all resources, supply an array with single entry '*'.
	Resources []*string
}

// ExtendedLocation - Resource extended location.
type ExtendedLocation struct {
	// The extended location name.
	Name *string

	// The extended location type.
	Type *ExtendedLocationType
}

// GenericResource - Resource information.
type GenericResource struct {
	// Resource extended location.
	ExtendedLocation *ExtendedLocation

	// The identity of the resource.
	Identity *Identity

	// The kind of the resource.
	Kind *string

	// Resource location
	Location *string

	// ID of the resource that manages this resource.
	ManagedBy *string

	// The plan of the resource.
	Plan *Plan

	// The resource properties.
	Properties any

	// The SKU of the resource.
	SKU *SKU

	// Resource tags
	Tags map[string]*string

	// READ-ONLY; Resource ID
	ID *string

	// READ-ONLY; Resource name
	Name *string

	// READ-ONLY; Resource type
	Type *string
}

// GenericResourceExpanded - Resource information.
type GenericResourceExpanded struct {
	// Resource extended location.
	ExtendedLocation *ExtendedLocation

	// The identity of the resource.
	Identity *Identity

	// The kind of the resource.
	Kind *string

	// Resource location
	Location *string

	// ID of the resource that manages this resource.
	ManagedBy *string

	// The plan of the resource.
	Plan *Plan

	// The resource properties.
	Properties any

	// The SKU of the resource.
	SKU *SKU

	// Resource tags
	Tags map[string]*string

	// READ-ONLY; The changed time of the resource. This is only present if requested via the $expand query parameter.
	ChangedTime *time.Time

	// READ-ONLY; The created time of the resource. This is only present if requested via the $expand query parameter.
	CreatedTime *time.Time

	// READ-ONLY; Resource ID
	ID *string

	// READ-ONLY; Resource name
	Name *string

	// READ-ONLY; The provisioning state of the resource. This is only present if requested via the $expand query parameter.
	ProvisioningState *string

	// READ-ONLY; Resource type
	Type *string
}

// GenericResourceFilter - Resource filter.
type GenericResourceFilter struct {
	// The resource type.
	ResourceType *string

	// The tag name.
	Tagname *string

	// The tag value.
	Tagvalue *string
}

// Identity for the resource.
type Identity struct {
	// The identity type.
	Type *ResourceIdentityType

	// The list of user identities associated with the resource. The user identity dictionary key references will be ARM resource
	// ids in the form:
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
	UserAssignedIdentities map[string]*IdentityUserAssignedIdentitiesValue

	// READ-ONLY; The principal ID of resource identity.
	PrincipalID *string

	// READ-ONLY; The tenant ID of resource.
	TenantID *string
}

type IdentityUserAssignedIdentitiesValue struct {
	// READ-ONLY; The client id of user assigned identity.
	ClientID *string

	// READ-ONLY; The principal id of user assigned identity.
	PrincipalID *string
}

// MoveInfo - Parameters of move resources.
type MoveInfo struct {
	// The IDs of the resources.
	Resources []*string

	// The target resource group.
	TargetResourceGroup *string
}

// Operation - Microsoft.Resources operation
type Operation struct {
	// The object that represents the operation.
	Display *OperationDisplay

	// Operation name: {provider}/{resource}/{operation}
	Name *string
}

// OperationDisplay - The object that represents the operation.
type OperationDisplay struct {
	// Description of the operation.
	Description *string

	// Operation type: Read, write, delete, etc.
	Operation *string

	// Service provider: Microsoft.Resources
	Provider *string

	// Resource on which the operation is performed: Profile, endpoint, etc.
	Resource *string
}

// OperationListResult - Result of the request to list Microsoft.Resources operations. It contains a list of operations and
// a URL link to get the next set of results.
type OperationListResult struct {
	// URL to get the next set of operation list results if there are any.
	NextLink *string

	// List of Microsoft.Resources operations.
	Value []*Operation
}

// Permission - Role definition permissions.
type Permission struct {
	// Allowed actions.
	Actions []*string

	// Allowed Data actions.
	DataActions []*string

	// Denied actions.
	NotActions []*string

	// Denied Data actions.
	NotDataActions []*string
}

// Plan for the resource.
type Plan struct {
	// The plan ID.
	Name *string

	// The offer ID.
	Product *string

	// The promotion code.
	PromotionCode *string

	// The publisher ID.
	Publisher *string

	// The plan's version.
	Version *string
}

// Provider - Resource provider information.
type Provider struct {
	// The namespace of the resource provider.
	Namespace *string

	// The provider authorization consent state.
	ProviderAuthorizationConsentState *ProviderAuthorizationConsentState

	// READ-ONLY; The provider ID.
	ID *string

	// READ-ONLY; The registration policy of the resource provider.
	RegistrationPolicy *string

	// READ-ONLY; The registration state of the resource provider.
	RegistrationState *string

	// READ-ONLY; The collection of provider resource types.
	ResourceTypes []*ProviderResourceType
}

// ProviderConsentDefinition - The provider consent.
type ProviderConsentDefinition struct {
	// A value indicating whether authorization is consented or not.
	ConsentToAuthorization *bool
}

// ProviderExtendedLocation - The provider extended location.
type ProviderExtendedLocation struct {
	// The extended locations for the azure location.
	ExtendedLocations []*string

	// The azure location.
	Location *string

	// The extended location type.
	Type *string
}

// ProviderListResult - List of resource providers.
type ProviderListResult struct {
	// An array of resource providers.
	Value []*Provider

	// READ-ONLY; The URL to use for getting the next set of results.
	NextLink *string
}

// ProviderPermission - The provider permission
type ProviderPermission struct {
	// The application id.
	ApplicationID *string

	// Role definition properties.
	ManagedByRoleDefinition *RoleDefinition

	// The provider authorization consent state.
	ProviderAuthorizationConsentState *ProviderAuthorizationConsentState

	// Role definition properties.
	RoleDefinition *RoleDefinition
}

// ProviderPermissionListResult - List of provider permissions.
type ProviderPermissionListResult struct {
	// An array of provider permissions.
	Value []*ProviderPermission

	// READ-ONLY; The URL to use for getting the next set of results.
	NextLink *string
}

// ProviderRegistrationRequest - The provider registration definition.
type ProviderRegistrationRequest struct {
	// The provider consent.
	ThirdPartyProviderConsent *ProviderConsentDefinition
}

// ProviderResourceType - Resource type managed by the resource provider.
type ProviderResourceType struct {
	// The API version.
	APIVersions []*string

	// The aliases that are supported by this resource type.
	Aliases []*Alias

	// The additional capabilities offered by this resource type.
	Capabilities *string

	// The location mappings that are supported by this resource type.
	LocationMappings []*ProviderExtendedLocation

	// The collection of locations where this resource type can be created.
	Locations []*string

	// The properties.
	Properties map[string]*string

	// The resource type.
	ResourceType *string
	ZoneMappings []*ZoneMapping

	// READ-ONLY; The API profiles for the resource provider.
	APIProfiles []*APIProfile

	// READ-ONLY; The default API version.
	DefaultAPIVersion *string
}

// ProviderResourceTypeListResult - List of resource types of a resource provider.
type ProviderResourceTypeListResult struct {
	// An array of resource types.
	Value []*ProviderResourceType

	// READ-ONLY; The URL to use for getting the next set of results.
	NextLink *string
}

// Resource - Specified resource.
type Resource struct {
	// Resource extended location.
	ExtendedLocation *ExtendedLocation

	// Resource location
	Location *string

	// Resource tags
	Tags map[string]*string

	// READ-ONLY; Resource ID
	ID *string

	// READ-ONLY; Resource name
	Name *string

	// READ-ONLY; Resource type
	Type *string
}

// ResourceGroup - Resource group information.
type ResourceGroup struct {
	// REQUIRED; The location of the resource group. It cannot be changed after the resource group has been created. It must be
	// one of the supported Azure locations.
	Location *string

	// The ID of the resource that manages this resource group.
	ManagedBy *string

	// The resource group properties.
	Properties *ResourceGroupProperties

	// The tags attached to the resource group.
	Tags map[string]*string

	// READ-ONLY; The ID of the resource group.
	ID *string

	// READ-ONLY; The name of the resource group.
	Name *string

	// READ-ONLY; The type of the resource group.
	Type *string
}

// ResourceGroupExportResult - Resource group export result.
type ResourceGroupExportResult struct {
	// The template export error.
	Error *ErrorResponse

	// The formatted export content. Used if outputFormat is set to 'Bicep'.
	Output *string

	// The template content. Used if outputFormat is empty or set to 'Json'.
	Template any
}

// ResourceGroupFilter - Resource group filter.
type ResourceGroupFilter struct {
	// The tag name.
	TagName *string

	// The tag value.
	TagValue *string
}

// ResourceGroupListResult - List of resource groups.
type ResourceGroupListResult struct {
	// An array of resource groups.
	Value []*ResourceGroup

	// READ-ONLY; The URL to use for getting the next set of results.
	NextLink *string
}

// ResourceGroupPatchable - Resource group information.
type ResourceGroupPatchable struct {
	// The ID of the resource that manages this resource group.
	ManagedBy *string

	// The name of the resource group.
	Name *string

	// The resource group properties.
	Properties *ResourceGroupProperties

	// The tags attached to the resource group.
	Tags map[string]*string
}

// ResourceGroupProperties - The resource group properties.
type ResourceGroupProperties struct {
	// READ-ONLY; The provisioning state.
	ProvisioningState *string
}

// ResourceListResult - List of resource groups.
type ResourceListResult struct {
	// An array of resources.
	Value []*GenericResourceExpanded

	// READ-ONLY; The URL to use for getting the next set of results.
	NextLink *string
}

// ResourceProviderOperationDisplayProperties - Resource provider operation's display properties.
type ResourceProviderOperationDisplayProperties struct {
	// Operation description.
	Description *string

	// Resource provider operation.
	Operation *string

	// Operation provider.
	Provider *string

	// Operation description.
	Publisher *string

	// Operation resource.
	Resource *string
}

// RoleDefinition - Role definition properties.
type RoleDefinition struct {
	// The role definition ID.
	ID *string

	// If this is a service role.
	IsServiceRole *bool

	// The role definition name.
	Name *string

	// Role definition permissions.
	Permissions []*Permission

	// Role definition assignable scopes.
	Scopes []*string
}

// SKU for the resource.
type SKU struct {
	// The SKU capacity.
	Capacity *int32

	// The SKU family.
	Family *string

	// The SKU model.
	Model *string

	// The SKU name.
	Name *string

	// The SKU size.
	Size *string

	// The SKU tier.
	Tier *string
}

// SubResource - Sub-resource.
type SubResource struct {
	// Resource ID
	ID *string
}

// TagCount - Tag count.
type TagCount struct {
	// Type of count.
	Type *string

	// Value of count.
	Value *int32
}

// TagDetails - Tag details.
type TagDetails struct {
	// The total number of resources that use the resource tag. When a tag is initially created and has no associated resources,
	// the value is 0.
	Count *TagCount

	// The tag name.
	TagName *string

	// The list of tag values.
	Values []*TagValue

	// READ-ONLY; The tag name ID.
	ID *string
}

// TagValue - Tag information.
type TagValue struct {
	// The tag value count.
	Count *TagCount

	// The tag value.
	TagValue *string

	// READ-ONLY; The tag value ID.
	ID *string
}

// Tags - A dictionary of name and value pairs.
type Tags struct {
	// Dictionary of
	Tags map[string]*string
}

// TagsListResult - List of subscription tags.
type TagsListResult struct {
	// An array of tags.
	Value []*TagDetails

	// READ-ONLY; The URL to use for getting the next set of results.
	NextLink *string
}

// TagsPatchResource - Wrapper resource for tags patch API request only.
type TagsPatchResource struct {
	// The operation type for the patch API.
	Operation *TagsPatchOperation

	// The set of tags.
	Properties *Tags
}

// TagsResource - Wrapper resource for tags API requests and responses.
type TagsResource struct {
	// REQUIRED; The set of tags.
	Properties *Tags

	// READ-ONLY; The ID of the tags wrapper resource.
	ID *string

	// READ-ONLY; The name of the tags wrapper resource.
	Name *string

	// READ-ONLY; The type of the tags wrapper resource.
	Type *string
}

type ZoneMapping struct {
	// The location of the zone mapping.
	Location *string
	Zones    []*string
}
