Skip to content

Conversation

nikitagarg123
Copy link
Member

@nikitagarg123 nikitagarg123 commented Jul 14, 2025

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

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 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.

Nikita Garg added 4 commits July 14, 2025 12:21
Copied the files in a separate commit.
This allows reviewers to easily diff subsequent changes against the previous spec.
Updated the API version from preview/2025-05-01-preview to stable/2025-07-01.
Copy link

openapi-pipeline-app bot commented Jul 14, 2025

Next Steps to Merge

⌛ Please wait. Next steps to merge this PR are being evaluated by automation. ⌛

Copy link

openapi-pipeline-app bot commented Jul 14, 2025

PR validation pipeline restarted successfully. If there is ApiView generated, it will be updated in this comment.

@github-actions github-actions bot added the brownfield Brownfield services will soon be required to convert to TypeSpec. See https://aka.ms/azsdk/typespec. label Jul 14, 2025
Copy link

github-actions bot commented Jul 14, 2025

API Change Check

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

Language API Review for Package
Swagger Microsoft.Cache
Go sdk/resourcemanager/redisenterprise/armredisenterprise
Java com.azure.resourcemanager:azure-resourcemanager-redisenterprise
JavaScript @azure/arm-redisenterprisecache
Python azure-mgmt-redisenterprise

@AzureRestAPISpecReview AzureRestAPISpecReview added ARMReview BreakingChangeReviewRequired <valid label in PR review process>add this label when breaking change review is required new-api-version NotReadyForARMReview resource-manager labels Jul 14, 2025
@nikitagarg123 nikitagarg123 added PublishToCustomers Acknowledgement the changes will be published to Azure customers. IDCDevDiv labels Jul 14, 2025
@mikekistler mikekistler added the BreakingChange-Approved-UserImpact Changes are not backward compatible and may cause customer disruption. label Jul 14, 2025
@AzureRestAPISpecReview AzureRestAPISpecReview added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed NotReadyForARMReview labels Jul 15, 2025
@openapi-pipeline-app openapi-pipeline-app bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Jul 31, 2025
@nikhgup nikhgup removed the DoNotMerge <valid label in PR review process> use to hold merge after approval label Jul 31, 2025
@nikitagarg123 nikitagarg123 added the DoNotMerge <valid label in PR review process> use to hold merge after approval label Jul 31, 2025
@microsoft-github-policy-service microsoft-github-policy-service bot added the no-recent-activity There has been no recent activity on this issue. label Aug 18, 2025
Copy link

github-actions bot commented Aug 18, 2025

Next Steps to Merge

Next steps that must be taken to merge this PR:
  • ❌ This PR is NotReadyForARMReview because it has the VersioningReviewRequired label.
  • ❌ This PR has at least one change violating Azure versioning policy (label: VersioningReviewRequired).
    To unblock this PR, either a) introduce a new API version with these changes instead of modifying an existing API version, or b) follow the process at aka.ms/brch.
  • ❌ The required check named Swagger Avocado has failed. Refer to the check in the PR's 'Checks' tab for details on how to fix it and consult the aka.ms/ci-fix guide


Comment generated by summarize-checks workflow run.

@microsoft-github-policy-service microsoft-github-policy-service bot removed the no-recent-activity There has been no recent activity on this issue. label Aug 18, 2025
@TimLovellSmith
Copy link
Member

      "enum": [

This doesn't even make sense does it?

Clusters created with old api versions should still be able to have public network access enabled/disabled can't they? So that people don't need to recreate the cluster to use it the new way?


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2118 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith
Copy link
Member

      "x-nullable": true

My take is this should not really be nullable.

People need to know whether public network access is enabled or disabled. Why can't we tell them that, instead of returning null? And why would we want to accept explicit 'null' in a create request? (as opposed to leaving it undefined)


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2126 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith
Copy link
Member

      "x-nullable": true

(I'm okay with this being null in the update requests, but not in the response)


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2154 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith
Copy link
Member

      "$ref": "#/definitions/ClusterCreateProperties",

Just a thought - leaving it named ClusterProperties might be better for backcompat than renaming it to ClusterCreateProperties?


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:1932 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith
Copy link
Member

      "$ref": "#/definitions/ClusterCreateProperties",

Also we return it from operations like GET which aren't create operations.


In reply to: 3202232049


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:1932 in 13a4ad1. [](commit_id = 13a4ad1, deletion_comment = False)

@TimLovellSmith
Copy link
Member

      }

to x-ms-enum we should add values, and document that 1.0 and 1.1 are no longer supported


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2004 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith
Copy link
Member

    "publicNetworkAccess": {

what is the reason this isn't in common properties?


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2143 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith
Copy link
Member

    "publicNetworkAccess": {

can we avoid defining the public network access enum twice, and just $ref it from both places? Or do we need separate enums?


In reply to: 3202239688


Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2143 in 13a4ad1. [](commit_id = 13a4ad1, deletion_comment = False)

"resourceState": "Updating",
"redisVersion": "5",
"minimumTlsVersion": "1.2",
"publicNetworkAccess": "Enabled"
Copy link
Member

Choose a reason for hiding this comment

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

"publicNetworkAccess": "Enabled"

can we include an example where we set public network access to null, if that is valid? (I don't think it is though)

Copy link
Member Author

Choose a reason for hiding this comment

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

yes, we won't allow null in PUT, I had to define because response and request should be same, and in GET response we return null for old caches

@nikitagarg123
Copy link
Member Author

      "enum": [

This doesn't even make sense does it?

Clusters created with old api versions should still be able to have public network access enabled/disabled can't they? So that people don't need to recreate the cluster to use it the new way?

Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2118 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith yes clusters created with old api versions can set public network access enabled/disabled
This statement means customers need to use enabled or disabled while setting the public network access and null is not allowed
we are adding x_nullable only for get response so that old caches can return this value and we can nudge customers to set this
in portal

@nikitagarg123
Copy link
Member Author

    "publicNetworkAccess": {

what is the reason this isn't in common properties?

Refers to: specification/redisenterprise/resource-manager/Microsoft.Cache/stable/2025-07-01/redisenterprise.json:2143 in bc8813d. [](commit_id = bc8813d, deletion_comment = False)

@TimLovellSmith since we are making this as required property, we can't have required in PATCH call
so I separated out Put and patch and added required only for put call

@TimLovellSmith
Copy link
Member

TimLovellSmith commented Aug 21, 2025

This doesn't even make sense does it?
Clusters created with old api versions should still be able to have public network access enabled/disabled can't they? So that people don't need to recreate the cluster to use it the new way?

@TimLovellSmith yes clusters created with old api versions can set public network access enabled/disabled This statement means customers need to use enabled or disabled while setting the public network access and null is not allowed we are adding x_nullable only for get response so that old caches can return this value and we can nudge customers to set this in portal

I basically don't think its a good idea to return 'null' for that. I'd suggest instead:
-either just return enabled/disabled to reflect the ACTUAL CURRENT enablement state
or
-introduce a 3rd enum value to return, instead of using null, with a more self-explanatory name than null

Copy link
Member

@TimLovellSmith TimLovellSmith left a comment

Choose a reason for hiding this comment

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

I have a concern that using nullable for publicNetworkAccess is inappropriate #resolved

@TimLovellSmith
Copy link
Member

I have a concern that using nullable for publicNetworkAccess is inappropriate

I had a long conversation with the feature team. There are a lot of special extenuating circumstances particular to this API to approve.

@nikitagarg123 nikitagarg123 merged commit 9158dab into Azure:main Sep 25, 2025
121 of 122 checks passed
@github-actions github-actions bot added VersioningReviewRequired <valid label in PR review process>add this label when versioning review is required NotReadyForARMReview and removed BreakingChangeReviewRequired <valid label in PR review process>add this label when breaking change review is required ARMSignedOff <valid label in PR review process>add this label when ARM approve updates after review labels Sep 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ARMReview BreakingChange-Approved-UserImpact Changes are not backward compatible and may cause customer disruption. BreakingChange-Go-Sdk-Suppression BreakingChange-Go-Sdk-Suppression-Approved BreakingChange-JavaScript-Sdk BreakingChange-JavaScript-Sdk-Approved BreakingChange-Python-Sdk BreakingChange-Python-Sdk-Approved brownfield Brownfield services will soon be required to convert to TypeSpec. See https://aka.ms/azsdk/typespec. DoNotMerge <valid label in PR review process> use to hold merge after approval IDCDevDiv new-api-version NotReadyForARMReview PublishToCustomers Acknowledgement the changes will be published to Azure customers. resource-manager VersioningReviewRequired <valid label in PR review process>add this label when versioning review is required

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants