[AutoPR @azure-arm-appservice]-generated-from-SDK Generation - JS-6087416#37912
Conversation
…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.
API Change CheckAPIView identified API level changes in this PR and created the following API reviews |
…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.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
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
This comment was marked as outdated.
This comment was marked as outdated.
|
@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>
Done. Merged main into the branch and resolved conflicts in 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:
If you need me to access, download, or install something from one of these locations, you can either:
|
Next Steps to MergeOnly failed checks and required actions are listed below.
|
There was a problem hiding this comment.
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
|
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
Spec References: Original Swagger (Layer A) -- 15 files at 2025-03-01 @
|
| # | 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:
- Direct parameter changes: None. Positional parameters
(resourceGroupName, name, webJobName[, id][, slot])are unchanged in both api.md versions. - Options property changes:
WebAppsGetTriggeredWebJob*OptionalParamsare empty in both old and new (only extend the base options interface). The base interface changed fromcoreClient.OperationOptionstoOperationOptions, but no properties were added/removed/retyped. - 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(inbroken_models) -> cascade. - Walk:
TriggeredJobHistory.runs -> TriggeredJobRun[] -> status -> TriggeredWebJobStatus-> cascade.
- Initial
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
Removed Interface ApiKVReferenceCollection-- Conversion ✅Pagination collection wrapper removed. The corresponding
list*operation returnsPagedAsyncIterableIterator<ApiKvReference>directly. See group root cause above.Removed Interface ApplicationStackCollection-- Conversion ✅Same as row 5 (for
ApplicationStack).Removed Interface AppServiceEnvironmentCollection-- Conversion ✅Same as row 5 (for
AppServiceEnvironmentResource).Removed Interface AppServicePlanCollection-- Conversion ✅Same as row 5 (for
AppServicePlan).Removed Interface AseRegionCollection-- Conversion ✅Same as row 5 (for
AseRegion).Removed Interface BackupItemCollection-- Conversion ✅Same as row 5 (for
BackupItem).Removed Interface BillingMeterCollection-- Conversion ✅Same as row 5 (for
BillingMeter).Removed Interface CertificateCollection-- Conversion ✅Same as row 5 (for
Certificate).Removed Interface ContinuousWebJobCollection-- Conversion ✅Same as row 5 (for
ContinuousWebJob).Removed Interface CsmDeploymentStatusCollection-- Conversion ✅Same as row 5 (for
CsmDeploymentStatus).Removed Interface CsmOperationCollection-- Conversion ✅Same as row 5 (for
CsmOperationDescription).Removed Interface CsmUsageQuotaCollection-- Conversion ✅Same as row 5 (for
CsmUsageQuota).Removed Interface CustomHostnameSitesCollection-- Conversion ✅Same as row 5 (for
CustomHostnameSites).Removed Interface DatabaseConnectionCollection-- Conversion ✅Same as row 5 (for
DatabaseConnection).Removed Interface DeletedWebAppCollection-- Conversion ✅Same as row 5 (for
DeletedSite).Removed Interface DeploymentCollection-- Conversion ✅Same as row 5 (for
Deployment).Removed Interface DetectorResponseCollection-- Conversion ✅Same as row 5 (for
DetectorResponse).Removed Interface DiagnosticAnalysisCollection-- Conversion ✅Same as row 5 (for
AnalysisDefinition).Removed Interface DiagnosticCategoryCollection-- Conversion ✅Same as row 5 (for
DiagnosticCategory).Removed Interface DiagnosticDetectorCollection-- Conversion ✅Same as row 5 (for
DetectorDefinition).Removed Interface FunctionAppStackCollection-- Conversion ✅Same as row 5 (for
FunctionAppStack).Removed Interface FunctionEnvelopeCollection-- Conversion ✅Same as row 5 (for
FunctionEnvelope).Removed Interface GeoRegionCollection-- Conversion ✅Same as row 5 (for
GeoRegion).Removed Interface HostNameBindingCollection-- Conversion ✅Same as row 5 (for
HostNameBinding).Removed Interface HybridConnectionCollection-- Conversion ✅Same as row 5 (for
HybridConnection).Removed Interface IdentifierCollection-- Conversion ✅Same as row 5 (for
Identifier).Removed Interface InboundEnvironmentEndpointCollection-- Conversion ✅Same as row 5 (for
InboundEnvironmentEndpoint).Removed Interface KubeEnvironmentCollection-- Conversion ✅Same as row 5 (for
KubeEnvironment).Removed Interface OutboundEnvironmentEndpointCollection-- Conversion ✅Same as row 5 (for
OutboundEnvironmentEndpoint).Removed Interface PerfMonCounterCollection-- Conversion ✅Same as row 5 (for
PerfMonResponse).Removed Interface PremierAddOnOfferCollection-- Conversion ✅Same as row 5 (for
PremierAddOnOffer).Removed Interface PrivateEndpointConnectionCollection-- Conversion ✅Same as row 5 (for
RemotePrivateEndpointConnectionARMResource).Removed Interface ProcessInfoCollection-- Conversion ✅Same as row 5 (for
ProcessInfo).Removed Interface ProcessModuleInfoCollection-- Conversion ✅Same as row 5 (for
ProcessModuleInfo).Removed Interface ProcessThreadInfoCollection-- Conversion ✅Same as row 5 (for
ProcessThreadInfo).Removed Interface PublicCertificateCollection-- Conversion ✅Same as row 5 (for
PublicCertificate).Removed Interface PublishingCredentialsPoliciesCollection-- Conversion ✅Same as row 5 (for
CsmPublishingCredentialsPoliciesEntity).Removed Interface RecommendationCollection-- Conversion ✅Same as row 5 (for
Recommendation).Removed Interface ResourceCollection-- Conversion ✅Same as row 5 (collection of strings / resource ids from
getSubscriptionDeploymentLocationsor similar).Removed Interface ResourceHealthMetadataCollection-- Conversion ✅Same as row 5 (for
ResourceHealthMetadata).Removed Interface ResourceMetricDefinitionCollection-- Conversion ✅Same as row 5 (for
ResourceMetricDefinition).Removed Interface SiteConfigResourceCollection-- Conversion ✅Same as row 5 (for
SiteConfigResource).Removed Interface SiteConfigurationSnapshotInfoCollection-- Conversion ✅Same as row 5 (for
SiteConfigurationSnapshotInfo).Removed Interface SiteContainerCollection-- Conversion ✅Same as row 5 (for
SiteContainer).Removed Interface SiteExtensionInfoCollection-- Conversion ✅Same as row 5 (for
SiteExtensionInfo).Removed Interface SkuInfoCollection-- Conversion ✅Same as row 5 (for
SkuInfo).Removed Interface SlotDifferenceCollection-- Conversion ✅Same as row 5 (for
SlotDifference).Removed Interface SnapshotCollection-- Conversion ✅Same as row 5 (for
Snapshot).Removed Interface SourceControlCollection-- Conversion ✅Same as row 5 (for
SourceControl).Removed Interface StampCapacityCollection-- Conversion ✅Same as row 5 (for
StampCapacity).Removed Interface StaticSiteBasicAuthPropertiesCollection-- Conversion ✅Same as row 5 (for
StaticSiteBasicAuthPropertiesARMResource).Removed Interface StaticSiteBuildCollection-- Conversion ✅Same as row 5 (for
StaticSiteBuildARMResource).Removed Interface StaticSiteCollection-- Conversion ✅Same as row 5 (for
StaticSiteARMResource).Removed Interface StaticSiteCustomDomainOverviewCollection-- Conversion ✅Same as row 5 (for
StaticSiteCustomDomainOverviewARMResource).Removed Interface StaticSiteFunctionOverviewCollection-- Conversion ✅Same as row 5 (for
StaticSiteFunctionOverviewARMResource).Removed Interface StaticSiteLinkedBackendsCollection-- Conversion ✅Same as row 5 (for
StaticSiteLinkedBackendARMResource).Removed Interface StaticSiteUserCollection-- Conversion ✅Same as row 5 (for
StaticSiteUserARMResource).Removed Interface StaticSiteUserProvidedFunctionAppsCollection-- Conversion ✅Same as row 5 (for
StaticSiteUserProvidedFunctionAppARMResource).Removed Interface TriggeredJobHistoryCollection-- Conversion ✅Same as row 5 (for
TriggeredJobHistory).Removed Interface TriggeredWebJobCollection-- Conversion ✅Same as row 5 (for
TriggeredWebJob).Removed Interface UsageCollection-- Conversion ✅Same as row 5 (for
Usage).Removed Interface WebAppCollection-- Conversion ✅Same as row 5 (for
Site).Removed Interface WebAppInstanceStatusCollection-- Conversion ✅Same as row 5 (for
WebSiteInstanceStatus).Removed Interface WebAppStackCollection-- Conversion ✅Same as row 5 (for
WebAppStack).Removed Interface WebJobCollection-- Conversion ✅Same as row 5 (for
WebJob).Removed Interface WorkerPoolCollection-- Conversion ✅Same as row 5 (for
WorkerPoolResource).Removed Interface WorkflowEnvelopeCollection-- Conversion ✅Same as row 5 (for
WorkflowEnvelope).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
Removed Interface AppServiceEnvironmentsChangeVnetOptionalParams-- Conversion ✅Operation renamed to
listChangeVnet; replaced byAppServiceEnvironmentsListChangeVnetOptionalParams(see "Features Added"). See group root cause above.Removed Interface AppServiceEnvironmentsGetInboundNetworkDependenciesEndpointsOptionalParams-- Conversion ✅Operation renamed to
listInboundNetworkDependenciesEndpoints; replaced byAppServiceEnvironmentsListInboundNetworkDependenciesEndpointsOptionalParams. Same as row 8.Removed Interface AppServiceEnvironmentsGetOutboundNetworkDependenciesEndpointsOptionalParams-- Conversion ✅Operation renamed to
listOutboundNetworkDependenciesEndpoints. Same as row 8.Removed Interface AppServiceEnvironmentsGetPrivateEndpointConnectionListOptionalParams-- Conversion ✅Operation renamed to
listPrivateEndpointConnectionList. Same as row 8.Removed Interface AppServiceEnvironmentsResumeOptionalParams-- Conversion ✅Action returns a paged result; operation renamed to
listResume; replaced byAppServiceEnvironmentsListResumeOptionalParams. Same as row 8.Removed Interface AppServiceEnvironmentsSuspendOptionalParams-- Conversion ✅Operation renamed to
listSuspend. Same as row 8.Removed Interface ProviderGetAvailableStacksOnPremOptionalParams-- Conversion ✅Operation renamed to
listAvailableStacksOnPrem; replaced byProviderListAvailableStacksOnPremOptionalParams. Same as row 8.Removed Interface ProviderGetAvailableStacksOptionalParams-- Conversion ✅Operation renamed to
listAvailableStacks. Same as row 8.Removed Interface ProviderGetFunctionAppStacksForLocationOptionalParams-- Conversion ✅Operation renamed to
listFunctionAppStacksForLocation. Same as row 8.Removed Interface ProviderGetFunctionAppStacksOptionalParams-- Conversion ✅Operation renamed to
listFunctionAppStacks. Same as row 8.Removed Interface ProviderGetWebAppStacksForLocationOptionalParams-- Conversion ✅Operation renamed to
listWebAppStacksForLocation. Same as row 8.Removed Interface ProviderGetWebAppStacksOptionalParams-- Conversion ✅Operation renamed to
listWebAppStacks. Same as row 8.Removed Interface StaticSitesGetBuildDatabaseConnectionsOptionalParams-- Conversion ✅Operation renamed to
listBuildDatabaseConnections. Same as row 8.Removed Interface StaticSitesGetBuildDatabaseConnectionsWithDetailsOptionalParams-- Conversion ✅Operation renamed to
listBuildDatabaseConnectionsWithDetails. Same as row 8.Removed Interface StaticSitesGetDatabaseConnectionsOptionalParams-- Conversion ✅Operation renamed to
listDatabaseConnections. Same as row 8.Removed Interface StaticSitesGetDatabaseConnectionsWithDetailsOptionalParams-- Conversion ✅Operation renamed to
listDatabaseConnectionsWithDetails. Same as row 8.Removed Interface StaticSitesGetLinkedBackendsForBuildOptionalParams-- Conversion ✅Operation renamed to
listLinkedBackendsForBuild. Same as row 8.Removed Interface StaticSitesGetLinkedBackendsOptionalParams-- Conversion ✅Operation renamed to
listLinkedBackends. Same as row 8.Removed Interface StaticSitesGetPrivateEndpointConnectionListOptionalParams-- Conversion ✅Operation renamed to
listPrivateEndpointConnectionList. Same as row 8.Removed Interface StaticSitesGetStaticSiteBuildsOptionalParams-- Conversion ✅Operation renamed to
listStaticSiteBuilds. Same as row 8.Removed Interface StaticSitesGetStaticSitesByResourceGroupOptionalParams-- Conversion ✅Operation renamed to
listStaticSitesByResourceGroup. Same as row 8.Removed Interface StaticSitesGetUserProvidedFunctionAppsForStaticSiteBuildOptionalParams-- Conversion ✅Operation renamed to
listUserProvidedFunctionAppsForStaticSiteBuild. Same as row 8.Removed Interface StaticSitesGetUserProvidedFunctionAppsForStaticSiteOptionalParams-- Conversion ✅Operation renamed to
listUserProvidedFunctionAppsForStaticSite. Same as row 8.Removed Interface WebAppsGetAppSettingsKeyVaultReferencesOptionalParams-- Conversion ✅Operation renamed to
listSiteAppSettingsKeyVaultReferences(orlistAppSettingsKeyVaultReferences). Same as row 8.Removed Interface WebAppsGetAppSettingsKeyVaultReferencesSlotOptionalParams-- Conversion ✅Operation renamed to the corresponding
list*Slotvariant. Same as row 8.Removed Interface WebAppsGetPrivateEndpointConnectionListOptionalParams-- Conversion ✅Operation renamed to
listPrivateEndpointConnectionList. Same as row 8.Removed Interface WebAppsGetPrivateEndpointConnectionListSlotOptionalParams-- Conversion ✅Operation renamed to the corresponding
list*Slotvariant. Same as row 8.Removed Interface WebAppsGetSiteConnectionStringKeyVaultReferencesOptionalParams-- Conversion ✅Operation renamed to
listSiteConnectionStringKeyVaultReferences. Same as row 8.Removed Interface WebAppsGetSiteConnectionStringKeyVaultReferencesSlotOptionalParams-- Conversion ✅Operation renamed to the corresponding
list*Slotvariant. 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
Removed Interface AppserviceGithubToken-- Conversion ✅Orphan type; not referenced by any operation in the new service surface.
Removed Interface AppserviceGithubTokenRequest-- Conversion ✅Same as row 14.
Removed Interface CipherSuites-- Conversion ✅Same as row 14.
Removed Interface Container-- Conversion ✅Container Apps model; not part of the AppService TypeSpec surface (lives in
@azure/arm-appcontainers). Same as row 14.Removed Interface ContainerResources-- Conversion ✅Same as row 22.
Removed Interface CustomScaleRule-- Conversion ✅Container Apps scale rule type. Same as row 22.
Removed Interface Dapr-- Conversion ✅Container Apps Dapr type. Same as row 22.
Removed Interface DaprComponent-- Conversion ✅Same as row 22.
Removed Interface DaprMetadata-- Conversion ✅Same as row 22.
Removed Interface EnvironmentVar-- Conversion ✅Container Apps environment-variable type. Same as row 22.
Removed Interface ErrorPage-- Conversion ✅Same as row 14.
Removed Interface ExpressionTraces-- Conversion ✅Same as row 14.
Removed Interface Global_2-- Conversion ✅AutoRest naming-collision artifact (
Globalclashed with the newGlobalOperationsgroup); the underlying model has no remaining references. Same as row 14.Removed Interface HttpScaleRule-- Conversion ✅Container Apps scale rule. Same as row 22.
Removed Interface PrivateLinkConnectionApprovalRequestResource-- Conversion ✅Request body type for
approveOrRejectPrivateEndpointConnection. In the new SDK the request body usesRemotePrivateEndpointConnectionARMResourcedirectly, so this wrapper is orphan. Same as row 14.Removed Interface QueueScaleRule-- Conversion ✅Container Apps scale rule. Same as row 22.
Removed Interface Scale-- Conversion ✅Container Apps scale settings. Same as row 22.
Removed Interface ScaleRule-- Conversion ✅Container Apps scale rule. Same as row 22.
Removed Interface ScaleRuleAuth-- Conversion ✅Same as row 22.
Removed Interface SubResource-- Conversion ✅Used to be the
{ id }helper; the new TypeSpec models embed theidproperty directly where needed. Same as row 14.Removed Interface Template-- Conversion ✅Container Apps revision template. Same as row 22.
Removed Interface WorkflowFilter-- Conversion ✅$filterquery-parameter helper type; in the new SDK the filter argument is a raw string on the options interface. Same as row 14.Removed Interface WorkflowRunActionFilter-- Conversion ✅Same as row 122.
Removed Interface WorkflowRunFilter-- Conversion ✅Same as row 122.
Removed Interface WorkflowTriggerFilter-- Conversion ✅Same as row 122.
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.
Interface Resource no longer has parameter kind-- Conversion ✅kindis no longer on the ARM commonResourcebase; resources that needkinddeclare it themselves (e.g.,ProxyResourceextensions,TriggeredWebJob.kind).Interface Resource no longer has parameter location-- Conversion ✅locationmoved from the baseResourcetoTrackedResource extends Resourceper the ARM common types.Interface Resource no longer has parameter tags-- Conversion ✅tagsmoved from the baseResourcetoTrackedResource extends Resourceper 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.
Parameter location of interface RequestHistory is now required-- ConversionOld:
RequestHistory extends WorkflowResource(withlocation?: string). New:RequestHistory extends TrackedResource(withlocation: string). Optionality tightened by the ARM common-type migration. Flag for reviewer confirmation.Parameter location of interface WorkflowRunActionRepetitionDefinition is now required-- ConversionSame as row 131.
Parameter location of interface WorkflowVersion is now required-- ConversionSame 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,
XxxResponsewrapper 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
locationnow required (rows 131-133): This is a tightening of caller obligation -- existing user code that omittedlocationwhen constructingRequestHistory,WorkflowRunActionRepetitionDefinition, orWorkflowVersionwill 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->@@madeOptionalcustomization (inclient.tsp) is desired to keeplocationoptional and avoid the break.Interface Resourcedeltas (rows 128-130): The bareResourceinterface losingkind/location/tagsis correct per ARM common types, but any user code that declared a variable typedResource(rather than a concreteTrackedResource/ProxyResourcesubclass) 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.PrivateLinkConnectionApprovalRequestResource(row 57): Classified as orphan because no operation in the new api.md references it and theapproveOrRejectPrivateEndpointConnectionaction now takesRemotePrivateEndpointConnectionARMResource. If the intent was to keep the dedicated request-body type as part of the public surface, this would need a TypeSpec model addition.- Layer B absence (assumption): API version 2025-05-01 only exists as TypeSpec-generated
openapi.jsonat 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. 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.jsoncommit5476ceee2ed3364cdedec8e0d002d2e45389a8f0. - 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.jsonat API version 2025-05-01 from spec commitdfa31ea6c8aab1c285b1b97675f320b06af1c5d1(theCommitSHArecorded in the latest generation commit970b6aaeon the SDK PR branch). - Layer D --
sdk/appservice/arm-appservice/review/arm-appservice-node.api.mdfrom main (old) and from the PR head626c0226(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.
|
@copilot follow these steps: |
Co-authored-by: kazrael2119 <98569699+kazrael2119@users.noreply.github.com>
Co-authored-by: kazrael2119 <98569699+kazrael2119@users.noreply.github.com>
|
@copilot revert this commit's changes |
Co-authored-by: kazrael2119 <98569699+kazrael2119@users.noreply.github.com>
Done in |
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
Spec pull request: [AppService] Refactor msdeploy tsp definitions azure-rest-api-specs#40394
Spec API version: 2025-05-01