Downstream breaking changes
Method impact and affected intents at a glance; expand for before/after evidence.
propertiesConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
properties
Microsoft.ServiceNetworking.AssociationUpdate.properties
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractproperties | Existing JavaScript callers retain the flattened AssociationUpdate request shape. | AssociationUpdate.properties is no longer flattened in the JavaScript SDK. |
Documentation Completeness
Checks only whether newly added operation, model, enum, and interface declarations have a nonempty effective TypeSpec description.
2 findings · 15 declarations checked
PrivateLinkResourcesInterfaceMissing documentation for PrivateLinkResourcesInterfaceAffected intents (1)failed
View TypeSpec declaration missing a description
specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/main.tsp:543-548
@added(Versions.v2026_03_01)
@armResourceOperations
interface PrivateLinkResourcesInterface {
get is ArmResourceRead<PrivateLinkResource>;
listByTrafficController is ArmResourceListByParent<PrivateLinkResource>;
}Why this needs attention
The TypeSpec compiler returned no nonempty documentation for this declaration.
Suggested change
Add a nonempty TypeSpec documentation description.
PrivateEndpointConnectionsInterfaceMissing documentation for PrivateEndpointConnectionsInterfaceAffected intents (1)failed
View TypeSpec declaration missing a description
specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/main.tsp:534-541
@added(Versions.v2026_03_01)
@armResourceOperations
interface PrivateEndpointConnectionsInterface {
get is ArmResourceRead<PrivateEndpointConnection>;
update is ArmResourceCreateOrReplaceAsync<PrivateEndpointConnection>;
delete is ArmResourceDeleteWithoutOkAsync<PrivateEndpointConnection>;
listByTrafficController is ArmResourceListByParent<PrivateEndpointConnection>;
}Why this needs attention
The TypeSpec compiler returned no nonempty documentation for this declaration.
Suggested change
Add a nonempty TypeSpec documentation description.
Semantic intents
Impact links are visible at a glance; expand for changed TypeSpec source, followed by affected operations.
Preserve language-specific SDK shapesAdds Autorest, JavaScript, and C# customizations for the new private-link surface and changes JavaScript flattening for the existing AssociationUpdate request.Impacts (1)modify
Changed TypeSpec source (3)
/** The resource-specific properties for this resource. */ #suppress "@azure-tools/typespec-azure-core/no-legacy-usage" - @Azure.ClientGenerator.Core.Legacy.flattenProperty + @Azure.ClientGenerator.Core.Legacy.flattenProperty("!javascript") properties?: AssociationUpdateProperties; }
"autorest" ); #suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Back compatibility" +@@Azure.ClientGenerator.Core.Legacy.flattenProperty( + Microsoft.ServiceNetworking.PrivateEndpointConnection.properties, + "autorest" +); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Back compatibility" +@@Azure.ClientGenerator.Core.Legacy.flattenProperty( + Microsoft.ServiceNetworking.PrivateLinkResource.properties, + "autorest" +); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "Back compatibility" @@Azure.ClientGenerator.Core.Legacy.flattenProperty( Azure.ResourceManager.Foundations.ResourceUpdateModel.properties, "autorest"
Azure.ResourceManager.Models.SubResource[], "csharp" ); +@@alternateType( + TrafficControllerProperties.privateEndpointConnections, + Azure.ResourceManager.Models.SubResource[], + "csharp" +); +@@alternateType( + FrontendAssociation.id, + Azure.Core.armResourceIdentifier, + "csharp" +); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "property flatten for SDK backward compatibility" +@@Azure.ClientGenerator.Core.Legacy.flattenProperty( + PrivateEndpointConnection.properties, + "csharp" +); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "property flatten for SDK backward compatibility" +@@Azure.ClientGenerator.Core.Legacy.flattenProperty( + PrivateLinkResource.properties, + "csharp" +); + +@@clientName( + PublicNetworkAccess, + "TrafficControllerPublicNetworkAccess", + "csharp" +); +@@clientName( + PrivateLinkServiceConnectionStatus, + "ServiceNetworkingPrivateLinkServiceConnectionStatus", + "csharp" +); @@clientName( Versions.v2023_11_01,
"$DO_NOT_NORMALIZE$V2025_05_01", "javascript" ); +@@clientName( + Versions.v2026_03_01, + "$DO_NOT_NORMALIZE$V2026_03_01", + "javascript" +); // we add this model in this namespace in order to replace some models with this model via alternateType decorator namespace Azure.ResourceManager.Models {
specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/main.tsp:109, specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/back-compatible.tsp, specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/client.tsp
Affected operations (1)
AssociationsInterface_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/associations/{associationName}2026-03-01
HTTP signature and represented payload contract unchanged.
Publish private-link support in API version 2026-03-01Adds a stable API version with private endpoint connections, private link resources, public network access, and version-scoped resource operations and properties.modify
Changed TypeSpec source (1)
/** 2025-03-01 preview version */ v2025_03_01_preview: "2025-03-01-preview", + + /** 2026-03-01 stable version */ + v2026_03_01: "2026-03-01", } using TypeSpec.Http;
@visibility(Lifecycle.Read) fqdn?: string; + /** Whether public network access is allowed for the frontend. Enabled indicates a public frontend; Disabled indicates a private frontend. */ + @added(Versions.v2026_03_01) + publicNetworkAccess?: PublicNetworkAccess; + + /** Reference to an Association resource that contains the subnet where the private frontend should be deployed. */ + @added(Versions.v2026_03_01) + association?: FrontendAssociation; + /** Frontend Security Policy Configuration */ @added(Versions.v2025_03_01_preview) securityPolicyConfigurations?: SecurityPolicyConfigurations;
provisioningState?: ProvisioningState; } +/** Whether public network access is allowed for the frontend. */ +@added(Versions.v2026_03_01) +union PublicNetworkAccess { + string, + + /** Public network access is enabled (public frontend accessible via a public IP address). */ + Enabled: "Enabled", + + /** Public network access is disabled (private frontend accessible only through a private endpoint). */ + Disabled: "Disabled", +} + +/** Reference to an Association resource. */ +@added(Versions.v2026_03_01) +model FrontendAssociation { + /** Resource ID of the Association. */ + id: string; +} + //----------------------- Associations ----------------------- /** Association Subresource of Traffic Controller */ @parentResource(TrafficController)
@added(Versions.v2024_05_01_preview) securityPolicies?: ResourceId[]; + /** Private Endpoint Connections List */ + @visibility(Lifecycle.Read) + @added(Versions.v2026_03_01) + privateEndpointConnections?: ResourceId[]; + /** Security Policy Configuration */ @added(Versions.v2024_05_01_preview) securityPolicyConfigurations?: SecurityPolicyConfigurations;
id: string; } +//----------------------- PrivateEndpointConnection ----------------------- +/** Private Endpoint Connection resource of Traffic Controller. */ +@added(Versions.v2026_03_01) +@parentResource(TrafficController) +model PrivateEndpointConnection + is ProxyResource<PrivateEndpointConnectionProperties> { + /** Private Endpoint Connection */ + @key("privateEndpointConnectionName") + @visibility(Lifecycle.Read) + @path + @segment("privateEndpointConnections") + @pattern("^[A-Za-z0-9]([A-Za-z0-9-_.]{0,62}[A-Za-z0-9])?$") + name: string; +} + +/** Properties of a Private Endpoint Connection. */ +@added(Versions.v2026_03_01) +model PrivateEndpointConnectionProperties { + /** The private endpoint resource. */ + @visibility(Lifecycle.Read) + privateEndpoint?: PrivateEndpointReference; + + /** The connection state of the private endpoint connection. */ + privateLinkServiceConnectionState: PrivateLinkServiceConnectionState; + + /** Provisioning state of the private endpoint connection. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + +/** Reference to a private endpoint resource. */ +@added(Versions.v2026_03_01) +model PrivateEndpointReference { + /** Resource ID of the private endpoint. */ + @visibility(Lifecycle.Read) + id?: string; +} + +/** The state of a private link service connection. */ +@added(Versions.v2026_03_01) +model PrivateLinkServiceConnectionState { + /** Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. */ + status?: PrivateLinkServiceConnectionStatus; + + /** The reason for approval/rejection of the connection. */ + description?: string; + + /** A message indicating if changes on the service provider require any updates on the consumer. */ + actionsRequired?: string; +} + +/** The private endpoint connection status. */ +@added(Versions.v2026_03_01) +union PrivateLinkServiceConnectionStatus { + string, + + /** Connection is pending approval. */ + Pending: "Pending", + + /** Connection is approved. */ + Approved: "Approved", + + /** Connection is rejected. */ + Rejected: "Rejected", + + /** Connection is disconnected. */ + Disconnected: "Disconnected", +} + +//----------------------- PrivateLinkResource ----------------------- +/** A private link resource. */ +@added(Versions.v2026_03_01) +@parentResource(TrafficController) +model PrivateLinkResource is ProxyResource<PrivateLinkResourceProperties> { + /** Private Link Resource */ + @key("privateLinkResourceName") + @visibility(Lifecycle.Read) + @path + @segment("privateLinkResources") + @pattern("^[A-Za-z0-9]([A-Za-z0-9-_.]{0,62}[A-Za-z0-9])?$") + name: string; +} + +/** Properties of a private link resource. */ +@added(Versions.v2026_03_01) +model PrivateLinkResourceProperties { + /** The private link resource group ID. */ + @visibility(Lifecycle.Read) + groupId?: string; + + /** The private link resource required member names. */ + @visibility(Lifecycle.Read) + requiredMembers?: string[]; + + /** The private link resource private DNS zone names. */ + @visibility(Lifecycle.Read) + requiredZoneNames?: string[]; + + /** The status of the last operation. */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; +} + //----------------------- Paths ----------------------- @armResourceOperations interface AssociationsInterface {
listBySubscription is ArmListBySubscription<TrafficController>; } +@added(Versions.v2026_03_01) +@armResourceOperations +interface PrivateEndpointConnectionsInterface { + get is ArmResourceRead<PrivateEndpointConnection>; + update is ArmResourceCreateOrReplaceAsync<PrivateEndpointConnection>; + delete is ArmResourceDeleteWithoutOkAsync<PrivateEndpointConnection>; + listByTrafficController is ArmResourceListByParent<PrivateEndpointConnection>; +} + +@added(Versions.v2026_03_01) +@armResourceOperations +interface PrivateLinkResourcesInterface { + get is ArmResourceRead<PrivateLinkResource>; + listByTrafficController is ArmResourceListByParent<PrivateLinkResource>; +} + interface Operations extends Azure.ResourceManager.Operations {}
specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/main.tsp:17
Affected operations (19)
Showing 10 operation cards; the remaining 9 are listed below.
FrontendsInterface_CreateOrUpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/frontends/{frontendName}2026-03-01
| Contract area | Before | After |
|---|---|---|
| Request body propertyproperties.association | not present | FrontendAssociation (optional) |
| Request body propertyproperties.publicNetworkAccess | not present | PublicNetworkAccess (optional) |
| Request body propertyproperties.securityPolicyConfigurations | not present | SecurityPolicyConfigurations (optional) |
| Response body property200 · properties.association | not present | FrontendAssociation (optional) |
| Response body property200 · properties.publicNetworkAccess | not present | PublicNetworkAccess (optional) |
| Response body property200 · properties.securityPolicyConfigurations | not present | SecurityPolicyConfigurations (optional) |
| Response body property201 · properties.association | not present | FrontendAssociation (optional) |
| Response body property201 · properties.publicNetworkAccess | not present | PublicNetworkAccess (optional) |
| Response body property201 · properties.securityPolicyConfigurations | not present | SecurityPolicyConfigurations (optional) |
REST contract changed: request, responses.
FrontendsInterface_GetGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/frontends/{frontendName}2026-03-01
| Contract area | Before | After |
|---|---|---|
| Response body property200 · properties.association | not present | FrontendAssociation (optional) |
| Response body property200 · properties.publicNetworkAccess | not present | PublicNetworkAccess (optional) |
| Response body property200 · properties.securityPolicyConfigurations | not present | SecurityPolicyConfigurations (optional) |
REST contract changed: responses.
FrontendsInterface_ListByTrafficControllerGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/frontends2026-03-01
HTTP signature and represented payload contract unchanged.
FrontendsInterface_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/frontends/{frontendName}2026-03-01
| Contract area | Before | After |
|---|---|---|
| Request body propertyproperties | not present | FrontendUpdateProperties (optional) |
| Response body property200 · properties.association | not present | FrontendAssociation (optional) |
| Response body property200 · properties.publicNetworkAccess | not present | PublicNetworkAccess (optional) |
| Response body property200 · properties.securityPolicyConfigurations | not present | SecurityPolicyConfigurations (optional) |
REST contract changed: request, responses.
PrivateEndpointConnectionsInterface_DeleteDELETE/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections/{privateEndpointConnectionName}2026-03-01
| Contract area | Before | After |
|---|---|---|
| Operationoperation | not present | DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections/{privateEndpointConnectionName} |
REST contract changed: method, path, parameters, responses, lro, consumes, produces.
PrivateEndpointConnectionsInterface_GetGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections/{privateEndpointConnectionName}2026-03-01
| Contract area | Before | After |
|---|---|---|
| Operationoperation | not present | GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections/{privateEndpointConnectionName} |
REST contract changed: method, path, parameters, responses, consumes, produces.
PrivateEndpointConnectionsInterface_ListByTrafficControllerGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections2026-03-01
| Contract area | Before | After |
|---|---|---|
| Operationoperation | not present | GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections |
REST contract changed: method, path, parameters, responses, consumes, produces.
PrivateEndpointConnectionsInterface_UpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections/{privateEndpointConnectionName}2026-03-01
| Contract area | Before | After |
|---|---|---|
| Operationoperation | not present | PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateEndpointConnections/{privateEndpointConnectionName} |
REST contract changed: method, path, parameters, request, responses, lro, consumes, produces.
PrivateLinkResourcesInterface_GetGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateLinkResources/{privateLinkResourceName}2026-03-01
| Contract area | Before | After |
|---|---|---|
| Operationoperation | not present | GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateLinkResources/{privateLinkResourceName} |
REST contract changed: method, path, parameters, responses, consumes, produces.
PrivateLinkResourcesInterface_ListByTrafficControllerGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateLinkResources2026-03-01
| Contract area | Before | After |
|---|---|---|
| Operationoperation | not present | GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceNetworking/trafficControllers/{trafficControllerName}/privateLinkResources |
REST contract changed: method, path, parameters, responses, consumes, produces.
Other affected operations (9)
SecurityPoliciesInterface_CreateOrUpdate (PUT, 2026-03-01); SecurityPoliciesInterface_Get (GET, 2026-03-01); SecurityPoliciesInterface_ListByTrafficController (GET, 2026-03-01); SecurityPoliciesInterface_Update (PATCH, 2026-03-01); TrafficControllerInterface_CreateOrUpdate (PUT, 2026-03-01); TrafficControllerInterface_Get (GET, 2026-03-01); TrafficControllerInterface_ListByResourceGroup (GET, 2026-03-01); TrafficControllerInterface_ListBySubscription (GET, 2026-03-01); TrafficControllerInterface_Update (PATCH, 2026-03-01).
Azure Guidelines
Findings and affected intents at a glance; expand for expected guidance and actual changes.
2 of 2 semantic intents assessed · 4 documents selected
No applicable guideline was found for: Preserve language-specific SDK shapes.
REST breaking changes
Operation impact and affected intents at a glance; expand for before/after evidence.
Appendix
Potential limits
None
Projects and compiler status
| Project | Mode | Baseline commit@version | Target commit@version | Baseline AutoRest / TCGC | Target AutoRest / TCGC |
|---|---|---|---|---|---|
specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking | new-api-version | d33364d832f4a26339b900c7a88f604753a4d74b@2025-01-01current · previous-latest-stable | d33364d832f4a26339b900c7a88f604753a4d74b@2026-03-01current · newest-added-version | succeeded / succeeded | succeeded / succeeded |
Pull request: Not available for this local pre-PR assessment.
Guidance fetched
Guidance coverage and retrieval evidence
{
"status": "passed",
"coverage": {
"semanticIntentCount": 2,
"assessedIntentCount": 2,
"selectedDocumentCount": 4,
"unassessedIntentIds": []
},
"sharedSearch": {
"catalogRanking": [
{
"rank": 1,
"catalogOrder": 1,
"title": "Evolving APIs",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct guidance for adding declarations in a new API version with @added."
},
{
"rank": 2,
"catalogOrder": 7,
"title": "ARM resource types and modeling",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-type/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct ARM guidance for ProxyResource child resources and resource-specific properties."
},
{
"rank": 3,
"catalogOrder": 12,
"title": "ARM resource operations",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-operations/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct ARM guidance for CRUDL operation templates on child resources."
},
{
"rank": 4,
"catalogOrder": 15,
"title": "Azure.ResourceManager decorators",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/decorators/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct reference for @armResourceOperations and ARM lifecycle decorators."
},
{
"rank": 5,
"catalogOrder": 21,
"title": "Models",
"canonicalUrl": "https://typespec.io/docs/language-basics/models/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 6,
"catalogOrder": 22,
"title": "Enums",
"canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 7,
"catalogOrder": 24,
"title": "Decorators",
"canonicalUrl": "https://typespec.io/docs/language-basics/decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 8,
"catalogOrder": 25,
"title": "Built-in decorators",
"canonicalUrl": "https://typespec.io/docs/standard-library/built-in-decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 9,
"catalogOrder": 26,
"title": "OpenAPI decorators",
"canonicalUrl": "https://typespec.io/docs/libraries/openapi/reference/decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 10,
"catalogOrder": 2,
"title": "Versioning overview",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 1,
"total": 3
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 11,
"catalogOrder": 30,
"title": "Directives",
"canonicalUrl": "https://typespec.io/docs/language-basics/directives/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 1,
"total": 3
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 12,
"catalogOrder": 3,
"title": "Add preview after preview",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/02-preview-after-preview/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 13,
"catalogOrder": 4,
"title": "Add stable after preview",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/03-stable-after-preview/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 14,
"catalogOrder": 5,
"title": "Add preview after stable",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/04-preview-after-stable/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 15,
"catalogOrder": 6,
"title": "Add stable after stable",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/05-stable-after-stable/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 16,
"catalogOrder": 8,
"title": "Specific extension resource sample",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/samples/resource-manager/resource-types/specific-extension/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 17,
"catalogOrder": 9,
"title": "Private endpoints",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-endpoints/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 18,
"catalogOrder": 10,
"title": "Private links",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-links/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 19,
"catalogOrder": 11,
"title": "Network security perimeter",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/network-security-perimeter/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 20,
"catalogOrder": 13,
"title": "Azure.ResourceManager interface reference",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/interfaces/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 21,
"catalogOrder": 14,
"title": "TypeSpec.Rest decorators",
"canonicalUrl": "https://typespec.io/docs/libraries/rest/reference/decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 22,
"catalogOrder": 16,
"title": "ARM long-running operations",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/long-running-operations/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 23,
"catalogOrder": 17,
"title": "Azure.Core long-running operations",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/long-running-operations/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 24,
"catalogOrder": 18,
"title": "Azure.ResourceManager data types",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/data-types/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 25,
"catalogOrder": 19,
"title": "TypeSpec pagination",
"canonicalUrl": "https://typespec.io/docs/standard-library/pagination/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 26,
"catalogOrder": 20,
"title": "ARM common types",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/add-common-types/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 27,
"catalogOrder": 23,
"title": "Scalars",
"canonicalUrl": "https://typespec.io/docs/language-basics/scalars/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 0,
"changeContext": 0,
"total": 0
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 28,
"catalogOrder": 27,
"title": "Change provider namespace",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/change-provider-namespace/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 0,
"changeContext": 0,
"total": 0
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 29,
"catalogOrder": 28,
"title": "Azure Portal default experiences",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-portal/default-experiences/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 0,
"changeContext": 0,
"total": 0
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 30,
"catalogOrder": 29,
"title": "Content negotiation",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/content-negotiation/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 0,
"changeContext": 0,
"total": 0
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
},
{
"rank": 31,
"catalogOrder": 31,
"title": "Azure Core `no-openapi` rule",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-openapi/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 0,
"changeContext": 0,
"total": 0
},
"selectionRationale": "Lower relevance to the added ARM resources and version-scoped SDK customizations than the selected guidance."
}
],
"documents": [
{
"rank": 1,
"catalogOrder": 1,
"title": "Evolving APIs",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct guidance for adding declarations in a new API version with @added.",
"guidance": [
{
"section": "Evolving APIs",
"excerpt": "You can add new models, properties, or operations in a specific version and all subsequent versions using the `@added` decorator.",
"queryTerms": [
"@added",
"new version",
"models and operations"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-0da42091e55c97d9",
"declaration-0efc944b60924f9f",
"declaration-1109dbb4677dfca5",
"declaration-16ce43244c31e829",
"declaration-182986db4f5e5253",
"declaration-19106f1d8d682c08",
"declaration-1a53c7c67114657a",
"declaration-1c1dfd4b24fb2ee2",
"declaration-39d9cd467f545ee8",
"declaration-3ec52bb7f6ebc0b9",
"declaration-4563e71b15c1caff",
"declaration-473039761dc23bc4",
"declaration-4fb7c422bd0b8b41",
"declaration-51698680c4dac106",
"declaration-526bce0f5510a952",
"declaration-6c2e08f95996b013",
"declaration-6dc2aefa0f7e6b6b",
"declaration-6e9be9ad1c52e762",
"declaration-77b246f560ede241",
"declaration-81352e42e78aab43",
"declaration-8251df8202aead34",
"declaration-844cf1a79319dcc3",
"declaration-910704f774e6da26",
"declaration-974d3630cae591c9",
"declaration-992b144f375999a3",
"declaration-9b4c9b878ad10d9e",
"declaration-9cb9c9d191f419ac",
"declaration-9d833dba2d3d3c98",
"declaration-a277173ed985ad59",
"declaration-a56ae4692fefa486",
"declaration-a93da3e971b1b878",
"declaration-ac10163ea357a91e",
"declaration-b4a2411b27e097df",
"declaration-b6550f8a79f0d3ad",
"declaration-c6f7a0b82b4e1fa3",
"declaration-c7dae7fb0073ff99",
"declaration-c841db4e992f58d8",
"declaration-cf679ea46b0415f0",
"declaration-d3ee3fa2bc7fb8f4",
"declaration-d70f30a1080d2539",
"declaration-da16a04e78879fd5",
"declaration-dd724766e3e152dd",
"declaration-e096a440377ea759",
"declaration-f07dd3725df31f4f",
"declaration-f4a3407562a5e66f",
"declaration-f4c5825d217ccf05",
"declaration-f723506fdb7c3be4"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:42:00Z",
"contentHash": "sha256:a05495d303abb31ba24ef8275d9d316b7a093372c2f8227cdef5f9433da07e0c"
},
{
"rank": 2,
"catalogOrder": 7,
"title": "ARM resource types and modeling",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-type/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct ARM guidance for ProxyResource child resources and resource-specific properties.",
"guidance": [
{
"section": "Proxy resources",
"excerpt": "Proxy resources are resources in which only a portion of resource metadata is tracked in ARM. Tenant, Extension, and child resources are usually modeled as Proxy resources.",
"queryTerms": [
"ProxyResource",
"child resource",
"ARM"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-0da42091e55c97d9",
"declaration-0efc944b60924f9f",
"declaration-1109dbb4677dfca5",
"declaration-16ce43244c31e829",
"declaration-182986db4f5e5253",
"declaration-19106f1d8d682c08",
"declaration-1a53c7c67114657a",
"declaration-1c1dfd4b24fb2ee2",
"declaration-39d9cd467f545ee8",
"declaration-3ec52bb7f6ebc0b9",
"declaration-4563e71b15c1caff",
"declaration-473039761dc23bc4",
"declaration-4fb7c422bd0b8b41",
"declaration-51698680c4dac106",
"declaration-526bce0f5510a952",
"declaration-6c2e08f95996b013",
"declaration-6dc2aefa0f7e6b6b",
"declaration-6e9be9ad1c52e762",
"declaration-77b246f560ede241",
"declaration-81352e42e78aab43",
"declaration-8251df8202aead34",
"declaration-844cf1a79319dcc3",
"declaration-910704f774e6da26",
"declaration-974d3630cae591c9",
"declaration-992b144f375999a3",
"declaration-9b4c9b878ad10d9e",
"declaration-9cb9c9d191f419ac",
"declaration-9d833dba2d3d3c98",
"declaration-a277173ed985ad59",
"declaration-a56ae4692fefa486",
"declaration-a93da3e971b1b878",
"declaration-ac10163ea357a91e",
"declaration-b4a2411b27e097df",
"declaration-b6550f8a79f0d3ad",
"declaration-c6f7a0b82b4e1fa3",
"declaration-c7dae7fb0073ff99",
"declaration-c841db4e992f58d8",
"declaration-cf679ea46b0415f0",
"declaration-d3ee3fa2bc7fb8f4",
"declaration-d70f30a1080d2539",
"declaration-da16a04e78879fd5",
"declaration-dd724766e3e152dd",
"declaration-e096a440377ea759",
"declaration-f07dd3725df31f4f",
"declaration-f4a3407562a5e66f",
"declaration-f4c5825d217ccf05",
"declaration-f723506fdb7c3be4"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:42:00Z",
"contentHash": "sha256:63d6cdd93166a6eef1eba9d708d80dd592e1a0db1eb613a809a1b1a0c49a899e"
},
{
"rank": 3,
"catalogOrder": 12,
"title": "ARM resource operations",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-operations/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct ARM guidance for CRUDL operation templates on child resources.",
"guidance": [
{
"section": "Resource operations",
"excerpt": "All resources should include a list operation at its immediate parent scope. For Child Resources, this is at the scope of the resource parent.",
"queryTerms": [
"ArmResourceListByParent",
"child resource",
"operations"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-0da42091e55c97d9",
"declaration-0efc944b60924f9f",
"declaration-1109dbb4677dfca5",
"declaration-16ce43244c31e829",
"declaration-182986db4f5e5253",
"declaration-19106f1d8d682c08",
"declaration-1a53c7c67114657a",
"declaration-1c1dfd4b24fb2ee2",
"declaration-39d9cd467f545ee8",
"declaration-3ec52bb7f6ebc0b9",
"declaration-4563e71b15c1caff",
"declaration-473039761dc23bc4",
"declaration-4fb7c422bd0b8b41",
"declaration-51698680c4dac106",
"declaration-526bce0f5510a952",
"declaration-6c2e08f95996b013",
"declaration-6dc2aefa0f7e6b6b",
"declaration-6e9be9ad1c52e762",
"declaration-77b246f560ede241",
"declaration-81352e42e78aab43",
"declaration-8251df8202aead34",
"declaration-844cf1a79319dcc3",
"declaration-910704f774e6da26",
"declaration-974d3630cae591c9",
"declaration-992b144f375999a3",
"declaration-9b4c9b878ad10d9e",
"declaration-9cb9c9d191f419ac",
"declaration-9d833dba2d3d3c98",
"declaration-a277173ed985ad59",
"declaration-a56ae4692fefa486",
"declaration-a93da3e971b1b878",
"declaration-ac10163ea357a91e",
"declaration-b4a2411b27e097df",
"declaration-b6550f8a79f0d3ad",
"declaration-c6f7a0b82b4e1fa3",
"declaration-c7dae7fb0073ff99",
"declaration-c841db4e992f58d8",
"declaration-cf679ea46b0415f0",
"declaration-d3ee3fa2bc7fb8f4",
"declaration-d70f30a1080d2539",
"declaration-da16a04e78879fd5",
"declaration-dd724766e3e152dd",
"declaration-e096a440377ea759",
"declaration-f07dd3725df31f4f",
"declaration-f4a3407562a5e66f",
"declaration-f4c5825d217ccf05",
"declaration-f723506fdb7c3be4"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:42:00Z",
"contentHash": "sha256:1cbbf641eae3ff8e089a25167f0f1ec75c034b8cb503c94dd9a3aacd60958d46"
},
{
"rank": 4,
"catalogOrder": 15,
"title": "Azure.ResourceManager decorators",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/decorators/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Direct reference for @armResourceOperations and ARM lifecycle decorators.",
"guidance": [
{
"section": "armResourceOperations",
"excerpt": "This decorator is used to identify interfaces containing resource operations. By default, it marks the interface with the `@autoRoute` decorator.",
"queryTerms": [
"@armResourceOperations",
"interface",
"resource operations"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-0da42091e55c97d9",
"declaration-0efc944b60924f9f",
"declaration-1109dbb4677dfca5",
"declaration-16ce43244c31e829",
"declaration-182986db4f5e5253",
"declaration-19106f1d8d682c08",
"declaration-1a53c7c67114657a",
"declaration-1c1dfd4b24fb2ee2",
"declaration-39d9cd467f545ee8",
"declaration-3ec52bb7f6ebc0b9",
"declaration-4563e71b15c1caff",
"declaration-473039761dc23bc4",
"declaration-4fb7c422bd0b8b41",
"declaration-51698680c4dac106",
"declaration-526bce0f5510a952",
"declaration-6c2e08f95996b013",
"declaration-6dc2aefa0f7e6b6b",
"declaration-6e9be9ad1c52e762",
"declaration-77b246f560ede241",
"declaration-81352e42e78aab43",
"declaration-8251df8202aead34",
"declaration-844cf1a79319dcc3",
"declaration-910704f774e6da26",
"declaration-974d3630cae591c9",
"declaration-992b144f375999a3",
"declaration-9b4c9b878ad10d9e",
"declaration-9cb9c9d191f419ac",
"declaration-9d833dba2d3d3c98",
"declaration-a277173ed985ad59",
"declaration-a56ae4692fefa486",
"declaration-a93da3e971b1b878",
"declaration-ac10163ea357a91e",
"declaration-b4a2411b27e097df",
"declaration-b6550f8a79f0d3ad",
"declaration-c6f7a0b82b4e1fa3",
"declaration-c7dae7fb0073ff99",
"declaration-c841db4e992f58d8",
"declaration-cf679ea46b0415f0",
"declaration-d3ee3fa2bc7fb8f4",
"declaration-d70f30a1080d2539",
"declaration-da16a04e78879fd5",
"declaration-dd724766e3e152dd",
"declaration-e096a440377ea759",
"declaration-f07dd3725df31f4f",
"declaration-f4a3407562a5e66f",
"declaration-f4c5825d217ccf05",
"declaration-f723506fdb7c3be4"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:42:00Z",
"contentHash": "sha256:209e4160f20eb0cf06b8af83f291b179e838168b13e141613ad66cc9b14c0824"
}
]
},
"intentAssessments": [
{
"semanticIntentId": "semantic-244e6b41023e6345",
"decision": "no-applicable-guidance",
"blockers": []
},
{
"semanticIntentId": "semantic-6678bcf507803e42",
"decision": "applicable-pass",
"blockers": []
}
],
"retrievalFailures": [],
"blockers": []
}Changed files
specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/back-compatible.tsp(committed)specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/client.tsp(committed)specification/servicenetworking/resource-manager/Microsoft.ServiceNetworking/ServiceNetworking/main.tsp(committed)
Timing and model input
{
"timings": {
"metadataMs": 978,
"fetchMs": 165,
"scopeDiscoveryMs": 114,
"setupExcludingFetchMs": 7586,
"comparisonMs": 197,
"changeDiscoveryMs": 176,
"workspacePreparationMs": 5233,
"projectDiscoveryMs": 19,
"totalMs": 92940,
"semanticAnalysisMs": 189,
"restAnalysisMs": 39,
"downstreamAnalysisMs": 986,
"documentQualityAnalysisMs": 1
},
"inputAccounting": {
"budgetTier": "small",
"budgetBytes": 131072,
"bytes": 29155,
"estimatedTokens": 7289,
"retained": {
"evidenceSets": 5,
"facts": 4,
"semanticReviewUnits": 2,
"restCandidates": 0,
"downstreamCandidates": 1,
"downstreamRootCauses": 1,
"complianceSearchRequests": 2,
"inferenceRequests": 4
},
"omittedRedundant": {
"rawEmitterArtifacts": true,
"compilerLogs": true,
"unchangedInventories": true,
"unreferencedFacts": true,
"unreferencedDeterministicFacts": true,
"sourceChanges": true,
"repeatedDeclarationIds": true,
"repeatedReviewUnitEvidence": true
},
"inference": {
"requestCount": 4,
"inferredCandidateCount": 1,
"noImpactCount": 3,
"blockedCount": 0
},
"compliance": {
"catalogEntriesScored": 31,
"documentsFetched": 4,
"documentBytesFetched": 588,
"guidanceExcerptsRetained": 4,
"guidanceExcerptBytesRetained": 588
}
}
}
Provenance: model-input.json, dimensions/document-quality-input.json, inference.json, compliance-search-evidence.json, assessment-judgment.json, preparation-manifest.json