Skip to content

[AutoPR Azure.ResourceManager.IotHub]-generated-from-SDK Generation - .NET-6833409 - #62975

Open
azure-sdk-automation[bot] wants to merge 1 commit into
mainfrom
sdkauto/Azure.ResourceManager.IotHub-6833409
Open

azure-sdk-automation[bot] wants to merge 1 commit into
mainfrom
sdkauto/Azure.ResourceManager.IotHub-6833409

Conversation

@azure-sdk-automation

Copy link
Copy Markdown
Contributor

Configurations: 'specification/iothub/resource-manager/Microsoft.Devices/IoTHub/tspconfig.yaml', and CommitSHA: 'aacdbe71d42e2e79ff09699751c2d543e3ecc826' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6833409 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=36517 Submitted by: damontan@microsoft.com

Copilot AI balanced review requested due to automatic review settings September 14, 2026 18:01
@azure-sdk-automation azure-sdk-automation Bot added the auto-release When merged to main, release pipelines for this PR's changed packages trigger automatically. label Sep 14, 2026
@github-actions github-actions Bot added the Mgmt This issue is related to a management-plane library. label Sep 14, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
12 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Critical source and binary compatibility breaks remain in public models and model-factory APIs.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Refreshes Azure.ResourceManager.IotHub from a newer TypeSpec revision and regenerates the .NET management SDK.

Changes:

  • Updates the TypeSpec source commit, metadata, and API surfaces.
  • Adds Device Registry, MQTT v5, topic-group, and payload-format APIs.
  • Regenerates models, serializers, resources, collections, and model factories.
File summaries
File Reviewed change
sdk/iothub/Azure.ResourceManager.IotHub/tsp-location.yaml Updates the TypeSpec source commit.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/TopicGroup.Serialization.cs Adds topic-group serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/TopicGroup.cs Adds the MQTT v5 topic-group model. Nit: use a scoped public name.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingStorageContainerProperties.Serialization.cs Updates storage routing serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingStorageContainerProperties.cs Adds storage routing payload support.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingServiceBusTopicEndpointProperties.Serialization.cs Updates Service Bus topic serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingServiceBusTopicEndpointProperties.cs Adds Service Bus topic payload support.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingServiceBusQueueEndpointProperties.Serialization.cs Updates Service Bus queue serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingServiceBusQueueEndpointProperties.cs Adds Service Bus queue payload support.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingRuleProperties.Serialization.cs Updates routing-rule serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingRuleProperties.cs Updates routing-rule properties.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingEventStreamProperties.Serialization.cs Updates event-stream serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingEventStreamProperties.cs Updates event-stream routing properties.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingEventHubProperties.Serialization.cs Updates Event Hubs serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingEventHubProperties.cs Updates Event Hubs routing properties.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingCosmosDBSqlApiProperties.Serialization.cs Updates Cosmos DB routing serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/RoutingCosmosDBSqlApiProperties.cs Updates Cosmos DB routing properties.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/MqttV5Settings.Serialization.cs Adds MQTT v5 settings serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/MqttV5Settings.cs Adds MQTT v5 settings.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/MessagePayloadFormat.cs Adds payload-format model. Nit: use an IoT Hub-specific public name.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubProperties.Serialization.cs Updates IoT Hub property serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubProperties.cs Adds Device Registry and MQTT properties. Critical: preserve the DeviceRegistry setter.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubDeviceRegistry.Serialization.cs Adds Device Registry serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubDeviceRegistry.cs Updates Device Registry APIs. Critical: preserve the public constructor, NamespaceResourceId setter, and IdentityResourceId.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubCertificatePropertiesWithNonce.Serialization.cs Updates nonce certificate serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubCertificatePropertiesWithNonce.cs Updates nonce certificate properties. Critical: preserve PolicyResourceId.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubCertificateProperties.Serialization.cs Updates certificate serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/IotHubCertificateProperties.cs Updates certificate properties. Critical: preserve PolicyResourceId.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/ErrorDetails.Serialization.cs Adds error-details serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/ErrorDetails.cs Adds linking error details. Nit: use a scoped public name.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/DeviceRegistryLinkingState.cs Adds the linking-state enum.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/DeviceRegistryLinkingProperties.Serialization.cs Adds linking-properties serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/DeviceRegistryLinkingProperties.cs Adds Device Registry linking properties.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/DeviceRegistryIdentityType.cs Adds the identity-type enum.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/DeviceRegistryIdentity.Serialization.cs Adds identity serialization.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/DeviceRegistryIdentity.cs Adds Device Registry identity model.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/ConnectionProfile.cs Adds connection-profile model. Nit: use a scoped public name.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Models/AzureResourceManagerIotHubContext.cs Registers generated models.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/IotHubPrivateEndpointConnectionResource.cs Updates private endpoint resource APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/IotHubPrivateEndpointConnectionCollection.cs Updates private endpoint collection APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/IotHubDescriptionResource.cs Updates IoT Hub description resource APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/IotHubDescriptionCollection.cs Updates IoT Hub description collection APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/IotHubCertificateDescriptionResource.cs Updates certificate description resource APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/IotHubCertificateDescriptionCollection.cs Updates certificate description collection APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Extensions/MockableIotHubSubscriptionResource.cs Updates mockable subscription APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/Extensions/MockableIotHubResourceGroupResource.cs Updates mockable resource-group APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/EventHubConsumerGroupInfoResource.cs Updates consumer-group resource APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/EventHubConsumerGroupInfoCollection.cs Updates consumer-group collection APIs.
sdk/iothub/Azure.ResourceManager.IotHub/src/Generated/ArmIotHubModelFactory.cs Regenerates factory APIs. Critical: preserve prior overloads, named parameters, binary compatibility, and avoid compatibility-wrapper recursion.
sdk/iothub/Azure.ResourceManager.IotHub/metadata.json Updates service API-version metadata.
sdk/iothub/Azure.ResourceManager.IotHub/api/Azure.ResourceManager.IotHub.net8.0.cs Regenerates the .NET 8 API surface.
sdk/iothub/Azure.ResourceManager.IotHub/api/Azure.ResourceManager.IotHub.net10.0.cs Regenerates the .NET 10 API surface.
Review details
  • Files reviewed: 5/53 changed files
  • Comments generated: 16
  • Review effort level: Lite (auto)

Note

Copilot is running an experiment and ran this review at Lite.

