// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package storage

import (
	"github.com/Azure/azure-service-operator/v2/pkg/genruntime"
	"github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions"
	"github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps"
	"github.com/Azure/azure-service-operator/v2/pkg/genruntime/core"
	"github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets"
	"github.com/rotisserie/eris"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/runtime/schema"
)

// +kubebuilder:rbac:groups=web.azure.com,resources=sites,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=web.azure.com,resources={sites/status,sites/finalizers},verbs=get;update;patch

// +kubebuilder:object:root=true
// +kubebuilder:resource:categories={azure,web}
// +kubebuilder:subresource:status
// +kubebuilder:storageversion
// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity"
// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason"
// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message"
// Storage version of v1api20220301.Site
// Generator information:
// - Generated from: /web/resource-manager/Microsoft.Web/stable/2022-03-01/WebApps.json
// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}
type Site struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              Site_Spec   `json:"spec,omitempty"`
	Status            Site_STATUS `json:"status,omitempty"`
}

var _ conditions.Conditioner = &Site{}

// GetConditions returns the conditions of the resource
func (site *Site) GetConditions() conditions.Conditions {
	return site.Status.Conditions
}

// SetConditions sets the conditions on the resource status
func (site *Site) SetConditions(conditions conditions.Conditions) {
	site.Status.Conditions = conditions
}

var _ configmaps.Exporter = &Site{}

// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property
func (site *Site) ConfigMapDestinationExpressions() []*core.DestinationExpression {
	if site.Spec.OperatorSpec == nil {
		return nil
	}
	return site.Spec.OperatorSpec.ConfigMapExpressions
}

var _ secrets.Exporter = &Site{}

// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property
func (site *Site) SecretDestinationExpressions() []*core.DestinationExpression {
	if site.Spec.OperatorSpec == nil {
		return nil
	}
	return site.Spec.OperatorSpec.SecretExpressions
}

var _ genruntime.KubernetesResource = &Site{}

// AzureName returns the Azure name of the resource
func (site *Site) AzureName() string {
	return site.Spec.AzureName
}

// GetAPIVersion returns the ARM API version of the resource. This is always "2022-03-01"
func (site Site) GetAPIVersion() string {
	return "2022-03-01"
}

// GetResourceScope returns the scope of the resource
func (site *Site) GetResourceScope() genruntime.ResourceScope {
	return genruntime.ResourceScopeResourceGroup
}

// GetSpec returns the specification of this resource
func (site *Site) GetSpec() genruntime.ConvertibleSpec {
	return &site.Spec
}

// GetStatus returns the status of this resource
func (site *Site) GetStatus() genruntime.ConvertibleStatus {
	return &site.Status
}

// GetSupportedOperations returns the operations supported by the resource
func (site *Site) GetSupportedOperations() []genruntime.ResourceOperation {
	return []genruntime.ResourceOperation{
		genruntime.ResourceOperationDelete,
		genruntime.ResourceOperationGet,
		genruntime.ResourceOperationPut,
	}
}

// GetType returns the ARM Type of the resource. This is always "Microsoft.Web/sites"
func (site *Site) GetType() string {
	return "Microsoft.Web/sites"
}

// NewEmptyStatus returns a new empty (blank) status
func (site *Site) NewEmptyStatus() genruntime.ConvertibleStatus {
	return &Site_STATUS{}
}

// Owner returns the ResourceReference of the owner
func (site *Site) Owner() *genruntime.ResourceReference {
	if site.Spec.Owner == nil {
		return nil
	}

	group, kind := genruntime.LookupOwnerGroupKind(site.Spec)
	return site.Spec.Owner.AsResourceReference(group, kind)
}

// SetStatus sets the status of this resource
func (site *Site) SetStatus(status genruntime.ConvertibleStatus) error {
	// If we have exactly the right type of status, assign it
	if st, ok := status.(*Site_STATUS); ok {
		site.Status = *st
		return nil
	}

	// Convert status to required version
	var st Site_STATUS
	err := status.ConvertStatusTo(&st)
	if err != nil {
		return eris.Wrap(err, "failed to convert status")
	}

	site.Status = st
	return nil
}

// Hub marks that this Site is the hub type for conversion
func (site *Site) Hub() {}

// OriginalGVK returns a GroupValueKind for the original API version used to create the resource
func (site *Site) OriginalGVK() *schema.GroupVersionKind {
	return &schema.GroupVersionKind{
		Group:   GroupVersion.Group,
		Version: site.Spec.OriginalVersion,
		Kind:    "Site",
	}
}

// +kubebuilder:object:root=true
// Storage version of v1api20220301.Site
// Generator information:
// - Generated from: /web/resource-manager/Microsoft.Web/stable/2022-03-01/WebApps.json
// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}
type SiteList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Site `json:"items"`
}

