Skip to content

Conversation

@tejasm-microsoft
Copy link
Member

@tejasm-microsoft tejasm-microsoft commented Aug 12, 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.

Copied the files in a separate commit.
This allows reviewers to easily diff subsequent changes against the previous spec.
Updated the API version from stable/2025-07-15 to stable/2025-09-01.
@openapi-pipeline-app
Copy link

openapi-pipeline-app bot commented Aug 12, 2025

This comment is a remnant of a now-deprecated bot framework. It is being left behind only to point at the new comment that is updated by our new actions-based framework.

@openapi-pipeline-app
Copy link

openapi-pipeline-app bot commented Aug 12, 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 Aug 12, 2025
@github-actions
Copy link

github-actions bot commented Aug 12, 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.Quota
Go sdk/resourcemanager/quota/armquota
C# Azure.ResourceManager.Quota
Java com.azure.resourcemanager:azure-resourcemanager-quota
JavaScript @azure/arm-quota

@tejasm-microsoft tejasm-microsoft marked this pull request as ready for review August 12, 2025 22:03
@tejasm-microsoft tejasm-microsoft added PublishToCustomers Acknowledgement the changes will be published to Azure customers. ARMChangesRequested ARMReview and removed ARMChangesRequested labels Aug 12, 2025
@openapi-pipeline-app openapi-pipeline-app bot added the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Aug 12, 2025
"type": "Microsoft.Quota/groupQuotas/locationSettings",
"name": "eastus",
"properties": {
"enforcementEnabled": "Enabled",
Copy link
Member

@BArthur1972 BArthur1972 Aug 13, 2025

Choose a reason for hiding this comment

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

We'll need to add the enforcedGroupName here right? #Resolved

Copy link
Member

Choose a reason for hiding this comment

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

I believe the body for the 201 response should also have these properties as well right?

"properties": {
"enforcedGroupName": "groupquota1-eastus",
"provisioningState": "InProgress"
}

Here's what the 201 response currently looks like:
image

"id": "/providers/Microsoft.Management/managementGroups/E7EC67B3-7657-4966-BFFC-41EFD36BAA09/providers/Microsoft.Quota/groupQuotas/groupquota1/resourceProviders/Microsoft.Compute/locationSettings/eastus",
"type": "Microsoft.Quota/groupQuotas/locationSettings",
"name": "eastus",
"properties": {
Copy link
Member

Choose a reason for hiding this comment

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

We'll need the enforcedGroupName here as well.

Copy link
Member

@TimLovellSmith TimLovellSmith Aug 22, 2025

Choose a reason for hiding this comment

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

yes, all properties supplied in the initial PUT request, and any readonly properties, should appear in the 201 response if possible, as well as the 200

@github-actions
Copy link

github-actions bot commented Aug 13, 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.

@github-actions github-actions bot added BreakingChangeReviewRequired <valid label in PR review process>add this label when breaking change review is required NotReadyForARMReview and removed WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Aug 13, 2025
@github-actions github-actions bot added the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Aug 29, 2025
@tejasm-microsoft tejasm-microsoft force-pushed the users/tejasma/2025-09-01 branch 2 times, most recently from 9f8c1ff to c4c4995 Compare August 29, 2025 22:43
@TimLovellSmith TimLovellSmith added ARMChangesRequested ARMSignedOff <valid label in PR review process>add this label when ARM approve updates after review and removed WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Aug 29, 2025
@tejasm-microsoft tejasm-microsoft enabled auto-merge (squash) August 29, 2025 23:21
}
}
]
},
Copy link
Member

Choose a reason for hiding this comment

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

can we fix the 'allOf' inheritance to the simpler way, in case that helps the linter?

"GroupQuotasEnforcementStatus": {
"type": "object",
"description": "The GroupQuota Enforcement status for a Azure Location/Region.",
"allOf": [
{
"$ref": "../../../../../common-types/resource-management/v5/types.json#/definitions/ProxyResource"
}
],
"properties": {
"properties": {

"type": "string",
"description": "Resource name for a given resource provider. For example:\r\n- SKU name for Microsoft.Compute\r\n- SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices\r\n For Microsoft.Network PublicIPAddresses.",
"x-ms-parameter-location": "method"
},
Copy link
Member

Choose a reason for hiding this comment

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

linter would like us to add 'pattern' validation regex

"$ref": "#/parameters/ScopeInPath"
}
],
"responses": {
Copy link
Member

Choose a reason for hiding this comment

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

linter seems to care about parameter ordering?

},
{
"$ref": "#/parameters/ScopeInPath"
}
Copy link
Member

Choose a reason for hiding this comment

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

linter seems to care about parameter ordering?

"description": "The resource name.",
"type": "string",
"readOnly": true
},
Copy link
Member

Choose a reason for hiding this comment

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

can we inherit "allOf" ProxyResource instead of redeclaring all the resource properties?

"properties": {
"description": "Additional properties for the specific resource provider.",
"type": "object"
}
Copy link
Member

Choose a reason for hiding this comment

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

you have quota.properties.properties?? that's weird

Copy link
Member

Choose a reason for hiding this comment

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

why is it untyped object?

"QuotaProperties": {
"description": "Quota properties for the specified resource.",
"type": "object",
"properties": {
Copy link
Member

Choose a reason for hiding this comment

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

properties

it would be best practice to have a provisioningState property on this resource type if creating it is a long running operation.

"$ref": "#/definitions/CurrentQuotaLimitBase"
}
},
"202": {
Copy link
Member

Choose a reason for hiding this comment

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

"202"

should ideally add header declarations like 'Location' to match your service behavior

      "202": {
        "description": "Request Accepted",
        "headers": {
          "Retry-After": {
            "description": "The recommended number of seconds to wait before calling the URI specified in Azure-AsyncOperation.",
            "type": "integer",
            "format": "int64"
          },
          "Location": {
            "description": "URL for determining when an operation has completed. Send a GET request to the URL in Location header.\nThe URI should return a 202 until the operation reaches a terminal state and 200 once it reaches a terminal state.\n\nFor more info: [https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#202-accepted-and-location-headers](https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#202-accepted-and-location-headers)",
            "type": "string"
          },
          "Azure-AsyncOperation": {
            "description": "URL for checking the ongoing status of the operation.\nTo get the status of the asynchronous operation, send a GET request to the URL in Azure-AsyncOperation header value.\n\nFor more info: [https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#asynchronous-operations](https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/Addendum.md#asynchronous-operations)",
            "type": "string"
          }
        }

@tejasm-microsoft tejasm-microsoft merged commit cd17f4b into main Aug 30, 2025
40 of 41 checks passed
@tejasm-microsoft tejasm-microsoft deleted the users/tejasma/2025-09-01 branch August 30, 2025 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ARMReview ARMSignedOff <valid label in PR review process>add this label when ARM approve updates after review BreakingChange-Approved-BugFix Changes are to correct the REST API definition to correctly describe service behavior BreakingChangeReviewRequired <valid label in PR review process>add this label when breaking change review is required brownfield Brownfield services will soon be required to convert to TypeSpec. See https://aka.ms/azsdk/typespec. new-api-version PipelineBotTrigger PublishToCustomers Acknowledgement the changes will be published to Azure customers. resource-manager

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants