{
  "description": "Generator information:\n- Generated from: /search/resource-manager/Microsoft.Search/stable/2022-09-01/search.json\n- ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Search/searchServices/{searchServiceName}",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "properties": {
        "authOptions": {
          "description": "AuthOptions: Defines the options for how the data plane API of a search service authenticates requests. This cannot be\nset if 'disableLocalAuth' is set to true.",
          "properties": {
            "aadOrApiKey": {
              "description": "AadOrApiKey: Indicates that either the API key or an access token from Azure Active Directory can be used for\nauthentication.",
              "properties": {
                "aadAuthFailureMode": {
                  "description": "AadAuthFailureMode: Describes what response the data plane API of a Search service would send for requests that failed\nauthentication.",
                  "enum": [
                    "http401WithBearerChallenge",
                    "http403"
                  ],
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "azureName": {
          "description": "AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it\ndoesn't have to be.",
          "type": "string"
        },
        "disableLocalAuth": {
          "description": "DisableLocalAuth: When set to true, calls to the search service will not be permitted to utilize API keys for\nauthentication. This cannot be set to true if 'dataPlaneAuthOptions' are defined.",
          "type": "boolean"
        },
        "encryptionWithCmk": {
          "description": "EncryptionWithCmk: Specifies any policy regarding encryption of resources (such as indexes) using customer manager keys\nwithin a search service.",
          "properties": {
            "enforcement": {
              "description": "Enforcement: Describes how a search service should enforce having one or more non customer encrypted resources.",
              "enum": [
                "Disabled",
                "Enabled",
                "Unspecified"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hostingMode": {
          "description": "HostingMode: Applicable only for the standard3 SKU. You can set this property to enable up to 3 high density partitions\nthat allow up to 1000 indexes, which is much higher than the maximum indexes allowed for any other SKU. For the\nstandard3 SKU, the value is either 'default' or 'highDensity'. For all other SKUs, this value must be 'default'.",
          "enum": [
            "default",
            "highDensity"
          ],
          "type": "string"
        },
        "identity": {
          "description": "Identity: The identity of the resource.",
          "properties": {
            "type": {
              "description": "Type: The identity type.",
              "enum": [
                "None",
                "SystemAssigned"
              ],
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "location": {
          "description": "Location: The geo-location where the resource lives",
          "type": "string"
        },
        "networkRuleSet": {
          "description": "NetworkRuleSet: Network specific rules that determine how the Azure Cognitive Search service may be reached.",
          "properties": {
            "ipRules": {
              "description": "IpRules: A list of IP restriction rules that defines the inbound network(s) with allowing access to the search service\nendpoint. At the meantime, all other public IP networks are blocked by the firewall. These restriction rules are applied\nonly when the 'publicNetworkAccess' of the search service is 'enabled'; otherwise, traffic over public interface is not\nallowed even with any public IP rules, and private endpoint connections would be the exclusive access method.",
              "items": {
                "description": "The IP restriction rule of the Azure Cognitive Search service.",
                "properties": {
                  "value": {
                    "description": "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)\nto be allowed.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "operatorSpec": {
          "description": "OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not\npassed directly to Azure",
          "properties": {
            "configMapExpressions": {
              "description": "ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "secretExpressions": {
              "description": "SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "secrets": {
              "description": "Secrets: configures where to place Azure generated secrets.",
              "properties": {
                "adminPrimaryKey": {
                  "description": "AdminPrimaryKey: indicates where the AdminPrimaryKey secret should be placed. If omitted, the secret will not be\nretrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "adminSecondaryKey": {
                  "description": "AdminSecondaryKey: indicates where the AdminSecondaryKey secret should be placed. If omitted, the secret will not be\nretrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "queryKey": {
                  "description": "QueryKey: indicates where the QueryKey secret should be placed. If omitted, the secret will not be retrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "owner": {
          "description": "Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also\ncontrols the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a\nreference to a resources.azure.com/ResourceGroup resource",
          "properties": {
            "armId": {
              "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
              "type": "string"
            },
            "name": {
              "description": "This is the name of the Kubernetes resource to reference.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "partitionCount": {
          "description": "PartitionCount: The number of partitions in the search service; if specified, it can be 1, 2, 3, 4, 6, or 12. Values\ngreater than 1 are only valid for standard SKUs. For 'standard3' services with hostingMode set to 'highDensity', the\nallowed values are between 1 and 3.",
          "maximum": 12,
          "minimum": 1,
          "type": "integer"
        },
        "publicNetworkAccess": {
          "description": "PublicNetworkAccess: This value can be set to 'enabled' to avoid breaking changes on existing customer resources and\ntemplates. If set to 'disabled', traffic over public interface is not allowed, and private endpoint connections would be\nthe exclusive access method.",
          "enum": [
            "disabled",
            "enabled"
          ],
          "type": "string"
        },
        "replicaCount": {
          "description": "ReplicaCount: The number of replicas in the search service. If specified, it must be a value between 1 and 12 inclusive\nfor standard SKUs or between 1 and 3 inclusive for basic SKU.",
          "maximum": 12,
          "minimum": 1,
          "type": "integer"
        },
        "sku": {
          "description": "Sku: The SKU of the Search Service, which determines price tier and capacity limits. This property is required when\ncreating a new Search Service.",
          "properties": {
            "name": {
              "description": "Name: The SKU of the search service. Valid values include: 'free': Shared service. 'basic': Dedicated service with up to\n3 replicas. 'standard': Dedicated service with up to 12 partitions and 12 replicas. 'standard2': Similar to standard,\nbut with more capacity per search unit. 'standard3': The largest Standard offering with up to 12 partitions and 12\nreplicas (or up to 3 partitions with more indexes if you also set the hostingMode property to 'highDensity').\n'storage_optimized_l1': Supports 1TB per partition, up to 12 partitions. 'storage_optimized_l2': Supports 2TB per\npartition, up to 12 partitions.'",
              "enum": [
                "basic",
                "free",
                "standard",
                "standard2",
                "standard3",
                "storage_optimized_l1",
                "storage_optimized_l2"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Resource tags.",
          "type": "object"
        }
      },
      "required": [
        "location",
        "owner"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "Describes an Azure Cognitive Search service and its current state.",
      "properties": {
        "authOptions": {
          "description": "AuthOptions: Defines the options for how the data plane API of a search service authenticates requests. This cannot be\nset if 'disableLocalAuth' is set to true.",
          "properties": {
            "aadOrApiKey": {
              "description": "AadOrApiKey: Indicates that either the API key or an access token from Azure Active Directory can be used for\nauthentication.",
              "properties": {
                "aadAuthFailureMode": {
                  "description": "AadAuthFailureMode: Describes what response the data plane API of a Search service would send for requests that failed\nauthentication.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "apiKeyOnly": {
              "additionalProperties": {
                "x-kubernetes-preserve-unknown-fields": true
              },
              "description": "ApiKeyOnly: Indicates that only the API key needs to be used for authentication.",
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "Conditions: The observed state of the resource",
          "items": {
            "description": "Condition defines an extension to status (an observation) of a resource",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "Message is a human readable message indicating details about the transition. This field may be empty.",
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration is the .metadata.generation that the condition was set based upon. For instance, if\n.metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "type": "integer"
              },
              "reason": {
                "description": "Reason for the condition's last transition.\nReasons are upper CamelCase (PascalCase) with no spaces. A reason is always provided, this field will not be empty.",
                "type": "string"
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition.\nFor conditions which have positive polarity (Status == True is their normal/healthy state), this will be omitted when Status == True\nFor conditions which have negative polarity (Status == False is their normal/healthy state), this will be omitted when Status == False.\nThis is omitted in all cases when Status == Unknown",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, or Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "disableLocalAuth": {
          "description": "DisableLocalAuth: When set to true, calls to the search service will not be permitted to utilize API keys for\nauthentication. This cannot be set to true if 'dataPlaneAuthOptions' are defined.",
          "type": "boolean"
        },
        "encryptionWithCmk": {
          "description": "EncryptionWithCmk: Specifies any policy regarding encryption of resources (such as indexes) using customer manager keys\nwithin a search service.",
          "properties": {
            "encryptionComplianceStatus": {
              "description": "EncryptionComplianceStatus: Describes whether the search service is compliant or not with respect to having non customer\nencrypted resources. If a service has more than one non customer encrypted resource and 'Enforcement' is 'enabled' then\nthe service will be marked as 'nonCompliant'.",
              "type": "string"
            },
            "enforcement": {
              "description": "Enforcement: Describes how a search service should enforce having one or more non customer encrypted resources.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hostingMode": {
          "description": "HostingMode: Applicable only for the standard3 SKU. You can set this property to enable up to 3 high density partitions\nthat allow up to 1000 indexes, which is much higher than the maximum indexes allowed for any other SKU. For the\nstandard3 SKU, the value is either 'default' or 'highDensity'. For all other SKUs, this value must be 'default'.",
          "type": "string"
        },
        "id": {
          "description": "Id: Fully qualified resource ID for the resource. Ex -\n/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}",
          "type": "string"
        },
        "identity": {
          "description": "Identity: The identity of the resource.",
          "properties": {
            "principalId": {
              "description": "PrincipalId: The principal ID of the system-assigned identity of the search service.",
              "type": "string"
            },
            "tenantId": {
              "description": "TenantId: The tenant ID of the system-assigned identity of the search service.",
              "type": "string"
            },
            "type": {
              "description": "Type: The identity type.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "location": {
          "description": "Location: The geo-location where the resource lives",
          "type": "string"
        },
        "name": {
          "description": "Name: The name of the resource",
          "type": "string"
        },
        "networkRuleSet": {
          "description": "NetworkRuleSet: Network specific rules that determine how the Azure Cognitive Search service may be reached.",
          "properties": {
            "ipRules": {
              "description": "IpRules: A list of IP restriction rules that defines the inbound network(s) with allowing access to the search service\nendpoint. At the meantime, all other public IP networks are blocked by the firewall. These restriction rules are applied\nonly when the 'publicNetworkAccess' of the search service is 'enabled'; otherwise, traffic over public interface is not\nallowed even with any public IP rules, and private endpoint connections would be the exclusive access method.",
              "items": {
                "description": "The IP restriction rule of the Azure Cognitive Search service.",
                "properties": {
                  "value": {
                    "description": "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)\nto be allowed.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "partitionCount": {
          "description": "PartitionCount: The number of partitions in the search service; if specified, it can be 1, 2, 3, 4, 6, or 12. Values\ngreater than 1 are only valid for standard SKUs. For 'standard3' services with hostingMode set to 'highDensity', the\nallowed values are between 1 and 3.",
          "type": "integer"
        },
        "privateEndpointConnections": {
          "description": "PrivateEndpointConnections: The list of private endpoint connections to the Azure Cognitive Search service.",
          "items": {
            "description": "Describes an existing Private Endpoint connection to the Azure Cognitive Search service.",
            "properties": {
              "id": {
                "description": "Id: Fully qualified resource ID for the resource. Ex -\n/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "provisioningState": {
          "description": "ProvisioningState: The state of the last provisioning operation performed on the search service. Provisioning is an\nintermediate state that occurs while service capacity is being established. After capacity is set up, provisioningState\nchanges to either 'succeeded' or 'failed'. Client applications can poll provisioning status (the recommended polling\ninterval is from 30 seconds to one minute) by using the Get Search Service operation to see when an operation is\ncompleted. If you are using the free service, this value tends to come back as 'succeeded' directly in the call to\nCreate search service. This is because the free service uses capacity that is already set up.",
          "type": "string"
        },
        "publicNetworkAccess": {
          "description": "PublicNetworkAccess: This value can be set to 'enabled' to avoid breaking changes on existing customer resources and\ntemplates. If set to 'disabled', traffic over public interface is not allowed, and private endpoint connections would be\nthe exclusive access method.",
          "type": "string"
        },
        "replicaCount": {
          "description": "ReplicaCount: The number of replicas in the search service. If specified, it must be a value between 1 and 12 inclusive\nfor standard SKUs or between 1 and 3 inclusive for basic SKU.",
          "type": "integer"
        },
        "sharedPrivateLinkResources": {
          "description": "SharedPrivateLinkResources: The list of shared private link resources managed by the Azure Cognitive Search service.",
          "items": {
            "description": "Describes a Shared Private Link Resource managed by the Azure Cognitive Search service.",
            "properties": {
              "id": {
                "description": "Id: Fully qualified resource ID for the resource. Ex -\n/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "sku": {
          "description": "Sku: The SKU of the Search Service, which determines price tier and capacity limits. This property is required when\ncreating a new Search Service.",
          "properties": {
            "name": {
              "description": "Name: The SKU of the search service. Valid values include: 'free': Shared service. 'basic': Dedicated service with up to\n3 replicas. 'standard': Dedicated service with up to 12 partitions and 12 replicas. 'standard2': Similar to standard,\nbut with more capacity per search unit. 'standard3': The largest Standard offering with up to 12 partitions and 12\nreplicas (or up to 3 partitions with more indexes if you also set the hostingMode property to 'highDensity').\n'storage_optimized_l1': Supports 1TB per partition, up to 12 partitions. 'storage_optimized_l2': Supports 2TB per\npartition, up to 12 partitions.'",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "status": {
          "description": "Status: The status of the search service. Possible values include: 'running': The search service is running and no\nprovisioning operations are underway. 'provisioning': The search service is being provisioned or scaled up or down.\n'deleting': The search service is being deleted. 'degraded': The search service is degraded. This can occur when the\nunderlying search units are not healthy. The search service is most likely operational, but performance might be slow\nand some requests might be dropped. 'disabled': The search service is disabled. In this state, the service will reject\nall API requests. 'error': The search service is in an error state. If your service is in the degraded, disabled, or\nerror states, it means the Azure Cognitive Search team is actively investigating the underlying issue. Dedicated\nservices in these states are still chargeable based on the number of search units provisioned.",
          "type": "string"
        },
        "statusDetails": {
          "description": "StatusDetails: The details of the search service status.",
          "type": "string"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Resource tags.",
          "type": "object"
        },
        "type": {
          "description": "Type: The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or \"Microsoft.Storage/storageAccounts\"",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
