Skip to content

[AutoPR @azure-arm-apimanagement]-generated-from-SDK Generation - JS-6276832#38486

Closed
azure-sdk wants to merge 3 commits into
mainfrom
sdkauto/@azure-arm-apimanagement-6276832
Closed

[AutoPR @azure-arm-apimanagement]-generated-from-SDK Generation - JS-6276832#38486
azure-sdk wants to merge 3 commits into
mainfrom
sdkauto/@azure-arm-apimanagement-6276832

Conversation

@azure-sdk
Copy link
Copy Markdown
Collaborator

Configurations: 'specification/apimanagement/resource-manager/Microsoft.ApiManagement/ApiManagement/tspconfig.yaml', and CommitSHA: 'b09aeaa0830a9f5c42bf730aa04294b2b7766656' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6276832 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 May 11, 2026
@v-jiaodi v-jiaodi added refresh PR for SDK refresh mgmt-review-needed labels May 11, 2026
@github-actions github-actions Bot added mgmt-review-in-progress Management SDK review is in progress and removed mgmt-review-needed labels May 11, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Next Steps to Merge

Only failed checks and required actions are listed below.

  • ⏳ This PR is currently in draft state. No CI checks have run yet. Please mark it as ready for review to trigger CI pipelines.

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. The @azure/arm-apimanagement v11.0.0-beta.1 package has a clean public API surface: the CHANGELOG compares with stable version 10.0.0 (no alpha comparison), package version is consistent across package.json and the context file (apiManagementContext.ts), no _N/AutoGenerated naming issues, no ae-forgotten-export warnings, and return types follow the guidelines (portal settings update operations returning void are correct per 204 No Content responses in the APIM REST spec).

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

Benchmarked by Management Release Assistant

@v-jiaodi
Copy link
Copy Markdown
Member

Note

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

Breaking Change Analysis: @azure/arm-apimanagement 11.0.0-beta.1

Old SDK (main) New SDK (PR)
Generator Swagger / AutoRest TypeSpec / emitter
API Version 2024-06-01-preview 2025-09-01-preview
Package Version 10.0.0 11.0.0-beta.1

Spec References:


Type 1: API Version Upgrade (2024-06-01-preview -> 2025-09-01-preview) -- 2 items

# Breaking Change Root Cause
1 Parameter protocol of interface BackendContractProperties is now optional In 2024-06-01-preview (Layer A), protocol was required in BackendContractProperties. The 2025-03-01-preview swagger (Layer B) removed it from the required array, making it optional.
2 Parameter url of interface BackendContractProperties is now optional Same as row 1. url was required in Layer A but removed from required in Layer B (2025-03-01-preview).

Type 2: TypeSpec / Emitter Migration -- 232 items

Root Cause Sub-Type Count Accepted
LRO operations now return PollerLike directly; begin* and begin*AndWait helper methods removed Emitter 74
getEntityTag, checkEntityExists, confirmConsentCode, OperationsResults.get now return void; old response wrapper types (header-only wrappers) removed Emitter 82
Paging collection wrapper interfaces removed (*Collection, IdentityProviderList, GatewayResourceSkuResults, ResourceSkuResults); modular SDK returns PagedAsyncIterableIterator<T> directly Emitter 59
SchemaContract no longer exposes flattened components, definitions, value properties; x-ms-client-flatten on nested document property not honored by TypeSpec emitter Emitter 3
Options interface renamed from XxxOptionalParams to XxxOptions naming Emitter 1
Orphan types removed (not reachable from any operation): ResolverResultContract, ResolverResultLogItemContract, AsyncResolverStatus, ApiRevisionInfoContract, QuotaCounterValueContract, PolicyWithComplianceContract, TagResourceContractProperties (renamed to TagTagResourceContractProperties), ApiVersionSetContractDetailsVersioningScheme -> VersioningScheme Emitter 9
HLC deduplication artifacts removed: Cache_2, Notification_2, KeyType_2 Emitter 3
PrivateLinkResourceListResult.value changed from optional to required Conversion 1

Details

LRO begin/beginAndWait removals (74 entries)**

Removed operation LRO methods (74 entries) -- Emitter ✅

LRO operations now return PollerLike directly from the sync method. AutoRest (HLC) generated begin* and begin*AndWait helper variations; TypeSpec emitter generates a single method returning PollerLike<OperationState<T>, T> directly. For example, the new ApiOperations.createOrUpdate returns PollerLike<OperationState<ApiContract>, ApiContract> instead of having beginCreateOrUpdate / beginCreateOrUpdateAndWait.

Removed operations include: Api.beginCreateOrUpdate, Api.beginCreateOrUpdateAndWait, Api.beginDelete, Api.beginDeleteAndWait, ApiGateway.beginCreateOrUpdate, ApiGateway.beginCreateOrUpdateAndWait, ApiGateway.beginDelete, ApiGateway.beginDeleteAndWait, ApiGateway.beginUpdate, ApiGateway.beginUpdateAndWait, ApiGatewayConfigConnection.beginCreateOrUpdate, ApiGatewayConfigConnection.beginCreateOrUpdateAndWait, ApiGatewayConfigConnection.beginDelete, ApiGatewayConfigConnection.beginDeleteAndWait, ApiManagementService.beginApplyNetworkConfigurationUpdates, ApiManagementService.beginApplyNetworkConfigurationUpdatesAndWait, ApiManagementService.beginBackup, ApiManagementService.beginBackupAndWait, ApiManagementService.beginCreateOrUpdate, ApiManagementService.beginCreateOrUpdateAndWait, ApiManagementService.beginDelete, ApiManagementService.beginDeleteAndWait, ApiManagementService.beginMigrateToStv2, ApiManagementService.beginMigrateToStv2AndWait, ApiManagementService.beginRestore, ApiManagementService.beginRestoreAndWait, ApiManagementService.beginUpdate, ApiManagementService.beginUpdateAndWait, ApiSchema.beginCreateOrUpdate, ApiSchema.beginCreateOrUpdateAndWait, DeletedServices.beginPurge, DeletedServices.beginPurgeAndWait, GlobalSchema.beginCreateOrUpdate, GlobalSchema.beginCreateOrUpdateAndWait, NamedValue.beginCreateOrUpdate, NamedValue.beginCreateOrUpdateAndWait, NamedValue.beginRefreshSecret, NamedValue.beginRefreshSecretAndWait, NamedValue.beginUpdate, NamedValue.beginUpdateAndWait, PolicyFragment.beginCreateOrUpdate, PolicyFragment.beginCreateOrUpdateAndWait, PolicyRestrictionValidations.beginByService, PolicyRestrictionValidations.beginByServiceAndWait, PortalRevision.beginCreateOrUpdate, PortalRevision.beginCreateOrUpdateAndWait, PortalRevision.beginUpdate, PortalRevision.beginUpdateAndWait, PrivateEndpointConnection.beginCreateOrUpdate, PrivateEndpointConnection.beginCreateOrUpdateAndWait, PrivateEndpointConnection.beginDelete, PrivateEndpointConnection.beginDeleteAndWait, TenantConfiguration.beginDeploy, TenantConfiguration.beginDeployAndWait, TenantConfiguration.beginSave, TenantConfiguration.beginSaveAndWait, TenantConfiguration.beginValidate, TenantConfiguration.beginValidateAndWait, User.beginDelete, User.beginDeleteAndWait, WorkspaceApi.beginCreateOrUpdate, WorkspaceApi.beginCreateOrUpdateAndWait, WorkspaceApiSchema.beginCreateOrUpdate, WorkspaceApiSchema.beginCreateOrUpdateAndWait, WorkspaceGlobalSchema.beginCreateOrUpdate, WorkspaceGlobalSchema.beginCreateOrUpdateAndWait, WorkspaceNamedValue.beginCreateOrUpdate, WorkspaceNamedValue.beginCreateOrUpdateAndWait, WorkspaceNamedValue.beginRefreshSecret, WorkspaceNamedValue.beginRefreshSecretAndWait, WorkspaceNamedValue.beginUpdate, WorkspaceNamedValue.beginUpdateAndWait, WorkspacePolicyFragment.beginCreateOrUpdate, WorkspacePolicyFragment.beginCreateOrUpdateAndWait

new signature entries (82 entries)

Operation new signature entries (82 entries) -- Emitter ✅

All getEntityTag, checkEntityExists, confirmConsentCode, and OperationsResults.get operations now return Promise<void> instead of Promise<XxxResponse>. The old SDK wrapped the ETag response header in a type alias such as ApiGetEntityTagResponse = ApiGetEntityTagHeaders with eTag?: string. The new modular SDK drops this response wrapper, returning void. This is the response wrapper removal pattern from the TypeSpec emitter. The operation signatures for direct parameters are structurally unchanged.

Cascade check for each entry: return type changed from XxxResponse (header-only wrapper) to void -> structural cause is response wrapper removal. No operation parameters changed. No models in the dependency chain have CHANGELOG-level breaking changes.

Affected operations include: Api.getEntityTag, ApiDiagnostic.getEntityTag, ApiIssue.getEntityTag, ApiIssueAttachment.getEntityTag, ApiIssueComment.getEntityTag, ApiOperation.getEntityTag, ApiOperationPolicy.getEntityTag, ApiPolicy.getEntityTag, ApiRelease.getEntityTag, ApiSchema.getEntityTag, ApiTagDescription.getEntityTag, ApiVersionSet.getEntityTag, ApiWiki.getEntityTag, Authorization.confirmConsentCode, AuthorizationServer.getEntityTag, Backend.getEntityTag, Certificate.getEntityTag, ContentItem.getEntityTag, DelegationSettings.getEntityTag, Diagnostic.getEntityTag, Documentation.getEntityTag, EmailTemplate.getEntityTag, Gateway.getEntityTag, GatewayApi.getEntityTag, GatewayCertificateAuthority.getEntityTag, GatewayHostnameConfiguration.getEntityTag, GlobalSchema.getEntityTag, GraphQLApiResolver.getEntityTag, GraphQLApiResolverPolicy.getEntityTag, Group.getEntityTag, GroupUser.checkEntityExists, IdentityProvider.getEntityTag, Logger.getEntityTag, NamedValue.getEntityTag, NotificationRecipientEmail.checkEntityExists, NotificationRecipientUser.checkEntityExists, OpenIdConnectProvider.getEntityTag, OperationsResults.get, Policy.getEntityTag, PolicyFragment.getEntityTag, PolicyRestriction.getEntityTag, PortalConfig.getEntityTag, PortalRevision.getEntityTag, Product.getEntityTag, ProductApi.checkEntityExists, ProductGroup.checkEntityExists, ProductPolicy.getEntityTag, ProductWiki.getEntityTag, SignInSettings.getEntityTag, SignUpSettings.getEntityTag, Subscription.getEntityTag, Tag.getEntityState, Tag.getEntityStateByApi, Tag.getEntityStateByOperation, Tag.getEntityStateByProduct, TenantAccess.getEntityTag, User.getEntityTag, Workspace.getEntityTag, WorkspaceApi.getEntityTag, WorkspaceApiDiagnostic.getEntityTag, WorkspaceApiOperation.getEntityTag, WorkspaceApiOperationPolicy.getEntityTag, WorkspaceApiPolicy.getEntityTag, WorkspaceApiRelease.getEntityTag, WorkspaceApiSchema.getEntityTag, WorkspaceApiVersionSet.getEntityTag, WorkspaceBackend.getEntityTag, WorkspaceCertificate.getEntityTag, WorkspaceDiagnostic.getEntityTag, WorkspaceGlobalSchema.getEntityTag, WorkspaceGroup.getEntityTag, WorkspaceGroupUser.checkEntityExists, WorkspaceLogger.getEntityTag, WorkspaceNamedValue.getEntityTag, WorkspaceNotificationRecipientEmail.checkEntityExists, WorkspaceNotificationRecipientUser.checkEntityExists, WorkspacePolicy.getEntityTag, WorkspacePolicyFragment.getEntityTag, WorkspaceProduct.getEntityTag, WorkspaceProductPolicy.getEntityTag, WorkspaceSubscription.getEntityTag, WorkspaceTag.getEntityState

*Removed Interface Collection entries (59 entries)

Removed paging collection wrappers (59 entries) -- Emitter ✅

Paging collection wrapper interfaces removed. The modular SDK uses PagedAsyncIterableIterator<T> and returns items directly, eliminating the XxxCollection intermediate wrapper types. IdentityProviderList, ResourceSkuResults, and GatewayResourceSkuResults are also paging wrappers of the same pattern.

Removed collection interfaces: AccessInformationCollection, AllPoliciesCollection, ApiCollection, ApiReleaseCollection, ApiRevisionCollection, ApiVersionSetCollection, AuthorizationAccessPolicyCollection, AuthorizationCollection, AuthorizationProviderCollection, AuthorizationServerCollection, BackendCollection, CacheCollection, CertificateCollection, ContentItemCollection, ContentTypeCollection, DeletedServicesCollection, DiagnosticCollection, DocumentationCollection, EmailTemplateCollection, GatewayCertificateAuthorityCollection, GatewayCollection, GatewayHostnameConfigurationCollection, GatewayResourceSkuResults, GlobalSchemaCollection, GroupCollection, IdentityProviderList, IssueAttachmentCollection, IssueCollection, IssueCommentCollection, LoggerCollection, NamedValueCollection, NotificationCollection, OpenIdConnectProviderCollection, OperationCollection, PolicyFragmentCollection, PolicyRestrictionCollection, PolicyWithComplianceCollection, PortalConfigCollection, PortalRevisionCollection, ProductApiLinkCollection, ProductCollection, ProductGroupLinkCollection, ReportCollection, RequestReportCollection, ResolverCollection, ResourceSkuResults, SchemaCollection, SubscriptionCollection, TagApiLinkCollection, TagCollection, TagDescriptionCollection, TagOperationLinkCollection, TagProductLinkCollection, TagResourceCollection, TenantSettingsCollection, UserCollection, UserIdentityCollection, WikiCollection, WorkspaceCollection

SchemaContract property removal (3 entries)

  1. Interface SchemaContract no longer has parameter components -- Emitter

    In the old SDK, AutoRest honored x-ms-client-flatten: true on SchemaContractProperties.document and inlined SchemaDocumentProperties (which contains components, definitions, value) directly into the generated SchemaContract TypeScript interface. The TypeSpec emitter does not apply x-ms-client-flatten during code generation, so the new SchemaContract has a nested document?: SchemaDocumentProperties property instead. Confirmed: Layer A, B, and C all have x-ms-client-flatten: true on the document reference in SchemaContractProperties, so this is purely an emitter behavior difference (Type 2b).

  2. Interface SchemaContract no longer has parameter definitions -- Emitter

    Same as row 75.

  3. Interface SchemaContract no longer has parameter value -- Emitter

    Same as row 75.

Removed Interface PerformConnectivityCheckAsyncOptionalParams (1 entry)

  1. Removed Interface PerformConnectivityCheckAsyncOptionalParams -- Emitter ✅

    The LRO options interface was renamed. Old SDK had PerformConnectivityCheckAsyncOptionalParams with resumeFrom and updateIntervalInMs properties; new SDK uses ApiManagementServiceResourcesPerformConnectivityCheckAsyncOptionalParams with only updateIntervalInMs (the resumeFrom LRO resume option is no longer exposed).

Orphan type removals (9 entries)

  1. Removed Interface ResolverResultContract -- Emitter ✅

    ResolverResultContract was not referenced in any operation in Layer A swagger paths, making it an orphan type. The TypeSpec emitter prunes types not reachable from operation signatures. This type exists in Layer C swagger definitions but is also unreachable from paths. The old AutoRest (HLC) generated all types regardless of reachability.

  2. Removed Interface ResolverResultLogItemContract -- Emitter ✅

    ResolverResultLogItemContract was only referenced by ResolverResultContract.actionLog. Since ResolverResultContract itself is an orphan (row 79), this type is also unreachable. Same as row 79.

  3. Removed Type Alias AsyncResolverStatus -- Emitter ✅

    AsyncResolverStatus was only used in ResolverResultContract.status. Since ResolverResultContract is an orphan (row 79), AsyncResolverStatus is also unreachable. Same as row 79.

  4. Removed Interface ApiRevisionInfoContract -- Emitter ✅

    ApiRevisionInfoContract was not referenced in any operation path in Layer A swagger. It is an orphan type that AutoRest generated but the TypeSpec emitter prunes. Same as row 79.

  5. Removed Interface QuotaCounterValueContract -- Emitter ✅

    QuotaCounterValueContract was not used in any operation path in Layer A swagger (only referenced within QuotaCounterCollection.value: QuotaCounterValueContractProperties[] - note the operation uses QuotaCounterValueContractProperties, not QuotaCounterValueContract). Orphan type pruned by emitter. Same as row 79.

  6. Removed Interface PolicyWithComplianceContract -- Emitter ✅

    PolicyWithComplianceContract was only used in PolicyWithComplianceCollection.value. The operation AllPolicies.listByService returns PagedAsyncIterableIterator<AllPoliciesContract> in both old and new SDK, not PolicyWithComplianceContract. Orphan type. Same as row 79.

  7. Removed Interface TagResourceContractProperties -- Emitter ✅

    Renamed to TagTagResourceContractProperties. The swagger (TagTagResourceContractProperties in all layers) uses the full prefixed name. AutoRest renamed it to TagResourceContractProperties to remove the stutter; TypeSpec emitter preserves the original swagger name TagTagResourceContractProperties. The property type reference in TagResourceContract.tag changed from TagResourceContractProperties to TagTagResourceContractProperties.

  8. Removed Type Alias ApiVersionSetContractDetailsVersioningScheme -- Emitter ✅

    The type alias was renamed. Old SDK had ApiVersionSetContractDetailsVersioningScheme = string and KnownApiVersionSetContractDetailsVersioningScheme enum. New SDK uses VersioningScheme = string and KnownVersioningScheme. The common type name change pattern -- TypeSpec uses canonical names from ARM common types.

  9. Removed Enum KnownApiVersionSetContractDetailsVersioningScheme -- Emitter ✅

    Same as row 86. The enum was renamed to KnownVersioningScheme to match the VersioningScheme type alias.

HLC deduplication artifact removals (3 entries)

  1. Removed Interface Cache_2 -- Emitter ✅

    AutoRest (HLC) generated Cache_2 as a deduplication artifact when it encountered a naming collision, then re-exported it as Cache. The modular SDK eliminates this indirection and exports Cache directly without the _2 alias. Cache_2 was an internal HLC artifact not present in any swagger layer.

  2. Removed Interface Notification_2 -- Emitter ✅

    Same as row 88. Notification_2 was a HLC deduplication artifact re-exported as Notification. Modular SDK exports Notification directly.

  3. Removed Type Alias KeyType_2 -- Emitter ✅

    Same as row 88. KeyType_2 = "primary" | "secondary" was a HLC deduplication artifact re-exported as KeyType. Modular SDK exports KeyType directly.

PrivateLinkResourceListResult.value now required (1 entry)

  1. Parameter value of interface PrivateLinkResourceListResult is now required -- Conversion

    In Layer A (2024-06-01-preview) and Layer B (2025-03-01-preview) swagger, PrivateLinkResourceListResult.value was optional (not in required array). In Layer C (TypeSpec-generated 2025-09-01-preview), value appears in the required array. This is a TypeSpec modeling decision that differs from the original swagger -- the TypeSpec spec marked value as required where the original swagger did not. This requires review.


Total: 2 (Type 1: API Version Upgrade) + 232 (Type 2: TypeSpec/Emitter Migration) = 234 breaking changes

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

Labels

Mgmt This issue is related to a management-plane library. mgmt-review-in-progress Management SDK review is in progress refresh PR for SDK refresh

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants