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

import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"

// Describes an Azure Cognitive Search service and its current state.
type SearchService_STATUS struct {
	// Id: Fully qualified resource ID for the resource. Ex -
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	Id *string `json:"id,omitempty"`

	// Identity: The identity of the resource.
	Identity *Identity_STATUS `json:"identity,omitempty"`

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

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

	// Properties: Properties of the search service.
	Properties *SearchServiceProperties_STATUS `json:"properties,omitempty"`

	// Sku: The SKU of the Search Service, which determines price tier and capacity limits. This property is required when
	// creating a new Search Service.
	Sku *Sku_STATUS `json:"sku,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"`
}

// Identity for the resource.
type Identity_STATUS struct {
	// PrincipalId: The principal ID of the system-assigned identity of the search service.
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: The tenant ID of the system-assigned identity of the search service.
	TenantId *string `json:"tenantId,omitempty"`

	// Type: The identity type.
	Type *Identity_Type_STATUS `json:"type,omitempty"`
}

// Properties of the search service.
type SearchServiceProperties_STATUS struct {
	// AuthOptions: Defines the options for how the data plane API of a search service authenticates requests. This cannot be
	// set if 'disableLocalAuth' is set to true.
	AuthOptions *DataPlaneAuthOptions_STATUS `json:"authOptions,omitempty"`

	// DisableLocalAuth: When set to true, calls to the search service will not be permitted to utilize API keys for
	// authentication. This cannot be set to true if 'dataPlaneAuthOptions' are defined.
	DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"`

	// EncryptionWithCmk: Specifies any policy regarding encryption of resources (such as indexes) using customer manager keys
	// within a search service.
	EncryptionWithCmk *EncryptionWithCmk_STATUS `json:"encryptionWithCmk,omitempty"`

	// HostingMode: Applicable only for the standard3 SKU. You can set this property to enable up to 3 high density partitions
	// that allow up to 1000 indexes, which is much higher than the maximum indexes allowed for any other SKU. For the
	// standard3 SKU, the value is either 'default' or 'highDensity'. For all other SKUs, this value must be 'default'.
	HostingMode *SearchServiceProperties_HostingMode_STATUS `json:"hostingMode,omitempty"`

	// NetworkRuleSet: Network specific rules that determine how the Azure Cognitive Search service may be reached.
	NetworkRuleSet *NetworkRuleSet_STATUS `json:"networkRuleSet,omitempty"`

	// PartitionCount: The number of partitions in the search service; if specified, it can be 1, 2, 3, 4, 6, or 12. Values
	// greater than 1 are only valid for standard SKUs. For 'standard3' services with hostingMode set to 'highDensity', the
	// allowed values are between 1 and 3.
	PartitionCount *int `json:"partitionCount,omitempty"`

	// PrivateEndpointConnections: The list of private endpoint connections to the Azure Cognitive Search service.
	PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"`

	// ProvisioningState: The state of the last provisioning operation performed on the search service. Provisioning is an
	// intermediate state that occurs while service capacity is being established. After capacity is set up, provisioningState
	// changes to either 'succeeded' or 'failed'. Client applications can poll provisioning status (the recommended polling
	// interval is from 30 seconds to one minute) by using the Get Search Service operation to see when an operation is
	// completed. If you are using the free service, this value tends to come back as 'succeeded' directly in the call to
	// Create search service. This is because the free service uses capacity that is already set up.
	ProvisioningState *SearchServiceProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// PublicNetworkAccess: This value can be set to 'enabled' to avoid breaking changes on existing customer resources and
	// templates. If set to 'disabled', traffic over public interface is not allowed, and private endpoint connections would be
	// the exclusive access method.
	PublicNetworkAccess *SearchServiceProperties_PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"`

	// ReplicaCount: The number of replicas in the search service. If specified, it must be a value between 1 and 12 inclusive
	// for standard SKUs or between 1 and 3 inclusive for basic SKU.
	ReplicaCount *int `json:"replicaCount,omitempty"`

	// SharedPrivateLinkResources: The list of shared private link resources managed by the Azure Cognitive Search service.
	SharedPrivateLinkResources []SharedPrivateLinkResource_STATUS `json:"sharedPrivateLinkResources,omitempty"`

	// Status: The status of the search service. Possible values include: 'running': The search service is running and no
	// provisioning operations are underway. 'provisioning': The search service is being provisioned or scaled up or down.
	// 'deleting': The search service is being deleted. 'degraded': The search service is degraded. This can occur when the
	// underlying search units are not healthy. The search service is most likely operational, but performance might be slow
	// and some requests might be dropped. 'disabled': The search service is disabled. In this state, the service will reject
	// all API requests. 'error': The search service is in an error state. If your service is in the degraded, disabled, or
	// error states, it means the Azure Cognitive Search team is actively investigating the underlying issue. Dedicated
	// services in these states are still chargeable based on the number of search units provisioned.
	Status *SearchServiceProperties_Status_STATUS `json:"status,omitempty"`

	// StatusDetails: The details of the search service status.
	StatusDetails *string `json:"statusDetails,omitempty"`
}

// Defines the SKU of an Azure Cognitive Search Service, which determines price tier and capacity limits.
type Sku_STATUS struct {
	// Name: The SKU of the search service. Valid values include: 'free': Shared service. 'basic': Dedicated service with up to
	// 3 replicas. 'standard': Dedicated service with up to 12 partitions and 12 replicas. 'standard2': Similar to standard,
	// but with more capacity per search unit. 'standard3': The largest Standard offering with up to 12 partitions and 12
	// replicas (or up to 3 partitions with more indexes if you also set the hostingMode property to 'highDensity').
	// 'storage_optimized_l1': Supports 1TB per partition, up to 12 partitions. 'storage_optimized_l2': Supports 2TB per
	// partition, up to 12 partitions.'
	Name *Sku_Name_STATUS `json:"name,omitempty"`
}

// Defines the options for how the data plane API of a Search service authenticates requests. This cannot be set if
// 'disableLocalAuth' is set to true.
type DataPlaneAuthOptions_STATUS struct {
	// AadOrApiKey: Indicates that either the API key or an access token from Azure Active Directory can be used for
	// authentication.
	AadOrApiKey *DataPlaneAadOrApiKeyAuthOption_STATUS `json:"aadOrApiKey,omitempty"`

	// ApiKeyOnly: Indicates that only the API key needs to be used for authentication.
	ApiKeyOnly map[string]v1.JSON `json:"apiKeyOnly,omitempty"`
}

// Describes a policy that determines how resources within the search service are to be encrypted with Customer Managed
// Keys.
type EncryptionWithCmk_STATUS struct {
	// EncryptionComplianceStatus: Describes whether the search service is compliant or not with respect to having non customer
	// encrypted resources. If a service has more than one non customer encrypted resource and 'Enforcement' is 'enabled' then
	// the service will be marked as 'nonCompliant'.
	EncryptionComplianceStatus *EncryptionWithCmk_EncryptionComplianceStatus_STATUS `json:"encryptionComplianceStatus,omitempty"`

	// Enforcement: Describes how a search service should enforce having one or more non customer encrypted resources.
	Enforcement *EncryptionWithCmk_Enforcement_STATUS `json:"enforcement,omitempty"`
}

type Identity_Type_STATUS string

const (
	Identity_Type_STATUS_None           = Identity_Type_STATUS("None")
	Identity_Type_STATUS_SystemAssigned = Identity_Type_STATUS("SystemAssigned")
)

// Mapping from string to Identity_Type_STATUS
var identity_Type_STATUS_Values = map[string]Identity_Type_STATUS{
	"none":           Identity_Type_STATUS_None,
	"systemassigned": Identity_Type_STATUS_SystemAssigned,
}

// Network specific rules that determine how the Azure Cognitive Search service may be reached.
type NetworkRuleSet_STATUS struct {
	// IpRules: A list of IP restriction rules that defines the inbound network(s) with allowing access to the search service
	// endpoint. At the meantime, all other public IP networks are blocked by the firewall. These restriction rules are applied
	// only when the 'publicNetworkAccess' of the search service is 'enabled'; otherwise, traffic over public interface is not
	// allowed even with any public IP rules, and private endpoint connections would be the exclusive access method.
	IpRules []IpRule_STATUS `json:"ipRules,omitempty"`
}

// Describes an existing Private Endpoint connection to the Azure Cognitive Search service.
type PrivateEndpointConnection_STATUS struct {
	// Id: Fully qualified resource ID for the resource. Ex -
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	Id *string `json:"id,omitempty"`
}

type SearchServiceProperties_HostingMode_STATUS string

const (
	SearchServiceProperties_HostingMode_STATUS_Default     = SearchServiceProperties_HostingMode_STATUS("default")
	SearchServiceProperties_HostingMode_STATUS_HighDensity = SearchServiceProperties_HostingMode_STATUS("highDensity")
)

// Mapping from string to SearchServiceProperties_HostingMode_STATUS
var searchServiceProperties_HostingMode_STATUS_Values = map[string]SearchServiceProperties_HostingMode_STATUS{
	"default":     SearchServiceProperties_HostingMode_STATUS_Default,
	"highdensity": SearchServiceProperties_HostingMode_STATUS_HighDensity,
}

type SearchServiceProperties_ProvisioningState_STATUS string

const (
	SearchServiceProperties_ProvisioningState_STATUS_Failed       = SearchServiceProperties_ProvisioningState_STATUS("failed")
	SearchServiceProperties_ProvisioningState_STATUS_Provisioning = SearchServiceProperties_ProvisioningState_STATUS("provisioning")
	SearchServiceProperties_ProvisioningState_STATUS_Succeeded    = SearchServiceProperties_ProvisioningState_STATUS("succeeded")
)

// Mapping from string to SearchServiceProperties_ProvisioningState_STATUS
var searchServiceProperties_ProvisioningState_STATUS_Values = map[string]SearchServiceProperties_ProvisioningState_STATUS{
	"failed":       SearchServiceProperties_ProvisioningState_STATUS_Failed,
	"provisioning": SearchServiceProperties_ProvisioningState_STATUS_Provisioning,
	"succeeded":    SearchServiceProperties_ProvisioningState_STATUS_Succeeded,
}

type SearchServiceProperties_PublicNetworkAccess_STATUS string

const (
	SearchServiceProperties_PublicNetworkAccess_STATUS_Disabled = SearchServiceProperties_PublicNetworkAccess_STATUS("disabled")
	SearchServiceProperties_PublicNetworkAccess_STATUS_Enabled  = SearchServiceProperties_PublicNetworkAccess_STATUS("enabled")
)

// Mapping from string to SearchServiceProperties_PublicNetworkAccess_STATUS
var searchServiceProperties_PublicNetworkAccess_STATUS_Values = map[string]SearchServiceProperties_PublicNetworkAccess_STATUS{
	"disabled": SearchServiceProperties_PublicNetworkAccess_STATUS_Disabled,
	"enabled":  SearchServiceProperties_PublicNetworkAccess_STATUS_Enabled,
}

type SearchServiceProperties_Status_STATUS string

const (
	SearchServiceProperties_Status_STATUS_Degraded     = SearchServiceProperties_Status_STATUS("degraded")
	SearchServiceProperties_Status_STATUS_Deleting     = SearchServiceProperties_Status_STATUS("deleting")
	SearchServiceProperties_Status_STATUS_Disabled     = SearchServiceProperties_Status_STATUS("disabled")
	SearchServiceProperties_Status_STATUS_Error        = SearchServiceProperties_Status_STATUS("error")
	SearchServiceProperties_Status_STATUS_Provisioning = SearchServiceProperties_Status_STATUS("provisioning")
	SearchServiceProperties_Status_STATUS_Running      = SearchServiceProperties_Status_STATUS("running")
)

// Mapping from string to SearchServiceProperties_Status_STATUS
var searchServiceProperties_Status_STATUS_Values = map[string]SearchServiceProperties_Status_STATUS{
	"degraded":     SearchServiceProperties_Status_STATUS_Degraded,
	"deleting":     SearchServiceProperties_Status_STATUS_Deleting,
	"disabled":     SearchServiceProperties_Status_STATUS_Disabled,
	"error":        SearchServiceProperties_Status_STATUS_Error,
	"provisioning": SearchServiceProperties_Status_STATUS_Provisioning,
	"running":      SearchServiceProperties_Status_STATUS_Running,
}

// Describes a Shared Private Link Resource managed by the Azure Cognitive Search service.
type SharedPrivateLinkResource_STATUS struct {
	// Id: Fully qualified resource ID for the resource. Ex -
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	Id *string `json:"id,omitempty"`
}

type Sku_Name_STATUS string

const (
	Sku_Name_STATUS_Basic                = Sku_Name_STATUS("basic")
	Sku_Name_STATUS_Free                 = Sku_Name_STATUS("free")
	Sku_Name_STATUS_Standard             = Sku_Name_STATUS("standard")
	Sku_Name_STATUS_Standard2            = Sku_Name_STATUS("standard2")
	Sku_Name_STATUS_Standard3            = Sku_Name_STATUS("standard3")
	Sku_Name_STATUS_Storage_Optimized_L1 = Sku_Name_STATUS("storage_optimized_l1")
	Sku_Name_STATUS_Storage_Optimized_L2 = Sku_Name_STATUS("storage_optimized_l2")
)

// Mapping from string to Sku_Name_STATUS
var sku_Name_STATUS_Values = map[string]Sku_Name_STATUS{
	"basic":                Sku_Name_STATUS_Basic,
	"free":                 Sku_Name_STATUS_Free,
	"standard":             Sku_Name_STATUS_Standard,
	"standard2":            Sku_Name_STATUS_Standard2,
	"standard3":            Sku_Name_STATUS_Standard3,
	"storage_optimized_l1": Sku_Name_STATUS_Storage_Optimized_L1,
	"storage_optimized_l2": Sku_Name_STATUS_Storage_Optimized_L2,
}

// Indicates that either the API key or an access token from Azure Active Directory can be used for authentication.
type DataPlaneAadOrApiKeyAuthOption_STATUS struct {
	// AadAuthFailureMode: Describes what response the data plane API of a Search service would send for requests that failed
	// authentication.
	AadAuthFailureMode *DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS `json:"aadAuthFailureMode,omitempty"`
}

type EncryptionWithCmk_EncryptionComplianceStatus_STATUS string

const (
	EncryptionWithCmk_EncryptionComplianceStatus_STATUS_Compliant    = EncryptionWithCmk_EncryptionComplianceStatus_STATUS("Compliant")
	EncryptionWithCmk_EncryptionComplianceStatus_STATUS_NonCompliant = EncryptionWithCmk_EncryptionComplianceStatus_STATUS("NonCompliant")
)

// Mapping from string to EncryptionWithCmk_EncryptionComplianceStatus_STATUS
var encryptionWithCmk_EncryptionComplianceStatus_STATUS_Values = map[string]EncryptionWithCmk_EncryptionComplianceStatus_STATUS{
	"compliant":    EncryptionWithCmk_EncryptionComplianceStatus_STATUS_Compliant,
	"noncompliant": EncryptionWithCmk_EncryptionComplianceStatus_STATUS_NonCompliant,
}

type EncryptionWithCmk_Enforcement_STATUS string

const (
	EncryptionWithCmk_Enforcement_STATUS_Disabled    = EncryptionWithCmk_Enforcement_STATUS("Disabled")
	EncryptionWithCmk_Enforcement_STATUS_Enabled     = EncryptionWithCmk_Enforcement_STATUS("Enabled")
	EncryptionWithCmk_Enforcement_STATUS_Unspecified = EncryptionWithCmk_Enforcement_STATUS("Unspecified")
)

// Mapping from string to EncryptionWithCmk_Enforcement_STATUS
var encryptionWithCmk_Enforcement_STATUS_Values = map[string]EncryptionWithCmk_Enforcement_STATUS{
	"disabled":    EncryptionWithCmk_Enforcement_STATUS_Disabled,
	"enabled":     EncryptionWithCmk_Enforcement_STATUS_Enabled,
	"unspecified": EncryptionWithCmk_Enforcement_STATUS_Unspecified,
}

// The IP restriction rule of the Azure Cognitive Search service.
type IpRule_STATUS struct {
	// Value: Value corresponding to a single IPv4 address (eg., 123.1.2.3) or an IP range in CIDR format (eg., 123.1.2.3/24)
	// to be allowed.
	Value *string `json:"value,omitempty"`
}

type DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS string

const (
	DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS_Http401WithBearerChallenge = DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS("http401WithBearerChallenge")
	DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS_Http403                    = DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS("http403")
)

// Mapping from string to DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS
var dataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS_Values = map[string]DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS{
	"http401withbearerchallenge": DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS_Http401WithBearerChallenge,
	"http403":                    DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS_Http403,
}
