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

// Container App.
type ContainerApp_STATUS struct {
	// ExtendedLocation: The complex type of the extended location.
	ExtendedLocation *ExtendedLocation_STATUS `json:"extendedLocation,omitempty"`

	// Id: Fully qualified resource ID for the resource. E.g.
	// "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}"
	Id *string `json:"id,omitempty"`

	// Identity: managed identities for the Container App to interact with other Azure services without maintaining any secrets
	// or credentials in code.
	Identity *ManagedServiceIdentity_STATUS `json:"identity,omitempty"`

	// Location: The geo-location where the resource lives
	Location *string `json:"location,omitempty"`

	// ManagedBy: The fully qualified resource ID of the resource that manages this resource. Indicates if this resource is
	// managed by another Azure resource. If this is present, complete mode deployment will not delete the resource if it is
	// removed from the template since it is managed by another resource.
	ManagedBy *string `json:"managedBy,omitempty"`

	// Name: The name of the resource
	Name *string `json:"name,omitempty"`

	// Properties: ContainerApp resource specific properties
	Properties *ContainerApp_Properties_STATUS `json:"properties,omitempty"`

	// SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

	// Tags: Resource tags.
	Tags map[string]string `json:"tags,omitempty"`

	// Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string `json:"type,omitempty"`
}

type ContainerApp_Properties_STATUS struct {
	// Configuration: Non versioned Container App configuration properties.
	Configuration *Configuration_STATUS `json:"configuration,omitempty"`

	// CustomDomainVerificationId: Id used to verify domain name ownership
	CustomDomainVerificationId *string `json:"customDomainVerificationId,omitempty"`

	// EnvironmentId: Resource ID of environment.
	EnvironmentId *string `json:"environmentId,omitempty"`

	// EventStreamEndpoint: The endpoint of the eventstream of the container app.
	EventStreamEndpoint *string `json:"eventStreamEndpoint,omitempty"`

	// LatestReadyRevisionName: Name of the latest ready revision of the Container App.
	LatestReadyRevisionName *string `json:"latestReadyRevisionName,omitempty"`

	// LatestRevisionFqdn: Fully Qualified Domain Name of the latest revision of the Container App.
	LatestRevisionFqdn *string `json:"latestRevisionFqdn,omitempty"`

	// LatestRevisionName: Name of the latest revision of the Container App.
	LatestRevisionName *string `json:"latestRevisionName,omitempty"`

	// ManagedEnvironmentId: Deprecated. Resource ID of the Container App's environment.
	ManagedEnvironmentId *string `json:"managedEnvironmentId,omitempty"`

	// OutboundIpAddresses: Outbound IP Addresses for container app.
	OutboundIpAddresses []string `json:"outboundIpAddresses,omitempty"`

	// ProvisioningState: Provisioning state of the Container App.
	ProvisioningState *ContainerApp_Properties_ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// RunningStatus: Running status of the Container App.
	RunningStatus *ContainerApp_Properties_RunningStatus_STATUS `json:"runningStatus,omitempty"`

	// Template: Container App versioned application definition.
	Template *Template_STATUS `json:"template,omitempty"`

	// WorkloadProfileName: Workload profile name to pin for container app execution.
	WorkloadProfileName *string `json:"workloadProfileName,omitempty"`
}

// The complex type of the extended location.
type ExtendedLocation_STATUS struct {
	// Name: The name of the extended location.
	Name *string `json:"name,omitempty"`

	// Type: The type of the extended location.
	Type *ExtendedLocationType_STATUS `json:"type,omitempty"`
}

// Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity_STATUS struct {
	// PrincipalId: The service principal ID of the system assigned identity. This property will only be provided for a system
	// assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: The tenant ID of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	TenantId *string `json:"tenantId,omitempty"`

	// Type: Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
	Type                   *ManagedServiceIdentityType_STATUS     `json:"type,omitempty"`
	UserAssignedIdentities map[string]UserAssignedIdentity_STATUS `json:"userAssignedIdentities,omitempty"`
}

// Non versioned Container App configuration properties that define the mutable settings of a Container app
type Configuration_STATUS struct {
	// ActiveRevisionsMode: ActiveRevisionsMode controls how active revisions are handled for the Container app:
	// <list><item>Multiple: multiple revisions can be active.</item><item>Single: Only one revision can be active at a time.
	// Revision weights can not be used in this mode. If no value if provided, this is the default.</item></list>
	ActiveRevisionsMode *Configuration_ActiveRevisionsMode_STATUS `json:"activeRevisionsMode,omitempty"`

	// Dapr: Dapr configuration for the Container App.
	Dapr *Dapr_STATUS `json:"dapr,omitempty"`

	// IdentitySettings: Optional settings for Managed Identities that are assigned to the Container App. If a Managed Identity
	// is not specified here, default settings will be used.
	IdentitySettings []IdentitySettings_STATUS `json:"identitySettings,omitempty"`

	// Ingress: Ingress configurations.
	Ingress *Ingress_STATUS `json:"ingress,omitempty"`

	// MaxInactiveRevisions: Optional. Max inactive revisions a Container App can have.
	MaxInactiveRevisions *int `json:"maxInactiveRevisions,omitempty"`

	// Registries: Collection of private container registry credentials for containers used by the Container app
	Registries []RegistryCredentials_STATUS `json:"registries,omitempty"`

	// Runtime: App runtime configuration for the Container App.
	Runtime *Runtime_STATUS `json:"runtime,omitempty"`

	// Secrets: Collection of secrets used by a Container app
	Secrets []Secret_STATUS `json:"secrets,omitempty"`

	// Service: Container App to be a dev Container App Service
	Service *Service_STATUS `json:"service,omitempty"`
}

type ContainerApp_Properties_ProvisioningState_STATUS string

const (
	ContainerApp_Properties_ProvisioningState_STATUS_Canceled   = ContainerApp_Properties_ProvisioningState_STATUS("Canceled")
	ContainerApp_Properties_ProvisioningState_STATUS_Deleting   = ContainerApp_Properties_ProvisioningState_STATUS("Deleting")
	ContainerApp_Properties_ProvisioningState_STATUS_Failed     = ContainerApp_Properties_ProvisioningState_STATUS("Failed")
	ContainerApp_Properties_ProvisioningState_STATUS_InProgress = ContainerApp_Properties_ProvisioningState_STATUS("InProgress")
	ContainerApp_Properties_ProvisioningState_STATUS_Succeeded  = ContainerApp_Properties_ProvisioningState_STATUS("Succeeded")
)

// Mapping from string to ContainerApp_Properties_ProvisioningState_STATUS
var containerApp_Properties_ProvisioningState_STATUS_Values = map[string]ContainerApp_Properties_ProvisioningState_STATUS{
	"canceled":   ContainerApp_Properties_ProvisioningState_STATUS_Canceled,
	"deleting":   ContainerApp_Properties_ProvisioningState_STATUS_Deleting,
	"failed":     ContainerApp_Properties_ProvisioningState_STATUS_Failed,
	"inprogress": ContainerApp_Properties_ProvisioningState_STATUS_InProgress,
	"succeeded":  ContainerApp_Properties_ProvisioningState_STATUS_Succeeded,
}

type ContainerApp_Properties_RunningStatus_STATUS string

const (
	ContainerApp_Properties_RunningStatus_STATUS_Progressing = ContainerApp_Properties_RunningStatus_STATUS("Progressing")
	ContainerApp_Properties_RunningStatus_STATUS_Ready       = ContainerApp_Properties_RunningStatus_STATUS("Ready")
	ContainerApp_Properties_RunningStatus_STATUS_Running     = ContainerApp_Properties_RunningStatus_STATUS("Running")
	ContainerApp_Properties_RunningStatus_STATUS_Stopped     = ContainerApp_Properties_RunningStatus_STATUS("Stopped")
	ContainerApp_Properties_RunningStatus_STATUS_Suspended   = ContainerApp_Properties_RunningStatus_STATUS("Suspended")
)

// Mapping from string to ContainerApp_Properties_RunningStatus_STATUS
var containerApp_Properties_RunningStatus_STATUS_Values = map[string]ContainerApp_Properties_RunningStatus_STATUS{
	"progressing": ContainerApp_Properties_RunningStatus_STATUS_Progressing,
	"ready":       ContainerApp_Properties_RunningStatus_STATUS_Ready,
	"running":     ContainerApp_Properties_RunningStatus_STATUS_Running,
	"stopped":     ContainerApp_Properties_RunningStatus_STATUS_Stopped,
	"suspended":   ContainerApp_Properties_RunningStatus_STATUS_Suspended,
}

// The type of extendedLocation.
type ExtendedLocationType_STATUS string

const ExtendedLocationType_STATUS_CustomLocation = ExtendedLocationType_STATUS("CustomLocation")

// Mapping from string to ExtendedLocationType_STATUS
var extendedLocationType_STATUS_Values = map[string]ExtendedLocationType_STATUS{
	"customlocation": ExtendedLocationType_STATUS_CustomLocation,
}

// Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
type ManagedServiceIdentityType_STATUS string

const (
	ManagedServiceIdentityType_STATUS_None                       = ManagedServiceIdentityType_STATUS("None")
	ManagedServiceIdentityType_STATUS_SystemAssigned             = ManagedServiceIdentityType_STATUS("SystemAssigned")
	ManagedServiceIdentityType_STATUS_SystemAssignedUserAssigned = ManagedServiceIdentityType_STATUS("SystemAssigned,UserAssigned")
	ManagedServiceIdentityType_STATUS_UserAssigned               = ManagedServiceIdentityType_STATUS("UserAssigned")
)

// Mapping from string to ManagedServiceIdentityType_STATUS
var managedServiceIdentityType_STATUS_Values = map[string]ManagedServiceIdentityType_STATUS{
	"none":                        ManagedServiceIdentityType_STATUS_None,
	"systemassigned":              ManagedServiceIdentityType_STATUS_SystemAssigned,
	"systemassigned,userassigned": ManagedServiceIdentityType_STATUS_SystemAssignedUserAssigned,
	"userassigned":                ManagedServiceIdentityType_STATUS_UserAssigned,
}

// Container App versioned application definition.
// Defines the desired state of an immutable revision.
// Any changes to this
// section Will result in a new revision being created
type Template_STATUS struct {
	// Containers: List of container definitions for the Container App.
	Containers []Container_STATUS `json:"containers,omitempty"`

	// InitContainers: List of specialized containers that run before app containers.
	InitContainers []BaseContainer_STATUS `json:"initContainers,omitempty"`

	// RevisionSuffix: User friendly suffix that is appended to the revision name
	RevisionSuffix *string `json:"revisionSuffix,omitempty"`

	// Scale: Scaling properties for the Container App.
	Scale *Scale_STATUS `json:"scale,omitempty"`

	// ServiceBinds: List of container app services bound to the app
	ServiceBinds []ServiceBind_STATUS `json:"serviceBinds,omitempty"`

	// TerminationGracePeriodSeconds: Optional duration in seconds the Container App Instance needs to terminate gracefully.
	// Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to
	// shut down). If this value is nil, the default grace period will be used instead. Set this value longer than the expected
	// cleanup time for your process. Defaults to 30 seconds.
	TerminationGracePeriodSeconds *int `json:"terminationGracePeriodSeconds,omitempty"`

	// Volumes: List of volume definitions for the Container App.
	Volumes []Volume_STATUS `json:"volumes,omitempty"`
}

// User assigned identity properties
type UserAssignedIdentity_STATUS struct {
	// ClientId: The client ID of the assigned identity.
	ClientId *string `json:"clientId,omitempty"`

	// PrincipalId: The principal ID of the assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`
}

// Container App base container definition.
type BaseContainer_STATUS struct {
	// Args: Container start command arguments.
	Args []string `json:"args,omitempty"`

	// Command: Container start command.
	Command []string `json:"command,omitempty"`

	// Env: Container environment variables.
	Env []EnvironmentVar_STATUS `json:"env,omitempty"`

	// Image: Container image tag.
	Image *string `json:"image,omitempty"`

	// Name: Custom container name.
	Name *string `json:"name,omitempty"`

	// Resources: Container resource requirements.
	Resources *ContainerResources_STATUS `json:"resources,omitempty"`

	// VolumeMounts: Container volume mounts.
	VolumeMounts []VolumeMount_STATUS `json:"volumeMounts,omitempty"`
}

type Configuration_ActiveRevisionsMode_STATUS string

const (
	Configuration_ActiveRevisionsMode_STATUS_Multiple = Configuration_ActiveRevisionsMode_STATUS("Multiple")
	Configuration_ActiveRevisionsMode_STATUS_Single   = Configuration_ActiveRevisionsMode_STATUS("Single")
)

// Mapping from string to Configuration_ActiveRevisionsMode_STATUS
var configuration_ActiveRevisionsMode_STATUS_Values = map[string]Configuration_ActiveRevisionsMode_STATUS{
	"multiple": Configuration_ActiveRevisionsMode_STATUS_Multiple,
	"single":   Configuration_ActiveRevisionsMode_STATUS_Single,
}

// Container App container definition
type Container_STATUS struct {
	// Args: Container start command arguments.
	Args []string `json:"args,omitempty"`

	// Command: Container start command.
	Command []string `json:"command,omitempty"`

	// Env: Container environment variables.
	Env []EnvironmentVar_STATUS `json:"env,omitempty"`

	// Image: Container image tag.
	Image *string `json:"image,omitempty"`

	// Name: Custom container name.
	Name *string `json:"name,omitempty"`

	// Probes: List of probes for the container.
	Probes []ContainerAppProbe_STATUS `json:"probes,omitempty"`

	// Resources: Container resource requirements.
	Resources *ContainerResources_STATUS `json:"resources,omitempty"`

	// VolumeMounts: Container volume mounts.
	VolumeMounts []VolumeMount_STATUS `json:"volumeMounts,omitempty"`
}

// Container App Dapr configuration.
type Dapr_STATUS struct {
	// AppId: Dapr application identifier
	AppId *string `json:"appId,omitempty"`

	// AppPort: Tells Dapr which port your application is listening on
	AppPort *int `json:"appPort,omitempty"`

	// AppProtocol: Tells Dapr which protocol your application is using. Valid options are http and grpc. Default is http
	AppProtocol *Dapr_AppProtocol_STATUS `json:"appProtocol,omitempty"`

	// EnableApiLogging: Enables API logging for the Dapr sidecar
	EnableApiLogging *bool `json:"enableApiLogging,omitempty"`

	// Enabled: Boolean indicating if the Dapr side car is enabled
	Enabled *bool `json:"enabled,omitempty"`

	// HttpMaxRequestSize: Increasing max size of request body http and grpc servers parameter in MB to handle uploading of big
	// files. Default is 4 MB.
	HttpMaxRequestSize *int `json:"httpMaxRequestSize,omitempty"`

	// HttpReadBufferSize: Dapr max size of http header read buffer in KB to handle when sending multi-KB headers. Default is
	// 65KB.
	HttpReadBufferSize *int `json:"httpReadBufferSize,omitempty"`

	// LogLevel: Sets the log level for the Dapr sidecar. Allowed values are debug, info, warn, error. Default is info.
	LogLevel *Dapr_LogLevel_STATUS `json:"logLevel,omitempty"`
}

// Optional settings for a Managed Identity that is assigned to the Container App.
type IdentitySettings_STATUS struct {
	// Identity: The resource ID of a user-assigned managed identity that is assigned to the Container App, or 'system' for
	// system-assigned identity.
	Identity *string `json:"identity,omitempty"`

	// Lifecycle: Use to select the lifecycle stages of a Container App during which the Managed Identity should be available.
	Lifecycle *IdentitySettings_Lifecycle_STATUS `json:"lifecycle,omitempty"`
}

// Container App Ingress configuration.
type Ingress_STATUS struct {
	// AdditionalPortMappings: Settings to expose additional ports on container app
	AdditionalPortMappings []IngressPortMapping_STATUS `json:"additionalPortMappings,omitempty"`

	// AllowInsecure: Bool indicating if HTTP connections to is allowed. If set to false HTTP connections are automatically
	// redirected to HTTPS connections
	AllowInsecure *bool `json:"allowInsecure,omitempty"`

	// ClientCertificateMode: Client certificate mode for mTLS authentication. Ignore indicates server drops client certificate
	// on forwarding. Accept indicates server forwards client certificate but does not require a client certificate. Require
	// indicates server requires a client certificate.
	ClientCertificateMode *Ingress_ClientCertificateMode_STATUS `json:"clientCertificateMode,omitempty"`

	// CorsPolicy: CORS policy for container app
	CorsPolicy *CorsPolicy_STATUS `json:"corsPolicy,omitempty"`

	// CustomDomains: custom domain bindings for Container Apps' hostnames.
	CustomDomains []CustomDomain_STATUS `json:"customDomains,omitempty"`

	// ExposedPort: Exposed Port in containers for TCP traffic from ingress
	ExposedPort *int `json:"exposedPort,omitempty"`

	// External: Bool indicating if app exposes an external http endpoint
	External *bool `json:"external,omitempty"`

	// Fqdn: Hostname.
	Fqdn *string `json:"fqdn,omitempty"`

	// IpSecurityRestrictions: Rules to restrict incoming IP address.
	IpSecurityRestrictions []IpSecurityRestrictionRule_STATUS `json:"ipSecurityRestrictions,omitempty"`

	// StickySessions: Sticky Sessions for Single Revision Mode
	StickySessions *Ingress_StickySessions_STATUS `json:"stickySessions,omitempty"`

	// TargetPort: Target Port in containers for traffic from ingress
	TargetPort *int `json:"targetPort,omitempty"`

	// Traffic: Traffic weights for app's revisions
	Traffic []TrafficWeight_STATUS `json:"traffic,omitempty"`

	// Transport: Ingress transport protocol
	Transport *Ingress_Transport_STATUS `json:"transport,omitempty"`
}

// Container App Private Registry
type RegistryCredentials_STATUS struct {
	// Identity: A Managed Identity to use to authenticate with Azure Container Registry. For user-assigned identities, use the
	// full user-assigned identity Resource ID. For system-assigned identities, use 'system'
	Identity *string `json:"identity,omitempty"`

	// PasswordSecretRef: The name of the Secret that contains the registry login password
	PasswordSecretRef *string `json:"passwordSecretRef,omitempty"`

	// Server: Container Registry Server
	Server *string `json:"server,omitempty"`

	// Username: Container Registry Username
	Username *string `json:"username,omitempty"`
}

// Container App Runtime configuration.
type Runtime_STATUS struct {
	// Java: Java app configuration
	Java *Runtime_Java_STATUS `json:"java,omitempty"`
}

// Container App scaling configurations.
type Scale_STATUS struct {
	// CooldownPeriod: Optional. KEDA Cooldown Period in seconds. Defaults to 300 seconds if not set.
	CooldownPeriod *int `json:"cooldownPeriod,omitempty"`

	// MaxReplicas: Optional. Maximum number of container replicas. Defaults to 10 if not set.
	MaxReplicas *int `json:"maxReplicas,omitempty"`

	// MinReplicas: Optional. Minimum number of container replicas.
	MinReplicas *int `json:"minReplicas,omitempty"`

	// PollingInterval: Optional. KEDA Polling Interval in seconds. Defaults to 30 seconds if not set.
	PollingInterval *int `json:"pollingInterval,omitempty"`

	// Rules: Scaling rules.
	Rules []ScaleRule_STATUS `json:"rules,omitempty"`
}

// Secret definition.
type Secret_STATUS struct {
	// Identity: Resource ID of a managed identity to authenticate with Azure Key Vault, or System to use a system-assigned
	// identity.
	Identity *string `json:"identity,omitempty"`

	// KeyVaultUrl: Azure Key Vault URL pointing to the secret referenced by the container app.
	KeyVaultUrl *string `json:"keyVaultUrl,omitempty"`

	// Name: Secret Name.
	Name *string `json:"name,omitempty"`
}

// Container App to be a dev service
type Service_STATUS struct {
	// Type: Dev ContainerApp service type
	Type *string `json:"type,omitempty"`
}

// Configuration to bind a ContainerApp to a dev ContainerApp Service
type ServiceBind_STATUS struct {
	// Name: Name of the service bind
	Name *string `json:"name,omitempty"`

	// ServiceId: Resource id of the target service
	ServiceId *string `json:"serviceId,omitempty"`
}

// Volume definitions for the Container App.
type Volume_STATUS struct {
	// MountOptions: Mount options used while mounting the Azure file share or NFS Azure file share. Must be a comma-separated
	// string.
	MountOptions *string `json:"mountOptions,omitempty"`

	// Name: Volume name.
	Name *string `json:"name,omitempty"`

	// Secrets: List of secrets to be added in volume. If no secrets are provided, all secrets in collection will be added to
	// volume.
	Secrets []SecretVolumeItem_STATUS `json:"secrets,omitempty"`

	// StorageName: Name of storage resource. No need to provide for EmptyDir and Secret.
	StorageName *string `json:"storageName,omitempty"`

	// StorageType: Storage type for the volume. If not provided, use EmptyDir.
	StorageType *Volume_StorageType_STATUS `json:"storageType,omitempty"`
}

// Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive
// traffic.
type ContainerAppProbe_STATUS struct {
	// FailureThreshold: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to
	// 3. Minimum value is 1. Maximum value is 10.
	FailureThreshold *int `json:"failureThreshold,omitempty"`

	// HttpGet: HTTPGet specifies the http request to perform.
	HttpGet *ContainerAppProbe_HttpGet_STATUS `json:"httpGet,omitempty"`

	// InitialDelaySeconds: Number of seconds after the container has started before liveness probes are initiated. Minimum
	// value is 1. Maximum value is 60.
	InitialDelaySeconds *int `json:"initialDelaySeconds,omitempty"`

	// PeriodSeconds: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value is
	// 240.
	PeriodSeconds *int `json:"periodSeconds,omitempty"`

	// SuccessThreshold: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults
	// to 1. Must be 1 for liveness and startup. Minimum value is 1. Maximum value is 10.
	SuccessThreshold *int `json:"successThreshold,omitempty"`

	// TcpSocket: TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported.
	TcpSocket *ContainerAppProbe_TcpSocket_STATUS `json:"tcpSocket,omitempty"`

	// TerminationGracePeriodSeconds: Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
	// The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the
	// time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for
	// your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value
	// overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop
	// immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling
	// ProbeTerminationGracePeriod feature gate. Maximum value is 3600 seconds (1 hour)
	TerminationGracePeriodSeconds *int `json:"terminationGracePeriodSeconds,omitempty"`

	// TimeoutSeconds: Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum
	// value is 240.
	TimeoutSeconds *int `json:"timeoutSeconds,omitempty"`

	// Type: The type of probe.
	Type *ContainerAppProbe_Type_STATUS `json:"type,omitempty"`
}

// Container App container resource requirements.
type ContainerResources_STATUS struct {
	// Cpu: Required CPU in cores, e.g. 0.5
	Cpu *float64 `json:"cpu,omitempty"`

	// EphemeralStorage: Ephemeral Storage, e.g. "1Gi"
	EphemeralStorage *string `json:"ephemeralStorage,omitempty"`

	// Memory: Required memory, e.g. "250Mb"
	Memory *string `json:"memory,omitempty"`
}

// Cross-Origin-Resource-Sharing policy
type CorsPolicy_STATUS struct {
	// AllowCredentials: Specifies whether the resource allows credentials
	AllowCredentials *bool `json:"allowCredentials,omitempty"`

	// AllowedHeaders: Specifies the content for the access-control-allow-headers header
	AllowedHeaders []string `json:"allowedHeaders,omitempty"`

	// AllowedMethods: Specifies the content for the access-control-allow-methods header
	AllowedMethods []string `json:"allowedMethods,omitempty"`

	// AllowedOrigins: Specifies the content for the access-control-allow-origins header
	AllowedOrigins []string `json:"allowedOrigins,omitempty"`

	// ExposeHeaders: Specifies the content for the access-control-expose-headers header
	ExposeHeaders []string `json:"exposeHeaders,omitempty"`

	// MaxAge: Specifies the content for the access-control-max-age header
	MaxAge *int `json:"maxAge,omitempty"`
}

// Custom Domain of a Container App
type CustomDomain_STATUS struct {
	// BindingType: Custom Domain binding type.
	BindingType *CustomDomain_BindingType_STATUS `json:"bindingType,omitempty"`

	// CertificateId: Resource Id of the Certificate to be bound to this hostname. Must exist in the Managed Environment.
	CertificateId *string `json:"certificateId,omitempty"`

	// Name: Hostname.
	Name *string `json:"name,omitempty"`
}

type Dapr_AppProtocol_STATUS string

const (
	Dapr_AppProtocol_STATUS_Grpc = Dapr_AppProtocol_STATUS("grpc")
	Dapr_AppProtocol_STATUS_Http = Dapr_AppProtocol_STATUS("http")
)

// Mapping from string to Dapr_AppProtocol_STATUS
var dapr_AppProtocol_STATUS_Values = map[string]Dapr_AppProtocol_STATUS{
	"grpc": Dapr_AppProtocol_STATUS_Grpc,
	"http": Dapr_AppProtocol_STATUS_Http,
}

type Dapr_LogLevel_STATUS string

const (
	Dapr_LogLevel_STATUS_Debug = Dapr_LogLevel_STATUS("debug")
	Dapr_LogLevel_STATUS_Error = Dapr_LogLevel_STATUS("error")
	Dapr_LogLevel_STATUS_Info  = Dapr_LogLevel_STATUS("info")
	Dapr_LogLevel_STATUS_Warn  = Dapr_LogLevel_STATUS("warn")
)

// Mapping from string to Dapr_LogLevel_STATUS
var dapr_LogLevel_STATUS_Values = map[string]Dapr_LogLevel_STATUS{
	"debug": Dapr_LogLevel_STATUS_Debug,
	"error": Dapr_LogLevel_STATUS_Error,
	"info":  Dapr_LogLevel_STATUS_Info,
	"warn":  Dapr_LogLevel_STATUS_Warn,
}

// Container App container environment variable.
type EnvironmentVar_STATUS struct {
	// Name: Environment variable name.
	Name *string `json:"name,omitempty"`

	// SecretRef: Name of the Container App secret from which to pull the environment variable value.
	SecretRef *string `json:"secretRef,omitempty"`

	// Value: Non-secret environment variable value.
	Value *string `json:"value,omitempty"`
}

type IdentitySettings_Lifecycle_STATUS string

const (
	IdentitySettings_Lifecycle_STATUS_All  = IdentitySettings_Lifecycle_STATUS("All")
	IdentitySettings_Lifecycle_STATUS_Init = IdentitySettings_Lifecycle_STATUS("Init")
	IdentitySettings_Lifecycle_STATUS_Main = IdentitySettings_Lifecycle_STATUS("Main")
	IdentitySettings_Lifecycle_STATUS_None = IdentitySettings_Lifecycle_STATUS("None")
)

// Mapping from string to IdentitySettings_Lifecycle_STATUS
var identitySettings_Lifecycle_STATUS_Values = map[string]IdentitySettings_Lifecycle_STATUS{
	"all":  IdentitySettings_Lifecycle_STATUS_All,
	"init": IdentitySettings_Lifecycle_STATUS_Init,
	"main": IdentitySettings_Lifecycle_STATUS_Main,
	"none": IdentitySettings_Lifecycle_STATUS_None,
}

type Ingress_ClientCertificateMode_STATUS string

const (
	Ingress_ClientCertificateMode_STATUS_Accept  = Ingress_ClientCertificateMode_STATUS("accept")
	Ingress_ClientCertificateMode_STATUS_Ignore  = Ingress_ClientCertificateMode_STATUS("ignore")
	Ingress_ClientCertificateMode_STATUS_Require = Ingress_ClientCertificateMode_STATUS("require")
)

// Mapping from string to Ingress_ClientCertificateMode_STATUS
var ingress_ClientCertificateMode_STATUS_Values = map[string]Ingress_ClientCertificateMode_STATUS{
	"accept":  Ingress_ClientCertificateMode_STATUS_Accept,
	"ignore":  Ingress_ClientCertificateMode_STATUS_Ignore,
	"require": Ingress_ClientCertificateMode_STATUS_Require,
}

type Ingress_StickySessions_STATUS struct {
	// Affinity: Sticky Session Affinity
	Affinity *Ingress_StickySessions_Affinity_STATUS `json:"affinity,omitempty"`
}

type Ingress_Transport_STATUS string

const (
	Ingress_Transport_STATUS_Auto  = Ingress_Transport_STATUS("auto")
	Ingress_Transport_STATUS_Http  = Ingress_Transport_STATUS("http")
	Ingress_Transport_STATUS_Http2 = Ingress_Transport_STATUS("http2")
	Ingress_Transport_STATUS_Tcp   = Ingress_Transport_STATUS("tcp")
)

// Mapping from string to Ingress_Transport_STATUS
var ingress_Transport_STATUS_Values = map[string]Ingress_Transport_STATUS{
	"auto":  Ingress_Transport_STATUS_Auto,
	"http":  Ingress_Transport_STATUS_Http,
	"http2": Ingress_Transport_STATUS_Http2,
	"tcp":   Ingress_Transport_STATUS_Tcp,
}

// Port mappings of container app ingress
type IngressPortMapping_STATUS struct {
	// ExposedPort: Specifies the exposed port for the target port. If not specified, it defaults to target port
	ExposedPort *int `json:"exposedPort,omitempty"`

	// External: Specifies whether the app port is accessible outside of the environment
	External *bool `json:"external,omitempty"`

	// TargetPort: Specifies the port user's container listens on
	TargetPort *int `json:"targetPort,omitempty"`
}

// Rule to restrict incoming IP address.
type IpSecurityRestrictionRule_STATUS struct {
	// Action: Allow or Deny rules to determine for incoming IP. Note: Rules can only consist of ALL Allow or ALL Deny
	Action *IpSecurityRestrictionRule_Action_STATUS `json:"action,omitempty"`

	// Description: Describe the IP restriction rule that is being sent to the container-app. This is an optional field.
	Description *string `json:"description,omitempty"`

	// IpAddressRange: CIDR notation to match incoming IP address
	IpAddressRange *string `json:"ipAddressRange,omitempty"`

	// Name: Name for the IP restriction rule.
	Name *string `json:"name,omitempty"`
}

type Runtime_Java_STATUS struct {
	// EnableMetrics: Enable jmx core metrics for the java app
	EnableMetrics *bool `json:"enableMetrics,omitempty"`
}

// Container App container scaling rule.
type ScaleRule_STATUS struct {
	// AzureQueue: Azure Queue based scaling.
	AzureQueue *QueueScaleRule_STATUS `json:"azureQueue,omitempty"`

	// Custom: Custom scale rule.
	Custom *CustomScaleRule_STATUS `json:"custom,omitempty"`

	// Http: HTTP requests based scaling.
	Http *HttpScaleRule_STATUS `json:"http,omitempty"`

	// Name: Scale Rule Name
	Name *string `json:"name,omitempty"`

	// Tcp: Tcp requests based scaling.
	Tcp *TcpScaleRule_STATUS `json:"tcp,omitempty"`
}

// Secret to be added to volume.
type SecretVolumeItem_STATUS struct {
	// Path: Path to project secret to. If no path is provided, path defaults to name of secret listed in secretRef.
	Path *string `json:"path,omitempty"`

	// SecretRef: Name of the Container App secret from which to pull the secret value.
	SecretRef *string `json:"secretRef,omitempty"`
}

// Traffic weight assigned to a revision
type TrafficWeight_STATUS struct {
	// Label: Associates a traffic label with a revision
	Label *string `json:"label,omitempty"`

	// LatestRevision: Indicates that the traffic weight belongs to a latest stable revision
	LatestRevision *bool `json:"latestRevision,omitempty"`

	// RevisionName: Name of a revision
	RevisionName *string `json:"revisionName,omitempty"`

	// Weight: Traffic weight assigned to a revision
	Weight *int `json:"weight,omitempty"`
}

type Volume_StorageType_STATUS string

const (
	Volume_StorageType_STATUS_AzureFile    = Volume_StorageType_STATUS("AzureFile")
	Volume_StorageType_STATUS_EmptyDir     = Volume_StorageType_STATUS("EmptyDir")
	Volume_StorageType_STATUS_NfsAzureFile = Volume_StorageType_STATUS("NfsAzureFile")
	Volume_StorageType_STATUS_Secret       = Volume_StorageType_STATUS("Secret")
)

// Mapping from string to Volume_StorageType_STATUS
var volume_StorageType_STATUS_Values = map[string]Volume_StorageType_STATUS{
	"azurefile":    Volume_StorageType_STATUS_AzureFile,
	"emptydir":     Volume_StorageType_STATUS_EmptyDir,
	"nfsazurefile": Volume_StorageType_STATUS_NfsAzureFile,
	"secret":       Volume_StorageType_STATUS_Secret,
}

// Volume mount for the Container App.
type VolumeMount_STATUS struct {
	// MountPath: Path within the container at which the volume should be mounted.Must not contain ':'.
	MountPath *string `json:"mountPath,omitempty"`

	// SubPath: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
	SubPath *string `json:"subPath,omitempty"`

	// VolumeName: This must match the Name of a Volume.
	VolumeName *string `json:"volumeName,omitempty"`
}

type ContainerAppProbe_HttpGet_STATUS struct {
	// Host: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
	Host *string `json:"host,omitempty"`

	// HttpHeaders: Custom headers to set in the request. HTTP allows repeated headers.
	HttpHeaders []ContainerAppProbe_HttpGet_HttpHeaders_STATUS `json:"httpHeaders,omitempty"`

	// Path: Path to access on the HTTP server.
	Path *string `json:"path,omitempty"`

	// Port: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an
	// IANA_SVC_NAME.
	Port *int `json:"port,omitempty"`

	// Scheme: Scheme to use for connecting to the host. Defaults to HTTP.
	Scheme *ContainerAppProbe_HttpGet_Scheme_STATUS `json:"scheme,omitempty"`
}

type ContainerAppProbe_TcpSocket_STATUS struct {
	// Host: Optional: Host name to connect to, defaults to the pod IP.
	Host *string `json:"host,omitempty"`

	// Port: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an
	// IANA_SVC_NAME.
	Port *int `json:"port,omitempty"`
}

type ContainerAppProbe_Type_STATUS string

const (
	ContainerAppProbe_Type_STATUS_Liveness  = ContainerAppProbe_Type_STATUS("Liveness")
	ContainerAppProbe_Type_STATUS_Readiness = ContainerAppProbe_Type_STATUS("Readiness")
	ContainerAppProbe_Type_STATUS_Startup   = ContainerAppProbe_Type_STATUS("Startup")
)

// Mapping from string to ContainerAppProbe_Type_STATUS
var containerAppProbe_Type_STATUS_Values = map[string]ContainerAppProbe_Type_STATUS{
	"liveness":  ContainerAppProbe_Type_STATUS_Liveness,
	"readiness": ContainerAppProbe_Type_STATUS_Readiness,
	"startup":   ContainerAppProbe_Type_STATUS_Startup,
}

type CustomDomain_BindingType_STATUS string

const (
	CustomDomain_BindingType_STATUS_Disabled   = CustomDomain_BindingType_STATUS("Disabled")
	CustomDomain_BindingType_STATUS_SniEnabled = CustomDomain_BindingType_STATUS("SniEnabled")
)

// Mapping from string to CustomDomain_BindingType_STATUS
var customDomain_BindingType_STATUS_Values = map[string]CustomDomain_BindingType_STATUS{
	"disabled":   CustomDomain_BindingType_STATUS_Disabled,
	"snienabled": CustomDomain_BindingType_STATUS_SniEnabled,
}

// Container App container Custom scaling rule.
type CustomScaleRule_STATUS struct {
	// Auth: Authentication secrets for the custom scale rule.
	Auth []ScaleRuleAuth_STATUS `json:"auth,omitempty"`

	// Identity: The resource ID of a user-assigned managed identity that is assigned to the Container App, or 'system' for
	// system-assigned identity.
	Identity *string `json:"identity,omitempty"`

	// Metadata: Metadata properties to describe custom scale rule.
	Metadata map[string]string `json:"metadata,omitempty"`

	// Type: Type of the custom scale rule
	// eg: azure-servicebus, redis etc.
	Type *string `json:"type,omitempty"`
}

// Container App container Http scaling rule.
type HttpScaleRule_STATUS struct {
	// Auth: Authentication secrets for the custom scale rule.
	Auth []ScaleRuleAuth_STATUS `json:"auth,omitempty"`

	// Identity: The resource ID of a user-assigned managed identity that is assigned to the Container App, or 'system' for
	// system-assigned identity.
	Identity *string `json:"identity,omitempty"`

	// Metadata: Metadata properties to describe http scale rule.
	Metadata map[string]string `json:"metadata,omitempty"`
}

type Ingress_StickySessions_Affinity_STATUS string

const (
	Ingress_StickySessions_Affinity_STATUS_None   = Ingress_StickySessions_Affinity_STATUS("none")
	Ingress_StickySessions_Affinity_STATUS_Sticky = Ingress_StickySessions_Affinity_STATUS("sticky")
)

// Mapping from string to Ingress_StickySessions_Affinity_STATUS
var ingress_StickySessions_Affinity_STATUS_Values = map[string]Ingress_StickySessions_Affinity_STATUS{
	"none":   Ingress_StickySessions_Affinity_STATUS_None,
	"sticky": Ingress_StickySessions_Affinity_STATUS_Sticky,
}

type IpSecurityRestrictionRule_Action_STATUS string

const (
	IpSecurityRestrictionRule_Action_STATUS_Allow = IpSecurityRestrictionRule_Action_STATUS("Allow")
	IpSecurityRestrictionRule_Action_STATUS_Deny  = IpSecurityRestrictionRule_Action_STATUS("Deny")
)

// Mapping from string to IpSecurityRestrictionRule_Action_STATUS
var ipSecurityRestrictionRule_Action_STATUS_Values = map[string]IpSecurityRestrictionRule_Action_STATUS{
	"allow": IpSecurityRestrictionRule_Action_STATUS_Allow,
	"deny":  IpSecurityRestrictionRule_Action_STATUS_Deny,
}

// Container App container Azure Queue based scaling rule.
type QueueScaleRule_STATUS struct {
	// AccountName: Storage account name. required if using managed identity to authenticate
	AccountName *string `json:"accountName,omitempty"`

	// Auth: Authentication secrets for the queue scale rule.
	Auth []ScaleRuleAuth_STATUS `json:"auth,omitempty"`

	// Identity: The resource ID of a user-assigned managed identity that is assigned to the Container App, or 'system' for
	// system-assigned identity.
	Identity *string `json:"identity,omitempty"`

	// QueueLength: Queue length.
	QueueLength *int `json:"queueLength,omitempty"`

	// QueueName: Queue name.
	QueueName *string `json:"queueName,omitempty"`
}

// Container App container Tcp scaling rule.
type TcpScaleRule_STATUS struct {
	// Auth: Authentication secrets for the tcp scale rule.
	Auth []ScaleRuleAuth_STATUS `json:"auth,omitempty"`

	// Identity: The resource ID of a user-assigned managed identity that is assigned to the Container App, or 'system' for
	// system-assigned identity.
	Identity *string `json:"identity,omitempty"`

	// Metadata: Metadata properties to describe tcp scale rule.
	Metadata map[string]string `json:"metadata,omitempty"`
}

type ContainerAppProbe_HttpGet_HttpHeaders_STATUS struct {
	// Name: The header field name
	Name *string `json:"name,omitempty"`

	// Value: The header field value
	Value *string `json:"value,omitempty"`
}

type ContainerAppProbe_HttpGet_Scheme_STATUS string

const (
	ContainerAppProbe_HttpGet_Scheme_STATUS_HTTP  = ContainerAppProbe_HttpGet_Scheme_STATUS("HTTP")
	ContainerAppProbe_HttpGet_Scheme_STATUS_HTTPS = ContainerAppProbe_HttpGet_Scheme_STATUS("HTTPS")
)

// Mapping from string to ContainerAppProbe_HttpGet_Scheme_STATUS
var containerAppProbe_HttpGet_Scheme_STATUS_Values = map[string]ContainerAppProbe_HttpGet_Scheme_STATUS{
	"http":  ContainerAppProbe_HttpGet_Scheme_STATUS_HTTP,
	"https": ContainerAppProbe_HttpGet_Scheme_STATUS_HTTPS,
}

// Auth Secrets for Scale Rule
type ScaleRuleAuth_STATUS struct {
	// SecretRef: Name of the secret from which to pull the auth params.
	SecretRef *string `json:"secretRef,omitempty"`

	// TriggerParameter: Trigger Parameter that uses the secret
	TriggerParameter *string `json:"triggerParameter,omitempty"`
}
