Azure.Connectors.Sdk 0.14.0-preview.1

Prefix Reserved
This is a prerelease version of Azure.Connectors.Sdk.
dotnet add package Azure.Connectors.Sdk --version 0.14.0-preview.1
                    
NuGet\Install-Package Azure.Connectors.Sdk -Version 0.14.0-preview.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Azure.Connectors.Sdk" Version="0.14.0-preview.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Azure.Connectors.Sdk" Version="0.14.0-preview.1" />
                    
Directory.Packages.props
<PackageReference Include="Azure.Connectors.Sdk" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Azure.Connectors.Sdk --version 0.14.0-preview.1
                    
#r "nuget: Azure.Connectors.Sdk, 0.14.0-preview.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Azure.Connectors.Sdk@0.14.0-preview.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Azure.Connectors.Sdk&version=0.14.0-preview.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Azure.Connectors.Sdk&version=0.14.0-preview.1&prerelease
                    
Install as a Cake Tool

Build Status NuGet

Azure Connectors .NET SDK

Type-safe .NET clients for Azure connectors — call Office 365, SharePoint, Teams, Dataverse, and 1,000+ connectors directly from Azure Functions and other .NET apps.

Early Preview — Not for Production Use

This SDK is currently in early preview and is under active development. It is intended for evaluation, experimentation, and feedback purposes only.

  • Do not use this SDK in production environments.
  • Breaking changes should be expected across APIs, data models, and behavior in future releases.
  • Features may be added, modified, or removed without prior notice.

We welcome feedback and contributions — please open an issue with questions, suggestions, or bug reports.

Why This SDK?

Azure provides a rich ecosystem of managed connectors that bridge your code to SaaS services, PaaS resources, and on-premises systems. Originally powering Azure Logic Apps and Power Automate, these connectors are now available as standalone, strongly-typed C# clients for any .NET application — no workflow service required.

  • Type-safe operations — Generated async methods with full IntelliSense and XML documentation
  • Built-in authentication — Managed identity and connection string token providers for API Hub
  • Resilient HTTP — Configurable retry policies for transient failures
  • 1,000+ connectors — Any Azure managed connector available via API Hub can be generated

Note: This is the .NET SDK. Python, Node.js, and Java SDKs are planned in collaboration with the Azure Functions team.

How It Works

┌─────────────────────────────────────┐
│       Your Azure Function / App     │
│                                     │
│  using Office365Client;             │
│  await client.SendEmailAsync(...);  │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│   Generated Connector Clients       │
│   (Office365Extensions.cs, etc.)    │
│                                     │
│  • Typed async methods per action   │
│  • Input/output models from Swagger │
│  • XML docs from connector metadata │
└──────────────┬──────────────────────┘
               │ depends on
               ▼
┌─────────────────────────────────────┐
│   Azure Connectors .NET SDK         │
│   Azure.Connectors.Sdk              │
│                                     │
│  • Azure.Core TokenCredential auth  │
│  • ConnectorHttpClient + retry      │
│  • ConnectorJsonSerializer          │
└─────────────────────────────────────┘

Installation

From NuGet.org

dotnet add package Azure.Connectors.Sdk --prerelease

Quick Start

1. Generate Connector Code

Use the LogicAppsCompiler CLI to generate typed clients from connector Swagger definitions:

LogicAppsCompiler.exe ./generated unused --directClient --connectors=office365

See GENERATION.md for detailed generation instructions.

2. Add Generated Code to Your Project

Copy the generated *Extensions.cs files to your project.

3. Use the Typed Client

using System;
using Azure.Connectors.Sdk;
using Azure.Connectors.Sdk.Office365;
using Azure.Identity;

// Get connection runtime URL from Azure Portal
var connectionRuntimeUrl = "https://...";

// Create client — defaults to ManagedIdentityCredential (system-assigned)
using var client = new Office365Client(connectionRuntimeUrl);

// For local development, pass AzureCliCredential explicitly
using var localClient = new Office365Client(
    new Uri(connectionRuntimeUrl),
    new AzureCliCredential());

// Or configure retry and diagnostics via ConnectorClientOptions
using var clientWithOptions = new Office365Client(
    new Uri(connectionRuntimeUrl),
    new AzureCliCredential(),
    new ConnectorClientOptions());

// Call typed operations
await client.SendEmailAsync(new SendEmailInput
{
    To = "recipient@example.com",
    Subject = "Hello from SDK",
    Body = "<p>Email body</p>"
});

var categories = await client.GetOutlookCategoryNamesAsync();

SDK Components

Client Base

Component Description
ConnectorClientBase Abstract base class for all generated clients — provides authentication, retry, OTel tracing, JSON serialization, and SSRF-protected URL resolution
ConnectorClientOptions Configuration for retry count, timeout, exponential backoff, and initial retry delay
ConnectorException Unified exception for connector API failures with ConnectorName, Operation, StatusCode, and ResponseBody

Authentication

Authentication uses Azure.Core TokenCredential directly — any credential from Azure.Identity works:

Credential Use Case
ManagedIdentityCredential Azure-hosted apps — system-assigned by default when no credential is specified
AzureCliCredential Local development — pass explicitly (default no longer probes CLI)
ClientSecretCredential Service principal authentication

HTTP

Component Description
ConnectorHttpClient HTTP client with built-in authentication

Serialization

Component Description
ConnectorJsonSerializer JSON serialization with connector conventions
JsonConverters Custom converters for connector types

Triggers

Component Description
TriggerCallbackPayload<T> / TriggerCallbackBody<T> Typed envelope for connector trigger callbacks; normalizes batch and single-item shapes into Body.Value
ConnectorTriggerPayload Helpers to read a raw trigger callback (string/Stream) into a typed payload (Read/ReadAsync) or decoded binary file bytes (TryReadBinaryContent/ReadBinaryContentAsync), with case-insensitive matching and a bounded read

See docs/triggers.md for the trigger architecture, payload shapes, and end-to-end usage.

Documentation

AI Agent Skills

  • Connection Setup Skill - AI agent workflow for creating Connector Namespace connections, OAuth consent, access policies, and configuring app settings — all from within VS Code

Validated Connectors

Connector Status Validated Operations
Azure AD 🔄 SDK Generated GetUser, CreateUser, GetGroup, GetGroupMembers, CreateGroup, UpdateUser, CheckMemberGroups
Azure IoT Central 🔄 SDK Generated ApplicationsList, DeviceGroupsList, DeviceGroupsGet, DeviceGroupsSet, DevicesGetCloudProperties (pageable)
Azure Monitor Logs ✅ E2E Validated ListSubscriptions, ListResourceGroups, ListResources, QueryData, QuerySchema
Azure Resource Manager ✅ E2E Validated SubscriptionsList, ResourceGroupsList, ResourceGroupsListResources, ResourceGroupsGet, ResourceGroupsCreateOrUpdate, ResourceGroupsDelete, ResourcesGetById
IBM MQ 🔄 SDK Generated SendAsync, ReadAsync, ReadAllAsync, ReceiveAsync, ReceiveAllAsync, DeleteAsync, DeleteAllAsync
Office365 ✅ Validated SendEmail, GetOutlookCategoryNames, ExportEmail, CalendarPostItem
Office365 Users ✅ Validated MyProfile, UserProfile, Manager, DirectReports, SearchUser
OneDrive for Business ✅ Validated ListRootFolder, ListFolder, GetFileContentByPath, CreateFile, FindFilesByPath, CreateShareLink
SharePoint ✅ E2E Validated GetDataSets → GetAllTables, GetFileItems, GetFileContentByPath, CreateFile
MS Graph Groups & Users ✅ Validated ListUsers, ListGroupsByDisplayNameSearch, GetGroupProperties
Teams ✅ Validated GetAllTeams, GetChannelsForGroup, PostMessageToConversation
SMTP ✅ Validated SendEmail
Azure Event Grid ✅ E2E Validated TopicTypesList, SubscriptionsList (trigger: CreateSubscription)
Excel Online ✅ E2E Validated GetTables (connectivity confirmed via sdk-test-gateway-prod)
Universal Print ✅ E2E Validated ListRecentShares (returned 0 shares via sdk-test-gateway-prod)
Microsoft Defender ATP ✅ E2E Validated GetAlerts (reached Defender API via sdk-test-gateway-prod; 403 = tenant permissions)
Dataverse (commondataservice) ✅ E2E Validated GetDataSets, GetTables, GetItems, GetItem, PostItem, PatchItem, DeleteItem, CreateAttachment (binary note content; record cleanup verified), GetNextPage
Campfire 🔄 SDK Generated ListAccounts, ListRooms, CreateMessage (trigger: OnNewRoom)
ClickSend SMS 🔄 SDK Generated SmsSend, CreateList, GetContactLists (trigger: OnSmsInboundAutomation)
CloudConvert 🔄 SDK Generated ConvertFile, OptimizeFile, CaptureWebsite, MergeFiles; five dynamic-options discovery helpers
Cloudmersive Convert 🔄 SDK Generated ConvertDocumentAutodetectGetInfo, ConvertDocumentAutodetectToPdf
Etsy 🔄 SDK Generated Ping, PaymentLedgerEntries, PaymentGetEntryID
Excel Online (Business) 🔄 SDK Generated CreateTableAsync
Formstack Forms 🔄 SDK Generated GetAvailableForms (trigger: OnFormstackFormSubmitted)
FreshService 🔄 SDK Generated AddNote, CreateTicket, UpdateTicket (trigger: OnTicketCreated)
Infusionsoft (Keap) 🔄 SDK Generated CreateTask, UpdateTask, ListTasks (trigger: OnNewTask)
Insightly 🔄 SDK Generated ListTasks, UpdateTask, AddTask (trigger: OnTaskAssignedToMe)
Pipedrive 🔄 SDK Generated ListDeals, GetDeal, UpdateDealStatus (trigger: OnTrigNewActivity)
Plivo 🔄 SDK Generated MakeCall, ListMessages, SendSMS
Plumsail 🔄 SDK Generated AddWatermarkToPdf, RegExpMatch, ParseCsv
Replicon 🔄 SDK Generated BulkGetProjectDetails3, CreateProjectOrApplyModifications
Rev.ai 🔄 SDK Generated TranscriptionGet, TranscriptionsGet, TranscriptionDelete
Zoho Sign 🔄 SDK Generated InvokeAPI, DownloadCompletionCertificate (trigger: OnZohoSignTriggers)
Docuware 🔄 SDK Generated GetOrganization, StoreToFileCabinet
Elfsquad Data 🔄 SDK Generated GetSchemas, GetEntities
Impexium 🔄 SDK Generated GetAbandonedCheckouts, ListAllExhibitors
Jedox OData Hub 🔄 SDK Generated Databases, GetCubes
Meeting Room Map 🔄 SDK Generated GetCategories, GetCustomLocations
Orderful 🔄 SDK Generated ListTransactions
Outlook 🔄 SDK Generated GetEmailAsync, SendEmailAsync, DeleteEmailAsync, CalendarGetItemsAsync, ContactGetItemsAsync
PDF.co 🔄 SDK Generated HtmlToPdf, UrlToPdf, PdfFiller
Projectplace 🔄 SDK Generated ListBoards, CreateCard
Seismic Planner 🔄 SDK Generated GetComments, CreateComment
Service Bus 🔄 SDK Generated GetQueuesAsync, GetTopicsAsync
Starmind 🔄 SDK Generated FindExperts, FindQuestions
StarRez REST V1 🔄 SDK Generated SelectEntry, CreateEntry, UpdateEntry
Tallyfy 🔄 SDK Generated GetUserOrganizations, EditTaskDeadline
TextRequest 🔄 SDK Generated GetMessagesByContactPhone, SendMessageByPhoneNumber
Ticketmaster 🔄 SDK Generated EventsGet, EventsGetDetails
Way We Do 🔄 SDK Generated GetAllChecklistInstances, CommentAdd
Word Online (Business) 🔄 SDK Generated GetFileSchemaAsync, CreateFileItemAsync, GetSourcesAsync
Azure Automation 🔄 SDK Generated CreateJob, GetStatusOfJob, GetJobOutput
Azure Cosmos DB 🔄 SDK Generated GetCosmosDbAccountsAsync, CreateDocumentAsync
Azure Data Factory 🔄 SDK Generated CreatePipelineRun, GetPipelineRun, CancelPipelineRun
Azure Digital Twins 🔄 SDK Generated AddTwin, GetTwinById, QueryTwins
Azure Event Hubs 🔄 SDK Generated GetEventHubsAsync, SendEventAsync, SendEventsAsync
Azure Queues 🔄 SDK Generated GetMessagesAsync, PutMessageAsync, DeleteMessageAsync, ListQueuesAsync, PutQueueAsync
Azure Tables 🔄 SDK Generated GetTableAsync, GetEntitiesAsync, CreateEntityAsync, MergeEntityAsync, DeleteEntityAsync
Azure VM 🔄 SDK Generated VirtualMachineGet, VirtualMachineStart, VirtualMachineDeallocate
Key Vault 🔄 SDK Generated GetSecret, ListSecrets, EncryptData
Microsoft Bookings 🔄 SDK Generated ListBookingsBusinessUserAsAdmin
Microsoft Forms 🔄 SDK Generated ListForms, GetFormDetailsById, GetFormResponseById, GetQuestions
Office 365 Groups 🔄 SDK Generated ListGroups, AddMemberToGroup, CreateCalendarEvent
Office 365 Groups Mail 🔄 SDK Generated ListConversations, CreateConversation, ReplyToAThread
OneNote 🔄 SDK Generated GetNotebooks, CreatePageInSection, GetPageContent
Planner 🔄 SDK Generated ListMyTasks, CreateTask, UpdateTask
Power BI 🔄 SDK Generated ExecuteDatasetQuery, AddRows, RefreshDataset
SigningHub 🔄 SDK Generated AttachmentGetAttachments, AttachmentDeleteAttachment
Shifts 🔄 SDK Generated ListShifts, ListOpenShifts, GetSchedule
To Do 🔄 SDK Generated GetAllTodoLists, CreateToDo, GetToDo
Box 🔄 SDK Generated GetFileMetadata, CreateFile, CopyFile, ExtractFolder
DocuSign 🔄 SDK Generated CreateEnvelopeFromTemplate, SendEnvelope, GetRecipientStatus, ListEnvelopes
Dropbox 🔄 SDK Generated GetFileMetadata, CreateFile, CopyFile, ExtractFolder
Dynamics AX 🔄 SDK Generated GetTable, GetItems, PostItem, ExecuteProcedure
Eventbrite 🔄 SDK Generated GetCategories, GetOrganizations, GetOrganizationEvents, CreateEvent
FTP 🔄 SDK Generated CreateFile, GetFileMetadata, UpdateFile, DeleteFile
GitHub 🔄 SDK Generated CreateIssue, GetIssues, CreatePullRequest, MergePullRequest
Google Calendar 🔄 SDK Generated ListCalendars, ListEvents, CreateEvent, UpdateEvent
Google Drive 🔄 SDK Generated GetFileMetadata, CreateFile, ListFolder, ListRootFolder
Google Tasks 🔄 SDK Generated ListTaskLists, CreateTaskList, ListTasks
Jira 🔄 SDK Generated ListIssues, CreateIssue, EditIssue, ListProjects
Mailchimp 🔄 SDK Generated GetCampaigns, GetLists, AddMembers, Sendcampaign
Monday.com 🔄 SDK Generated GetBoards, CreateItem, GetItems, CreateBoard
OneDrive (Personal) 🔄 SDK Generated GetFileMetadata, CreateFile, ListRootFolder, FindFiles, CreateShareLink
RSS 🔄 SDK Generated ListFeedItems
Salesforce 🔄 SDK Generated GetItems, PostItem, PatchItem, ExecuteSoqlQuery
SendGrid 🔄 SDK Generated SendEmail, ListRecipientLists, AddGlobalSuppression
Slack 🔄 SDK Generated PostMessage, CreateChannel, JoinChannel
SQL Server 🔄 SDK Generated GetItems, PostItem, PatchItem, ExecuteProcedure, GetDatabases
Trello 🔄 SDK Generated ListCards, CreateCard, ListBoards, ListLists
Twitter 🔄 SDK Generated UserTimeline, HomeTimeline, SearchTweet, Tweet
Typeform 🔄 SDK Generated ListForms
Webex 🔄 SDK Generated SendMessage, GetMessages, GetSpaces, CreateSpace
WordPress 🔄 SDK Generated SiteStats, Get, Create, ListSites
Yammer (Viva Engage) ✅ E2E Validated GetNetworks (returned 2 networks via sdk-test-gateway-prod)
Zendesk 🔄 SDK Generated PostItem, DeleteItem, PatchItem, SearchArticles
Project Description
Connector SDK Samples Sample Azure Functions demonstrating SDK usage with Office 365, SharePoint, Teams, and more
Connector SDK LSP Language Server Protocol server and VS Code extension for intelligent code assistance when developing with the SDK
Azure Functions Connector Extension Azure Functions host and worker extensions for managed connectors

Regenerating Connectors

Connectors should be regenerated periodically to incorporate Swagger updates:

LogicAppsCompiler.exe ./generated unused --directClient --connectors=office365,servicebus,teams

Releasing a New Version

The version is defined in eng/build/Version.props (VersionPrefix + VersionSuffix). Three ADO pipelines in azfunc/internal handle mirroring, building/signing, and publishing to nuget.org.

See the Releasing a New Version section in the copilot instructions for the full step-by-step procedure, pipeline IDs, version suffix behavior, and common pitfalls.

License

This project is licensed under the MIT License — see the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.14.0-preview.1 502 8/13/2026
0.13.0-preview.1 2,373 7/10/2026
0.12.0-preview.1 383 6/2/2026
0.11.0-preview.1 418 5/17/2026
0.10.0-preview.1 236 5/12/2026
0.9.0-preview.1 150 5/8/2026

See https://github.com/Azure/Connectors-NET-SDK/releases/tag/v0.14.0-preview.1

       ## What's Changed

### 0.14.0-preview.1 (2026-08-12)

#### Breaking Changes

- **Seven clients preserve wire properties that previously collided after C# name generation** — regenerated Etsy, GitHub, Office 365 Outlook, Plumsail Documents, SigningHub, Twitter, and WordPress from the merged collision resolver in AzureUX-BPM PR 16763267. GitHub `PullRequest.DiffUrl` now represents `diff_url`, while `PullRequest.PullRequestDiffUrl` represents the previously dropped `comments_url`. Office 365 `MailTipsClientReceive.ExternalMemberCount` now represents `externalMemberCount`, and `IsModerated` is corrected from `int?` to `bool?` for `isModerated`. Plumsail `AddPowerAutomateWebhookData.ProcessId` now represents `processId`, while `ProcessName` represents the previously dropped `hookUrl`. Etsy adds `BuyerTotalAdjustmentAmount`; SigningHub adds `DocumentId2` for `document_id`; Twitter adds `CreatedAtIso` to both tweet models; and WordPress adds `Id2` for `guid` to both post models. Callers using the three previously misbound GitHub, Office 365, or Plumsail properties must move values to the corrected properties.

- **DocuSign embedded-signing discovery now binds the current route to the unsuffixed method name** — `StaticResponseForEmbeddedSigningSchemaAsync` now requires `isThisAnPersonSigner` and calls `/embeddedSigning_schema_v2`. The older `/embeddedSigning_schema` operation is no longer retained, and callers of `StaticResponseForEmbeddedSigningSchemaV2Async` must use `StaticResponseForEmbeddedSigningSchemaAsync`. This follows the generator rule that the current retained revision owns the unsuffixed name. (AzureUX-BPM PR 16671915)

- **Unreferenced discovery helpers and their models are no longer retained** — discovery reachability now starts from the selected public and trigger surface and continues transitively through retained helpers. This removes methods that survived only because the generator scanned every Swagger definition: `ExcelOnlineBusiness.GetRawAndFormattedTableAsync`; `GoogleDrive.GetTableAsync` and `GetTablesAsync`; `PowerBI.GetPowerBiButtonClickedOutputsAsync`; and Teams' `GetAdaptiveCardInputMetadataAsync`, `GetFlowContinuationSubscriptionOutputMetadataAsync`, `GetNotificationInputMetadataAsync`, `GetCardResponseTriggerOutputsMetadataAsync`, `GetComposeMessageTriggerOutputsMetadataAsync`, `GetSelectedMessageTriggerOutputsMetadataAsync`, and `GetSubscriptionScopeSchemaAsync`.

 The removed public models are `GoogleDrive.Models.TableMetadata`, `TableCapabilitiesMetadata`, `TableSortRestrictionsMetadata`, `TableFilterRestrictionsMetadata`, `TableSelectRestrictionsMetadata`, `ObjectEntity`, `TablesList`, and `Table`; `PowerBI.Models.PowerBiButtonClickedOutputs`; and `Teams.Models.SelectedMessageTriggerMetadata`, `ComposeMessageTriggerMetadata`, and `CardResponseTriggerMetadata`. Their model-factory methods are also removed. (AzureUX-BPM PR 16671915)

- **All connector clients regenerated; version-affixed models are no longer collapsed onto one name** — the generator stripped a version affix from a definition name without knowing which definitions a connector retains, so `FooV1` and `FooV2` both claimed `Foo` and only one type was emitted. The dropped one produced a model that compiled and looked complete while omitting fields the service returns. Names are now decided against the retained definition set: a single claimant still strips the affix, several claimants describing the same wire shape still collapse to one type, and claimants with differing shapes keep their affixes so no shape is lost.

 `AzureIoTCentral` is the clearest case and shipped separately in #225: `Device` became `DeviceV1` and `DeviceV2`, making the `organizations` property reachable. In this regeneration the same fix reaches `AzureAD`, `Office365`, `Pipedrive` and `Planner`. Callers referencing a previously collapsed model name on those clients must move to the affixed name.

 The remaining 71 regenerated clients carry accumulated output from generator fixes that merged after their last regeneration, rather than new behaviour introduced here. (AzureUX-BPM PR 16618864)

- **`purviewAcccountName` parameter corrected to `purviewAccountName` on SQL Server and Azure Blob Storage** — the shared Purview query parameter declares its `name` correctly but carries a triple-c typo in its `x-ms-summary`, and the generator derives the C# identifier from the summary. The misspelling therefore reached the public API surface while the wire query key was always correct, so this changes the identifier only, not request behaviour. Callers passing the parameter positionally are unaffected; callers using a named argument must rename it. Affects 12 occurrences in `SqlExtensions` and 20 in `AzureBlobExtensions`. (AzureUX-BPM PR 16639935)

- **SQL Server procedure metadata methods now expose distinct default and scoped routes** — the unversioned procedure operations own the plain method names, matching the Python SDK. Existing callers to the scoped procedure routes must rename:

 | Before | After |
 | --- | --- |
 | `GetProceduresAsync(serverName, databaseName)` | `GetProceduresV2Async(serverName, databaseName)` |
 | `GetProcedureAsync(serverName, databaseName, procedureName)` | `GetProcedureV2Async(serverName, databaseName, procedureName)` |

 `GetTableAsync` and `GetPassThroughNativeQueryMetadataAsync` continue to bind to the server- and database-scoped V2 routes because the default-dataset siblings are not reachable from the selected public surface. Compatibility overloads are deliberately not provided: generated code is never hand-edited, and unreachable internal Swagger routes are not retained. ([#222](https://github.com/Azure/Connectors-NET-SDK/issues/222), AzureUX-BPM PRs 16576205 and 16671915)

- **Cloudmersive Convert multipart operations removed** — 75 current managed-connector operations use Swagger 2.0 `formData`/multipart payloads that the SDK transport cannot compose, so the regenerated client no longer exposes those methods or their models. This includes `ConvertDocumentAutodetectGetInfoAsync`, `ConvertDocumentAutodetectToPdfAsync`, `ConvertDocumentDocxToPdfAsync`, `ConvertDocumentPdfToDocxAsync`, `ConvertImageGetImageInfoAsync`, `MergeDocumentPdfAsync`, and `SplitDocumentPdfByPageAsync`. The 53 non-multipart operations remain generated. (#210)
- **DocuSign deprecated and removed operations are no longer generated** — removed `CreateEnvelopeFromTemplateAsync`, `ListEnvelopesAsync`, `SalesCopilotListEnvelopesAsync`, `ScpGetEmailSummaryAsync`, `ScpGetKeySalesAsync`, `ScpGetRelatedActivitiesAsync`, and `ScpGetRelatedRecordsAsync`. `CreateEnvelopeFromTemplateNoRecipientsAsync` remains available. (#210)
- **Zoho Sign `CreateDocumentAsync` removed** — the operation remains in current managed-connector Swagger but requires a multipart/form-data `file` parameter, which the SDK transport cannot compose. (#210)
- **SigningHub upload methods now require file bytes** — `AttachmentUploadAttachmentAsync` and `DocumentsUploadStreamAsync` now require a `byte[] input` argument. Binary Swagger bodies use the SDK's raw request path, which sends the bytes unchanged with `Content-Type: application/octet-stream` instead of JSON/base64 serialization. Existing callers must provide the attachment or document bytes. (#210)
- **Generated method parameter names now follow current Swagger metadata** — named-argument callers may need updates; for example, DocuSign `GetDocgenFormFieldsAsync` now uses `accountId` and `envelopeId`. Positional calls are unaffected. (#210)
- **Docuware multipart-only file operations removed** — `StoreToFileCabinetAsync`, `ImportToDocumentTrayAsync`, `AppendFileAsync`, `DeleteFileAsync`, and `ReplaceFileAsync`, together with their response models/factories, are no longer generated because the SDK transport cannot compose the required Swagger 2.0 `formData` payloads. Other Docuware search, metadata, download, field, and stamp operations remain available. (#210)
- **Teams transcript and recording webhook trigger contracts removed** — current connector Swagger no longer exposes `DynamicTranscriptTriggerRequest`, `DynamicRecordingTriggerRequest`, `TeamsTriggerOperations.OnTranscriptTrigger`, or `TeamsTriggerOperations.OnRecordingTrigger`. (#210)
- **Azure Queues message response now matches the connector wire shape** — `Messages.QueueMessagesList` changed from `List<QueueMessage>` to a `QueueMessagesList` wrapper whose `QueueMessage` property contains the list. `QueueMessage.TimeNextVisible` was renamed to `NextVisibleTime` from the owner Swagger summary. `DequeueCount` remains available because Azure Storage returns it and the connector policy passes it through, although AAPT Swagger omits it. Access messages through `response.QueueMessagesList.QueueMessage`. (#210)
- **DocumentDB query response no longer exposes a synthetic envelope property** — `QueryDocumentsResponse.AdditionalProperties` and the corresponding model-factory parameter were removed. Dynamic document fields are captured by `ObjectWithoutType.AdditionalProperties` on each item in `QueryDocumentsResponse.Documents`, matching the V5 response contract. (#210)
- **Event Hubs owner-required parameters are now required** — `SendEventsAsync` requires `partitionKey`, and `GenerateEventSchemaAsync` requires `contentType`. Callers must pass non-null values declared as required by the connector owner Swagger. (#210)
- **Microsoft Forms schema helper no longer returns a fabricated response** — internal discovery method `GetQuestionsAsync` now returns `Task` instead of `Task<List<JsonElement?>>` because owner Swagger declares no success response schema. (#210)
- **Word Online Business drive discovery hides its internal source parameter** — internal discovery method `GetDrivesAsync` no longer exposes `source`; it sends the owner-declared default `source=me`. (#210)

#### Added

- **CloudConvert typed client** — adds the four public file-conversion operations and five internal discovery helpers referenced exclusively through `x-ms-dynamic-properties`. The client is generated from [AzureUX-BPM PR 16753182](https://msazure.visualstudio.com/One/_git/AzureUX-BPM/pullrequest/16753182).
- **MailChimp A/B split options preserve both wait fields** — `ABSplitOpts` now exposes distinct `WaitUnits` and `WaitTime` properties for the `wait_units` and `wait_time` wire fields instead of silently dropping one generated-name collision. ([#231](https://github.com/Azure/Connectors-NET-SDK/issues/231), AzureUX-BPM PR 16763267)
- **Discovery helpers retained from nested trigger and response schemas** — regenerated Azure Automation, Azure Monitor Logs, Elfsquad Data, Formstack Forms, Monday, Typeform, and Microsoft Defender ATP clients now include helpers pinned by nested trigger and response schemas in connector Swagger. Added `GetRunbookAsync`, `GetTimeRangeSelectionControlAsync`, `GetTriggerSchemaAsync`, `GetFormSchemaAsync`, three Monday column-schema helpers, Typeform's current `GetSchemaAsync`, and `AdvancedHuntingSchemaAsync`, plus five response/request models and four model-factory methods. Elfsquad Data's `GetTriggerSchemaAsync` and Formstack Forms' `GetFormSchemaAsync` return `Task` because owner Swagger declares no success response schema. Azure Automation's single-runbook route is likewise typed as `RunbookListResults` because that is the response definition declared by owner Swagger for both runbook routes. (AzureUX-BPM PR 16671915)

- **Zendesk regains four operations lost to internal versioned siblings** — `GetTablesAsync`, `GetItemsAsync`, `GetItemAsync` and the `GetTableAsync` discovery method are generated again, and the public `GetOnNewItems` trigger is registered alongside `GetOnUpdatedItemsV2` with its own typed callback payload. Version-collision resolution previously ran across the whole operation set, so each `x-ms-visibility: internal` `V2` sibling displaced its public counterpart and was then dropped as unreferenced. Surviving methods also carried a `[DynamicValues("GetTables")]` reference to an operation no longer present in the client. ([#220](https://github.com/Azure/Connectors-NET-SDK/issues/220), AzureUX-BPM PR 16576205)
- **SQL Server regains two default-dataset procedure discovery routes** — `GetProceduresAsync` and `GetProcedureAsync` now address `/datasets/default/...` and are joined by `GetProceduresV2Async` and `GetProcedureV2Async` for the server- and database-scoped routes. Each pair is a distinct reachable contract that previously collapsed onto the V2 route alone. `GetTableAsync`, `GetPassThroughNativeQueryMetadataAsync`, and `GetTablesAsync` deliberately continue to target versioned routes because their unversioned siblings are not reachable or are deprecated. ([#222](https://github.com/Azure/Connectors-NET-SDK/issues/222), AzureUX-BPM PRs 16576205 and 16671915)
- **New operations from current managed connector Swagger** — DocuSign adds `GetDocGenTemplateTabsAsync` and `GetOrganizationsAsync`; Teams adds `RemoveMemberFromChatAsync` and `UpdateChannelPropertiesAsync`; SharePoint adds `GetDayOfWeekOptionsAsync`. (#210)

#### Changed

- **Discovery methods are now emitted after the public surface** — generated clients list customer-facing operations first, then the internal discovery methods retained for dynamic values and dynamic schema. Pipedrive and Plumsail change by this ordering alone; their operation and model sets are unchanged. (AzureUX-BPM PR 16576205)

- **Generated types are documented from their own definition instead of from whatever reached them** — a type's summary was derived from the property or operation that happened to reach it first, which produced meaningless text and made the documentation depend on declaration order. A type reached through a bare envelope property such as `value` was summarized as `Item in value`, naming the wrapper rather than the element, and raw Swagger keys such as `x-ms-capabilities` and `sortRestrictions` were emitted as public API documentation. Zendesk `Table` and `Item` now carry their own names, three Zendesk metadata types gain real descriptions, and seventeen SQL Server summaries improve, for example `Item in List of datasets` becomes `Represents a database.` and `Response for GetTablesForDeleteItem` becomes `Represents a list of tables.` Documentation only; no operation, model, or wire change. (AzureUX-BPM PR 16600581)

- **Regenerated all 97 existing connector clients** using AzureUX-BPM PR 16421737. Generation now uses Azure Identity instead of the legacy ARMClient executable, preserves valid ARM JSON before applying malformed-response fallbacks, filters operations marked `deprecated`, and correctly handles connectors that advertise both JSON and multipart content types. Office 365, Docuware, and SigningHub now regenerate successfully from current ARM exports. (#210)
- **Corrected generated Swagger documentation text** — fixed `seperated`/`Comma-seperated` and `lists’s` in generated XML documentation. (#210)
- **Connector-specific corrections now preserve owner contracts** — Azure Queues receives named types for its nested message response without flattening the wire shape. Current AAPT connector Swagger remains authoritative for Event Hubs required parameters, Microsoft Forms and Word Online Business internal discovery methods, and DocumentDB per-document dynamic fields. (#210)

#### Fixed

- **Connector path and query values now use invariant-culture wire formatting** — regenerated all 98 shipped clients from AzureUX-BPM PR 16770557 so numeric and other formattable parameters no longer depend on `CurrentCulture` before URI escaping. For example, a `double` value of `3.14` now remains `3.14` under `de-DE` instead of becoming `3%2C14`. The hand-written ISO DateTime converter now parses and formats with `InvariantCulture`, and CA1305 is build-enforced to prevent regressions. ([#200](https://github.com/Azure/Connectors-NET-SDK/issues/200))

### 0.13.0-preview.1 (2026-07-09)

#### Added

- **`ConnectorTriggerPayload` helper to read trigger callbacks** — turns a raw Connector Namespace trigger callback (`string` or `Stream`) into a typed payload or decoded file bytes without per-function boilerplate. `Read<TPayload>` / `ReadAsync<TPayload>` deserialize metadata triggers (e.g. OneDrive `OnNewFilesV2`) with case-insensitive property matching, so camelCase wire fields bind correctly instead of silently yielding all-`null` items. `TryReadBinaryContent` / `ReadBinaryContentAsync` decode binary-content triggers (e.g. OneDrive `OnNewFileV2`), whose body is a base64 string. The `Stream` overloads read the caller-owned stream without closing it and enforce a generous, overridable body-size limit (`DefaultMaxBodySizeBytes`, 100 MB); `TryReadBinaryContent` returns `false` (rather than throwing) on malformed JSON. ([#190](https://github.com/Azure/Connectors-NET-SDK/issues/190))
- **Microsoft Dataverse client (`commondataservice`)** — generated typed `CommondataserviceClient` exposing the legacy Common Data Model (CDM) REST surface, which is the surface reachable through the Connector Namespace runtime. Covers environment/table discovery (`GetDataSetsAsync`, `GetTablesAsync`, `GetTableAsync`), row operations (`GetItemsAsync`, `GetItemAsync`, `PostItemAsync`, `PatchItemAsync`, `DeleteItemAsync`), attachments (`CreateAttachmentAsync`, `GetItemAttachmentsAsync`, `GetAttachmentContentAsync`, `DeleteAttachmentAsync`), relationships (`AssociateRecordsPatchItemAsync`, `DisassociateRecordsPostItemAsync`, `DisassociateSingleValueRecordDeleteItemAsync`, `GetCollectionRelationshipsAsync`), choice/metadata discovery, and pagination (`GetNextPageAsync`). Dataset values are full environment URLs (e.g., `https://contoso.crm.dynamics.com/`) and are double URL-encoded per the connector's `x-ms-url-encoding: "double"` contract. The modern Dataverse Web API routes (`/api/data`, `/getorgs`, ...) return HTTP 404 through Connector Namespace and are excluded by the generator's deterministic per-connector route-selection policy, along with the redundant OData-style key-syntax routes.

#### Changed

- **`TriggerCallbackBodyConverter<T>` now throws an actionable error for binary-content bodies** — when a binary-content trigger callback (a JSON string body, e.g. OneDrive `OnNewFileV2`) is deserialized into a metadata payload type, the error now explains the cause and points to `ConnectorTriggerPayload.TryReadBinaryContent` / `ReadBinaryContentAsync` instead of failing with a generic token-mismatch message. ([#190](https://github.com/Azure/Connectors-NET-SDK/issues/190))

### 0.12.0-preview.1 (2026-06-02)

- Breaking: All 1,460 `ConnectorNames.*` constants renamed to PascalCase derived from ARM display names (e.g. `Googledrive` → `GoogleDrive`, `Microsoftteams` → `MicrosoftTeams`, `Office365` → `Office365Outlook`). Update any references by name. (#170)
- Breaking: Optional value-type parameters across all generated clients are now nullable (`int?`, `bool?`, `double?`) so `null` means "unspecified"; overriding subclasses must update signatures. (#180)
- Breaking: Dynamic model properties changed from `object` to `JsonElement?`; pre-serialize arbitrary values to `JsonElement`. (#157)
- Breaking: Output-only model properties changed to `{ get; init; }`; use object initializers or the generated `*ModelFactory` classes. (#161)
- Breaking: `IConnectorClient` marker interface removed — `ConnectorClientBase` now implements `IDisposable` directly. (#183)
- Breaking: `Teams.OnGroupMemberChangeResponseItem` removed; membership trigger payloads are now `TriggerCallbackPayload<object>`. (#170)
- Added Teams trigger payload types — `TeamsOnNewChannelMessageTriggerPayload`, `TeamsOnNewChannelMessageMentioningMeTriggerPayload`, `TeamsOnTeamMemberRemovedTriggerPayload`, `TeamsOnTeamMemberAddedTriggerPayload`, plus the `TeamsTriggers.Operations` registry. (#170)
- Added OpenTelemetry distributed tracing — each generated client has a per-connector `ConnectorActivitySource` (e.g., `Azure.Connectors.Sdk.teams`); subscribe to `Azure.Connectors.Sdk.*` to capture all connector operations. (#183)
- Added `ConnectorException` error-code parsing to populate `RequestFailedException.ErrorCode`. (#180)
- Added `[EditorBrowsable(EditorBrowsableState.Never)]` on inherited `Object` methods. (#160)
- Regenerated all 96 connector clients with copyright headers (#158), base-chained mock constructors (#159), and null-guard hardening (#175).

### 0.11.0-preview.1 (2026-05-15)

- Fixed: `TriggerCallbackBody<T>` now handles both batch and single-item callback shapes, preventing silent zero-item processing when splitOn is enabled. (#149)
- Breaking: `TriggerCallbackPayload<T>.Body` is now init-only and `TriggerCallbackBody<T>.Value` is `IReadOnlyList<T>?` with an internal setter; use `ConnectorModelFactory` to construct in tests.
- Breaking: Removed CamelCase JSON naming policy; properties without `[JsonPropertyName]` now serialize as PascalCase. (#84, #85)
- Breaking: Renamed `AzuremonitorlogsClient` → `AzureMonitorLogsClient` and `Office365usersClient` → `Office365UsersClient` (namespaces, DI methods, model factories, and `ConnectorNames` updated). (#126)
- Breaking: `IPageable<T>` is now internal; `ConnectorClientBase.CreatePageable` is private protected; JSON converter types are internal. (#124, #127)
- Added constructor overload `(Uri, TokenCredential)` without `ClientOptions`, and `ConnectorHttpClient` mocking support. (#123, #125)
- 36 new connector clients across batches 5–6 (Azure AD, Azure IoT Central, Outlook, Service Bus, Box, DocuSign, GitHub, Google Drive, Jira, Salesforce, SQL, Trello, and more).

### 0.10.0-preview.1 (2026-05-11)

- Breaking: Removed CamelCase JSON naming policy from ConnectorClientBase.JsonOptions; properties without `[JsonPropertyName]` now serialize as PascalCase.
- Breaking: Renamed AzuremonitorlogsClient to AzureMonitorLogsClient; Office365usersClient to Office365UsersClient (namespaces, DI methods, and model factories updated accordingly).
- Breaking: `IPageable<T>` is now internal; `ConnectorClientBase.CreatePageable` is private protected; JSON converter types are internal.
- Added constructor overload (Uri, TokenCredential) without ClientOptions on ConnectorClientBase and all generated clients.
- ConnectorHttpClient now supports mocking (protected parameterless constructor, virtual SendAsync).
- 48 new connector clients across 4 batches, including ExcelOnline, AzureEventGrid, Yammer, WdatpClient, AzureAutomation, AzureDataFactory, KeyVault, PowerBI, and many more.
- Regenerated all 12 previously shipped connector clients with PascalCase name overrides.

### 0.9.0-preview.1 (2026-05-08)

- Breaking: Constructor overhaul — Uri is now the primary parameter type; default credential changed from DefaultAzureCredential to ManagedIdentityCredential(SystemAssigned); credential parameter is no longer optional.
- Breaking: Output-only model properties now have internal set; use per-connector model factory classes for testing.
- Breaking: `ExceptionExtensions`, `HttpExtensions`, `RetryPolicy`, `ConnectorResponse<T>` removed as public API.
- Breaking: All namespaces renamed from `Microsoft.Azure.Connectors.*` to `Azure.Connectors.Sdk.*`.
- Breaking: ConnectorClientOptions now inherits from Azure.Core.ClientOptions; Polly dependency removed; HttpClient parameter removed from constructors.
- Added extensible enum types for Swagger enum properties, DI integration extension methods, per-connector model factory classes.
- Added Azure Monitor Logs typed client; removed deprecated Azure Log Analytics connector.

### 0.8.0-preview.1 (2026-04-30)

- Added Office 365 Users, Azure Log Analytics, SMTP, Azure Blob Storage, and IBM MQ typed clients.
- Added OpenTelemetry ActivitySource instrumentation for distributed tracing.

### 0.7.0-preview.1 (2026-04-30)

- Added `IAsyncEnumerable<T>` auto-pagination support for paginated connector operations.
- Paginated methods now return `ConnectorPageable<TPage, TItem>` instead of `Task<TPage>` (breaking).
- ManagedIdentityCredential updated to ManagedIdentityId API.

### 0.6.0-preview.1

- Initial Preview NuGet.org release of the Azure Connectors .NET SDK.

### 0.5.0-preview.1 (2026-04-15)

- Added MS Graph Groups and Users typed client with 7 action operations.
- Added Teams unit tests (constructor, dispose, mocked API, error handling, serialization).

### 0.4.0-preview.1 (2026-04-09)

- Added OneDrive for Business typed client with 22 action and 4 trigger operations.

### 0.3.0-preview.1 (2026-04-09)

- Breaking: Simplified all generated operation names by stripping version suffixes (V2/V3/V4).
- Breaking: Simplified trigger names to use On prefix with natural English.
- Breaking: Simplified type names with per-connector aliases.
- Added trigger operation constants and definition type pruning in the generator.

### 0.2.0-preview.1 (2026-04-07)

- Added Azure Data Explorer (Kusto) typed client.
- Added PR template, governance doc, CI code coverage, standard Microsoft OSS community files.
- Dependency bumps for Microsoft.Extensions.Http, test SDK, coverlet, and GitHub Actions.

### 0.1.0-preview.1 (2025-12-19)

- Initial SDK release with core abstractions (ConnectorClientBase, IConnectorClient, ConnectorClientOptions).
- Token providers: ManagedIdentityTokenProvider, ConnectionStringTokenProvider.
- HTTP pipeline with configurable retry policies.
- Office 365 connector client (generated).