// Storage version of v1api20220301.Site_Spec
type Site_Spec struct {
	// AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it
	// doesn't have to be.
	AzureName                  string                     `json:"azureName,omitempty"`
	ClientAffinityEnabled      *bool                      `json:"clientAffinityEnabled,omitempty"`
	ClientCertEnabled          *bool                      `json:"clientCertEnabled,omitempty"`
	ClientCertExclusionPaths   *string                    `json:"clientCertExclusionPaths,omitempty"`
	ClientCertMode             *string                    `json:"clientCertMode,omitempty"`
	CloningInfo                *CloningInfo               `json:"cloningInfo,omitempty"`
	ContainerSize              *int                       `json:"containerSize,omitempty"`
	CustomDomainVerificationId *string                    `json:"customDomainVerificationId,omitempty"`
	DailyMemoryTimeQuota       *int                       `json:"dailyMemoryTimeQuota,omitempty"`
	Enabled                    *bool                      `json:"enabled,omitempty"`
	ExtendedLocation           *ExtendedLocation          `json:"extendedLocation,omitempty"`
	HostNameSslStates          []HostNameSslState         `json:"hostNameSslStates,omitempty"`
	HostNamesDisabled          *bool                      `json:"hostNamesDisabled,omitempty"`
	HostingEnvironmentProfile  *HostingEnvironmentProfile `json:"hostingEnvironmentProfile,omitempty"`
	HttpsOnly                  *bool                      `json:"httpsOnly,omitempty"`
	HyperV                     *bool                      `json:"hyperV,omitempty"`
	Identity                   *ManagedServiceIdentity    `json:"identity,omitempty"`
	IsXenon                    *bool                      `json:"isXenon,omitempty"`
	KeyVaultReferenceIdentity  *string                    `json:"keyVaultReferenceIdentity,omitempty"`
	Kind                       *string                    `json:"kind,omitempty"`
	Location                   *string                    `json:"location,omitempty"`
	OperatorSpec               *SiteOperatorSpec          `json:"operatorSpec,omitempty"`
	OriginalVersion            string                     `json:"originalVersion,omitempty"`

	// +kubebuilder:validation:Required
	// Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also
	// controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a
	// reference to a resources.azure.com/ResourceGroup resource
	Owner               *genruntime.KnownResourceReference `group:"resources.azure.com" json:"owner,omitempty" kind:"ResourceGroup"`
	PropertyBag         genruntime.PropertyBag             `json:"$propertyBag,omitempty"`
	PublicNetworkAccess *string                            `json:"publicNetworkAccess,omitempty"`
	RedundancyMode      *string                            `json:"redundancyMode,omitempty"`
	Reserved            *bool                              `json:"reserved,omitempty"`
	ScmSiteAlsoStopped  *bool                              `json:"scmSiteAlsoStopped,omitempty"`

	// ServerFarmReference: Resource ID of the associated App Service plan, formatted as:
	// "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
	ServerFarmReference    *genruntime.ResourceReference `armReference:"ServerFarmId" json:"serverFarmReference,omitempty"`
	SiteConfig             *SiteConfig                   `json:"siteConfig,omitempty"`
	StorageAccountRequired *bool                         `json:"storageAccountRequired,omitempty"`
	Tags                   map[string]string             `json:"tags,omitempty"`

	// VirtualNetworkSubnetReference: Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET
	// Integration.
	// This must be of the form
	// /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
	VirtualNetworkSubnetReference *genruntime.ResourceReference `armReference:"VirtualNetworkSubnetId" json:"virtualNetworkSubnetReference,omitempty"`
	VnetContentShareEnabled       *bool                         `json:"vnetContentShareEnabled,omitempty"`
	VnetImagePullEnabled          *bool                         `json:"vnetImagePullEnabled,omitempty"`
	VnetRouteAllEnabled           *bool                         `json:"vnetRouteAllEnabled,omitempty"`
}

var _ genruntime.ConvertibleSpec = &Site_Spec{}

// ConvertSpecFrom populates our Site_Spec from the provided source
func (site *Site_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error {
	if source == site {
		return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec")
	}

	return source.ConvertSpecTo(site)
}

// ConvertSpecTo populates the provided destination from our Site_Spec
func (site *Site_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error {
	if destination == site {
		return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec")
	}

	return destination.ConvertSpecFrom(site)
}

// Storage version of v1api20220301.Site_STATUS
// A web app, a mobile app backend, or an API app.
type Site_STATUS struct {
	AvailabilityState           *string                           `json:"availabilityState,omitempty"`
	ClientAffinityEnabled       *bool                             `json:"clientAffinityEnabled,omitempty"`
	ClientCertEnabled           *bool                             `json:"clientCertEnabled,omitempty"`
	ClientCertExclusionPaths    *string                           `json:"clientCertExclusionPaths,omitempty"`
	ClientCertMode              *string                           `json:"clientCertMode,omitempty"`
	CloningInfo                 *CloningInfo_STATUS               `json:"cloningInfo,omitempty"`
	Conditions                  []conditions.Condition            `json:"conditions,omitempty"`
	ContainerSize               *int                              `json:"containerSize,omitempty"`
	CustomDomainVerificationId  *string                           `json:"customDomainVerificationId,omitempty"`
	DailyMemoryTimeQuota        *int                              `json:"dailyMemoryTimeQuota,omitempty"`
	DefaultHostName             *string                           `json:"defaultHostName,omitempty"`
	Enabled                     *bool                             `json:"enabled,omitempty"`
	EnabledHostNames            []string                          `json:"enabledHostNames,omitempty"`
	ExtendedLocation            *ExtendedLocation_STATUS          `json:"extendedLocation,omitempty"`
	HostNameSslStates           []HostNameSslState_STATUS         `json:"hostNameSslStates,omitempty"`
	HostNames                   []string                          `json:"hostNames,omitempty"`
	HostNamesDisabled           *bool                             `json:"hostNamesDisabled,omitempty"`
	HostingEnvironmentProfile   *HostingEnvironmentProfile_STATUS `json:"hostingEnvironmentProfile,omitempty"`
	HttpsOnly                   *bool                             `json:"httpsOnly,omitempty"`
	HyperV                      *bool                             `json:"hyperV,omitempty"`
	Id                          *string                           `json:"id,omitempty"`
	Identity                    *ManagedServiceIdentity_STATUS    `json:"identity,omitempty"`
	InProgressOperationId       *string                           `json:"inProgressOperationId,omitempty"`
	IsDefaultContainer          *bool                             `json:"isDefaultContainer,omitempty"`
	IsXenon                     *bool                             `json:"isXenon,omitempty"`
	KeyVaultReferenceIdentity   *string                           `json:"keyVaultReferenceIdentity,omitempty"`
	Kind                        *string                           `json:"kind,omitempty"`
	LastModifiedTimeUtc         *string                           `json:"lastModifiedTimeUtc,omitempty"`
	Location                    *string                           `json:"location,omitempty"`
	MaxNumberOfWorkers          *int                              `json:"maxNumberOfWorkers,omitempty"`
	Name                        *string                           `json:"name,omitempty"`
	OutboundIpAddresses         *string                           `json:"outboundIpAddresses,omitempty"`
	PossibleOutboundIpAddresses *string                           `json:"possibleOutboundIpAddresses,omitempty"`
	PropertyBag                 genruntime.PropertyBag            `json:"$propertyBag,omitempty"`
	PublicNetworkAccess         *string                           `json:"publicNetworkAccess,omitempty"`
	RedundancyMode              *string                           `json:"redundancyMode,omitempty"`
	RepositorySiteName          *string                           `json:"repositorySiteName,omitempty"`
	Reserved                    *bool                             `json:"reserved,omitempty"`
	ResourceGroup               *string                           `json:"resourceGroup,omitempty"`
	ScmSiteAlsoStopped          *bool                             `json:"scmSiteAlsoStopped,omitempty"`
	ServerFarmId                *string                           `json:"serverFarmId,omitempty"`
	SiteConfig                  *SiteConfig_STATUS                `json:"siteConfig,omitempty"`
	SlotSwapStatus              *SlotSwapStatus_STATUS            `json:"slotSwapStatus,omitempty"`
	State                       *string                           `json:"state,omitempty"`
	StorageAccountRequired      *bool                             `json:"storageAccountRequired,omitempty"`
	SuspendedTill               *string                           `json:"suspendedTill,omitempty"`
	Tags                        map[string]string                 `json:"tags,omitempty"`
	TargetSwapSlot              *string                           `json:"targetSwapSlot,omitempty"`
	TrafficManagerHostNames     []string                          `json:"trafficManagerHostNames,omitempty"`
	Type                        *string                           `json:"type,omitempty"`
	UsageState                  *string                           `json:"usageState,omitempty"`
	VirtualNetworkSubnetId      *string                           `json:"virtualNetworkSubnetId,omitempty"`
	VnetContentShareEnabled     *bool                             `json:"vnetContentShareEnabled,omitempty"`
	VnetImagePullEnabled        *bool                             `json:"vnetImagePullEnabled,omitempty"`
	VnetRouteAllEnabled         *bool                             `json:"vnetRouteAllEnabled,omitempty"`
}

var _ genruntime.ConvertibleStatus = &Site_STATUS{}

// ConvertStatusFrom populates our Site_STATUS from the provided source
func (site *Site_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error {
	if source == site {
		return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus")
	}

	return source.ConvertStatusTo(site)
}

// ConvertStatusTo populates the provided destination from our Site_STATUS
func (site *Site_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error {
	if destination == site {
		return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus")
	}

	return destination.ConvertStatusFrom(site)
}

// Storage version of v1api20220301.CloningInfo
// Information needed for cloning operation.
type CloningInfo struct {
	AppSettingsOverrides   map[string]string      `json:"appSettingsOverrides,omitempty"`
	CloneCustomHostNames   *bool                  `json:"cloneCustomHostNames,omitempty"`
	CloneSourceControl     *bool                  `json:"cloneSourceControl,omitempty"`
	ConfigureLoadBalancing *bool                  `json:"configureLoadBalancing,omitempty"`
	CorrelationId          *string                `json:"correlationId,omitempty"`
	HostingEnvironment     *string                `json:"hostingEnvironment,omitempty"`
	Overwrite              *bool                  `json:"overwrite,omitempty"`
	PropertyBag            genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SourceWebAppLocation   *string                `json:"sourceWebAppLocation,omitempty"`

	// +kubebuilder:validation:Required
	// SourceWebAppReference: ARM resource ID of the source app. App resource ID is of the form
	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots
	// and
	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for
	// other slots.
	SourceWebAppReference     *genruntime.ResourceReference `armReference:"SourceWebAppId" json:"sourceWebAppReference,omitempty"`
	TrafficManagerProfileName *string                       `json:"trafficManagerProfileName,omitempty"`

	// TrafficManagerProfileReference: ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager
	// resource ID is of the form
	// /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}.
	TrafficManagerProfileReference *genruntime.ResourceReference `armReference:"TrafficManagerProfileId" json:"trafficManagerProfileReference,omitempty"`
}

// Storage version of v1api20220301.CloningInfo_STATUS
// Information needed for cloning operation.
type CloningInfo_STATUS struct {
	AppSettingsOverrides      map[string]string      `json:"appSettingsOverrides,omitempty"`
	CloneCustomHostNames      *bool                  `json:"cloneCustomHostNames,omitempty"`
	CloneSourceControl        *bool                  `json:"cloneSourceControl,omitempty"`
	ConfigureLoadBalancing    *bool                  `json:"configureLoadBalancing,omitempty"`
	CorrelationId             *string                `json:"correlationId,omitempty"`
	HostingEnvironment        *string                `json:"hostingEnvironment,omitempty"`
	Overwrite                 *bool                  `json:"overwrite,omitempty"`
	PropertyBag               genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SourceWebAppId            *string                `json:"sourceWebAppId,omitempty"`
	SourceWebAppLocation      *string                `json:"sourceWebAppLocation,omitempty"`
	TrafficManagerProfileId   *string                `json:"trafficManagerProfileId,omitempty"`
	TrafficManagerProfileName *string                `json:"trafficManagerProfileName,omitempty"`
}

// Storage version of v1api20220301.HostNameSslState
// SSL-enabled hostname.
type HostNameSslState struct {
	HostType    *string                `json:"hostType,omitempty"`
	Name        *string                `json:"name,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SslState    *string                `json:"sslState,omitempty"`
	Thumbprint  *string                `json:"thumbprint,omitempty"`
	ToUpdate    *bool                  `json:"toUpdate,omitempty"`
	VirtualIP   *string                `json:"virtualIP,omitempty"`
}

// Storage version of v1api20220301.HostNameSslState_STATUS
// SSL-enabled hostname.
type HostNameSslState_STATUS struct {
	HostType    *string                `json:"hostType,omitempty"`
	Name        *string                `json:"name,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SslState    *string                `json:"sslState,omitempty"`
	Thumbprint  *string                `json:"thumbprint,omitempty"`
	ToUpdate    *bool                  `json:"toUpdate,omitempty"`
	VirtualIP   *string                `json:"virtualIP,omitempty"`
}

// Storage version of v1api20220301.ManagedServiceIdentity
// Managed service identity.
type ManagedServiceIdentity struct {
	PropertyBag            genruntime.PropertyBag        `json:"$propertyBag,omitempty"`
	Type                   *string                       `json:"type,omitempty"`
	UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"`
}

// Storage version of v1api20220301.ManagedServiceIdentity_STATUS
// Managed service identity.
type ManagedServiceIdentity_STATUS struct {
	PrincipalId            *string                                `json:"principalId,omitempty"`
	PropertyBag            genruntime.PropertyBag                 `json:"$propertyBag,omitempty"`
	TenantId               *string                                `json:"tenantId,omitempty"`
	Type                   *string                                `json:"type,omitempty"`
	UserAssignedIdentities map[string]UserAssignedIdentity_STATUS `json:"userAssignedIdentities,omitempty"`
}

// Storage version of v1api20220301.SiteConfig
// Configuration of an App Service app.
type SiteConfig struct {
	AcrUseManagedIdentityCreds             *bool                            `json:"acrUseManagedIdentityCreds,omitempty"`
	AcrUserManagedIdentityID               *string                          `json:"acrUserManagedIdentityID,omitempty"`
	AlwaysOn                               *bool                            `json:"alwaysOn,omitempty"`
	ApiDefinition                          *ApiDefinitionInfo               `json:"apiDefinition,omitempty"`
	ApiManagementConfig                    *ApiManagementConfig             `json:"apiManagementConfig,omitempty"`
	AppCommandLine                         *string                          `json:"appCommandLine,omitempty"`
	AppSettings                            []NameValuePair                  `json:"appSettings,omitempty"`
	AutoHealEnabled                        *bool                            `json:"autoHealEnabled,omitempty"`
	AutoHealRules                          *AutoHealRules                   `json:"autoHealRules,omitempty"`
	AutoSwapSlotName                       *string                          `json:"autoSwapSlotName,omitempty"`
	AzureStorageAccounts                   map[string]AzureStorageInfoValue `json:"azureStorageAccounts,omitempty"`
	ConnectionStrings                      []ConnStringInfo                 `json:"connectionStrings,omitempty"`
	Cors                                   *CorsSettings                    `json:"cors,omitempty"`
	DefaultDocuments                       []string                         `json:"defaultDocuments,omitempty"`
	DetailedErrorLoggingEnabled            *bool                            `json:"detailedErrorLoggingEnabled,omitempty"`
	DocumentRoot                           *string                          `json:"documentRoot,omitempty"`
	Experiments                            *Experiments                     `json:"experiments,omitempty"`
	FtpsState                              *string                          `json:"ftpsState,omitempty"`
	FunctionAppScaleLimit                  *int                             `json:"functionAppScaleLimit,omitempty"`
	FunctionsRuntimeScaleMonitoringEnabled *bool                            `json:"functionsRuntimeScaleMonitoringEnabled,omitempty"`
	HandlerMappings                        []HandlerMapping                 `json:"handlerMappings,omitempty"`
	HealthCheckPath                        *string                          `json:"healthCheckPath,omitempty"`
	Http20Enabled                          *bool                            `json:"http20Enabled,omitempty"`
	HttpLoggingEnabled                     *bool                            `json:"httpLoggingEnabled,omitempty"`
	IpSecurityRestrictions                 []IpSecurityRestriction          `json:"ipSecurityRestrictions,omitempty"`
	JavaContainer                          *string                          `json:"javaContainer,omitempty"`
	JavaContainerVersion                   *string                          `json:"javaContainerVersion,omitempty"`
	JavaVersion                            *string                          `json:"javaVersion,omitempty"`
	KeyVaultReferenceIdentity              *string                          `json:"keyVaultReferenceIdentity,omitempty"`
	Limits                                 *SiteLimits                      `json:"limits,omitempty"`
	LinuxFxVersion                         *string                          `json:"linuxFxVersion,omitempty"`
	LoadBalancing                          *string                          `json:"loadBalancing,omitempty"`
	LocalMySqlEnabled                      *bool                            `json:"localMySqlEnabled,omitempty"`
	LogsDirectorySizeLimit                 *int                             `json:"logsDirectorySizeLimit,omitempty"`
	ManagedPipelineMode                    *string                          `json:"managedPipelineMode,omitempty"`
	ManagedServiceIdentityId               *int                             `json:"managedServiceIdentityId,omitempty"`
	MinTlsVersion                          *string                          `json:"minTlsVersion,omitempty"`
	MinimumElasticInstanceCount            *int                             `json:"minimumElasticInstanceCount,omitempty"`
	NetFrameworkVersion                    *string                          `json:"netFrameworkVersion,omitempty"`
	NodeVersion                            *string                          `json:"nodeVersion,omitempty"`
	NumberOfWorkers                        *int                             `json:"numberOfWorkers,omitempty"`
	PhpVersion                             *string                          `json:"phpVersion,omitempty"`
	PowerShellVersion                      *string                          `json:"powerShellVersion,omitempty"`
	PreWarmedInstanceCount                 *int                             `json:"preWarmedInstanceCount,omitempty"`
	PropertyBag                            genruntime.PropertyBag           `json:"$propertyBag,omitempty"`
	PublicNetworkAccess                    *string                          `json:"publicNetworkAccess,omitempty"`
	PublishingUsername                     *string                          `json:"publishingUsername,omitempty"`
	Push                                   *PushSettings                    `json:"push,omitempty"`
	PythonVersion                          *string                          `json:"pythonVersion,omitempty"`
	RemoteDebuggingEnabled                 *bool                            `json:"remoteDebuggingEnabled,omitempty"`
	RemoteDebuggingVersion                 *string                          `json:"remoteDebuggingVersion,omitempty"`
	RequestTracingEnabled                  *bool                            `json:"requestTracingEnabled,omitempty"`
	RequestTracingExpirationTime           *string                          `json:"requestTracingExpirationTime,omitempty"`
	ScmIpSecurityRestrictions              []IpSecurityRestriction          `json:"scmIpSecurityRestrictions,omitempty"`
	ScmIpSecurityRestrictionsUseMain       *bool                            `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
	ScmMinTlsVersion                       *string                          `json:"scmMinTlsVersion,omitempty"`
	ScmType                                *string                          `json:"scmType,omitempty"`
	TracingOptions                         *string                          `json:"tracingOptions,omitempty"`
	Use32BitWorkerProcess                  *bool                            `json:"use32BitWorkerProcess,omitempty"`
	VirtualApplications                    []VirtualApplication             `json:"virtualApplications,omitempty"`
	VnetName                               *string                          `json:"vnetName,omitempty"`
	VnetPrivatePortsCount                  *int                             `json:"vnetPrivatePortsCount,omitempty"`
	VnetRouteAllEnabled                    *bool                            `json:"vnetRouteAllEnabled,omitempty"`
	WebSocketsEnabled                      *bool                            `json:"webSocketsEnabled,omitempty"`
	WebsiteTimeZone                        *string                          `json:"websiteTimeZone,omitempty"`
	WindowsFxVersion                       *string                          `json:"windowsFxVersion,omitempty"`
	XManagedServiceIdentityId              *int                             `json:"xManagedServiceIdentityId,omitempty"`
}

// Storage version of v1api20220301.SiteConfig_STATUS
// Configuration of an App Service app.
type SiteConfig_STATUS struct {
	AcrUseManagedIdentityCreds             *bool                                   `json:"acrUseManagedIdentityCreds,omitempty"`
	AcrUserManagedIdentityID               *string                                 `json:"acrUserManagedIdentityID,omitempty"`
	AlwaysOn                               *bool                                   `json:"alwaysOn,omitempty"`
	ApiDefinition                          *ApiDefinitionInfo_STATUS               `json:"apiDefinition,omitempty"`
	ApiManagementConfig                    *ApiManagementConfig_STATUS             `json:"apiManagementConfig,omitempty"`
	AppCommandLine                         *string                                 `json:"appCommandLine,omitempty"`
	AppSettings                            []NameValuePair_STATUS                  `json:"appSettings,omitempty"`
	AutoHealEnabled                        *bool                                   `json:"autoHealEnabled,omitempty"`
	AutoHealRules                          *AutoHealRules_STATUS                   `json:"autoHealRules,omitempty"`
	AutoSwapSlotName                       *string                                 `json:"autoSwapSlotName,omitempty"`
	AzureStorageAccounts                   map[string]AzureStorageInfoValue_STATUS `json:"azureStorageAccounts,omitempty"`
	ConnectionStrings                      []ConnStringInfo_STATUS                 `json:"connectionStrings,omitempty"`
	Cors                                   *CorsSettings_STATUS                    `json:"cors,omitempty"`
	DefaultDocuments                       []string                                `json:"defaultDocuments,omitempty"`
	DetailedErrorLoggingEnabled            *bool                                   `json:"detailedErrorLoggingEnabled,omitempty"`
	DocumentRoot                           *string                                 `json:"documentRoot,omitempty"`
	Experiments                            *Experiments_STATUS                     `json:"experiments,omitempty"`
	FtpsState                              *string                                 `json:"ftpsState,omitempty"`
	FunctionAppScaleLimit                  *int                                    `json:"functionAppScaleLimit,omitempty"`
	FunctionsRuntimeScaleMonitoringEnabled *bool                                   `json:"functionsRuntimeScaleMonitoringEnabled,omitempty"`
	HandlerMappings                        []HandlerMapping_STATUS                 `json:"handlerMappings,omitempty"`
	HealthCheckPath                        *string                                 `json:"healthCheckPath,omitempty"`
	Http20Enabled                          *bool                                   `json:"http20Enabled,omitempty"`
	HttpLoggingEnabled                     *bool                                   `json:"httpLoggingEnabled,omitempty"`
	IpSecurityRestrictions                 []IpSecurityRestriction_STATUS          `json:"ipSecurityRestrictions,omitempty"`
	JavaContainer                          *string                                 `json:"javaContainer,omitempty"`
	JavaContainerVersion                   *string                                 `json:"javaContainerVersion,omitempty"`
	JavaVersion                            *string                                 `json:"javaVersion,omitempty"`
	KeyVaultReferenceIdentity              *string                                 `json:"keyVaultReferenceIdentity,omitempty"`
	Limits                                 *SiteLimits_STATUS                      `json:"limits,omitempty"`
	LinuxFxVersion                         *string                                 `json:"linuxFxVersion,omitempty"`
	LoadBalancing                          *string                                 `json:"loadBalancing,omitempty"`
	LocalMySqlEnabled                      *bool                                   `json:"localMySqlEnabled,omitempty"`
	LogsDirectorySizeLimit                 *int                                    `json:"logsDirectorySizeLimit,omitempty"`
	MachineKey                             *SiteMachineKey_STATUS                  `json:"machineKey,omitempty"`
	ManagedPipelineMode                    *string                                 `json:"managedPipelineMode,omitempty"`
	ManagedServiceIdentityId               *int                                    `json:"managedServiceIdentityId,omitempty"`
	MinTlsVersion                          *string                                 `json:"minTlsVersion,omitempty"`
	MinimumElasticInstanceCount            *int                                    `json:"minimumElasticInstanceCount,omitempty"`
	NetFrameworkVersion                    *string                                 `json:"netFrameworkVersion,omitempty"`
	NodeVersion                            *string                                 `json:"nodeVersion,omitempty"`
	NumberOfWorkers                        *int                                    `json:"numberOfWorkers,omitempty"`
	PhpVersion                             *string                                 `json:"phpVersion,omitempty"`
	PowerShellVersion                      *string                                 `json:"powerShellVersion,omitempty"`
	PreWarmedInstanceCount                 *int                                    `json:"preWarmedInstanceCount,omitempty"`
	PropertyBag                            genruntime.PropertyBag                  `json:"$propertyBag,omitempty"`
	PublicNetworkAccess                    *string                                 `json:"publicNetworkAccess,omitempty"`
	PublishingUsername                     *string                                 `json:"publishingUsername,omitempty"`
	Push                                   *PushSettings_STATUS                    `json:"push,omitempty"`
	PythonVersion                          *string                                 `json:"pythonVersion,omitempty"`
	RemoteDebuggingEnabled                 *bool                                   `json:"remoteDebuggingEnabled,omitempty"`
	RemoteDebuggingVersion                 *string                                 `json:"remoteDebuggingVersion,omitempty"`
	RequestTracingEnabled                  *bool                                   `json:"requestTracingEnabled,omitempty"`
	RequestTracingExpirationTime           *string                                 `json:"requestTracingExpirationTime,omitempty"`
	ScmIpSecurityRestrictions              []IpSecurityRestriction_STATUS          `json:"scmIpSecurityRestrictions,omitempty"`
	ScmIpSecurityRestrictionsUseMain       *bool                                   `json:"scmIpSecurityRestrictionsUseMain,omitempty"`
	ScmMinTlsVersion                       *string                                 `json:"scmMinTlsVersion,omitempty"`
	ScmType                                *string                                 `json:"scmType,omitempty"`
	TracingOptions                         *string                                 `json:"tracingOptions,omitempty"`
	Use32BitWorkerProcess                  *bool                                   `json:"use32BitWorkerProcess,omitempty"`
	VirtualApplications                    []VirtualApplication_STATUS             `json:"virtualApplications,omitempty"`
	VnetName                               *string                                 `json:"vnetName,omitempty"`
	VnetPrivatePortsCount                  *int                                    `json:"vnetPrivatePortsCount,omitempty"`
	VnetRouteAllEnabled                    *bool                                   `json:"vnetRouteAllEnabled,omitempty"`
	WebSocketsEnabled                      *bool                                   `json:"webSocketsEnabled,omitempty"`
	WebsiteTimeZone                        *string                                 `json:"websiteTimeZone,omitempty"`
	WindowsFxVersion                       *string                                 `json:"windowsFxVersion,omitempty"`
	XManagedServiceIdentityId              *int                                    `json:"xManagedServiceIdentityId,omitempty"`
}

// Storage version of v1api20220301.SiteOperatorSpec
// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure
type SiteOperatorSpec struct {
	ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"`
	PropertyBag          genruntime.PropertyBag        `json:"$propertyBag,omitempty"`
	SecretExpressions    []*core.DestinationExpression `json:"secretExpressions,omitempty"`
}

// Storage version of v1api20220301.SlotSwapStatus_STATUS
// The status of the last successful slot swap operation.
type SlotSwapStatus_STATUS struct {
	DestinationSlotName *string                `json:"destinationSlotName,omitempty"`
	PropertyBag         genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SourceSlotName      *string                `json:"sourceSlotName,omitempty"`
	TimestampUtc        *string                `json:"timestampUtc,omitempty"`
}

// Storage version of v1api20220301.ApiDefinitionInfo
// Information about the formal API definition for the app.
type ApiDefinitionInfo struct {
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Url         *string                `json:"url,omitempty"`
}

// Storage version of v1api20220301.ApiDefinitionInfo_STATUS
// Information about the formal API definition for the app.
type ApiDefinitionInfo_STATUS struct {
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Url         *string                `json:"url,omitempty"`
}

// Storage version of v1api20220301.ApiManagementConfig
// Azure API management (APIM) configuration linked to the app.
type ApiManagementConfig struct {
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`

	// Reference: APIM-Api Identifier.
	Reference *genruntime.ResourceReference `armReference:"Id" json:"reference,omitempty"`
}

// Storage version of v1api20220301.ApiManagementConfig_STATUS
// Azure API management (APIM) configuration linked to the app.
type ApiManagementConfig_STATUS struct {
	Id          *string                `json:"id,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.AutoHealRules
// Rules that can be defined for auto-heal.
type AutoHealRules struct {
	Actions     *AutoHealActions       `json:"actions,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Triggers    *AutoHealTriggers      `json:"triggers,omitempty"`
}

// Storage version of v1api20220301.AutoHealRules_STATUS
// Rules that can be defined for auto-heal.
type AutoHealRules_STATUS struct {
	Actions     *AutoHealActions_STATUS  `json:"actions,omitempty"`
	PropertyBag genruntime.PropertyBag   `json:"$propertyBag,omitempty"`
	Triggers    *AutoHealTriggers_STATUS `json:"triggers,omitempty"`
}

// Storage version of v1api20220301.AzureStorageInfoValue
// Azure Files or Blob Storage access information value for dictionary storage.
type AzureStorageInfoValue struct {
	AccessKey   *genruntime.SecretReference `json:"accessKey,omitempty"`
	AccountName *string                     `json:"accountName,omitempty"`
	MountPath   *string                     `json:"mountPath,omitempty"`
	PropertyBag genruntime.PropertyBag      `json:"$propertyBag,omitempty"`
	ShareName   *string                     `json:"shareName,omitempty"`
	Type        *string                     `json:"type,omitempty"`
}

// Storage version of v1api20220301.AzureStorageInfoValue_STATUS
// Azure Files or Blob Storage access information value for dictionary storage.
type AzureStorageInfoValue_STATUS struct {
	AccountName *string                `json:"accountName,omitempty"`
	MountPath   *string                `json:"mountPath,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	ShareName   *string                `json:"shareName,omitempty"`
	State       *string                `json:"state,omitempty"`
	Type        *string                `json:"type,omitempty"`
}

// Storage version of v1api20220301.ConnStringInfo
// Database connection string information.
type ConnStringInfo struct {
	ConnectionString *string                `json:"connectionString,omitempty"`
	Name             *string                `json:"name,omitempty"`
	PropertyBag      genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Type             *string                `json:"type,omitempty"`
}

// Storage version of v1api20220301.ConnStringInfo_STATUS
// Database connection string information.
type ConnStringInfo_STATUS struct {
	ConnectionString *string                `json:"connectionString,omitempty"`
	Name             *string                `json:"name,omitempty"`
	PropertyBag      genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Type             *string                `json:"type,omitempty"`
}

// Storage version of v1api20220301.CorsSettings
// Cross-Origin Resource Sharing (CORS) settings for the app.
type CorsSettings struct {
	AllowedOrigins     []string               `json:"allowedOrigins,omitempty"`
	PropertyBag        genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SupportCredentials *bool                  `json:"supportCredentials,omitempty"`
}

// Storage version of v1api20220301.CorsSettings_STATUS
// Cross-Origin Resource Sharing (CORS) settings for the app.
type CorsSettings_STATUS struct {
	AllowedOrigins     []string               `json:"allowedOrigins,omitempty"`
	PropertyBag        genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SupportCredentials *bool                  `json:"supportCredentials,omitempty"`
}

// Storage version of v1api20220301.Experiments
// Routing rules in production experiments.
type Experiments struct {
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	RampUpRules []RampUpRule           `json:"rampUpRules,omitempty"`
}

// Storage version of v1api20220301.Experiments_STATUS
// Routing rules in production experiments.
type Experiments_STATUS struct {
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	RampUpRules []RampUpRule_STATUS    `json:"rampUpRules,omitempty"`
}

// Storage version of v1api20220301.HandlerMapping
// The IIS handler mappings used to define which handler processes HTTP requests with certain extension.
// For example, it
// is used to configure php-cgi.exe process to handle all HTTP requests with *.php extension.
type HandlerMapping struct {
	Arguments       *string                `json:"arguments,omitempty"`
	Extension       *string                `json:"extension,omitempty"`
	PropertyBag     genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	ScriptProcessor *string                `json:"scriptProcessor,omitempty"`
}

// Storage version of v1api20220301.HandlerMapping_STATUS
// The IIS handler mappings used to define which handler processes HTTP requests with certain extension.
// For example, it
// is used to configure php-cgi.exe process to handle all HTTP requests with *.php extension.
type HandlerMapping_STATUS struct {
	Arguments       *string                `json:"arguments,omitempty"`
	Extension       *string                `json:"extension,omitempty"`
	PropertyBag     genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	ScriptProcessor *string                `json:"scriptProcessor,omitempty"`
}

// Storage version of v1api20220301.IpSecurityRestriction
// IP security restriction on an app.
type IpSecurityRestriction struct {
	Action           *string                `json:"action,omitempty"`
	Description      *string                `json:"description,omitempty"`
	Headers          map[string][]string    `json:"headers,omitempty"`
	IpAddress        *string                `json:"ipAddress,omitempty"`
	Name             *string                `json:"name,omitempty"`
	Priority         *int                   `json:"priority,omitempty"`
	PropertyBag      genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SubnetMask       *string                `json:"subnetMask,omitempty"`
	SubnetTrafficTag *int                   `json:"subnetTrafficTag,omitempty"`
	Tag              *string                `json:"tag,omitempty"`

	// VnetSubnetResourceReference: Virtual network resource id
	VnetSubnetResourceReference *genruntime.ResourceReference `armReference:"VnetSubnetResourceId" json:"vnetSubnetResourceReference,omitempty"`
	VnetTrafficTag              *int                          `json:"vnetTrafficTag,omitempty"`
}

// Storage version of v1api20220301.IpSecurityRestriction_STATUS
// IP security restriction on an app.
type IpSecurityRestriction_STATUS struct {
	Action               *string                `json:"action,omitempty"`
	Description          *string                `json:"description,omitempty"`
	Headers              map[string][]string    `json:"headers,omitempty"`
	IpAddress            *string                `json:"ipAddress,omitempty"`
	Name                 *string                `json:"name,omitempty"`
	Priority             *int                   `json:"priority,omitempty"`
	PropertyBag          genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	SubnetMask           *string                `json:"subnetMask,omitempty"`
	SubnetTrafficTag     *int                   `json:"subnetTrafficTag,omitempty"`
	Tag                  *string                `json:"tag,omitempty"`
	VnetSubnetResourceId *string                `json:"vnetSubnetResourceId,omitempty"`
	VnetTrafficTag       *int                   `json:"vnetTrafficTag,omitempty"`
}

// Storage version of v1api20220301.NameValuePair
// Name value pair.
type NameValuePair struct {
	Name        *string                `json:"name,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Value       *string                `json:"value,omitempty"`
}

// Storage version of v1api20220301.NameValuePair_STATUS
// Name value pair.
type NameValuePair_STATUS struct {
	Name        *string                `json:"name,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Value       *string                `json:"value,omitempty"`
}

// Storage version of v1api20220301.PushSettings
// Push settings for the App.
type PushSettings struct {
	DynamicTagsJson   *string                `json:"dynamicTagsJson,omitempty"`
	IsPushEnabled     *bool                  `json:"isPushEnabled,omitempty"`
	Kind              *string                `json:"kind,omitempty"`
	PropertyBag       genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	TagWhitelistJson  *string                `json:"tagWhitelistJson,omitempty"`
	TagsRequiringAuth *string                `json:"tagsRequiringAuth,omitempty"`
}

// Storage version of v1api20220301.PushSettings_STATUS
// Push settings for the App.
type PushSettings_STATUS struct {
	DynamicTagsJson   *string                `json:"dynamicTagsJson,omitempty"`
	Id                *string                `json:"id,omitempty"`
	IsPushEnabled     *bool                  `json:"isPushEnabled,omitempty"`
	Kind              *string                `json:"kind,omitempty"`
	Name              *string                `json:"name,omitempty"`
	PropertyBag       genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	TagWhitelistJson  *string                `json:"tagWhitelistJson,omitempty"`
	TagsRequiringAuth *string                `json:"tagsRequiringAuth,omitempty"`
	Type              *string                `json:"type,omitempty"`
}

// Storage version of v1api20220301.SiteLimits
// Metric limits set on an app.
type SiteLimits struct {
	MaxDiskSizeInMb  *int                   `json:"maxDiskSizeInMb,omitempty"`
	MaxMemoryInMb    *int                   `json:"maxMemoryInMb,omitempty"`
	MaxPercentageCpu *float64               `json:"maxPercentageCpu,omitempty"`
	PropertyBag      genruntime.PropertyBag `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.SiteLimits_STATUS
// Metric limits set on an app.
type SiteLimits_STATUS struct {
	MaxDiskSizeInMb  *int                   `json:"maxDiskSizeInMb,omitempty"`
	MaxMemoryInMb    *int                   `json:"maxMemoryInMb,omitempty"`
	MaxPercentageCpu *float64               `json:"maxPercentageCpu,omitempty"`
	PropertyBag      genruntime.PropertyBag `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.SiteMachineKey_STATUS
// MachineKey of an app.
type SiteMachineKey_STATUS struct {
	Decryption    *string                `json:"decryption,omitempty"`
	DecryptionKey *string                `json:"decryptionKey,omitempty"`
	PropertyBag   genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Validation    *string                `json:"validation,omitempty"`
	ValidationKey *string                `json:"validationKey,omitempty"`
}

// Storage version of v1api20220301.UserAssignedIdentity_STATUS
// User Assigned identity.
type UserAssignedIdentity_STATUS struct {
	ClientId    *string                `json:"clientId,omitempty"`
	PrincipalId *string                `json:"principalId,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.UserAssignedIdentityDetails
// Information about the user assigned identity for the resource
type UserAssignedIdentityDetails struct {
	PropertyBag genruntime.PropertyBag       `json:"$propertyBag,omitempty"`
	Reference   genruntime.ResourceReference `armReference:"Reference" json:"reference,omitempty"`
}

// Storage version of v1api20220301.VirtualApplication
// Virtual application in an app.
type VirtualApplication struct {
	PhysicalPath       *string                `json:"physicalPath,omitempty"`
	PreloadEnabled     *bool                  `json:"preloadEnabled,omitempty"`
	PropertyBag        genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	VirtualDirectories []VirtualDirectory     `json:"virtualDirectories,omitempty"`
	VirtualPath        *string                `json:"virtualPath,omitempty"`
}

// Storage version of v1api20220301.VirtualApplication_STATUS
// Virtual application in an app.
type VirtualApplication_STATUS struct {
	PhysicalPath       *string                   `json:"physicalPath,omitempty"`
	PreloadEnabled     *bool                     `json:"preloadEnabled,omitempty"`
	PropertyBag        genruntime.PropertyBag    `json:"$propertyBag,omitempty"`
	VirtualDirectories []VirtualDirectory_STATUS `json:"virtualDirectories,omitempty"`
	VirtualPath        *string                   `json:"virtualPath,omitempty"`
}

// Storage version of v1api20220301.AutoHealActions
// Actions which to take by the auto-heal module when a rule is triggered.
type AutoHealActions struct {
	ActionType              *string                `json:"actionType,omitempty"`
	CustomAction            *AutoHealCustomAction  `json:"customAction,omitempty"`
	MinProcessExecutionTime *string                `json:"minProcessExecutionTime,omitempty"`
	PropertyBag             genruntime.PropertyBag `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.AutoHealActions_STATUS
// Actions which to take by the auto-heal module when a rule is triggered.
type AutoHealActions_STATUS struct {
	ActionType              *string                      `json:"actionType,omitempty"`
	CustomAction            *AutoHealCustomAction_STATUS `json:"customAction,omitempty"`
	MinProcessExecutionTime *string                      `json:"minProcessExecutionTime,omitempty"`
	PropertyBag             genruntime.PropertyBag       `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.AutoHealTriggers
// Triggers for auto-heal.
type AutoHealTriggers struct {
	PrivateBytesInKB     *int                           `json:"privateBytesInKB,omitempty"`
	PropertyBag          genruntime.PropertyBag         `json:"$propertyBag,omitempty"`
	Requests             *RequestsBasedTrigger          `json:"requests,omitempty"`
	SlowRequests         *SlowRequestsBasedTrigger      `json:"slowRequests,omitempty"`
	SlowRequestsWithPath []SlowRequestsBasedTrigger     `json:"slowRequestsWithPath,omitempty"`
	StatusCodes          []StatusCodesBasedTrigger      `json:"statusCodes,omitempty"`
	StatusCodesRange     []StatusCodesRangeBasedTrigger `json:"statusCodesRange,omitempty"`
}

// Storage version of v1api20220301.AutoHealTriggers_STATUS
// Triggers for auto-heal.
type AutoHealTriggers_STATUS struct {
	PrivateBytesInKB     *int                                  `json:"privateBytesInKB,omitempty"`
	PropertyBag          genruntime.PropertyBag                `json:"$propertyBag,omitempty"`
	Requests             *RequestsBasedTrigger_STATUS          `json:"requests,omitempty"`
	SlowRequests         *SlowRequestsBasedTrigger_STATUS      `json:"slowRequests,omitempty"`
	SlowRequestsWithPath []SlowRequestsBasedTrigger_STATUS     `json:"slowRequestsWithPath,omitempty"`
	StatusCodes          []StatusCodesBasedTrigger_STATUS      `json:"statusCodes,omitempty"`
	StatusCodesRange     []StatusCodesRangeBasedTrigger_STATUS `json:"statusCodesRange,omitempty"`
}

// Storage version of v1api20220301.RampUpRule
// Routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or to gradually change
// routing % based on performance.
type RampUpRule struct {
	ActionHostName            *string                `json:"actionHostName,omitempty"`
	ChangeDecisionCallbackUrl *string                `json:"changeDecisionCallbackUrl,omitempty"`
	ChangeIntervalInMinutes   *int                   `json:"changeIntervalInMinutes,omitempty"`
	ChangeStep                *float64               `json:"changeStep,omitempty"`
	MaxReroutePercentage      *float64               `json:"maxReroutePercentage,omitempty"`
	MinReroutePercentage      *float64               `json:"minReroutePercentage,omitempty"`
	Name                      *string                `json:"name,omitempty"`
	PropertyBag               genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	ReroutePercentage         *float64               `json:"reroutePercentage,omitempty"`
}

// Storage version of v1api20220301.RampUpRule_STATUS
// Routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or to gradually change
// routing % based on performance.
type RampUpRule_STATUS struct {
	ActionHostName            *string                `json:"actionHostName,omitempty"`
	ChangeDecisionCallbackUrl *string                `json:"changeDecisionCallbackUrl,omitempty"`
	ChangeIntervalInMinutes   *int                   `json:"changeIntervalInMinutes,omitempty"`
	ChangeStep                *float64               `json:"changeStep,omitempty"`
	MaxReroutePercentage      *float64               `json:"maxReroutePercentage,omitempty"`
	MinReroutePercentage      *float64               `json:"minReroutePercentage,omitempty"`
	Name                      *string                `json:"name,omitempty"`
	PropertyBag               genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	ReroutePercentage         *float64               `json:"reroutePercentage,omitempty"`
}

// Storage version of v1api20220301.VirtualDirectory
// Directory for virtual application.
type VirtualDirectory struct {
	PhysicalPath *string                `json:"physicalPath,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	VirtualPath  *string                `json:"virtualPath,omitempty"`
}

// Storage version of v1api20220301.VirtualDirectory_STATUS
// Directory for virtual application.
type VirtualDirectory_STATUS struct {
	PhysicalPath *string                `json:"physicalPath,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	VirtualPath  *string                `json:"virtualPath,omitempty"`
}

// Storage version of v1api20220301.AutoHealCustomAction
// Custom action to be executed
// when an auto heal rule is triggered.
type AutoHealCustomAction struct {
	Exe         *string                `json:"exe,omitempty"`
	Parameters  *string                `json:"parameters,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.AutoHealCustomAction_STATUS
// Custom action to be executed
// when an auto heal rule is triggered.
type AutoHealCustomAction_STATUS struct {
	Exe         *string                `json:"exe,omitempty"`
	Parameters  *string                `json:"parameters,omitempty"`
	PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"`
}

// Storage version of v1api20220301.RequestsBasedTrigger
// Trigger based on total requests.
type RequestsBasedTrigger struct {
	Count        *int                   `json:"count,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
}

// Storage version of v1api20220301.RequestsBasedTrigger_STATUS
// Trigger based on total requests.
type RequestsBasedTrigger_STATUS struct {
	Count        *int                   `json:"count,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
}

// Storage version of v1api20220301.SlowRequestsBasedTrigger
// Trigger based on request execution time.
type SlowRequestsBasedTrigger struct {
	Count        *int                   `json:"count,omitempty"`
	Path         *string                `json:"path,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
	TimeTaken    *string                `json:"timeTaken,omitempty"`
}

// Storage version of v1api20220301.SlowRequestsBasedTrigger_STATUS
// Trigger based on request execution time.
type SlowRequestsBasedTrigger_STATUS struct {
	Count        *int                   `json:"count,omitempty"`
	Path         *string                `json:"path,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
	TimeTaken    *string                `json:"timeTaken,omitempty"`
}

// Storage version of v1api20220301.StatusCodesBasedTrigger
// Trigger based on status code.
type StatusCodesBasedTrigger struct {
	Count        *int                   `json:"count,omitempty"`
	Path         *string                `json:"path,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Status       *int                   `json:"status,omitempty"`
	SubStatus    *int                   `json:"subStatus,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
	Win32Status  *int                   `json:"win32Status,omitempty"`
}

// Storage version of v1api20220301.StatusCodesBasedTrigger_STATUS
// Trigger based on status code.
type StatusCodesBasedTrigger_STATUS struct {
	Count        *int                   `json:"count,omitempty"`
	Path         *string                `json:"path,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	Status       *int                   `json:"status,omitempty"`
	SubStatus    *int                   `json:"subStatus,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
	Win32Status  *int                   `json:"win32Status,omitempty"`
}

// Storage version of v1api20220301.StatusCodesRangeBasedTrigger
// Trigger based on range of status codes.
type StatusCodesRangeBasedTrigger struct {
	Count        *int                   `json:"count,omitempty"`
	Path         *string                `json:"path,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	StatusCodes  *string                `json:"statusCodes,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
}

// Storage version of v1api20220301.StatusCodesRangeBasedTrigger_STATUS
// Trigger based on range of status codes.
type StatusCodesRangeBasedTrigger_STATUS struct {
	Count        *int                   `json:"count,omitempty"`
	Path         *string                `json:"path,omitempty"`
	PropertyBag  genruntime.PropertyBag `json:"$propertyBag,omitempty"`
	StatusCodes  *string                `json:"statusCodes,omitempty"`
	TimeInterval *string                `json:"timeInterval,omitempty"`
}

func init() {
	SchemeBuilder.Register(&Site{}, &SiteList{})
}
