Skip to content

[AzureSearch] Resource Manager 2026-03-01-preview Release#40408

Open
yangylu91 wants to merge 21 commits intomainfrom
yangylu/search-rp-2026-03-01-preview
Open

[AzureSearch] Resource Manager 2026-03-01-preview Release#40408
yangylu91 wants to merge 21 commits intomainfrom
yangylu/search-rp-2026-03-01-preview

Conversation

@yangylu91
Copy link
Member

ARM (Control Plane) API Specification Update Pull Request

Tip

Overwhelmed by all this guidance? See the Getting help section at the bottom of this PR description.

PR review workflow diagram

Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

spec_pr_review_workflow_diagram

Purpose of this PR

What's the purpose of this PR? Check the specific option that applies. This is mandatory!

  • New resource provider.
  • New API version for an existing resource provider. (If API spec is not defined in TypeSpec, the PR should have been created in adherence to OpenAPI specs PR creation guidance).
  • Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
  • Update existing version to fix OpenAPI spec quality issues in S360.
  • Convert existing OpenAPI spec to TypeSpec spec (do not combine this with implementing changes for a new API version).
  • Other, please clarify:
    • edit this with your clarification

Due diligence checklist

To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

  • I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
  • I have reviewed following Resource Provider guidelines, including
    ARM resource provider contract and
    REST guidelines (estimated time: 4 hours).
    I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.
  • A release plan has been created. If not, please create one as it will help guide you through the REST API and SDK creation process.

Additional information

This PR was recreated for Search Resource Manager 2026-03-01-preview, based on #40123.

Reason: After the previous PR was created, the stable 2025-05-01 Swagger in main was converted from hand-authored to TSP-compiled. Since the earlier PR was based on the hand-authored version, CI reported many false-positive breaking changes (e.g., inline schemas vs. definition references with equivalent semantics). To avoid noisy diffs, we recreated the PR and applied the 2026-03-01-preview changes on top of the TSP-compiled 2025-05-01 Swagger.

Future plan: The timeline for 2026-03-01-preview overlaps with the 2025-05-01 TSP migration, so this release continues to use Swagger-based changes. We will fully migrate to TSP and develop in TSP starting with the next RP release.

Viewing API changes For convenient view of the API changes made by this PR, refer to the URLs provided in the table in the `Generated ApiView` comment added to this PR. You can use ApiView to show API versions diff.
Suppressing failures If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the [suppressions guide](https://aka.ms/azsdk/pr-suppressions) to get approval.

Getting help

  • First, please carefully read through this PR description, from top to bottom. Please fill out the Purpose of this PR and Due diligence checklist.
  • If you don't have permissions to remove or add labels to the PR, request write access per aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositories
  • To understand what you must do next to merge this PR, see the Next Steps to Merge comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.
  • For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
    and https://aka.ms/ci-fix.
  • For help with ARM review (PR workflow diagram Step 2), see https://aka.ms/azsdk/pr-arm-review.
  • If the PR CI checks appear to be stuck in queued state, please add a comment with contents /azp run.
    This should result in a new comment denoting a PR validation pipeline has started and the checks should be updated after few minutes.
  • If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.
  • For guidance on SDK breaking change review, refer to https://aka.ms/ci-fix.

@github-actions
Copy link

github-actions bot commented Feb 13, 2026

Next Steps to Merge

Next steps that must be taken to merge this PR:
  • ❌ This PR targets either the main branch of the public specs repo or the RPSaaSMaster branch of the private specs repo. These branches are not intended for iterative development. Therefore, you must acknowledge you understand that after this PR is merged, the APIs are considered shipped to Azure customers. Any further attempts at in-place modifications to the APIs will be subject to Azure's versioning and breaking change policies. Additionally, for control plane APIs, you must acknowledge that you are following all the best practices documented by ARM at aka.ms/armapibestpractices. If you do intend to release the APIs to your customers by merging this PR, add the PublishToCustomers label to your PR in acknowledgement of the above. Otherwise, retarget this PR onto a feature branch, i.e. with prefix release- (see aka.ms/azsdk/api-versions#release--branches).
  • ❌ This PR is in purview of the ARM review (label: ARMReview). This PR must get ARMSignedOff label from an ARM reviewer.
    This PR has ARMChangesRequested label. Please address or respond to feedback from the ARM API reviewer.
    When you are ready to continue the ARM API review, please remove the ARMChangesRequested label.
    Automation should then add WaitForARMFeedback label.
    ❗If you don't have permissions to remove the label, request write access per aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositories.
    For details of the ARM review, see aka.ms/azsdk/pr-arm-review


Comment generated by summarize-checks workflow run.

@github-actions github-actions bot added brownfield Brownfield services will soon be required to convert to TypeSpec. See https://aka.ms/azsdk/typespec. ARMReview new-api-version resource-manager SuppressionReviewRequired WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Feb 13, 2026
@github-actions
Copy link

github-actions bot commented Feb 13, 2026

API Change Check

APIView identified API level changes in this PR and created the following API reviews

Language API Review for Package
Swagger Microsoft.Search-Search
Go sdk/resourcemanager/search/armsearch
JavaScript @azure/arm-search
Java com.azure.resourcemanager:azure-resourcemanager-search
Python azure-mgmt-search

Copy link
Contributor

Copilot AI commented Feb 24, 2026

@yangylu91 I've opened a new pull request, #40703, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link
Contributor

Copilot AI commented Feb 24, 2026

@yangylu91 I've opened a new pull request, #40704, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 4 commits February 24, 2026 14:59
* Initial plan

* Add missing systemData fields to SearchCreateOrUpdateService.json

Co-authored-by: yangylu91 <53235012+yangylu91@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yangylu91 <53235012+yangylu91@users.noreply.github.com>
…eAuthOptions example (#40704)

* Initial plan

* Fix inconsistent upgradeAvailable value in SearchCreateOrUpdateServiceAuthOptions example

Co-authored-by: yangylu91 <53235012+yangylu91@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yangylu91 <53235012+yangylu91@users.noreply.github.com>
@yangylu91
Copy link
Member Author

@psah434 We've updated the PR and resolved all comments. Could you pls take a look again? Thank you!

@yangylu91 yangylu91 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Feb 27, 2026
@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Feb 27, 2026
@yangylu91 yangylu91 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested labels Feb 27, 2026
Copy link
Contributor

@HeidiSteen HeidiSteen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry the late review. The main things: I don't see AR ops (KB, KB Retrieve, KS) in the SearchListOperations. Also, for the big "search.json" file, I think you might want to clarify if something is unique to dedicated services only.

"properties": {
"type": "Microsoft.Storage/storageAccounts",
"groupId": "blob",
"description": "Azure AI Search indexers can connect to blobs in Azure Storage for reading data from an indexer data source, for writing intermediate results of indexer execution or for storing any knowledge store projections."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This description doesn't mention private connections. Suggestion: "Indexers can make private connections to blobs in Azure Storage for reading data, writing to an enrichment cache, and writing to a knowledge store."

If debug sessions is also supported, I would add "saving a debug session" to the list.

"properties": {
"type": "Microsoft.Storage/storageAccounts",
"groupId": "table",
"description": "Azure AI Search indexers can connect to tables in Azure Storage for reading data from an indexer data source, for writing intermediate results of indexer execution or for storing any knowledge store projections."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

similar suggestion: "Indexers can make private connections to tables in Azure Storage for reading data, writing to an enrichment cache, and writing to a knowledge store."

"properties": {
"type": "Microsoft.DocumentDB/databaseAccounts",
"groupId": "Sql",
"description": "Azure AI Search indexers can connect to Azure Cosmos DB API for NoSQL for reading data from an indexer data source."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion for this + other DS: "can connect privately"

"provider": "Microsoft Search",
"resource": "Search Services",
"operation": "Get Search Service",
"description": "Reads the search service."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this for reading stuff like Get Service Stats or Get Index Stats? I suggest clarifying it so that people don't think it's a query action. Perhaps: "Returns index and indexer status and metrics, and object information."

"provider": "Microsoft Search",
"resource": "Search Services",
"operation": "Stop Search Service",
"description": "Stops the search service."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: "Unloads a serverless search service due to inactivity and pauses billing."

},
"provisioningState": {
"$ref": "#/definitions/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.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any qualifiers or interesting things to say about serverless provisioning?

},
"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.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

anything to say about serverless?

{
"name": "Disabled",
"value": "disabled",
"description": "The search service is disabled and all API requests will be rejected."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this serverless only? And should the description say "unloaded" ?

"properties": {
"name": {
"$ref": "#/definitions/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.'"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add serverless? If not, then suggest adding "dedicated" to this description and the one above.

},
"UpgradeAvailable": {
"type": "string",
"description": "Indicates if the search service has an upgrade available.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is dedicated only right? You can't switch from a dedicated tier to a serverless SKU I assume...

@yangylu91
Copy link
Member Author

Sorry the late review. The main things: I don't see AR ops (KB, KB Retrieve, KS) in the SearchListOperations. Also, for the big "search.json" file, I think you might want to clarify if something is unique to dedicated services only.

Synced offline with Heidi. Since this PR is likely to be reviewed today and our SDK work depends on it, we’ll proceed as planned. Given the release timeline, we’ll address the spec and example comments in a follow-up PR, as they are non-breaking.

- code: LroErrorContent
from: search.json
reason: Agreement with ARM reviewers to update in next API version.
- code: RequiredPropertiesMissingInResourceModel
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code: RequiredPropertiesMissingInResourceModel

I think this is flagged because your list is an array of non-resource objects, not because the container itself is not a resource. The values[] array should contain resource type instances with the standard ARM top-level properties. Basically, the point GET returns a resource and the collection GET returns an array of resources. Please fix the API spec and remove this suppression.

Copy link
Member Author

@yangylu91 yangylu91 Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the detailed feedback.

We discussed the suggested changes drafted in PR #40876 internally. Implementing the regional GET and updating the response shape would require corresponding service and client updates, as well as coordination with our UX team. As a result, the change introduces rollout and compatibility risks for this release.

We do want to address ARM guidance appropriately before GA. At the same time, we would like to avoid introducing unnecessary risk if this can be staged in a subsequent preview iteration.

Would it be acceptable to address this change in the next preview version prior to GA?

Appreciate your guidance.

@mentat9
Copy link
Member

mentat9 commented Feb 27, 2026

"/providers/Microsoft.Search/offerings": {

You also need a singleton GET request.


Refers to: specification/search/resource-manager/Microsoft.Search/Search/preview/2026-03-01-preview/search.json:102 in 6152339. [](commit_id = 6152339, deletion_comment = False)

@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Feb 27, 2026
@yangylu91 yangylu91 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested labels Mar 3, 2026
@psah434
Copy link
Member

psah434 commented Mar 3, 2026

please address comments from chris and heidi

@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Mar 3, 2026
@yangylu91
Copy link
Member Author

yangylu91 commented Mar 3, 2026

please address comments from chris and heidi

Got it.

For Heidi's feedback on description and examples: I've updated the offline sync agreement that we'll have a follow-up PR for updating descriptions separately.

For Chris' feedback on Offerings API: I've updated the internal discussion and requested to suppressing it in this preview and addressing it in next preview.


By 3/6: Talked with the oncale ARM reviewer Pallavi. Still waiting for the ARM review team's response on the suppression request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.