Skip to content

Commit b49a888

Browse files
daviburgDobby
andauthored
Regenerate all connector clients + release v0.9.0-preview.1 (#122)
## Summary Full regeneration of all 12 connector clients from BPM CodefulSdkGenerator to ensure no manual edits remain in generated files and all Azure SDK design changes are applied consistently. **Companion BPM PR:** [#15671845](https://msazure.visualstudio.com/One/_git/AzureUX-BPM/pullrequest/15671845) (generator namespace + constructor alignment) ## Changes ### Generated files (12 connectors) ARM, AzureBlob, AzureMonitorLogs, Kusto, MQ, MsGraphGroupsAndUsers, Office365, Office365Users, OneDriveForBusiness, SharePointOnline, SMTP, Teams Key changes from regeneration: - \Azure.Connectors.Sdk.*\ namespaces (previously \Microsoft.Azure.Connectors.*\ in generator) - \: base(...)\ delegate constructors (previously direct field management) - \Uri\ primary + \string\ convenience + \credential+options\ constructor overloads - \internal set\ on output-only model properties + model factory classes - Extensible enum types for swagger enum properties - \�irtual\ methods and \protected\ constructors for testability ### Release preparation - Version bump: \ --------- Co-authored-by: Dobby <dobby@microsoft.com>
1 parent 9baa3f1 commit b49a888

14 files changed

Lines changed: 929 additions & 470 deletions

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.9.0-preview.1] - 2026-05-08
11+
1012
### Breaking Changes
1113

1214
- **Constructor overhaul: `Uri` primary + `string` convenience + `ManagedIdentityCredential` default** (#111)
@@ -40,6 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4042
- **Breaking:** Per-connector exception types (e.g., `Office365ConnectorException`, `TeamsConnectorException`) replaced with unified `ConnectorException` base type with `ConnectorName`, `Operation`, `StatusCode`, and `ResponseBody` properties (#88)
4143
- **Breaking:** Generated client constructors accept a new optional `ConnectorClientOptions` parameter for configuring retry policy, timeout, and exponential backoff — the `HttpClient` parameter moved from position 3 to position 4 (#88)
4244
- Generated clients now use SDK infrastructure (`ConnectorHttpClient`) for authentication, retry with exponential backoff, OpenTelemetry instrumentation, and SSRF-protected URL resolution (#88)
45+
- **Regenerated all 12 connector clients** from CodefulSdkGenerator to ensure consistency with Azure SDK design changes — no manual edits remain in generated files
4346

4447
### Added
4548

@@ -163,7 +166,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
163166
- SharePoint connector client (generated)
164167
- Teams connector client (generated)
165168

166-
[Unreleased]: https://github.com/Azure/Connectors-NET-SDK/compare/v0.8.0-preview.1...HEAD
169+
[Unreleased]: https://github.com/Azure/Connectors-NET-SDK/compare/v0.9.0-preview.1...HEAD
170+
[0.9.0-preview.1]: https://github.com/Azure/Connectors-NET-SDK/compare/v0.8.0-preview.1...v0.9.0-preview.1
167171
[0.8.0-preview.1]: https://github.com/Azure/Connectors-NET-SDK/compare/v0.7.0-preview.1...v0.8.0-preview.1
168172
[0.7.0-preview.1]: https://github.com/Azure/Connectors-NET-SDK/compare/v0.6.0-preview.1...v0.7.0-preview.1
169173
[0.6.0-preview.1]: https://github.com/Azure/Connectors-NET-SDK/compare/v0.5.0-preview.1...v0.6.0-preview.1

eng/build/Version.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
Condition="'$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), Directory.Version.props))' != ''" />
1010

1111
<PropertyGroup>
12-
<VersionPrefix Condition="'$(VersionPrefix)' == ''">0.8.0</VersionPrefix>
12+
<VersionPrefix Condition="'$(VersionPrefix)' == ''">0.9.0</VersionPrefix>
1313
<VersionSuffix Condition="'$(VersionSuffix)' == ''">preview.1</VersionSuffix>
1414
<_BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</_BuildNumber>
1515
<_BuildNumberYY>$(_BuildNumber.Substring(2, 2))</_BuildNumberYY>

src/Azure.Connectors.Sdk/Generated/ArmExtensions.cs

Lines changed: 109 additions & 108 deletions
Large diffs are not rendered by default.

src/Azure.Connectors.Sdk/Generated/AzureBlobExtensions.cs

Lines changed: 59 additions & 29 deletions
Large diffs are not rendered by default.

src/Azure.Connectors.Sdk/Generated/AzuremonitorlogsExtensions.cs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -472,12 +472,8 @@ public AzuremonitorlogsClient(string connectionRuntimeUrl)
472472
{
473473
}
474474

475-
/// <summary>
476-
/// Initializes a new instance for mocking.
477-
/// </summary>
478475
protected AzuremonitorlogsClient() : this(new Uri("https://localhost")) { }
479476

480-
/// <inheritdoc />
481477
public override string ConnectorName => "azuremonitorlogs";
482478

483479
/// <summary>
@@ -555,7 +551,7 @@ public virtual AsyncPageable<TimeRangeItem> ListTimeRangeTypesAsync(string input
555551
var path = $"/listTimeRangeTypes" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
556552
return this.CreatePageable<TimeRangeListResult, TimeRangeItem>(
557553
ct => this.CallConnectorAsync<TimeRangeListResult>(HttpMethod.Post, path, input, ct),
558-
(nextLink, ct) => this.CallConnectorAsync<TimeRangeListResult>(HttpMethod.Post, nextLink, cancellationToken: ct),
554+
(nextLink, ct) => this.CallConnectorAsync<TimeRangeListResult>(HttpMethod.Post, nextLink, input, cancellationToken: ct),
559555
cancellationToken);
560556
}
561557

@@ -585,7 +581,9 @@ public virtual async Task<Table> QueryDataAsync(string input, [DynamicValues("Li
585581
if (timeRange != default)
586582
queryParams.Add($"timerange={Uri.EscapeDataString(timeRange.ToString())}");
587583
var path = $"/queryData" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
588-
return await this.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken);
584+
return await this
585+
.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken)
586+
.ConfigureAwait(continueOnCapturedContext: false);
589587
}
590588

591589
/// <summary>
@@ -614,7 +612,9 @@ public virtual async Task<ObjectEntity> QuerySchemaAsync(string input, [DynamicV
614612
if (timeRange != default)
615613
queryParams.Add($"timerange={Uri.EscapeDataString(timeRange.ToString())}");
616614
var path = $"/querySchema" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
617-
return await this.CallConnectorAsync<ObjectEntity>(HttpMethod.Post, path, input, cancellationToken);
615+
return await this
616+
.CallConnectorAsync<ObjectEntity>(HttpMethod.Post, path, input, cancellationToken)
617+
.ConfigureAwait(continueOnCapturedContext: false);
618618
}
619619

620620
/// <summary>
@@ -646,7 +646,9 @@ public virtual async Task<VisualizeResults> VisualizeQueryAsync(string input, [D
646646
if (chartType != default)
647647
queryParams.Add($"visType={Uri.EscapeDataString(chartType.ToString())}");
648648
var path = $"/visualizeQuery" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
649-
return await this.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken);
649+
return await this
650+
.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken)
651+
.ConfigureAwait(continueOnCapturedContext: false);
650652
}
651653

652654
/// <summary>
@@ -672,7 +674,9 @@ public virtual async Task<Table> QueryDataAsync(QueryDataInput input, [DynamicVa
672674
if (resourceName != default)
673675
queryParams.Add($"resourcename={Uri.EscapeDataString(resourceName.ToString())}");
674676
var path = $"/queryDataV2" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
675-
return await this.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken);
677+
return await this
678+
.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken)
679+
.ConfigureAwait(continueOnCapturedContext: false);
676680
}
677681

678682
/// <summary>
@@ -698,7 +702,9 @@ public virtual async Task<ObjectEntity> QuerySchemaAsync(string input, [DynamicV
698702
if (resourceName != default)
699703
queryParams.Add($"resourcename={Uri.EscapeDataString(resourceName.ToString())}");
700704
var path = $"/querySchemaV2" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
701-
return await this.CallConnectorAsync<ObjectEntity>(HttpMethod.Post, path, input, cancellationToken);
705+
return await this
706+
.CallConnectorAsync<ObjectEntity>(HttpMethod.Post, path, input, cancellationToken)
707+
.ConfigureAwait(continueOnCapturedContext: false);
702708
}
703709

704710
/// <summary>
@@ -727,7 +733,9 @@ public virtual async Task<VisualizeResults> VisualizeQueryAsync(VisualizeQueryIn
727733
if (chartType != default)
728734
queryParams.Add($"visType={Uri.EscapeDataString(chartType.ToString())}");
729735
var path = $"/visualizeQueryV2" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
730-
return await this.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken);
736+
return await this
737+
.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken)
738+
.ConfigureAwait(continueOnCapturedContext: false);
731739
}
732740

733741
}

src/Azure.Connectors.Sdk/Generated/KustoExtensions.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -466,12 +466,8 @@ public KustoClient(string connectionRuntimeUrl)
466466
{
467467
}
468468

469-
/// <summary>
470-
/// Initializes a new instance for mocking.
471-
/// </summary>
472469
protected KustoClient() : this(new Uri("https://localhost")) { }
473470

474-
/// <inheritdoc />
475471
public override string ConnectorName => "kusto";
476472

477473
/// <summary>
@@ -484,7 +480,9 @@ protected KustoClient() : this(new Uri("https://localhost")) { }
484480
public virtual async Task<Table> ListKustoResultsAsync(QueryAndListSchema input, CancellationToken cancellationToken = default)
485481
{
486482
var path = $"/ListKustoResults/false";
487-
return await this.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken);
483+
return await this
484+
.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken)
485+
.ConfigureAwait(continueOnCapturedContext: false);
488486
}
489487

490488
/// <summary>
@@ -497,7 +495,9 @@ public virtual async Task<Table> ListKustoResultsAsync(QueryAndListSchema input,
497495
public virtual async Task<Table> ListKustoShowCommandResultsAsync(ControlCommandAndListSchema input, CancellationToken cancellationToken = default)
498496
{
499497
var path = $"/ListKustoShowCommandResults";
500-
return await this.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken);
498+
return await this
499+
.CallConnectorAsync<Table>(HttpMethod.Post, path, input, cancellationToken)
500+
.ConfigureAwait(continueOnCapturedContext: false);
501501
}
502502

503503
/// <summary>
@@ -510,7 +510,9 @@ public virtual async Task<Table> ListKustoShowCommandResultsAsync(ControlCommand
510510
public virtual async Task<ObjectEntity> ListKustoResultsSchemaAsync(QueryAndListSchema input, CancellationToken cancellationToken = default)
511511
{
512512
var path = $"/ListKustoResultsSchema";
513-
return await this.CallConnectorAsync<ObjectEntity>(HttpMethod.Post, path, input, cancellationToken);
513+
return await this
514+
.CallConnectorAsync<ObjectEntity>(HttpMethod.Post, path, input, cancellationToken)
515+
.ConfigureAwait(continueOnCapturedContext: false);
514516
}
515517

516518
/// <summary>
@@ -523,7 +525,9 @@ public virtual async Task<ObjectEntity> ListKustoResultsSchemaAsync(QueryAndList
523525
public virtual async Task<VisualizeResults> RunKustoQueryAndVisualizeResultsAsync(QueryAndVisualizeSchema input, CancellationToken cancellationToken = default)
524526
{
525527
var path = $"/RunKustoAndVisualizeResults/false";
526-
return await this.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken);
528+
return await this
529+
.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken)
530+
.ConfigureAwait(continueOnCapturedContext: false);
527531
}
528532

529533
/// <summary>
@@ -536,7 +540,9 @@ public virtual async Task<VisualizeResults> RunKustoQueryAndVisualizeResultsAsyn
536540
public virtual async Task<VisualizeResults> RunKustoCommandAndVisualizeResultsAsync(CommandAndVisualizeSchema input, CancellationToken cancellationToken = default)
537541
{
538542
var path = $"/RunKustoAndVisualizeResults/true";
539-
return await this.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken);
543+
return await this
544+
.CallConnectorAsync<VisualizeResults>(HttpMethod.Post, path, input, cancellationToken)
545+
.ConfigureAwait(continueOnCapturedContext: false);
540546
}
541547

542548
/// <summary>
@@ -549,7 +555,9 @@ public virtual async Task<VisualizeResults> RunKustoCommandAndVisualizeResultsAs
549555
public virtual async Task<AsyncCommandResult> RunAsyncControlCommandAndWaitAsync(ControlCommandAndListSchema input, CancellationToken cancellationToken = default)
550556
{
551557
var path = $"/RunAsyncControlCommandAndWait";
552-
return await this.CallConnectorAsync<AsyncCommandResult>(HttpMethod.Post, path, input, cancellationToken);
558+
return await this
559+
.CallConnectorAsync<AsyncCommandResult>(HttpMethod.Post, path, input, cancellationToken)
560+
.ConfigureAwait(continueOnCapturedContext: false);
553561
}
554562

555563
/// <summary>
@@ -566,7 +574,9 @@ public virtual async Task<MCPQueryResponse> McpKustoQueryManagementAsync(MCPQuer
566574
if (sessionId != default)
567575
queryParams.Add($"sessionId={Uri.EscapeDataString(sessionId.ToString())}");
568576
var path = $"/mcp/KustoQueryManagement" + (queryParams.Count > 0 ? "?" + string.Join("&", queryParams) : "");
569-
return await this.CallConnectorAsync<MCPQueryResponse>(HttpMethod.Post, path, input, cancellationToken);
577+
return await this
578+
.CallConnectorAsync<MCPQueryResponse>(HttpMethod.Post, path, input, cancellationToken)
579+
.ConfigureAwait(continueOnCapturedContext: false);
570580
}
571581

572582
}

src/Azure.Connectors.Sdk/Generated/MqExtensions.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -555,12 +555,8 @@ public MqClient(string connectionRuntimeUrl)
555555
{
556556
}
557557

558-
/// <summary>
559-
/// Initializes a new instance for mocking.
560-
/// </summary>
561558
protected MqClient() : this(new Uri("https://localhost")) { }
562559

563-
/// <inheritdoc />
564560
public override string ConnectorName => "mq";
565561

566562
/// <summary>
@@ -573,7 +569,9 @@ protected MqClient() : this(new Uri("https://localhost")) { }
573569
public virtual async Task<Item> ReadAsync(SingleGetValidOptions input, CancellationToken cancellationToken = default)
574570
{
575571
var path = $"/read";
576-
return await this.CallConnectorAsync<Item>(HttpMethod.Post, path, input, cancellationToken);
572+
return await this
573+
.CallConnectorAsync<Item>(HttpMethod.Post, path, input, cancellationToken)
574+
.ConfigureAwait(continueOnCapturedContext: false);
577575
}
578576

579577
/// <summary>
@@ -586,7 +584,9 @@ public virtual async Task<Item> ReadAsync(SingleGetValidOptions input, Cancellat
586584
public virtual async Task<ItemsList> ReadAllAsync(MultipleGetValidOptions input, CancellationToken cancellationToken = default)
587585
{
588586
var path = $"/readall";
589-
return await this.CallConnectorAsync<ItemsList>(HttpMethod.Post, path, input, cancellationToken);
587+
return await this
588+
.CallConnectorAsync<ItemsList>(HttpMethod.Post, path, input, cancellationToken)
589+
.ConfigureAwait(continueOnCapturedContext: false);
590590
}
591591

592592
/// <summary>
@@ -599,7 +599,9 @@ public virtual async Task<ItemsList> ReadAllAsync(MultipleGetValidOptions input,
599599
public virtual async Task<Item> ReceiveAsync(SingleGetValidOptions input, CancellationToken cancellationToken = default)
600600
{
601601
var path = $"/receive";
602-
return await this.CallConnectorAsync<Item>(HttpMethod.Post, path, input, cancellationToken);
602+
return await this
603+
.CallConnectorAsync<Item>(HttpMethod.Post, path, input, cancellationToken)
604+
.ConfigureAwait(continueOnCapturedContext: false);
603605
}
604606

605607
/// <summary>
@@ -612,7 +614,9 @@ public virtual async Task<Item> ReceiveAsync(SingleGetValidOptions input, Cancel
612614
public virtual async Task<ItemsList> ReceiveAllAsync(MultipleGetValidOptions input, CancellationToken cancellationToken = default)
613615
{
614616
var path = $"/receiveall";
615-
return await this.CallConnectorAsync<ItemsList>(HttpMethod.Post, path, input, cancellationToken);
617+
return await this
618+
.CallConnectorAsync<ItemsList>(HttpMethod.Post, path, input, cancellationToken)
619+
.ConfigureAwait(continueOnCapturedContext: false);
616620
}
617621

618622
/// <summary>
@@ -625,7 +629,9 @@ public virtual async Task<ItemsList> ReceiveAllAsync(MultipleGetValidOptions inp
625629
public virtual async Task<Item> DeleteAsync(SingleGetValidOptions input, CancellationToken cancellationToken = default)
626630
{
627631
var path = $"/delete";
628-
return await this.CallConnectorAsync<Item>(HttpMethod.Post, path, input, cancellationToken);
632+
return await this
633+
.CallConnectorAsync<Item>(HttpMethod.Post, path, input, cancellationToken)
634+
.ConfigureAwait(continueOnCapturedContext: false);
629635
}
630636

631637
/// <summary>
@@ -638,7 +644,9 @@ public virtual async Task<Item> DeleteAsync(SingleGetValidOptions input, Cancell
638644
public virtual async Task<ItemsList> DeleteAllAsync(MultipleGetValidOptions input, CancellationToken cancellationToken = default)
639645
{
640646
var path = $"/deleteall";
641-
return await this.CallConnectorAsync<ItemsList>(HttpMethod.Post, path, input, cancellationToken);
647+
return await this
648+
.CallConnectorAsync<ItemsList>(HttpMethod.Post, path, input, cancellationToken)
649+
.ConfigureAwait(continueOnCapturedContext: false);
642650
}
643651

644652
/// <summary>
@@ -651,7 +659,9 @@ public virtual async Task<ItemsList> DeleteAllAsync(MultipleGetValidOptions inpu
651659
public virtual async Task<SendResponse> SendAsync(SendValidDataOptions input, CancellationToken cancellationToken = default)
652660
{
653661
var path = $"/send";
654-
return await this.CallConnectorAsync<SendResponse>(HttpMethod.Post, path, input, cancellationToken);
662+
return await this
663+
.CallConnectorAsync<SendResponse>(HttpMethod.Post, path, input, cancellationToken)
664+
.ConfigureAwait(continueOnCapturedContext: false);
655665
}
656666

657667
}

0 commit comments

Comments
 (0)