Skip to content

Conversation

iliu816
Copy link
Member

@iliu816 iliu816 commented Oct 1, 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.

Copy link

github-actions bot commented Oct 1, 2025

Next Steps to Merge

✅ All automated merging requirements have been met! To get your PR merged, see aka.ms/azsdk/specreview/merge.

Comment generated by summarize-checks workflow run.

@iliu816 iliu816 requested a review from a-santamaria October 1, 2025 18:03
@github-actions github-actions bot added ARMReview new-api-version resource-manager TypeSpec Authored with TypeSpec WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Oct 1, 2025
Copy link

github-actions bot commented Oct 1, 2025

rename parameters body to parameters
@iliu816 iliu816 added the PublishToCustomers Acknowledgement the changes will be published to Azure customers. label Oct 1, 2025
for application patch, move parameters to properties level
fetchApplicationHealth -> fetchHealth
formatting
fix restart replica example
@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Oct 7, 2025
@iliu816 iliu816 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested labels Oct 7, 2025
@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Oct 8, 2025
@iliu816 iliu816 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested labels Oct 8, 2025
@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Oct 8, 2025
* List of application parameters with overridden values from their default values specified in the application manifest.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "Day 0 property of app resource, used to pass string to string dictionary"
parameters?: Record<string>;
Copy link
Member

@mentat9 mentat9 Oct 8, 2025

Choose a reason for hiding this comment

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

parameters?: Record;

Just noticed the failure for this was suppressed. Please change this to string-string KVP array, which is fully supported by ARM. Important ARM features don't work with Record which is not allowed in ARM resource types. #Resolved

Copy link
Member Author

Choose a reason for hiding this comment

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

Do you have an example for how that should look? We're using Record for the CreateOrUpdate parameters field, so I had just gone ahead and defined it the same here.

Copy link
Member Author

Choose a reason for hiding this comment

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

I found this discussion from back in May https://teams.microsoft.com/l/message/19:[email protected]/1746552761724?tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47&groupId=3e17dcb0-4257-4a30-b843-77f47f1d4121&parentMessageId=1746212216120&teamName=Azure%20SDK&channelName=TypeSpec%20Discussion&createdTime=1746552761724

I'm not sure if we can change how we define this property without causing it to diverge from the application model that we have for our create / update requests since that uses a dictionary<string, string>. Our customers expect this property to be in the same format.

Copy link
Member

Choose a reason for hiding this comment

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

Yes, I understand the desire to maintain the existing patterns. This makes it hard to move APIs toward more consistency and compliance though. Note that customers also expect ARM resources to support ARM core features.

From other comments, it sounds like you are wrapping an sfclient, which seems like the perfect opportunity to adopt a newer better pattern. If you are set on exposing this property as a dictionary, please schedule an ARM API Modeling office hours slot so we can discuss and understand the big picture better.

Copy link
Member Author

Choose a reason for hiding this comment

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

There is a corresponding PUT operation that has been published since day 1, so we were hoping to keep the property shape the same.

Copy link
Member

Choose a reason for hiding this comment

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

I understand the history here. Given that PUT already uses this pattern, matching it for PATCH is probably the best option for this PR.

Going forward, please keep in mind that your service has its own interface, even when wrapping another interface. It's not always the case that passing through the wrapped API unchanged is the best option. We want to always be leveraging opportunities to raise the bar on quality, consistency and usability of Azure APIs all-up. Wrapping another API is a good opportunity to fix legacy issues in APIs that don't meet current ARM rules and guidelines.

@iliu816 iliu816 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested labels Oct 8, 2025
@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Oct 8, 2025
@iliu816 iliu816 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested labels Oct 10, 2025
@mentat9 mentat9 added the ARMSignedOff <valid label in PR review process>add this label when ARM approve updates after review label Oct 10, 2025
@github-actions github-actions bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Oct 10, 2025
@mentat9
Copy link
Member

mentat9 commented Oct 10, 2025

@iliu816 - Thank-you: I appreciate the effort and attention that went into this PR. I've signed off for ARM with comments.

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

Labels

Approved-Suppression ARMAutoSignedOff ARMReview ARMSignedOff <valid label in PR review process>add this label when ARM approve updates after review new-api-version PublishToCustomers Acknowledgement the changes will be published to Azure customers. resource-manager SuppressionReviewRequired TypeSpec Authored with TypeSpec

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants