Skip to content

Conversation

drishtipeshwani09
Copy link
Contributor

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 preview/2024-05-01-preview to stable/2025-09-01.
Copy link

github-actions bot commented Aug 15, 2025

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 WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Aug 15, 2025
Copy link

github-actions bot commented Aug 15, 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.ContainerInstance
Go sdk/resourcemanager/containerinstance/armcontainerinstance
Java com.azure.resourcemanager:azure-resourcemanager-containerinstance-generated
JavaScript @azure/arm-containerinstance

@github-actions github-actions bot added BreakingChangeReviewRequired <valid label in PR review process>add this label when breaking change review is required NotReadyForARMReview BreakingChange-Go-Sdk BreakingChange-JavaScript-Sdk and removed WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Aug 15, 2025
@mikekistler
Copy link
Member

Breaking changes previously reviewed and approved in #28964

@mikekistler mikekistler added the BreakingChange-Approved-Previously Changes were reviewed and approved in a previous PR label Aug 18, 2025
@github-actions github-actions bot added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed NotReadyForARMReview labels Aug 18, 2025
Copy link

Commenter does not have sufficient privileges for PR 36704 in repo Azure/azure-rest-api-specs

@drishtipeshwani09
Copy link
Contributor Author

@ramoka178 I have fixed the issue, the Swagger LintDiff check is no longer failing. Please re-review the PR.

@ramoka178 ramoka178 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested <valid label in PR review process>add this label when require changes after ARM review labels Sep 3, 2025
@ramoka178
Copy link
Contributor

@drishtipeshwani09 For next time, the first commit should be an exact copy of the previous api version's files in the new folder made for the new apiversion.
Other changes can come after it.
This way we can can compare first and last commits and verify the net new changes.

@ramoka178
Copy link
Contributor

{

where are APIs related to ngroups ?

like
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/ngroups/{ngroupsName} ?

I see all of them removed.


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178
Copy link
Contributor

      "200": {

Old preview version has 202. This will be a breaking change.


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1092 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178
Copy link
Contributor

      "additionalProperties": {

Use of additionalProperties is not allowed for properties owned by the service. The only time its ok to use it is when the properties are pass thru (user defined) and not subject to any validations. Please make this an array or provide an explanation for why you need this.


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1322 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178
Copy link
Contributor

    }

storageAccountKeyReference is being removed. existing customers will be affected right ?

This is happening in other places too.


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1569 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178
Copy link
Contributor

},

SecretReferenceVolume is being removed. existing customers will be affected right ?


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1583 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178
Copy link
Contributor

          "type": "boolean",

ARM recommends enums over booleans for future proof APIs.

Standard guidance is: replace boolean/switch properties with a more meaningful enum whenever possible.

A boolean will forever have two valid values (true or false). A string enum type is always preferred. Also, properties should always provide better values just than True and False. For example two switches "isTypeA" and "isTypeB" should be replaced with one enum "type": [A, B, DefaultType]. Enums are always a more flexible and future proof option because they allow additional values to be added in the future in a non-breaking way, e.g. [Enabled, Disabled, Suspended, Deallocated].

Note: do NOT define a 'boolean enum' with two values 'True and False'. This might be easier to 'extend' in terms of types, but semantically its cofusing, and no better than a boolean.


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1944 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178
Copy link
Contributor

          "type": "boolean",

ARM recommends enums over booleans for future proof APIs.


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:2137 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178
Copy link
Contributor

    },

secretReference is being removed. existing customers will be affected right ?


Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1626 in 886b110. [](commit_id = 886b110, deletion_comment = False)

@ramoka178 ramoka178 added ARMChangesRequested <valid label in PR review process>add this label when require changes after ARM review and removed WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Sep 3, 2025
@drishtipeshwani09
Copy link
Contributor Author

{

where are APIs related to ngroups ?

like /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/ngroups/{ngroupsName} ?

I see all of them removed.

Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1 in 886b110. [](commit_id = 886b110, deletion_comment = False)

So, the current stable API that I want to release is based on the 2024-05-01-preview API version, and additionally just comprises one new property related to identityACLS which was released in 2024-11-01-preview API version, we do not want to take the changes related to NGroups for our stable version, they are still in preview.

@drishtipeshwani09
Copy link
Contributor Author

drishtipeshwani09 commented Sep 4, 2025

    }

storageAccountKeyReference is being removed. existing customers will be affected right ?

This is happening in other places too.

Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1569 in 886b110. [](commit_id = 886b110, deletion_comment = False)

All of these properties SecretReferenceVolume, secretReference and storageAccountKeyReference are part of the 2024-11-01-preview API version, currently we do not want to take these as part of the stable API. This will be accessible to customers using the preview API's + SDKs.

The current stable API being released is based on the 2024-05-01-preview API and add additional property which was released as part of the 2024-11-01-preview API version.

@drishtipeshwani09
Copy link
Contributor Author

      "200": {

Old preview version has 202. This will be a breaking change.

Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1092 in 886b110. [](commit_id = 886b110, deletion_comment = False)

This might be mistake from our end, for CG Profile Deletion we just return 200 and 204. This current stable API is based on the 2024-05-01-preview API and not the latest preview API version.

@drishtipeshwani09
Copy link
Contributor Author

      "additionalProperties": {

Use of additionalProperties is not allowed for properties owned by the service. The only time its ok to use it is when the properties are pass thru (user defined) and not subject to any validations. Please make this an array or provide an explanation for why you need this.

Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1322 in 886b110. [](commit_id = 886b110, deletion_comment = False)

The Key-Value pairs defined as part of the Config Map property are user defined, and are not subject to any validations at the RP level.

@drishtipeshwani09
Copy link
Contributor Author

          "type": "boolean",

ARM recommends enums over booleans for future proof APIs.

Standard guidance is: replace boolean/switch properties with a more meaningful enum whenever possible.

A boolean will forever have two valid values (true or false). A string enum type is always preferred. Also, properties should always provide better values just than True and False. For example two switches "isTypeA" and "isTypeB" should be replaced with one enum "type": [A, B, DefaultType]. Enums are always a more flexible and future proof option because they allow additional values to be added in the future in a non-breaking way, e.g. [Enabled, Disabled, Suspended, Deallocated].

Note: do NOT define a 'boolean enum' with two values 'True and False'. This might be easier to 'extend' in terms of types, but semantically its cofusing, and no better than a boolean.

Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1944 in 886b110. [](commit_id = 886b110, deletion_comment = False)

I understand this, however as this feature has been already released, it is expected to behave in a certain way by the customers. The variables that I have defined as boolean like isCreatedFromStandbyPool or failContainerGroupCreateOnReuseFailure , are expected to have True or False as their corresponding values. So, the code cannot be modified to use enum variables instead.

We were given this feedback during our preview API review that we should be working on the spec first before releasing the changes, we will be keeping this in mind for our new properties/parameters in the future.

@drishtipeshwani09
Copy link
Contributor Author

/azp run

Copy link

Commenter does not have sufficient privileges for PR 36704 in repo Azure/azure-rest-api-specs

@drishtipeshwani09 drishtipeshwani09 added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested <valid label in PR review process>add this label when require changes after ARM review labels Sep 4, 2025
@ramoka178
Copy link
Contributor

{

where are APIs related to ngroups ?
like /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/ngroups/{ngroupsName} ?
I see all of them removed.
Refers to: specification/containerinstance/resource-manager/Microsoft.ContainerInstance/stable/2025-09-01/containerInstance.json:1 in 886b110. [](commit_id = 886b110, deletion_comment = False)

So, the current stable API that I want to release is based on the 2024-05-01-preview API version, and additionally just comprises one new property related to identityACLS which was released in 2024-11-01-preview API version, we do not want to take the changes related to NGroups for our stable version, they are still in preview.

[ARMBlockingComment] Your new api-version should be based out of the previous latest api-version , in this case 2024-11-01-preview .
You cannot pick a 3 version old api-version (2024-05-01-preview, as there are 2024-09-01-preview and 2024-10-01-preview after it) to be the base api-version and create a stable version out of it.

@ramoka178 ramoka178 added ARMChangesRequested <valid label in PR review process>add this label when require changes after ARM review and removed WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required labels Sep 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ARMChangesRequested <valid label in PR review process>add this label when require changes after ARM review ARMReview BreakingChange-Approved-Previously Changes were reviewed and approved in a previous PR BreakingChange-Go-Sdk BreakingChange-JavaScript-Sdk 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. Container Instances new-api-version resource-manager
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants