{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/azure-ai-search/json-schema/azure-ai-search-search-service-update-schema.json",
  "title": "SearchServiceUpdate",
  "description": "The parameters used to update an Azure AI Search service.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/azure-ai-search-services-api-openapi.yml#/components/schemas/SearchServiceUpdate",
  "type": "object",
  "properties": {
    "properties": {
      "$ref": "#/$defs/SearchServiceProperties",
      "description": "Properties of the search service.",
      "x-ms-client-flatten": true
    },
    "sku": {
      "$ref": "#/$defs/Sku",
      "description": "The SKU of the search service, which determines price tier and capacity limits. This property is required when creating a new search service."
    },
    "location": {
      "type": "string",
      "description": "The geographic location of the resource. This must be one of the supported and registered Azure geo regions (for example, West US, East US, Southeast Asia, and so forth). This property is required when creating a new resource.",
      "x-ms-mutability": [
        "read",
        "create"
      ]
    },
    "tags": {
      "type": "object",
      "description": "Tags to help categorize the resource in the Azure portal.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "identity": {
      "$ref": "#/$defs/Identity",
      "description": "Details about the search service identity. A null value indicates that the search service has no identity assigned."
    }
  },
  "allOf": [
    {
      "$ref": "#/$defs/Resource"
    }
  ],
  "$defs": {
    "AadAuthFailureMode": {
      "type": "string",
      "description": "Describes what response the data plane API of a search service would send for requests that failed authentication.",
      "enum": [
        "http403",
        "http401WithBearerChallenge"
      ],
      "x-ms-enum": {
        "name": "AadAuthFailureMode",
        "modelAsString": false,
        "values": [
          {
            "name": "Http403",
            "value": "http403",
            "description": "Indicates that requests that failed authentication should be presented with an HTTP status code of 403 (Forbidden)."
          },
          {
            "name": "Http401WithBearerChallenge",
            "value": "http401WithBearerChallenge",
            "description": "Indicates that requests that failed authentication should be presented with an HTTP status code of 401 (Unauthorized) and present a Bearer Challenge."
          }
        ]
      }
    },
    "ComputeType": {
      "type": "string",
      "description": "Configure this property to support the search service using either the Default Compute or Azure Confidential Compute.",
      "enum": [
        "Default",
        "Confidential"
      ],
      "x-ms-enum": {
        "name": "ComputeType",
        "modelAsString": true,
        "values": [
          {
            "name": "Default",
            "value": "Default",
            "description": "Create the service with the Default Compute."
          },
          {
            "name": "Confidential",
            "value": "Confidential",
            "description": "Create the dedicated service with Azure Confidential Compute."
          }
        ]
      }
    },
    "DataPlaneAadOrApiKeyAuthOption": {
      "type": "object",
      "description": "Indicates that either the API key or an access token from a Microsoft Entra ID tenant can be used for authentication.",
      "properties": {
        "aadAuthFailureMode": {
          "$ref": "#/$defs/AadAuthFailureMode",
          "description": "Describes what response the data plane API of a search service would send for requests that failed authentication."
        }
      }
    },
    "DataPlaneAuthOptions": {
      "type": "object",
      "description": "Defines the options for how the search service authenticates a data plane request. This cannot be set if 'disableLocalAuth' is set to true.",
      "properties": {
        "apiKeyOnly": {
          "description": "Indicates that only the API key can be used for authentication."
        },
        "aadOrApiKey": {
          "$ref": "#/$defs/DataPlaneAadOrApiKeyAuthOption",
          "description": "Indicates that either the API key or an access token from a Microsoft Entra ID tenant can be used for authentication."
        }
      }
    },
    "EncryptionWithCmk": {
      "type": "object",
      "description": "Describes a policy that determines how resources within the search service are to be encrypted with customer managed keys.",
      "properties": {
        "enforcement": {
          "$ref": "#/$defs/SearchEncryptionWithCmk",
          "description": "Describes how a search service should enforce compliance if it finds objects that aren't encrypted with the customer-managed key."
        },
        "encryptionComplianceStatus": {
          "$ref": "#/$defs/SearchEncryptionComplianceStatus",
          "description": "Returns the status of search service compliance with respect to non-CMK-encrypted objects. If a service has more than one unencrypted object, and enforcement is enabled, the service is marked as noncompliant.",
          "readOnly": true
        }
      }
    },
    "Identity": {
      "type": "object",
      "description": "Details about the search service identity. A null value indicates that the search service has no identity assigned.",
      "properties": {
        "principalId": {
          "type": "string",
          "description": "The principal ID of the system-assigned identity of the search service.",
          "readOnly": true
        },
        "tenantId": {
          "type": "string",
          "description": "The tenant ID of the system-assigned identity of the search service.",
          "readOnly": true
        },
        "type": {
          "$ref": "#/$defs/IdentityType",
          "description": "The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an identity created by the system and a set of user assigned identities. The type 'None' will remove all identities from the service."
        },
        "userAssignedIdentities": {
          "type": "object",
          "description": "The list of user identities associated with the resource. The user identity dictionary key references will be ARM resource IDs in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.",
          "additionalProperties": {
            "$ref": "#/$defs/UserAssignedIdentity"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "IdentityType": {
      "type": "string",
      "description": "The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an identity created by the system and a set of user assigned identities. The type 'None' will remove all identities from the service.",
      "enum": [
        "None",
        "SystemAssigned",
        "UserAssigned",
        "SystemAssigned, UserAssigned"
      ],
      "x-ms-enum": {
        "name": "IdentityType",
        "modelAsString": true,
        "values": [
          {
            "name": "None",
            "value": "None",
            "description": "Indicates that any identity associated with the search service needs to be removed."
          },
          {
            "name": "SystemAssigned",
            "value": "SystemAssigned",
            "description": "Indicates that system-assigned identity for the search service will be enabled."
          },
          {
            "name": "UserAssigned",
            "value": "UserAssigned",
            "description": "Indicates that one or more user assigned identities will be assigned to the search service."
          },
          {
            "name": "SystemAssigned, UserAssigned",
            "value": "SystemAssigned, UserAssigned",
            "description": "Indicates that system-assigned identity for the search service will be enabled along with the assignment of one or more user assigned identities."
          }
        ]
      }
    },
    "IpRule": {
      "type": "object",
      "description": "The IP restriction rule of the Azure AI Search service.",
      "properties": {
        "value": {
          "type": "string",
          "description": "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."
        }
      }
    },
    "KnowledgeRetrieval": {
      "type": "string",
      "description": "Specifies the billing plan for agentic retrieval on the Azure AI Search service. This configuration is only available for certain pricing tiers in certain regions.",
      "enum": [
        "free",
        "standard"
      ],
      "x-ms-enum": {
        "name": "KnowledgeRetrieval",
        "modelAsString": true,
        "values": [
          {
            "name": "free",
            "value": "free",
            "description": "Enables knowledge retrieval on a search service and indicates that it is to be used within the limits of the free plan. The free plan would cap the volume of knowledge retrieval requests and is offered at no extra charge."
          },
          {
            "name": "standard",
            "value": "standard",
            "description": "Enables knowledge retrieval on a search service as a billable feature after the free quota is exhausted, with higher throughput and volume of knowledge retrieval requests."
          }
        ]
      }
    },
    "NetworkRuleSet": {
      "type": "object",
      "description": "Network specific rules that determine how the Azure AI Search service may be reached.",
      "properties": {
        "ipRules": {
          "type": "array",
          "description": "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.",
          "items": {
            "$ref": "#/$defs/IpRule"
          }
        },
        "bypass": {
          "$ref": "#/$defs/SearchBypass",
          "description": "Possible origins of inbound traffic that can bypass the rules defined in the 'ipRules' section."
        }
      }
    },
    "PrivateEndpointConnection": {
      "type": "object",
      "description": "Describes an existing private endpoint connection to the Azure AI Search service.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/PrivateEndpointConnectionProperties",
          "description": "Describes the properties of an existing private endpoint connection to the Azure AI Search service."
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/ProxyResource"
        }
      ]
    },
    "PrivateEndpointConnectionProperties": {
      "type": "object",
      "description": "Describes the properties of an existing private endpoint connection to the search service.",
      "properties": {
        "privateEndpoint": {
          "$ref": "#/$defs/PrivateEndpointConnectionPropertiesPrivateEndpoint",
          "description": "The private endpoint resource from Microsoft.Network provider."
        },
        "privateLinkServiceConnectionState": {
          "$ref": "#/$defs/PrivateEndpointConnectionPropertiesPrivateLinkServiceConnectionState",
          "description": "Describes the current state of an existing Azure Private Link service connection to the private endpoint."
        },
        "groupId": {
          "type": "string",
          "description": "The group ID of the Azure resource for which the private link service is for."
        },
        "provisioningState": {
          "$ref": "#/$defs/PrivateLinkServiceConnectionProvisioningState",
          "description": "The provisioning state of the private link service connection. Valid values are Updating, Deleting, Failed, Succeeded, Incomplete, or Canceled."
        }
      }
    },
    "PrivateEndpointConnectionPropertiesPrivateEndpoint": {
      "type": "object",
      "description": "The private endpoint resource from Microsoft.Network provider.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The resource ID of the private endpoint resource from Microsoft.Network provider."
        }
      }
    },
    "PrivateEndpointConnectionPropertiesPrivateLinkServiceConnectionState": {
      "type": "object",
      "description": "Describes the current state of an existing Azure Private Link service connection to the private endpoint.",
      "properties": {
        "status": {
          "$ref": "#/$defs/PrivateLinkServiceConnectionStatus",
          "description": "Status of the the private link service connection. Valid values are Pending, Approved, Rejected, or Disconnected."
        },
        "description": {
          "type": "string",
          "description": "The description for the private link service connection state."
        },
        "actionsRequired": {
          "type": "string",
          "description": "A description of any extra actions that may be required.",
          "default": "None"
        }
      }
    },
    "PrivateLinkServiceConnectionProvisioningState": {
      "type": "string",
      "description": "The provisioning state of the private link service connection. Valid values are Updating, Deleting, Failed, Succeeded, Incomplete, or Canceled.",
      "enum": [
        "Updating",
        "Deleting",
        "Failed",
        "Succeeded",
        "Incomplete",
        "Canceled"
      ],
      "x-ms-enum": {
        "name": "PrivateLinkServiceConnectionProvisioningState",
        "modelAsString": true,
        "values": [
          {
            "name": "Updating",
            "value": "Updating",
            "description": "The private link service connection is in the process of being created along with other resources for it to be fully functional."
          },
          {
            "name": "Deleting",
            "value": "Deleting",
            "description": "The private link service connection is in the process of being deleted."
          },
          {
            "name": "Failed",
            "value": "Failed",
            "description": "The private link service connection has failed to be provisioned or deleted."
          },
          {
            "name": "Succeeded",
            "value": "Succeeded",
            "description": "The private link service connection has finished provisioning and is ready for approval."
          },
          {
            "name": "Incomplete",
            "value": "Incomplete",
            "description": "Provisioning request for the private link service connection resource has been accepted but the process of creation has not commenced yet."
          },
          {
            "name": "Canceled",
            "value": "Canceled",
            "description": "Provisioning request for the private link service connection resource has been canceled."
          }
        ]
      }
    },
    "PrivateLinkServiceConnectionStatus": {
      "type": "string",
      "description": "Status of the the private link service connection. Valid values are Pending, Approved, Rejected, or Disconnected.",
      "enum": [
        "Pending",
        "Approved",
        "Rejected",
        "Disconnected"
      ],
      "x-ms-enum": {
        "name": "PrivateLinkServiceConnectionStatus",
        "modelAsString": false,
        "values": [
          {
            "name": "Pending",
            "value": "Pending",
            "description": "The private endpoint connection has been created and is pending approval."
          },
          {
            "name": "Approved",
            "value": "Approved",
            "description": "The private endpoint connection is approved and is ready for use."
          },
          {
            "name": "Rejected",
            "value": "Rejected",
            "description": "The private endpoint connection has been rejected and cannot be used."
          },
          {
            "name": "Disconnected",
            "value": "Disconnected",
            "description": "The private endpoint connection has been removed from the service."
          }
        ]
      }
    },
    "ProvisioningState": {
      "type": "string",
      "description": "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.",
      "enum": [
        "succeeded",
        "provisioning",
        "failed"
      ],
      "x-ms-enum": {
        "name": "ProvisioningState",
        "modelAsString": false,
        "values": [
          {
            "name": "Succeeded",
            "value": "succeeded",
            "description": "The last provisioning operation has completed successfully."
          },
          {
            "name": "Provisioning",
            "value": "provisioning",
            "description": "The search service is being provisioned or scaled up or down. For dedicated search services only."
          },
          {
            "name": "Failed",
            "value": "failed",
            "description": "The last provisioning operation has failed."
          }
        ]
      }
    },
    "ProxyResource": {
      "type": "object",
      "title": "Proxy Resource",
      "description": "The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location",
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        }
      ]
    },
    "Resource": {
      "type": "object",
      "title": "Resource",
      "description": "Common fields that are returned in the response for all Azure Resource Manager resources",
      "properties": {
        "id": {
          "type": "string",
          "format": "arm-id",
          "description": "Fully qualified resource ID for the resource. E.g. \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}\"",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of the resource",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or \"Microsoft.Storage/storageAccounts\"",
          "readOnly": true
        },
        "systemData": {
          "$ref": "#/$defs/systemData",
          "description": "Azure Resource Manager metadata containing createdBy and modifiedBy information.",
          "readOnly": true
        }
      },
      "x-ms-azure-resource": true
    },
    "SearchBypass": {
      "type": "string",
      "description": "Possible origins of inbound traffic that can bypass the rules defined in the 'ipRules' section.",
      "enum": [
        "None",
        "AzureServices"
      ],
      "x-ms-enum": {
        "name": "SearchBypass",
        "modelAsString": true,
        "values": [
          {
            "name": "None",
            "value": "None",
            "description": "Indicates that no origin can bypass the rules defined in the 'ipRules' section. This is the default."
          },
          {
            "name": "AzureServices",
            "value": "AzureServices",
            "description": "Indicates that requests originating from Azure trusted services can bypass the rules defined in the 'ipRules' section."
          }
        ]
      }
    },
    "SearchDataExfiltrationProtection": {
      "type": "string",
      "description": "A specific data exfiltration scenario that is disabled for the service.",
      "enum": [
        "BlockAll"
      ],
      "x-ms-enum": {
        "name": "SearchDataExfiltrationProtection",
        "modelAsString": true,
        "values": [
          {
            "name": "BlockAll",
            "value": "BlockAll",
            "description": "Indicates that all data exfiltration scenarios are disabled."
          }
        ]
      }
    },
    "SearchEncryptionComplianceStatus": {
      "type": "string",
      "description": "Returns the status of search service compliance with respect to non-CMK-encrypted objects. If a service has more than one unencrypted object, and enforcement is enabled, the service is marked as noncompliant.",
      "enum": [
        "Compliant",
        "NonCompliant"
      ],
      "x-ms-enum": {
        "name": "SearchEncryptionComplianceStatus",
        "modelAsString": false,
        "values": [
          {
            "name": "Compliant",
            "value": "Compliant",
            "description": "Indicates that the search service is compliant, either because the number of non-CMK-encrypted objects is zero or enforcement is disabled."
          },
          {
            "name": "NonCompliant",
            "value": "NonCompliant",
            "description": "Indicates that the search service has more than one non-CMK-encrypted objects."
          }
        ]
      }
    },
    "SearchEncryptionWithCmk": {
      "type": "string",
      "description": "Describes how a search service should enforce compliance if it finds objects that aren't encrypted with the customer-managed key.",
      "enum": [
        "Disabled",
        "Enabled",
        "Unspecified"
      ],
      "x-ms-enum": {
        "name": "SearchEncryptionWithCmk",
        "modelAsString": false,
        "values": [
          {
            "name": "Disabled",
            "value": "Disabled",
            "description": "No enforcement of customer-managed key encryption will be made. Only the built-in service-managed encryption is used."
          },
          {
            "name": "Enabled",
            "value": "Enabled",
            "description": "Search service will be marked as non-compliant if one or more objects aren't encrypted with a customer-managed key."
          },
          {
            "name": "Unspecified",
            "value": "Unspecified",
            "description": "Enforcement policy is not explicitly specified, with the behavior being the same as if it were set to 'Disabled'."
          }
        ]
      }
    },
    "SearchSemanticSearch": {
      "type": "string",
      "description": "Specifies the availability and billing plan for semantic search on the Azure AI Search service. This configuration is only available for certain pricing tiers in certain regions.",
      "enum": [
        "disabled",
        "free",
        "standard"
      ],
      "x-ms-enum": {
        "name": "SearchSemanticSearch",
        "modelAsString": true,
        "values": [
          {
            "name": "disabled",
            "value": "disabled",
            "description": "Indicates that semantic reranker is disabled for the search service."
          },
          {
            "name": "free",
            "value": "free",
            "description": "Enables semantic reranker on a search service and indicates that it is to be used within the limits of the free plan. The free plan would cap the volume of semantic ranking requests and is offered at no extra charge. This is the default for newly provisioned search services. This is the default."
          },
          {
            "name": "standard",
            "value": "standard",
            "description": "Enables semantic reranker on a search service as a billable feature after the free quota is exhausted, with higher throughput and volume of semantically reranked queries."
          }
        ]
      }
    },
    "SearchServiceProperties": {
      "type": "object",
      "description": "Properties of the search service.",
      "properties": {
        "replicaCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of replicas in the dedicated 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.",
          "default": 1,
          "minimum": 1,
          "maximum": 12
        },
        "partitionCount": {
          "type": "integer",
          "format": "int32",
          "description": "The number of partitions in the dedicated 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.",
          "default": 1,
          "minimum": 1,
          "maximum": 12
        },
        "endpoint": {
          "type": "string",
          "format": "uri",
          "description": "The endpoint of the Azure AI Search service."
        },
        "hostingMode": {
          "type": "string",
          "description": "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'.",
          "default": "Default",
          "enum": [
            "Default",
            "HighDensity"
          ],
          "x-ms-enum": {
            "name": "HostingMode",
            "modelAsString": false,
            "values": [
              {
                "name": "Default",
                "value": "Default",
                "description": "The maximum limit of indexes is determined by the SKU or pricing tier."
              },
              {
                "name": "HighDensity",
                "value": "HighDensity",
                "description": "Only applies to the Standard3 (S3) SKU, where the search services can have up to 1,000 indexes."
              }
            ]
          }
        },
        "computeType": {
          "$ref": "#/$defs/ComputeType",
          "description": "Configure this property to support the search service using either the Default Compute or Azure Confidential Compute."
        },
        "publicNetworkAccess": {
          "type": "string",
          "description": "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.",
          "default": "Enabled",
          "enum": [
            "Enabled",
            "Disabled",
            "SecuredByPerimeter"
          ],
          "x-ms-enum": {
            "name": "PublicNetworkAccess",
            "modelAsString": true,
            "values": [
              {
                "name": "Enabled",
                "value": "Enabled",
                "description": "The search service is accessible from traffic originating from the public internet."
              },
              {
                "name": "Disabled",
                "value": "Disabled",
                "description": "The search service is not accessible from traffic originating from the public internet. Access is only permitted over approved private endpoint connections."
              },
              {
                "name": "SecuredByPerimeter",
                "value": "SecuredByPerimeter",
                "description": "The network security perimeter configuration rules allow or disallow public network access to the resource. Requires an associated network security perimeter."
              }
            ]
          }
        },
        "status": {
          "$ref": "#/$defs/SearchServiceStatus",
          "description": "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. 'stopped': The search service is in a subscription that's disabled. If your service is in the degraded, disabled, or error states, it means the Azure AI Search team is actively investigating the underlying issue. Dedicated services in these states are still chargeable based on the number of search units provisioned.",
          "readOnly": true
        },
        "statusDetails": {
          "type": "string",
          "description": "The details of the search service status.",
          "readOnly": true
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "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.",
          "readOnly": true
        },
        "networkRuleSet": {
          "$ref": "#/$defs/NetworkRuleSet",
          "description": "Network specific rules that determine how the Azure AI Search service may be reached."
        },
        "dataExfiltrationProtections": {
          "type": "array",
          "description": "A list of data exfiltration scenarios that are explicitly disallowed for the search service. Currently, the only supported value is 'All' to disable all possible data export scenarios with more fine grained controls planned for the future.",
          "items": {
            "$ref": "#/$defs/SearchDataExfiltrationProtection"
          }
        },
        "encryptionWithCmk": {
          "$ref": "#/$defs/EncryptionWithCmk",
          "description": "Specifies any policy regarding encryption of resources (such as indexes) using customer manager keys within a search service."
        },
        "disableLocalAuth": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "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."
        },
        "authOptions": {
          "$ref": "#/$defs/DataPlaneAuthOptions",
          "description": "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."
        },
        "semanticSearch": {
          "$ref": "#/$defs/SearchSemanticSearch",
          "description": "Specifies the availability and billing plan for semantic search on the Azure AI Search service. This configuration is only available for certain pricing tiers in certain regions."
        },
        "knowledgeRetrieval": {
          "$ref": "#/$defs/KnowledgeRetrieval",
          "description": "Specifies the billing plan for agentic retrieval on the Azure AI Search service. This configuration is only available for certain pricing tiers in certain regions."
        },
        "privateEndpointConnections": {
          "type": "array",
          "description": "The list of private endpoint connections to the Azure AI Search service.",
          "items": {
            "$ref": "#/$defs/PrivateEndpointConnection"
          },
          "readOnly": true
        },
        "sharedPrivateLinkResources": {
          "type": "array",
          "description": "The list of shared private link resources managed by the Azure AI Search service.",
          "items": {
            "$ref": "#/$defs/SharedPrivateLinkResource"
          },
          "readOnly": true
        },
        "eTag": {
          "type": "string",
          "description": "A system generated property representing the service's etag that can be for optimistic concurrency control during updates.",
          "readOnly": true
        },
        "upgradeAvailable": {
          "$ref": "#/$defs/UpgradeAvailable",
          "description": "Indicates if the search service has an upgrade available."
        },
        "serviceUpgradedAt": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the search service was last upgraded. This field will be null until the service gets upgraded for the first time.",
          "readOnly": true
        }
      }
    },
    "SearchServiceStatus": {
      "type": "string",
      "description": "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. 'stopped': The search service is in a subscription that's disabled. If your service is in the degraded, disabled, or error states, it means the Azure AI Search team is actively investigating the underlying issue. Dedicated services in these states are still chargeable based on the number of search units provisioned.",
      "enum": [
        "running",
        "provisioning",
        "deleting",
        "degraded",
        "disabled",
        "error",
        "stopped"
      ],
      "x-ms-enum": {
        "name": "SearchServiceStatus",
        "modelAsString": false,
        "values": [
          {
            "name": "Running",
            "value": "running",
            "description": "The search service is running and no provisioning operations are underway."
          },
          {
            "name": "Provisioning",
            "value": "provisioning",
            "description": "The search service is being provisioned or scaled up or down."
          },
          {
            "name": "Deleting",
            "value": "deleting",
            "description": "The search service is being deleted."
          },
          {
            "name": "Degraded",
            "value": "degraded",
            "description": "The search service is degraded because underlying search units are not healthy."
          },
          {
            "name": "Disabled",
            "value": "disabled",
            "description": "The search service is disabled and all API requests will be rejected."
          },
          {
            "name": "Error",
            "value": "error",
            "description": "The search service is in error state, indicating either a failure to provision or to be deleted."
          },
          {
            "name": "Stopped",
            "value": "stopped",
            "description": "The search service is in a subscription that's disabled."
          }
        ]
      }
    },
    "SharedPrivateLinkResource": {
      "type": "object",
      "description": "Describes a shared private link resource managed by the Azure AI Search service.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/SharedPrivateLinkResourceProperties",
          "description": "Describes the properties of a shared private link resource managed by the Azure AI Search service."
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/ProxyResource"
        }
      ]
    },
    "SharedPrivateLinkResourceProperties": {
      "type": "object",
      "description": "Describes the properties of an existing shared private link resource managed by the Azure AI Search service.",
      "properties": {
        "privateLinkResourceId": {
          "type": "string",
          "description": "The resource ID of the resource the shared private link resource is for."
        },
        "groupId": {
          "type": "string",
          "description": "The group ID from the provider of resource the shared private link resource is for."
        },
        "requestMessage": {
          "type": "string",
          "description": "The message for requesting approval of the shared private link resource."
        },
        "resourceRegion": {
          "type": "string",
          "description": "Optional. Can be used to specify the Azure Resource Manager location of the resource for which a shared private link is being created. This is only required for those resources whose DNS configuration are regional (such as Azure Kubernetes Service)."
        },
        "status": {
          "$ref": "#/$defs/SharedPrivateLinkResourceStatus",
          "description": "Status of the shared private link resource. Valid values are Pending, Approved, Rejected or Disconnected."
        },
        "provisioningState": {
          "$ref": "#/$defs/SharedPrivateLinkResourceProvisioningState",
          "description": "The provisioning state of the shared private link resource. Valid values are Updating, Deleting, Failed, Succeeded or Incomplete."
        }
      }
    },
    "SharedPrivateLinkResourceProvisioningState": {
      "type": "string",
      "description": "The provisioning state of the shared private link resource. Valid values are Updating, Deleting, Failed, Succeeded or Incomplete.",
      "enum": [
        "Updating",
        "Deleting",
        "Failed",
        "Succeeded",
        "Incomplete"
      ],
      "x-ms-enum": {
        "name": "SharedPrivateLinkResourceProvisioningState",
        "modelAsString": true,
        "values": [
          {
            "name": "Updating",
            "value": "Updating",
            "description": "The shared private link resource is in the process of being created along with other resources for it to be fully functional."
          },
          {
            "name": "Deleting",
            "value": "Deleting",
            "description": "The shared private link resource is in the process of being deleted."
          },
          {
            "name": "Failed",
            "value": "Failed",
            "description": "The shared private link resource has failed to be provisioned or deleted."
          },
          {
            "name": "Succeeded",
            "value": "Succeeded",
            "description": "The shared private link resource has finished provisioning and is ready for approval."
          },
          {
            "name": "Incomplete",
            "value": "Incomplete",
            "description": "Provisioning request for the shared private link resource has been accepted but the process of creation has not commenced yet."
          }
        ]
      }
    },
    "SharedPrivateLinkResourceStatus": {
      "type": "string",
      "description": "Status of the shared private link resource. Valid values are Pending, Approved, Rejected or Disconnected.",
      "enum": [
        "Pending",
        "Approved",
        "Rejected",
        "Disconnected"
      ],
      "x-ms-enum": {
        "name": "SharedPrivateLinkResourceStatus",
        "modelAsString": true,
        "values": [
          {
            "name": "Pending",
            "value": "Pending",
            "description": "The shared private link resource has been created and is pending approval."
          },
          {
            "name": "Approved",
            "value": "Approved",
            "description": "The shared private link resource is approved and is ready for use."
          },
          {
            "name": "Rejected",
            "value": "Rejected",
            "description": "The shared private link resource has been rejected and cannot be used."
          },
          {
            "name": "Disconnected",
            "value": "Disconnected",
            "description": "The shared private link resource has been removed from the service."
          }
        ]
      }
    },
    "Sku": {
      "type": "object",
      "description": "Defines the SKU of a search service, which determines billing rate and capacity limits.",
      "properties": {
        "name": {
          "$ref": "#/$defs/SkuName",
          "description": "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. 'serverless': Serverless tier with auto-scaling capabilities."
        }
      }
    },
    "SkuName": {
      "type": "string",
      "description": "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. 'serverless': Serverless tier with auto-scaling capabilities.",
      "enum": [
        "free",
        "basic",
        "standard",
        "standard2",
        "standard3",
        "storage_optimized_l1",
        "storage_optimized_l2",
        "serverless"
      ],
      "x-ms-enum": {
        "name": "SkuName",
        "modelAsString": true,
        "values": [
          {
            "name": "Free",
            "value": "free",
            "description": "Free tier, with no SLA guarantees and a subset of the features offered on billable tiers."
          },
          {
            "name": "Basic",
            "value": "basic",
            "description": "Billable tier for a dedicated service having up to 3 replicas."
          },
          {
            "name": "Standard",
            "value": "standard",
            "description": "Billable tier for a dedicated service having up to 12 partitions and 12 replicas."
          },
          {
            "name": "Standard2",
            "value": "standard2",
            "description": "Similar to 'standard', but with more capacity per search unit."
          },
          {
            "name": "Standard3",
            "value": "standard3",
            "description": "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')."
          },
          {
            "name": "StorageOptimizedL1",
            "value": "storage_optimized_l1",
            "description": "Billable tier for a dedicated service that supports 1TB per partition, up to 12 partitions."
          },
          {
            "name": "StorageOptimizedL2",
            "value": "storage_optimized_l2",
            "description": "Billable tier for a dedicated service that supports 2TB per partition, up to 12 partitions."
          },
          {
            "name": "Serverless",
            "value": "serverless",
            "description": "Serverless tier, offering low-touch, consumption-based, and pay-as-you-go experience, with auto-scaling capabilities."
          }
        ]
      }
    },
    "UpgradeAvailable": {
      "type": "string",
      "description": "Indicates if the dedicated search service has an upgrade available.",
      "enum": [
        "notAvailable",
        "available"
      ],
      "x-ms-enum": {
        "name": "UpgradeAvailable",
        "modelAsString": true,
        "values": [
          {
            "name": "NotAvailable",
            "value": "notAvailable",
            "description": "An upgrade is currently not available for the dedicated service."
          },
          {
            "name": "Available",
            "value": "available",
            "description": "There is an upgrade available for the dedicated service."
          }
        ]
      }
    },
    "UserAssignedIdentity": {
      "type": "object",
      "description": "User assigned identity properties",
      "properties": {
        "principalId": {
          "type": "string",
          "format": "uuid",
          "description": "The principal ID of the assigned identity.",
          "readOnly": true
        },
        "clientId": {
          "type": "string",
          "format": "uuid",
          "description": "The client ID of the assigned identity.",
          "readOnly": true
        }
      }
    }
  }
}