/// <param name="iotHubDetailsGatewayVersion"> The IoT hub Gateway version. </param>
/// <returns> A new <see cref="Models.IotHubProperties"/> instance for mocking. </returns>
public static IotHubProperties IotHubProperties(IEnumerable<SharedAccessSignatureAuthorizationRule> authorizationPolicies, bool? disableLocalAuth, bool? disableDeviceSas, bool? disableModuleSas, bool? restrictOutboundNetworkAccess, IEnumerable<string> allowedFqdns, IotHubPublicNetworkAccess? publicNetworkAccess, IEnumerable<IotHubIPFilterRule> ipFilterRules, IotHubNetworkRuleSetProperties networkRuleSets, string minTlsVersion, IEnumerable<IotHubPrivateEndpointConnectionData> privateEndpointConnections, string provisioningState, string state, string hostName, string deviceHostName, string serviceHostName, IDictionary<string, EventHubCompatibleEndpointProperties> eventHubEndpoints, IotHubRoutingProperties routing, IDictionary<string, IotHubStorageEndpointProperties> storageEndpoints, IDictionary<string, MessagingEndpointProperties> messagingEndpoints, bool? enableFileUploadNotifications, CloudToDeviceProperties cloudToDevice, string comments, IEnumerable<string> deviceStreamsStreamingEndpoints, IotHubCapability? features, IotHubEncryptionProperties encryption, IEnumerable<IotHubLocationDescription> locations, bool? enableDataResidency, IotHubRootCertificateProperties rootCertificate, IotHubIPVersion? ipVersion, IotHubDeviceRegistry deviceRegistry = default, IotHubGatewayVersion? iotHubDetailsGatewayVersion = default)
public static IotHubProperties IotHubProperties(IEnumerable<SharedAccessSignatureAuthorizationRule> authorizationPolicies, bool? disableLocalAuth, bool? disableDeviceSas, bool? disableModuleSas, bool? restrictOutboundNetworkAccess, IEnumerable<string> allowedFqdns, IotHubPublicNetworkAccess? publicNetworkAccess, IEnumerable<IotHubIPFilterRule> ipFilterRules, IotHubNetworkRuleSetProperties networkRuleSets, string minTlsVersion, IEnumerable<IotHubPrivateEndpointConnectionData> privateEndpointConnections, string provisioningState, string state, string hostName, string deviceHostName, string serviceHostName, IDictionary<string, EventHubCompatibleEndpointProperties> eventHubEndpoints, IotHubRoutingProperties routing, IDictionary<string, IotHubStorageEndpointProperties> storageEndpoints, IDictionary<string, MessagingEndpointProperties> messagingEndpoints, bool? enableFileUploadNotifications, CloudToDeviceProperties cloudToDevice, string comments, IEnumerable<string> deviceStreamsStreamingEndpoints, IotHubCapability? features, IotHubEncryptionProperties encryption, IEnumerable<IotHubLocationDescription> locations, bool? enableDataResidency, IotHubRootCertificateProperties rootCertificate, IotHubIPVersion? ipVersion, ConnectionProfile? connectionProfile = default, IEnumerable<TopicGroup> mqttV5TopicGroups = default, IotHubDeviceRegistry deviceRegistry = default, IotHubGatewayVersion? iotHubDetailsGatewayVersion = default)
/// <param name="messagePayloadFormat"> The format of the message payload delivered to this endpoint. </param>
/// <returns> A new <see cref="Models.RoutingServiceBusQueueEndpointProperties"/> instance for mocking. </returns>
public static RoutingServiceBusQueueEndpointProperties RoutingServiceBusQueueEndpointProperties(Guid? id = default, string connectionString = default, string endpoint = default, string entityPath = default, IotHubAuthenticationType? authenticationType = default, ResourceIdentifier userAssignedIdentity = default, string name = default, string subscriptionId = default, string resourceGroup = default)
public static RoutingServiceBusQueueEndpointProperties RoutingServiceBusQueueEndpointProperties(Guid? id = default, string connectionString = default, string endpoint = default, string entityPath = default, IotHubAuthenticationType? authenticationType = default, ResourceIdentifier userAssignedIdentity = default, string name = default, string subscriptionId = default, string resourceGroup = default, MessagePayloadFormat? messagePayloadFormat = default)
/// <param name="messagePayloadFormat"> The format of the message payload delivered to this endpoint. </param>
/// <returns> A new <see cref="Models.RoutingCosmosDBSqlApiProperties"/> instance for mocking. </returns>
public static RoutingCosmosDBSqlApiProperties RoutingCosmosDBSqlApiProperties(string name = default, string id = default, string subscriptionId = default, string resourceGroup = default, Uri endpointUri = default, IotHubAuthenticationType? authenticationType = default, ResourceIdentifier userAssignedIdentity = default, string primaryKey = default, string secondaryKey = default, string databaseName = default, string containerName = default, string partitionKeyName = default, string partitionKeyTemplate = default)
public static RoutingCosmosDBSqlApiProperties RoutingCosmosDBSqlApiProperties(string name, string id, string subscriptionId, string resourceGroup, Uri endpointUri, IotHubAuthenticationType? authenticationType, ResourceIdentifier userAssignedIdentity, string primaryKey, string secondaryKey, string databaseName, string containerName, string partitionKeyName, string partitionKeyTemplate, MessagePayloadFormat? messagePayloadFormat)
/// <param name="isEnabled"> Used to specify whether a route is enabled. </param>
/// <returns> A new <see cref="Models.RoutingRuleProperties"/> instance for mocking. </returns>
public static RoutingRuleProperties RoutingRuleProperties(string name = default, IotHubRoutingSource source = default, string condition = default, IEnumerable<string> endpointNames = default, bool isEnabled = default)
public static RoutingRuleProperties RoutingRuleProperties(string name = default, IotHubRoutingSource source = default, string condition = default, string dataSchema = default, IEnumerable<string> endpointNames = default, bool isEnabled = default)
/// <param name="linkingProperties"> The properties related to linking the IoT Hub with the Azure Device Registry. </param>
/// <returns> A new <see cref="Models.IotHubDeviceRegistry"/> instance for mocking. </returns>
public static IotHubDeviceRegistry IotHubDeviceRegistry(ResourceIdentifier namespaceResourceId = default, ResourceIdentifier identityResourceId = default)
public static IotHubDeviceRegistry IotHubDeviceRegistry(ResourceIdentifier namespaceResourceId = default, string namespaceUuid = default, string dataPlaneHostName = default, DeviceRegistryIdentity identity = default, DeviceRegistryLinkingProperties linkingProperties = default)
Comment on lines 204 to +205
/// <summary> Represents properties related to the Azure Device Registry (ADR). </summary>
public IotHubDeviceRegistry DeviceRegistry { get; set; }
public IotHubDeviceRegistry DeviceRegistry { get; }
namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> The connection profile that the IoT hub uses for device connections. </summary>
public readonly partial struct ConnectionProfile : IEquatable<ConnectionProfile>
namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> Error details. </summary>
public partial class ErrorDetails
namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> The supported formats for message payloads delivered to routing endpoints. </summary>
public readonly partial struct MessagePayloadFormat : IEquatable<MessagePayloadFormat>
namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> A named set of topic templates for an Event Grid-backed MQTT v5 IoT hub. </summary>
public partial class TopicGroup

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Management SDK Review Summary

  • Scope: Azure.ResourceManager.IotHub (TypeSpec-backed refresh from tsp-location.yaml commit update)
  • Versioning: pass — ApiCompatVersion (1.1.1) preserved, no major version bump (1.2.0-beta.5), no new ApiCompat baseline suppressions added
  • API surface: pass — no scanner violations introduced by this PR (1 pre-existing SUFFIX001-family finding for IotHubNameAvailabilityResponse was already shipped in 1.1.1/main and is out of scope)
  • Contextual naming: evaluated 8 new public types introduced by this PR, flagged 4
  • ApiCompat / breaking changes: pass — CI net - pullrequest succeeded; no unmitigated breaking changes found in the diff against the last GA baseline

Findings (4, all blocking contextual-naming):

  • ConnectionProfile (Models/ConnectionProfile.cs) — generic name, needs IoT Hub scoping
  • MessagePayloadFormat (Models/MessagePayloadFormat.cs) — generic name, needs IoT Hub/routing scoping
  • ErrorDetails (Models/ErrorDetails.cs) — generic name, needs Device Registry linking scoping
  • TopicGroup (Models/TopicGroup.cs) — generic name, needs MQTT v5/IoT Hub scoping

All four are new types synthesized directly from the updated TypeSpec source, so TSPRENAME001 requires the fix to be made via @@clientName(...) in the spec repo's client.tsp, not SDK-side customization. Details and suggested names are in the inline comments.

Other new types in this refresh (DeviceRegistryIdentity, DeviceRegistryIdentityType, DeviceRegistryLinkingProperties, DeviceRegistryLinkingState) already carry sufficient DeviceRegistry/IoT Hub domain context and were not flagged.

Resolving TypeSpec-related review comments

  1. Open a separate spec PR in azure-rest-api-specs, or update the existing spec PR for this SDK change.
  2. Before the spec PR merges, update tsp-location.yaml to the latest commit from the spec PR, regenerate the SDK, and rerun this review.
  3. If the review reports new findings, address them in the same spec PR, update the SDK from its latest commit, and repeat steps 2 and 3. Do not merge the spec PR while any review findings remain.
  4. Only after the review reports no more findings, merge the spec PR.
  5. After the spec PR merges, update tsp-location.yaml to the latest main commit in azure-rest-api-specs that contains the merged changes, then regenerate the SDK.

Total inline comments: 4.

Analyzed by Azure .NET Management SDK PR Review: commit_id=d2c6b7838cb8b7c590090cdc7fe3dc843cbdd588

Analyzed by Azure .NET Management SDK PR Review: https://github.com/Azure/azure-sdk-for-net/actions/runs/34882016398

namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> The connection profile that the IoT hub uses for device connections. </summary>
public readonly partial struct ConnectionProfile : IEquatable<ConnectionProfile>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[Phase 2 - Contextual naming] ConnectionProfile is a generic name that gives no IoT Hub context in IntelliSense outside its namespace (similar to flagged patterns like Scope/Sensitivity). Recommend a service-scoped name, e.g. IotHubConnectionProfile.

Since this package is TypeSpec-backed (tsp-location.yaml present), apply the rename in the spec repo's client.tsp:

@@clientName(ConnectionProfile, "IotHubConnectionProfile", "csharp");

then update tsp-location.yaml and regenerate. Do not rename via SDK customization only (see TSPRENAME001).

namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> The supported formats for message payloads delivered to routing endpoints. </summary>
public readonly partial struct MessagePayloadFormat : IEquatable<MessagePayloadFormat>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[Phase 2 - Contextual naming] MessagePayloadFormat is generic and does not read as IoT Hub-specific in IntelliSense. Recommend an IoT Hub-scoped name, e.g. IotHubMessagePayloadFormat or RoutingMessagePayloadFormat (this enum is only used by routing endpoint properties).

Apply via TypeSpec client.tsp:

@@clientName(MessagePayloadFormat, "IotHubMessagePayloadFormat", "csharp");

then update tsp-location.yaml and regenerate (TSPRENAME001 applies; do not use SDK-only customization).

namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> Error details. </summary>
public partial class ErrorDetails

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[Phase 2 - Contextual naming] ErrorDetails is a generic, unscoped name that collides in intent with common error-model patterns and gives no IoT Hub / Device Registry context. Recommend a scoped name, e.g. IotHubDeviceRegistryLinkingErrorDetails or DeviceRegistryLinkingErrorDetails (this type is only referenced from DeviceRegistryLinkingProperties.Error).

Apply via TypeSpec client.tsp:

@@clientName(ErrorDetails, "DeviceRegistryLinkingErrorDetails", "csharp");

then update tsp-location.yaml and regenerate (TSPRENAME001 applies).


namespace Azure.ResourceManager.IotHub.Models
{
/// <summary> A named set of topic templates for an Event Grid-backed MQTT v5 IoT hub. </summary>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[Phase 2 - Contextual naming] TopicGroup is a generic name lacking IoT Hub / MQTT v5 context in IntelliSense. Recommend a scoped name, e.g. IotHubMqttTopicGroup or MqttV5TopicGroup (matches the existing MqttV5Settings / IotHubProperties.MqttV5TopicGroups naming already used elsewhere in this package).

Apply via TypeSpec client.tsp:

@@clientName(TopicGroup, "MqttV5TopicGroup", "csharp");

then update tsp-location.yaml and regenerate (TSPRENAME001 applies).

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

Labels

auto-release When merged to main, release pipelines for this PR's changed packages trigger automatically. Mgmt This issue is related to a management-plane library.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants