Skip to content

[AutoPR @azure-arm-appservice]-generated-from-SDK Generation - JS-6087416#37912

Merged
JialinHuang803 merged 14 commits into
mainfrom
sdkauto/@azure-arm-appservice-5864522
May 29, 2026
Merged

[AutoPR @azure-arm-appservice]-generated-from-SDK Generation - JS-6087416#37912
JialinHuang803 merged 14 commits into
mainfrom
sdkauto/@azure-arm-appservice-5864522

Conversation

@azure-sdk
Copy link
Copy Markdown
Collaborator

@azure-sdk azure-sdk commented Mar 31, 2026

Configurations: 'specification/web/resource-manager/Microsoft.Web/AppService/tspconfig.yaml', API Version: 2025-05-01, SDK Release Type: stable, and CommitSHA: 'a83147fe12aece4ded0bd96be212e5242e087cb9' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6087416 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. Release plan link: https://azsdk-releaseplan-dashboard-hveph5aqhhcfhtgu.westus-01.azurewebsites.net/?releasePlan=2068 Submitted by: kamperiadis@microsoft.com

Release Plan Details

…Service/tspconfig.yaml', API Version: 2025-05-01, SDK Release Type: stable, and CommitSHA: 'a83147fe12aece4ded0bd96be212e5242e087cb9' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6087416 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.
@github-actions github-actions Bot added the Mgmt This issue is related to a management-plane library. label Mar 31, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 31, 2026

API Change Check

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

@azure/arm-appservice

…Service/tspconfig.yaml', API Version: 2025-05-01, SDK Release Type: stable, and CommitSHA: '20b78edb12308a566be33a737a79a36662e7f4c3' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6087961 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.
@kazrael2119 kazrael2119 added the Self-Service Release PR for self-service release label Apr 1, 2026
@qiaozha qiaozha marked this pull request as ready for review April 1, 2026 07:55
@qiaozha qiaozha self-requested a review as a code owner April 1, 2026 07:55
Copilot AI review requested due to automatic review settings April 1, 2026 07:55

This comment was marked as duplicate.

github-actions[bot]

This comment was marked as off-topic.

@github-actions

This comment has been minimized.

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

1 design issue found in the @azure/arm-appservice public API surface.

The Request and Response types in the workflow-related models clash with the well-known DOM global types Request and Response. API Extractor reveals this collision by renaming them internally to Request_2 / Response_2 before re-exporting them under the conflicting names. These should be renamed with a service-specific prefix in the TypeSpec spec repo (e.g., WorkflowRequest / WorkflowResponse) using @clientName, then SDK regeneration triggered.

📊 Structured Report
{"agent":"mgmt-reviewer","pr":37912,"summary":"issues_found","findings":[{"file":"sdk/appservice/arm-appservice/review/arm-appservice-node.api.md","line":4742,"issueType":"design","category":"naming","description":"'Request' and 'Response' types clash with DOM globals; API Extractor marks them as Request_2/Response_2 internally. Use `@clientName` in spec to rename (e.g., WorkflowRequest/WorkflowResponse)."},{"file":"sdk/appservice/arm-appservice/review/arm-appservice-models-node.api.md","line":3780,"issueType":"design","category":"naming","description":"Same Request/Response DOM name clash in models API file."}]}

Benchmarked by Management Release Assistant

@kazrael2119 kazrael2119 added mgmt-review-needed first-typespec-migration first time to migrate to typespec and removed mgmt-review-needed labels Apr 9, 2026
@kazrael2119

This comment was marked as outdated.

@kazrael2119
Copy link
Copy Markdown
Member

@copilot please merge main and resolve conflicts

…pservice-5864522

# Conflicts:
#	pnpm-lock.yaml
#	sdk/appservice/arm-appservice/warp.config.yml

Co-authored-by: kazrael2119 <98569699+kazrael2119@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 13, 2026

@copilot please merge main and resolve conflicts

Done. Merged main into the branch and resolved conflicts in sdk/appservice/arm-appservice/warp.config.yml (kept the PR's full API sub-path exports) and pnpm-lock.yaml (used main's version). Merge commit: 55c445b9a0.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 1javsblobprodcus364.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • 4vyvsblobprodcus361.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • ckzvsblobprodcus347.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • dlbvsblobprodcus316.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • kijvsblobprodcus387.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • n3kvsblobprodcus335.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • nn8vsblobprodcus340.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • rcxvsblobprodcus328.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • ukkvsblobprodcus352.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • vwvvsblobprodcus334.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • xupvsblobprodcus332.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • yluvsblobprodcus367.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)
  • yttvsblobprodcus357.vsblob.vsassets.io
    • Triggering command: /opt/hostedtoolcache/node/20.20.2/x64/bin/node node /opt/hostedtoolcache/node/20.20.2/x64/bin/pnpm install --no-frozen-lockfile (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@github-actions github-actions Bot added the mgmt-review-in-progress Management SDK review is in progress label May 27, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Next Steps to Merge

Only failed checks and required actions are listed below.

  • 🔄 pnpm-lock conflict: The PR has mergeable_state: dirty, indicating a merge conflict (likely in pnpm-lock.yaml). Follow the conflict guide to fix this issue.

@github-actions github-actions Bot added mgmt-review-added Management SDK review completed and removed mgmt-review-in-progress Management SDK review is in progress labels May 27, 2026
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

No API design issues found in this PR. The public API surface in review/arm-appservice-node.api.md was reviewed against the management library guidelines. The Request/Response name clash (exported as Request_2/Response_2 internally) is a pre-existing issue on the main branch and was not introduced by this PR. The CHANGELOG correctly compares stable versions with no alpha/beta references. The API version advances from 2025-03-01 to 2025-05-01, which is strictly newer.

📊 Structured Report
{"agent":"mgmt-reviewer","pr":37912,"summary":"clean","findings":[]}

Benchmarked by Management Release Assistant

@kazrael2119
Copy link
Copy Markdown
Member

kazrael2119 commented May 28, 2026

Note

This analysis was generated by AI. Please review the classifications and root causes for accuracy.

Breaking Change Analysis: @azure/arm-appservice 19.0.0

Old SDK (main) New SDK (PR)
Generator Swagger / AutoRest TypeSpec / emitter
API Version 2025-03-01 2025-05-01
Package Version 18.0.0 19.0.0

Spec References:

Original Swagger (Layer A) -- 15 files at 2025-03-01 @ 5476ceee

Note (Layer B): API version 2025-05-01 was introduced by the TypeSpec checkin itself -- there is no pre-existing hand-authored swagger at 2025-05-01. The TypeSpec was authored on top of the prior 2025-03-01 swagger. As a result, Layer B is treated as "absent": every behavioral REST API delta between 2025-03-01 (Layer A) and the TypeSpec-generated 2025-05-01 (Layer C) is attributable to the API-version bump (Type 1), and only pure structural reshaping is attributable to TypeSpec/emitter (Type 2).


Type 1: API Version Upgrade (2025-03-01 -> 2025-05-01) -- 5 items

# Breaking Change Root Cause
134 Type alias "TriggeredWebJobStatus" has been changed The TriggeredWebJobStatus enum (x-ms-enum.modelAsString: false) was extended in API version 2025-05-01: the swagger enum gained two additional fixed values, so the TS string-literal union changed from "Success" | "Failed" | "Error" to "Success" | "Failed" | "Error" | "Aborted" | "Running". Verified by comparing Layer A WebApps.json (3 values) to Layer C openapi.json (5 values).
1 Operation WebApps.getTriggeredWebJob has a new signature Cascading from row 134: return type is TriggeredWebJob, whose latestRun?: TriggeredJobRun references TriggeredJobRun.status?: TriggeredWebJobStatus. The expanded union changes the operation's effective signature. (Cosmetic deltas -- method syntax to arrow property, response wrapper WebAppsGetTriggeredWebJobResponse = TriggeredWebJob removed, options interface continues to be WebAppsGetTriggeredWebJobOptionalParams but now extends OperationOptions instead of coreClient.OperationOptions -- are Type 2 artifacts shared by every operation in the SDK and are not themselves the root cause.)
2 Operation WebApps.getTriggeredWebJobHistory has a new signature Cascading from row 134: return type is TriggeredJobHistory, whose runs?: TriggeredJobRun[] references TriggeredJobRun.status?: TriggeredWebJobStatus. Same chain as row 1.
3 Operation WebApps.getTriggeredWebJobHistorySlot has a new signature Same as row 2.
4 Operation WebApps.getTriggeredWebJobSlot has a new signature Same as row 1.

Cascade Detection Evidence (rows 1-4)

For each of the four "new signature" entries:

  1. Direct parameter changes: None. Positional parameters (resourceGroupName, name, webJobName[, id][, slot]) are unchanged in both api.md versions.
  2. Options property changes: WebAppsGetTriggeredWebJob*OptionalParams are empty in both old and new (only extend the base options interface). The base interface changed from coreClient.OperationOptions to OperationOptions, but no properties were added/removed/retyped.
  3. Cascade walk through broken_models:
    • Initial broken_models = { TriggeredWebJobStatus } (from row 134).
    • Resolve return-type aliases: old WebAppsGetTriggeredWebJobResponse = TriggeredWebJob, WebAppsGetTriggeredWebJobHistoryResponse = TriggeredJobHistory, etc.
    • Walk: TriggeredWebJob.latestRun -> TriggeredJobRun -> status -> TriggeredWebJobStatus (in broken_models) -> cascade.
    • Walk: TriggeredJobHistory.runs -> TriggeredJobRun[] -> status -> TriggeredWebJobStatus -> cascade.

Conclusion: All four are cascades of row 134 (Type 1). Add TriggeredWebJob, TriggeredJobHistory, TriggeredJobRun to broken_models for downstream lookups.


Type 2: TypeSpec / Emitter Migration -- 129 items

Summary Table

Root Cause Sub-Type Count Accepted
Pagination collection-wrapper interface (XxxCollection containing value + nextLink) removed; modular returns PagedAsyncIterableIterator<T> directly Conversion 68
Paged operation renamed in TypeSpec from getXxx/xxx to listXxx, removing the old per-operation XxxOptionalParams interface (a new XxxListYyyOptionalParams is added in its place) Conversion 29
Orphan / tree-shaken type removed: not reachable from any operation in the TypeSpec service surface Conversion 26
Migration to ARM common type Resource: the bare Resource is { id, name, type, systemData }; kind, location, tags moved to TrackedResource (and kind is per-resource, not on the base) Conversion 3
Tracked-resource location modeled as required (per ARM TrackedResource common type) where previous self-defined WorkflowResource/Resource had it as optional Conversion 3

Details

Collection wrappers inlined by PagedAsyncIterableIterator (68 entries) -- Conversion ✅
Show all 68 entries
  1. Removed Interface ApiKVReferenceCollection -- Conversion ✅

    Pagination collection wrapper removed. The corresponding list* operation returns PagedAsyncIterableIterator<ApiKvReference> directly. See group root cause above.

  2. Removed Interface ApplicationStackCollection -- Conversion ✅

    Same as row 5 (for ApplicationStack).

  3. Removed Interface AppServiceEnvironmentCollection -- Conversion ✅

    Same as row 5 (for AppServiceEnvironmentResource).

  4. Removed Interface AppServicePlanCollection -- Conversion ✅

    Same as row 5 (for AppServicePlan).

  5. Removed Interface AseRegionCollection -- Conversion ✅

    Same as row 5 (for AseRegion).

  6. Removed Interface BackupItemCollection -- Conversion ✅

    Same as row 5 (for BackupItem).

  7. Removed Interface BillingMeterCollection -- Conversion ✅

    Same as row 5 (for BillingMeter).

  8. Removed Interface CertificateCollection -- Conversion ✅

    Same as row 5 (for Certificate).

  9. Removed Interface ContinuousWebJobCollection -- Conversion ✅

    Same as row 5 (for ContinuousWebJob).

  10. Removed Interface CsmDeploymentStatusCollection -- Conversion ✅

    Same as row 5 (for CsmDeploymentStatus).

  11. Removed Interface CsmOperationCollection -- Conversion ✅

    Same as row 5 (for CsmOperationDescription).

  12. Removed Interface CsmUsageQuotaCollection -- Conversion ✅

    Same as row 5 (for CsmUsageQuota).

  13. Removed Interface CustomHostnameSitesCollection -- Conversion ✅

    Same as row 5 (for CustomHostnameSites).

  14. Removed Interface DatabaseConnectionCollection -- Conversion ✅

    Same as row 5 (for DatabaseConnection).

  15. Removed Interface DeletedWebAppCollection -- Conversion ✅

    Same as row 5 (for DeletedSite).

  16. Removed Interface DeploymentCollection -- Conversion ✅

    Same as row 5 (for Deployment).

  17. Removed Interface DetectorResponseCollection -- Conversion ✅

    Same as row 5 (for DetectorResponse).

  18. Removed Interface DiagnosticAnalysisCollection -- Conversion ✅

    Same as row 5 (for AnalysisDefinition).

  19. Removed Interface DiagnosticCategoryCollection -- Conversion ✅

    Same as row 5 (for DiagnosticCategory).

  20. Removed Interface DiagnosticDetectorCollection -- Conversion ✅

    Same as row 5 (for DetectorDefinition).

  21. Removed Interface FunctionAppStackCollection -- Conversion ✅

    Same as row 5 (for FunctionAppStack).

  22. Removed Interface FunctionEnvelopeCollection -- Conversion ✅

    Same as row 5 (for FunctionEnvelope).

  23. Removed Interface GeoRegionCollection -- Conversion ✅

    Same as row 5 (for GeoRegion).

  24. Removed Interface HostNameBindingCollection -- Conversion ✅

    Same as row 5 (for HostNameBinding).

  25. Removed Interface HybridConnectionCollection -- Conversion ✅

    Same as row 5 (for HybridConnection).

  26. Removed Interface IdentifierCollection -- Conversion ✅

    Same as row 5 (for Identifier).

  27. Removed Interface InboundEnvironmentEndpointCollection -- Conversion ✅

    Same as row 5 (for InboundEnvironmentEndpoint).

  28. Removed Interface KubeEnvironmentCollection -- Conversion ✅

    Same as row 5 (for KubeEnvironment).

  29. Removed Interface OutboundEnvironmentEndpointCollection -- Conversion ✅

    Same as row 5 (for OutboundEnvironmentEndpoint).

  30. Removed Interface PerfMonCounterCollection -- Conversion ✅

    Same as row 5 (for PerfMonResponse).

  31. Removed Interface PremierAddOnOfferCollection -- Conversion ✅

    Same as row 5 (for PremierAddOnOffer).

  32. Removed Interface PrivateEndpointConnectionCollection -- Conversion ✅

    Same as row 5 (for RemotePrivateEndpointConnectionARMResource).

  33. Removed Interface ProcessInfoCollection -- Conversion ✅

    Same as row 5 (for ProcessInfo).

  34. Removed Interface ProcessModuleInfoCollection -- Conversion ✅

    Same as row 5 (for ProcessModuleInfo).

  35. Removed Interface ProcessThreadInfoCollection -- Conversion ✅

    Same as row 5 (for ProcessThreadInfo).

  36. Removed Interface PublicCertificateCollection -- Conversion ✅

    Same as row 5 (for PublicCertificate).

  37. Removed Interface PublishingCredentialsPoliciesCollection -- Conversion ✅

    Same as row 5 (for CsmPublishingCredentialsPoliciesEntity).

  38. Removed Interface RecommendationCollection -- Conversion ✅

    Same as row 5 (for Recommendation).

  39. Removed Interface ResourceCollection -- Conversion ✅

    Same as row 5 (collection of strings / resource ids from getSubscriptionDeploymentLocations or similar).

  40. Removed Interface ResourceHealthMetadataCollection -- Conversion ✅

    Same as row 5 (for ResourceHealthMetadata).

  41. Removed Interface ResourceMetricDefinitionCollection -- Conversion ✅

    Same as row 5 (for ResourceMetricDefinition).

  42. Removed Interface SiteConfigResourceCollection -- Conversion ✅

    Same as row 5 (for SiteConfigResource).

  43. Removed Interface SiteConfigurationSnapshotInfoCollection -- Conversion ✅

    Same as row 5 (for SiteConfigurationSnapshotInfo).

  44. Removed Interface SiteContainerCollection -- Conversion ✅

    Same as row 5 (for SiteContainer).

  45. Removed Interface SiteExtensionInfoCollection -- Conversion ✅

    Same as row 5 (for SiteExtensionInfo).

  46. Removed Interface SkuInfoCollection -- Conversion ✅

    Same as row 5 (for SkuInfo).

  47. Removed Interface SlotDifferenceCollection -- Conversion ✅

    Same as row 5 (for SlotDifference).

  48. Removed Interface SnapshotCollection -- Conversion ✅

    Same as row 5 (for Snapshot).

  49. Removed Interface SourceControlCollection -- Conversion ✅

    Same as row 5 (for SourceControl).

  50. Removed Interface StampCapacityCollection -- Conversion ✅

    Same as row 5 (for StampCapacity).

  51. Removed Interface StaticSiteBasicAuthPropertiesCollection -- Conversion ✅

    Same as row 5 (for StaticSiteBasicAuthPropertiesARMResource).

  52. Removed Interface StaticSiteBuildCollection -- Conversion ✅

    Same as row 5 (for StaticSiteBuildARMResource).

  53. Removed Interface StaticSiteCollection -- Conversion ✅

    Same as row 5 (for StaticSiteARMResource).

  54. Removed Interface StaticSiteCustomDomainOverviewCollection -- Conversion ✅

    Same as row 5 (for StaticSiteCustomDomainOverviewARMResource).

  55. Removed Interface StaticSiteFunctionOverviewCollection -- Conversion ✅

    Same as row 5 (for StaticSiteFunctionOverviewARMResource).

  56. Removed Interface StaticSiteLinkedBackendsCollection -- Conversion ✅

    Same as row 5 (for StaticSiteLinkedBackendARMResource).

  57. Removed Interface StaticSiteUserCollection -- Conversion ✅

    Same as row 5 (for StaticSiteUserARMResource).

  58. Removed Interface StaticSiteUserProvidedFunctionAppsCollection -- Conversion ✅

    Same as row 5 (for StaticSiteUserProvidedFunctionAppARMResource).

  59. Removed Interface TriggeredJobHistoryCollection -- Conversion ✅

    Same as row 5 (for TriggeredJobHistory).

  60. Removed Interface TriggeredWebJobCollection -- Conversion ✅

    Same as row 5 (for TriggeredWebJob).

  61. Removed Interface UsageCollection -- Conversion ✅

    Same as row 5 (for Usage).

  62. Removed Interface WebAppCollection -- Conversion ✅

    Same as row 5 (for Site).

  63. Removed Interface WebAppInstanceStatusCollection -- Conversion ✅

    Same as row 5 (for WebSiteInstanceStatus).

  64. Removed Interface WebAppStackCollection -- Conversion ✅

    Same as row 5 (for WebAppStack).

  65. Removed Interface WebJobCollection -- Conversion ✅

    Same as row 5 (for WebJob).

  66. Removed Interface WorkerPoolCollection -- Conversion ✅

    Same as row 5 (for WorkerPoolResource).

  67. Removed Interface WorkflowEnvelopeCollection -- Conversion ✅

    Same as row 5 (for WorkflowEnvelope).

  68. Removed Interface WorkflowRunActionRepetitionDefinitionCollection -- Conversion ✅

    Same as row 5 (for WorkflowRunActionRepetitionDefinition).

Paged operation rename: getXxx / xxx -> listXxx (29 entries) -- Conversion ✅

In TypeSpec, paged operations use the standard @list semantics, and the operations carry a list prefix. The CHANGELOG's "Features Added" section shows the matching ListXxx operations (e.g., AppServiceEnvironmentsOperations.listChangeVnet, ProviderOperations.listAvailableStacks, WebAppsOperations.listSiteAppSettingsKeyVaultReferences). Because the old per-operation OptionalParams class is named after the (now-renamed) operation, the old name disappears and a new XxxList*OptionalParams is introduced.

Show all 29 entries
  1. Removed Interface AppServiceEnvironmentsChangeVnetOptionalParams -- Conversion ✅

    Operation renamed to listChangeVnet; replaced by AppServiceEnvironmentsListChangeVnetOptionalParams (see "Features Added"). See group root cause above.

  2. Removed Interface AppServiceEnvironmentsGetInboundNetworkDependenciesEndpointsOptionalParams -- Conversion ✅

    Operation renamed to listInboundNetworkDependenciesEndpoints; replaced by AppServiceEnvironmentsListInboundNetworkDependenciesEndpointsOptionalParams. Same as row 8.

  3. Removed Interface AppServiceEnvironmentsGetOutboundNetworkDependenciesEndpointsOptionalParams -- Conversion ✅

    Operation renamed to listOutboundNetworkDependenciesEndpoints. Same as row 8.

  4. Removed Interface AppServiceEnvironmentsGetPrivateEndpointConnectionListOptionalParams -- Conversion ✅

    Operation renamed to listPrivateEndpointConnectionList. Same as row 8.

  5. Removed Interface AppServiceEnvironmentsResumeOptionalParams -- Conversion ✅

    Action returns a paged result; operation renamed to listResume; replaced by AppServiceEnvironmentsListResumeOptionalParams. Same as row 8.

  6. Removed Interface AppServiceEnvironmentsSuspendOptionalParams -- Conversion ✅

    Operation renamed to listSuspend. Same as row 8.

  7. Removed Interface ProviderGetAvailableStacksOnPremOptionalParams -- Conversion ✅

    Operation renamed to listAvailableStacksOnPrem; replaced by ProviderListAvailableStacksOnPremOptionalParams. Same as row 8.

  8. Removed Interface ProviderGetAvailableStacksOptionalParams -- Conversion ✅

    Operation renamed to listAvailableStacks. Same as row 8.

  9. Removed Interface ProviderGetFunctionAppStacksForLocationOptionalParams -- Conversion ✅

    Operation renamed to listFunctionAppStacksForLocation. Same as row 8.

  10. Removed Interface ProviderGetFunctionAppStacksOptionalParams -- Conversion ✅

    Operation renamed to listFunctionAppStacks. Same as row 8.

  11. Removed Interface ProviderGetWebAppStacksForLocationOptionalParams -- Conversion ✅

    Operation renamed to listWebAppStacksForLocation. Same as row 8.

  12. Removed Interface ProviderGetWebAppStacksOptionalParams -- Conversion ✅

    Operation renamed to listWebAppStacks. Same as row 8.

  13. Removed Interface StaticSitesGetBuildDatabaseConnectionsOptionalParams -- Conversion ✅

    Operation renamed to listBuildDatabaseConnections. Same as row 8.

  14. Removed Interface StaticSitesGetBuildDatabaseConnectionsWithDetailsOptionalParams -- Conversion ✅

    Operation renamed to listBuildDatabaseConnectionsWithDetails. Same as row 8.

  15. Removed Interface StaticSitesGetDatabaseConnectionsOptionalParams -- Conversion ✅

    Operation renamed to listDatabaseConnections. Same as row 8.

  16. Removed Interface StaticSitesGetDatabaseConnectionsWithDetailsOptionalParams -- Conversion ✅

    Operation renamed to listDatabaseConnectionsWithDetails. Same as row 8.

  17. Removed Interface StaticSitesGetLinkedBackendsForBuildOptionalParams -- Conversion ✅

    Operation renamed to listLinkedBackendsForBuild. Same as row 8.

  18. Removed Interface StaticSitesGetLinkedBackendsOptionalParams -- Conversion ✅

    Operation renamed to listLinkedBackends. Same as row 8.

  19. Removed Interface StaticSitesGetPrivateEndpointConnectionListOptionalParams -- Conversion ✅

    Operation renamed to listPrivateEndpointConnectionList. Same as row 8.

  20. Removed Interface StaticSitesGetStaticSiteBuildsOptionalParams -- Conversion ✅

    Operation renamed to listStaticSiteBuilds. Same as row 8.

  21. Removed Interface StaticSitesGetStaticSitesByResourceGroupOptionalParams -- Conversion ✅

    Operation renamed to listStaticSitesByResourceGroup. Same as row 8.

  22. Removed Interface StaticSitesGetUserProvidedFunctionAppsForStaticSiteBuildOptionalParams -- Conversion ✅

    Operation renamed to listUserProvidedFunctionAppsForStaticSiteBuild. Same as row 8.

  23. Removed Interface StaticSitesGetUserProvidedFunctionAppsForStaticSiteOptionalParams -- Conversion ✅

    Operation renamed to listUserProvidedFunctionAppsForStaticSite. Same as row 8.

  24. Removed Interface WebAppsGetAppSettingsKeyVaultReferencesOptionalParams -- Conversion ✅

    Operation renamed to listSiteAppSettingsKeyVaultReferences (or listAppSettingsKeyVaultReferences). Same as row 8.

  25. Removed Interface WebAppsGetAppSettingsKeyVaultReferencesSlotOptionalParams -- Conversion ✅

    Operation renamed to the corresponding list*Slot variant. Same as row 8.

  26. Removed Interface WebAppsGetPrivateEndpointConnectionListOptionalParams -- Conversion ✅

    Operation renamed to listPrivateEndpointConnectionList. Same as row 8.

  27. Removed Interface WebAppsGetPrivateEndpointConnectionListSlotOptionalParams -- Conversion ✅

    Operation renamed to the corresponding list*Slot variant. Same as row 8.

  28. Removed Interface WebAppsGetSiteConnectionStringKeyVaultReferencesOptionalParams -- Conversion ✅

    Operation renamed to listSiteConnectionStringKeyVaultReferences. Same as row 8.

  29. Removed Interface WebAppsGetSiteConnectionStringKeyVaultReferencesSlotOptionalParams -- Conversion ✅

    Operation renamed to the corresponding list*Slot variant. Same as row 8.

Orphan / tree-shaken types (26 entries) -- Conversion ✅

These types existed in old AutoRest output but are not reachable from any operation in the new TypeSpec service surface. Several are container-app / Dapr / scale-related models that belong to @azure/arm-appcontainers rather than @azure/arm-appservice; the rest are filter / helper types whose old usage sites now use raw strings or inline types in the TypeSpec definitions. Verified by grepping the new api.md for each name -- all 26 are completely absent.

Show all 26 entries
  1. Removed Interface AppserviceGithubToken -- Conversion ✅

    Orphan type; not referenced by any operation in the new service surface.

  2. Removed Interface AppserviceGithubTokenRequest -- Conversion ✅

    Same as row 14.

  3. Removed Interface CipherSuites -- Conversion ✅

    Same as row 14.

  4. Removed Interface Container -- Conversion ✅

    Container Apps model; not part of the AppService TypeSpec surface (lives in @azure/arm-appcontainers). Same as row 14.

  5. Removed Interface ContainerResources -- Conversion ✅

    Same as row 22.

  6. Removed Interface CustomScaleRule -- Conversion ✅

    Container Apps scale rule type. Same as row 22.

  7. Removed Interface Dapr -- Conversion ✅

    Container Apps Dapr type. Same as row 22.

  8. Removed Interface DaprComponent -- Conversion ✅

    Same as row 22.

  9. Removed Interface DaprMetadata -- Conversion ✅

    Same as row 22.

  10. Removed Interface EnvironmentVar -- Conversion ✅

    Container Apps environment-variable type. Same as row 22.

  11. Removed Interface ErrorPage -- Conversion ✅

    Same as row 14.

  12. Removed Interface ExpressionTraces -- Conversion ✅

    Same as row 14.

  13. Removed Interface Global_2 -- Conversion ✅

    AutoRest naming-collision artifact (Global clashed with the new GlobalOperations group); the underlying model has no remaining references. Same as row 14.

  14. Removed Interface HttpScaleRule -- Conversion ✅

    Container Apps scale rule. Same as row 22.

  15. Removed Interface PrivateLinkConnectionApprovalRequestResource -- Conversion ✅

    Request body type for approveOrRejectPrivateEndpointConnection. In the new SDK the request body uses RemotePrivateEndpointConnectionARMResource directly, so this wrapper is orphan. Same as row 14.

  16. Removed Interface QueueScaleRule -- Conversion ✅

    Container Apps scale rule. Same as row 22.

  17. Removed Interface Scale -- Conversion ✅

    Container Apps scale settings. Same as row 22.

  18. Removed Interface ScaleRule -- Conversion ✅

    Container Apps scale rule. Same as row 22.

  19. Removed Interface ScaleRuleAuth -- Conversion ✅

    Same as row 22.

  20. Removed Interface SubResource -- Conversion ✅

    Used to be the { id } helper; the new TypeSpec models embed the id property directly where needed. Same as row 14.

  21. Removed Interface Template -- Conversion ✅

    Container Apps revision template. Same as row 22.

  22. Removed Interface WorkflowFilter -- Conversion ✅

    $filter query-parameter helper type; in the new SDK the filter argument is a raw string on the options interface. Same as row 14.

  23. Removed Interface WorkflowRunActionFilter -- Conversion ✅

    Same as row 122.

  24. Removed Interface WorkflowRunFilter -- Conversion ✅

    Same as row 122.

  25. Removed Interface WorkflowTriggerFilter -- Conversion ✅

    Same as row 122.

  26. Removed Interface WorkflowTriggerHistoryFilter -- Conversion ✅

    Same as row 122.

ARM common-type Resource restructure (3 entries) -- Conversion ✅

In the old AutoRest output, Resource was self-defined as { id, kind, location, name, tags, type }. In the new TypeSpec, Resource is the ARM common type { id, name, type, systemData }; kind is now a per-resource property (not on the base), and location / tags were moved to TrackedResource extends Resource. Verified directly in api.md.

  1. Interface Resource no longer has parameter kind -- Conversion ✅

    kind is no longer on the ARM common Resource base; resources that need kind declare it themselves (e.g., ProxyResource extensions, TriggeredWebJob.kind).

  2. Interface Resource no longer has parameter location -- Conversion ✅

    location moved from the base Resource to TrackedResource extends Resource per the ARM common types.

  3. Interface Resource no longer has parameter tags -- Conversion ✅

    tags moved from the base Resource to TrackedResource extends Resource per the ARM common types.

location now required on tracked resources (3 entries) -- Conversion

Three resource types previously extended a self-defined WorkflowResource which had location?: string (optional). In the new TypeSpec they extend TrackedResource, where location: string is required per the ARM common types. This is consistent with the rest of ARM but is a stricter constraint on caller-provided payloads, so it is left unaccepted for explicit human review.

  1. Parameter location of interface RequestHistory is now required -- Conversion

    Old: RequestHistory extends WorkflowResource (with location?: string). New: RequestHistory extends TrackedResource (with location: string). Optionality tightened by the ARM common-type migration. Flag for reviewer confirmation.

  2. Parameter location of interface WorkflowRunActionRepetitionDefinition is now required -- Conversion

    Same as row 131.

  3. Parameter location of interface WorkflowVersion is now required -- Conversion

    Same as row 131.


Self-Review Checklist Results

  • Check 1 -- no cosmetic descriptions as root causes: All "new signature" rows (1-4) are attributed to the structural cascade from row 134's enum expansion. The cosmetic deltas (method-to-arrow, XxxResponse wrapper removal, options-interface base swap) are explicitly noted as not the root cause. PASS.
  • Check 2 -- cascade completeness: For rows 1-4 the cascade walk is documented explicitly above (direct params, options properties, type graph walk through TriggeredWebJob / TriggeredJobHistory / TriggeredJobRun -> TriggeredWebJobStatus). PASS.
  • No pattern numbers in report: Confirmed -- only plain-language descriptions are used. PASS.
  • All row references valid: Cross-references (rows 5, 8, 14, 22, 122, 131, 134) all point to entries that appear earlier in their respective tables. PASS.

Verification Totals

  • Type 1: 5 (rows 1, 2, 3, 4, 134)
  • Type 2a (Conversion): 129 (68 collection + 29 paged-op rename + 26 orphan + 3 Resource restructure + 3 location required)
  • Type 2b (Emitter only): 0
  • Sum: 5 + 129 = 134, matches the CHANGELOG entry count. PASS.

Open Questions

  1. location now required (rows 131-133): This is a tightening of caller obligation -- existing user code that omitted location when constructing RequestHistory, WorkflowRunActionRepetitionDefinition, or WorkflowVersion will now fail compilation. The ARM common-type migration is intentional, but the practical impact depends on whether real callers construct these types client-side or only read them from server responses. Reviewer should confirm whether a TypeSpec @@madeRequired -> @@madeOptional customization (in client.tsp) is desired to keep location optional and avoid the break.
  2. Interface Resource deltas (rows 128-130): The bare Resource interface losing kind/location/tags is correct per ARM common types, but any user code that declared a variable typed Resource (rather than a concrete TrackedResource/ProxyResource subclass) and accessed those properties will break. This is an SDK-wide ARM-common-types fact; no customization is recommended, but the reviewer may want to highlight it in release notes.
  3. PrivateLinkConnectionApprovalRequestResource (row 57): Classified as orphan because no operation in the new api.md references it and the approveOrRejectPrivateEndpointConnection action now takes RemotePrivateEndpointConnectionARMResource. If the intent was to keep the dedicated request-body type as part of the public surface, this would need a TypeSpec model addition.
  4. Layer B absence (assumption): API version 2025-05-01 only exists as TypeSpec-generated openapi.json at the spec commit -- there is no pre-existing hand-authored 2025-05-01 swagger. The analysis therefore treats Layer B as absent and folds all API-behavior differences into Type 1. If a reviewer is aware of a separate hand-authored 2025-05-01 swagger commit, classifications between Type 1 and Type 2a may need to be revisited.
  5. Global_2 (row 46): Likely an AutoRest naming-collision artifact. Not verified end-to-end which old swagger definition it mapped to; assumed orphan because nothing in the new api.md references it.

Total: 5 (Type 1: API Version Upgrade) + 129 (Type 2: TypeSpec/Emitter Migration) = 134 breaking changes

Type 2 breakdown: 129 items from TypeSpec conversion, 0 items from emitter-only differences.

Methodology

Four-layer comparison:

  • Layer A -- hand-authored swagger at API version 2025-03-01 from old SDK 18.0.0's _meta.json commit 5476ceee2ed3364cdedec8e0d002d2e45389a8f0.
  • Layer B -- absent. The 2025-05-01 API version was introduced by the TypeSpec checkin itself; there is no hand-authored 2025-05-01 swagger.
  • Layer C -- TypeSpec-generated openapi.json at API version 2025-05-01 from spec commit dfa31ea6c8aab1c285b1b97675f320b06af1c5d1 (the CommitSHA recorded in the latest generation commit 970b6aae on the SDK PR branch).
  • Layer D -- sdk/appservice/arm-appservice/review/arm-appservice-node.api.md from main (old) and from the PR head 626c0226 (new).

Classification: differences between Layer A and Layer C that reflect REST-API behavior (new enum value, new property, new operation) are Type 1; differences that are pure structural reshaping (collection wrappers, options renaming, ARM common types, tree-shaking, paged op naming) are Type 2a (Conversion). No Type 2b (Emitter-only) cases were found in this PR.

@kazrael2119
Copy link
Copy Markdown
Member

@copilot follow these steps:
1: run pnpm build -F @azure/eslint-plugin-azure-sdk
2: cd into the package and run npm exec -- eslint package.json api-extractor.json src test samples-dev --fix --fix-type [problem,suggestion]
3: re-build this package
4: run pnpm format

Copilot AI and others added 2 commits May 28, 2026 08:38
Co-authored-by: kazrael2119 <98569699+kazrael2119@users.noreply.github.com>
Co-authored-by: kazrael2119 <98569699+kazrael2119@users.noreply.github.com>
@kazrael2119
Copy link
Copy Markdown
Member

@copilot why do this commit? 8d851a8

Comment thread sdk/appservice/arm-appservice/tsp-location.yaml Outdated
@kazrael2119
Copy link
Copy Markdown
Member

@copilot revert this commit's changes 8d851a83436a0ffd695f70df19825e60d081d00f

Co-authored-by: kazrael2119 <98569699+kazrael2119@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI commented May 29, 2026

@copilot revert this commit's changes 8d851a83436a0ffd695f70df19825e60d081d00f

Done in 626c0226a — I reverted the changes introduced by 8d851a83436a0ffd695f70df19825e60d081d00f.

Copilot AI requested a review from kazrael2119 May 29, 2026 02:55
@JialinHuang803 JialinHuang803 merged commit 67097ef into main May 29, 2026
13 checks passed
@JialinHuang803 JialinHuang803 deleted the sdkauto/@azure-arm-appservice-5864522 branch May 29, 2026 07:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

first-typespec-migration first time to migrate to typespec Mgmt This issue is related to a management-plane library. mgmt-review-added Management SDK review completed Self-Service Release PR for self-service release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants