Skip to content

[Microsoft.Web] Introduce api version 2026-09-01 and VirtualConnections Entity - #45406

Open
cmriachi wants to merge 44 commits into
mainfrom
feature/microsoft-web-virtualconnections-2026-09-01
Open

cmriachi wants to merge 44 commits into
mainfrom
feature/microsoft-web-virtualconnections-2026-09-01

Conversation

@cmriachi

@cmriachi cmriachi commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

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.

@github-actions

github-actions Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

Next Steps to Merge

Next steps that must be taken to merge this PR:
  • ❌ 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 commented Aug 11, 2026 •

Copy link
Copy Markdown

TypeSpec suppressions requiring review

Status: ❌ Approval required — 4 suppressions

This PR adds or updates the TypeSpec suppressions listed below. Suppressions are strongly discouraged — they bypass linter rules that protect API quality and consistency. Authors should avoid adding new suppressions and prefer fixing the underlying issue; reviewers should approve only when there is a clear, compelling justification and no reasonable alternative. Review each linked rule and source location, then apply typespec-suppressions-approved only if every justification is acceptable. The Status column shows ✅ once the label is applied and ❌ while approval is pending.

New suppressions (4)

StatusRuleSourceJustification
❌@azure-tools/typespec-azure-core/no-closed-literal-union
Unions of literals should include the base scalar type to mark them as open enum.
EgressConfig.tsp#L57The 2026-09-01 service rejects unknown egress enabled states, so this union intentionally models a closed set.
❌@azure-tools/typespec-azure-resource-manager/arm-no-record
Don't use Record types for ARM resources.
EgressConfig.tsp#L52Connection names are arbitrary customer-chosen keys and cannot be represented as a fixed set of model properties.
❌@azure-tools/typespec-azure-resource-manager/arm-no-record
Don't use Record types for ARM resources.
EgressConfig.tsp#L85Setting names are arbitrary customer-chosen keys and cannot be represented as a fixed set of model properties.
❌@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state
Check for properly configured provisioningState property.
EgressConfig.tsp#L37egress is a proxy-only sites/config singleton that is written synchronously and does not track a provisioning state, consistent with the other Microsoft.Web config singletons such as authsettingsV2.

For an overview of TypeSpec linting rules click here.
For a mapping from ARM lintdiff rules to corresponding TypeSpec linting rules click here.

💬 Have feedback on the TypeSpec suppression flow? Let us know.

@github-actions

github-actions Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

API Change Check

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

Language API Review for Package
Swagger Microsoft.Web-AppService
Go sdk/resourcemanager/appservice/armappservice
JavaScript @azure/arm-appservice
Python azure-mgmt-web
Java com.azure.resourcemanager:azure-resourcemanager-appservice
C# Azure.ResourceManager.AppService

Comment generated by After APIView workflow run.

Copilot AI and others added 2 commits August 14, 2026 20:47
…-virtualconnections-2026-09-01

Co-authored-by: cmriachi <104598291+cmriachi@users.noreply.github.com>
Co-authored-by: cmriachi <104598291+cmriachi@users.noreply.github.com>
@cmriachi cmriachi added the PublishToCustomers Acknowledgement the changes will be published to Azure customers. label Aug 17, 2026
Document strict setting and identity requirements for egress create/update and preflight validation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 00137ec4-7ad5-4d2a-b24d-460b0b5bef54
@github-actions github-actions Bot added the typespec-suppressions-review-required PR reviewer must review all reported typespec suppressions label Sep 29, 2026
@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Contributor readiness: required access

Warning

Access issues can block approvals, Azure DevOps pipelines, or labeling.

User / area Access issue PR impact
🔴 cmriachi Azure membership not public. Not determined.

Internal contributors: set up / renew access. Recheck: /azsdk check-access.

Contributors with verified access (1)

Public Azure membership and repository write access verified.

User Roles
markcowl approved reviewer

Non-blocking check; fix access issues to unblock affected actions.

Last updated: 2026-10-16T17:35:38.749Z

@cmriachi cmriachi added the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Oct 6, 2026
@github-actions github-actions Bot removed the WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required label Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown

ARM API Review Summary

Scoped review: This PR changes 719 files and approximately 124,134 lines, exceeding the full-review thresholds. The review therefore covered the six highest-risk changed surfaces: EgressConfig.tsp, main.tsp, back-compatible.tsp, tspconfig.yaml, readme.md, and stable/2026-09-01/openapi.json. Generated endpoint examples and the remaining large generated-file surface were not individually reviewed.

Result: No net-new ARM/API finding was queued. Existing active human-owned discussions already cover the observed suppression, proxy-singleton DELETE, identityScope URI typing, and typed-dictionary concerns; they were not duplicated, replied to, or resolved. Earlier findings concerning the obsolete POST list action, VirtualConnections, enum casing, and armResourceIdentifier were fixed or superseded at the pinned head and were not reposted.

Critic status: Independent critic checks found no additional specification defect, but the mandatory critic verification could not be completed because the required critic protocol files were unavailable. Accordingly, this run is not marked critic-verified. No labels were changed. Approval-label inventory at final metadata check: BreakingChange-Approved-BugFix present; no Versioning-Approved-*, Approved-Suppression, or Approved-TypeSpecSuppression label present.

🔍 ARM API review by ARM API Review: Automated Workflow

cmriachi and others added 3 commits October 6, 2026 10:05
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@cmriachi cmriachi added WaitForARMFeedback <valid label in PR review process> add this label when ARM review is required and removed ARMChangesRequested labels Oct 6, 2026
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown

ARM API Review Summary

Reviewed PR #45406 at head SHA 89fef842b92db86604c1dd3dda6aa11a3d23f0f8 | Triggered by: pull_request

Caution

Independent Critic verification did not run. The findings below are unverified. Severity is unchanged, and no ARM review labels were modified.

Scoped review: 7 of 719 changed specification/ files reviewed (PR exceeds the automated-review size cap). Not reviewed: 704 generated example files and the remaining broad generated OpenAPI/endpoint surface outside the selected high-risk TypeSpec, configuration, metadata, and 2026-09-01 OpenAPI files.

Approval labels observed: BreakingChange-Approved-BugFix, BreakingChange-Python-Sdk.

Category Count
🔴 Blocking 0
🟠 Warning 0
🔵 Suggestion 0

No issues found; remaining concerns are covered by existing human-authored discussions and were not duplicated.

posted-by: arm-api-reviewer-agent | rule: summary | category: summary | severity: suggestion | classification: existing | critic: unknown | head-sha: 89fef84

🔍 ARM API review by ARM API Review: Automated Workflow

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ARM API Review

Posting findings from the ARM API Reviewer agent (Critic unavailable; reviewer self-check only, 3 iterations, no findings) against commit 89fef842b92db86604c1dd3dda6aa11a3d23f0f8. All findings are reported in the summary comment.

Approval labels observed: BreakingChange-Approved-BugFix, BreakingChange-Python-Sdk.

posted-by: arm-api-reviewer-agent | rule: summary | category: summary | severity: suggestion | classification: existing | critic: unknown | head-sha: 89fef84

🔍 ARM API review by ARM API Review: Automated Workflow

@razvanbadea-msft

Copy link
Copy Markdown
Member

Check errors from Swagger Lintdiff.

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.

@psah434

Copy link
Copy Markdown
Member

Please fix lintdiff

@cmriachi

Copy link
Copy Markdown
Contributor Author

Pallavi Sah (@psah434) the lintdiff errors mentioned are related to old changes i did not introduce in this pr - not sure why they are detected as my changes - how do i fix that?


/** Where to resolve settings from. */
#suppress "@azure-tools/typespec-azure-core/no-closed-literal-union" "The 2026-09-01 service rejects unknown virtual connection setting sources, so this union intentionally models a closed set."
@added(Versions.v2026_09_01)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If this enumeration will never add new values in a new api-version, please assert that in the justification. If it might add new values in new api-versions in the future, then it should be an open literal union (meaning you should add string as one of the variants.


/** Protocol for the backend service. */
#suppress "@azure-tools/typespec-azure-core/no-closed-literal-union" "The 2026-09-01 service rejects unsupported virtual connection protocols, so this union intentionally models a closed set."
@added(Versions.v2026_09_01)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If this enumeration will never add new values in a new api-version, please assert that in the justification. If it might add new values in new api-versions in the future, then it should be an open literal union (meaning you should add string as one of the variants.


/** Authentication strategy for upstream connections. */
#suppress "@azure-tools/typespec-azure-core/no-closed-literal-union" "The 2026-09-01 service rejects unsupported virtual connection authentication types, so this union intentionally models a closed set."
@added(Versions.v2026_09_01)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If this enumeration will never add new values in a new api-version, please assert that in the justification. If it might add new values in new api-versions in the future, then it should be an open literal union (meaning you should add string as one of the variants.

/** The role a setting plays in a connection. */
#suppress "@azure-tools/typespec-azure-core/no-closed-literal-union" "The 2026-09-01 service rejects unsupported virtual connection setting roles, so this union intentionally models a closed set."
@added(Versions.v2026_09_01)
union VirtualConnectionSettingRole {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If this enumeration will never add new values in a new api-version, please assert that in the justification. If it might add new values in new api-versions in the future, then it should be an open literal union (meaning you should add string as one of the variants.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ARM API Review

Reviewed PR #45406 at head SHA 67493153cec1af143222d85a7f4d03c450e9a650 against base SHA a3be4b61f3eba3138075131e2669ab43e7841eaf.

Scoped review: This PR changes 719 files (+123,708/-405), exceeding the scoped-review cap. I reviewed the generated stable/2026-09-01/openapi.json, 49 representative stable/2026-09-01 examples, and the linked TypeSpec/configuration/suppression sources (EgressConfig.tsp, main.tsp, back-compatible.tsp, tspconfig.yaml, service.yaml, and readme.md). The remaining changed examples and lower-priority generated artifacts were excluded from this scoped pass.

Approval labels observed: BreakingChange-Approved-BugFix, BreakingChange-Python-Sdk. No Approved-Suppression or Approved-TypeSpecSuppression label was observed.

No net-new Blocking, Warning, or Suggestion findings are posted. Existing human-authored discussion already covers the current DELETE, dictionary-suppression, enum/open-union, and identityScope concerns; previously reported workflow findings were verified fixed at this SHA (ordinary singleton reads use GET, identityResourceId uses armResourceIdentifier, enum values are PascalCase, and relevant source contains no raw @extension).

Outcome: No additional ARM API issues were identified within the reviewed scope; existing human-authored findings remain unchanged.

ARM API review telemetry: scoped review; findings posted: 0 blocking, 0 warnings, 0 suggestions; critic verification attempted.

🔍 ARM API review by ARM API Review: Automated Workflow

@github-actions

Copy link
Copy Markdown

ARM API Review Summary

Reviewed PR #45406 at head SHA 1f464980bf761f1eebed95532f109ae94abec801 | Triggered by: pull_request_target

Scoped review: 50 of 719 changed specification/ files reviewed (PR exceeds the automated-review size cap). Not reviewed: the remaining generated artifacts, examples, and lower-priority specification files outside the prioritized scope.

Approval labels observed: BreakingChange-Approved-BugFix.

Category Count
🔴 Blocking 0
🟠 Warning 0
🔵 Suggestion 0

No net-new ARM API issues were identified within the reviewed scope. Previously reported singleton-read, TypeSpec extension, ARM resource-ID, and point-GET/suppression issues were verified fixed; existing human-authored discussions remain covered without duplicate findings.

posted-by: arm-api-reviewer-agent | rule: summary | category: summary | severity: suggestion | classification: existing | critic: pass | head-sha: 1f46498

🔍 ARM API review by ARM API Review: Automated Workflow

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

ARM API Review

Reviewed PR #45406 at head SHA 1f464980bf761f1eebed95532f109ae94abec801 | Triggered by: pull_request_target

Scoped review: 50 of 719 changed specification/ files reviewed (PR exceeds the automated-review size cap). Not reviewed: the remaining generated artifacts, examples, and lower-priority specification files outside the prioritized scope.

Approval labels observed: BreakingChange-Approved-BugFix.

Category Count
🔴 Blocking 0
🟠 Warning 0
🔵 Suggestion 0

No net-new ARM API issues were identified within the reviewed scope. Previously reported singleton-read, TypeSpec extension, ARM resource-ID, and point-GET/suppression issues were verified fixed; existing human-authored discussions remain covered without duplicate findings.

posted-by: arm-api-reviewer-agent | rule: summary | category: summary | severity: suggestion | classification: existing | critic: pass | head-sha: 1f46498

🔍 ARM API review by ARM API Review: Automated Workflow

@ravimeda Ravi Eda (ravimeda) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ARM API Review

Posting findings from the ARM API Reviewer agent (critic-verified, 2 iterations, converged) against commit 1f46498. See inline comments for findings 1-4.

Approval labels observed: BreakingChange-Approved-BugFix.

@@ -21,14 +20,14 @@ options:
emit-lro-options: "all"
examples-dir: "{project-root}/examples"
xml-strategy: "none"
use-read-only-status-schema: true

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[NEW] 🔴 Blocking [Section 2 — API Versioning / ReadonlyPropertyChanged] specification/web/resource-manager/Microsoft.Web/AppService/tspconfig.yaml — line 23 — enabling use-read-only-status-schema changes published schemas in place.

Classification reasoning: This PR adds the project-wide emitter option. Against the pinned base, it changes 28 properties from writable to read-only in each of five existing API-version files—140 ReadonlyPropertyChanged errors total:

  • preview/2026-03-01-preview
  • stable/2025-03-01
  • stable/2025-05-01
  • stable/2026-03-15
  • stable/2026-07-15

Approval context: BreakingChange-Approved-BugFix is present. Confirm that its approval covers all 140 changes produced by this option, then resolve this conversation. If it does not, obtain matching breaking-change approval or avoid rewriting the published versions.

Suggested fix: Preserve use-read-only-status-schema only if the existing approval explicitly covers this complete project-wide output change. Otherwise remove or isolate the change and use the repository breaking-change process before regenerating these five OpenAPI files.

@@ -0,0 +1,109 @@
{
"operationId": "EgressConfigs_CreateOrUpdateEgressConfig",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[NEW] 🟠 Warning [EX-ORPHAN] / [EX-COVERAGE] specification/web/resource-manager/Microsoft.Web/AppService/examples/2026-09-01/EgressConfig_CreateOrUpdate.json — line 2 — all eight site PUT examples use an operation ID that does not exist in the emitted OpenAPI.

Classification reasoning: The Egress site PUT operation and these examples are introduced in this PR; neither exists in stable/2026-07-15.

Issue: The eight EgressConfig_CreateOrUpdate*.json/EgressConfig_Disable.json files declare EgressConfigs_CreateOrUpdateEgressConfig, while the emitted operation at stable/2026-09-01/openapi.json line 10054 is WebApps_CreateOrUpdateEgressConfig. All eight source files and their generated copies are orphaned, and the PUT operation has no x-ms-examples entry.

Suggested fix: Change line 2 in all eight source examples to "operationId": "WebApps_CreateOrUpdateEgressConfig", regenerate the stable examples/OpenAPI, and verify that the PUT operation contains all intended x-ms-examples references.

@@ -0,0 +1,74 @@
{
"operationId": "EgressConfigSlotConfigs_CreateOrUpdateEgressConfigSlot",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[NEW] 🟠 Warning [EX-ORPHAN] / [EX-COVERAGE] specification/web/resource-manager/Microsoft.Web/AppService/examples/2026-09-01/SlotEgressConfig_CreateOrUpdate.json — line 2 — both slot PUT examples use an operation ID that does not exist in the emitted OpenAPI.

Classification reasoning: The Egress slot PUT operation and these examples are introduced in this PR; neither exists in stable/2026-07-15.

Issue: The two SlotEgressConfig_CreateOrUpdate*.json files declare EgressConfigSlotConfigs_CreateOrUpdateEgressConfigSlot, while the emitted operation at stable/2026-09-01/openapi.json line 22804 is WebApps_CreateOrUpdateEgressConfigSlot. Both source files and generated copies are orphaned, and the slot PUT operation has no x-ms-examples entry.

Suggested fix: Change line 2 in both source examples to "operationId": "WebApps_CreateOrUpdateEgressConfigSlot", regenerate, and verify that the slot PUT operation contains both x-ms-examples references.

#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@@flattenProperty(SiteAuthSettingsV2.properties);

@@clientLocation(EgressConfigs.createOrUpdateEgressConfig, WebApps, "!csharp");

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[NEW] 🟠 Warning [TypeSpec Section 4.6 — Client Customizations] specification/web/resource-manager/Microsoft.Web/AppService/back-compatible.tsp — lines 2088-2099 — the four new Egress @@clientLocation customizations are placed outside client.tsp.

Classification reasoning: These customizations target the four new Egress operations and are added by this PR; the operations and decorators do not exist at the base SHA.

Issue: Section 4.6 requires client-level customizations to be placed in client.tsp and prohibits importing or using @azure-tools/typespec-client-generator-core in other files. This project already has client.tsp, but the new decorators were appended to back-compatible.tsp.

Suggested fix: Move the four Egress @@clientLocation decorators to client.tsp, remove them from back-compatible.tsp, regenerate, and revalidate the example operation IDs against the emitted OpenAPI.

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

Labels

ARMChangesRequested ARMManualSignoffRequired ARMModelingAutoSignedOff ARMReview BreakingChange-Approved-BugFix Changes are to correct the REST API definition to correctly describe service behavior BreakingChange-Python-Sdk BreakingChangeReviewRequired <valid label in PR review process>add this label when breaking change review is required Cognitive Services new-api-version PublishToCustomers Acknowledgement the changes will be published to Azure customers. resource-manager Service Bus Storage Storage Service (Queues, Blobs, Files) StorageSync SuppressionReviewRequired TypeSpec Authored with TypeSpec typespec-suppressions-review-required PR reviewer must review all reported typespec suppressions Web Apps

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants