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.
Caution
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.
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 method-safe retries 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.
┌─────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────┘
dotnet add package Azure.Connectors.Sdk --prereleaseUse the LogicAppsCompiler CLI to generate typed clients from connector Swagger definitions:
LogicAppsCompiler.exe ./generated unused --directClient --connectors=office365See GENERATION.md for detailed generation instructions.
Copy the generated *Extensions.cs files to your project.
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
var options = new ConnectorClientOptions();
options.Retry.MaxRetries = 3;
options.Retry.Delay = TimeSpan.FromSeconds(1);
using var clientWithOptions = new Office365Client(
new Uri(connectionRuntimeUrl),
new AzureCliCredential(),
options);
// Explicit opt-in: unsafe methods may repeat connector side effects
var unsafeRetryOptions = new ConnectorClientOptions
{
RetryUnsafeHttpMethods = true,
};
using var clientWithUnsafeRetries = new Office365Client(
new Uri(connectionRuntimeUrl),
new AzureCliCredential(),
unsafeRetryOptions);
// 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();| 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 method-safe retries, retry count, timeout, exponential backoff, and initial retry delay. See Retry safety. |
ConnectorException |
Unified exception for connector API failures with ConnectorName, Operation, StatusCode, and ResponseBody |
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 |
| Component | Description |
|---|---|
ConnectorHttpClient |
HTTP client for caller-supplied Azure.Core pipelines; the caller owns the pre-built pipeline's retry semantics. See Retry safety. |
| Component | Description |
|---|---|
ConnectorJsonSerializer |
JSON serialization with connector conventions |
JsonConverters |
Custom converters for connector types |
| 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.
- docs/concepts.md - Key concepts, terminology, and architecture
- docs/generated-contract.md - Language-neutral rules for generated actions, model and JSON property names, triggers, discovery helpers, and Swagger wire contracts
- GENERATION.md - How to generate connector code
- docs/connection-setup.md - Setting up connections for local testing
- docs/triggers.md - Trigger architecture, typed payloads, and the
ConnectorTriggerPayloadreader - Azure/Connectors-NET-Samples - Full working samples (Azure Functions, triggers, etc.)
The connector inventory below records shipped SDK coverage. Use GitHub issues and focused design documents for proposed work and current planning status.
- Connection Setup Skill - AI agent workflow for creating Connector Namespace connections, OAuth consent, access policies, and configuring app settings — all from within VS Code
The SDK includes 103 generated typed connector clients. Catalog entries alone do not imply that a typed client is included. Rows marked SDK Generated have not been validated end-to-end.
| Connector | Status | Validated Operations |
|---|---|---|
| Azure AD | 🔄 SDK Generated | GetUser, CreateUser, GetGroup, GetGroupMembers, CreateGroup, UpdateUser, CheckMemberGroups |
| Azure DevOps (VSTS) | 🔄 SDK Generated | ListProjectsAsync, QueueNewBuildAsync, GetBuildAsync, CreateWorkItemAsync, GetQueryResultsAsync (pageable; trigger: OnBuildCompleted) |
| DataFlows SMS | 🔄 SDK Generated | SendSmsAsync, GetSmsAsync, ListSmsAsync, GetProfileAsync, GetBalanceAsync |
| ServiceNow | 🔄 SDK Generated | GetRecordsAsync, CreateRecordAsync, GetRecordAsync, UpdateRecordAsync, UploadAttachmentFileAsync |
| 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 |
| Power Query Dataflows | 🔄 SDK Generated | RefreshDataflowAsync; workspace and dataflow discovery (trigger: OnRefreshComplete) |
| 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) |
| Zoho ZeptoMail | 🔄 SDK Generated | GetMailAgent, GetProcessedEmails, SendMail, SendTemplateMail, ProcessedMailStats |
| 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 |
| 🔄 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 |
Use VisualStudioTeamServicesClient from Azure.Connectors.Sdk.VisualStudioTeamServices
for Azure DevOps (connector API ID visualstudioteamservices), and DataflowsClient
from Azure.Connectors.Sdk.Dataflows for Power Query Dataflows (connector API ID
dataflows). Models and model factories live in each connector's .Models namespace.
Both clients accept a connection runtime URL, an Azure TokenCredential, and
ConnectorClientOptions, like the other SDK clients.
These clients have mocked HTTP and serialization tests, not live connection
validation. Triggers use Connector Namespace registration rather than ordinary
action calls. Azure DevOps provides typed callback classes and a trigger registry;
Dataflows callbacks can be read as TriggerCallbackPayload<RefreshModel>, with
DataflowsTriggerOperations and DataflowsTriggerParameters for registration.
Azure DevOps search fields preserve scalar and structured JSON values, and
pull-request callbacks bind boolean truncation flags and string merge strategies.
GetWorkItemDetailsAsync uses the production route; the explicitly Preview
replacement is not exposed.
See Connector triggers and
generation provenance.
Use DataflowsSmsClient from Azure.Connectors.Sdk.DataflowsSms for DataFlows SMS
(dataflowssms), not DataflowsClient, which is the separate Power Query connector.
Use ServiceNowClient from Azure.Connectors.Sdk.ServiceNow for ServiceNow
(service-now). Models and model factories live in each connector's .Models
namespace. Both clients follow the existing connection runtime URL and
TokenCredential constructors.
ServiceNow record fields are supplied through RecordBody.AdditionalProperties.
Attachment-list and attachment-metadata responses preserve their full JSON body
in AdditionalProperties; RetrieveAttachmentContentAsync returns raw byte[].
UploadAttachmentFileAsync sends raw bytes with application/octet-stream;
the multipart attachment-upload operation is not generated. DataFlows SMS trigger
registration uses DataflowsSmsTriggerOperations.OnRegisterWebhook.
Sending SMS uses the POST action only; the GET send alternative is excluded
because automatic retries could duplicate messages and charges.
These additions have mocked HTTP and serialization coverage, not live connection
validation. See generation provenance.
| 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 |
Connectors should be regenerated periodically to incorporate Swagger updates:
LogicAppsCompiler.exe ./generated unused --directClient --connectors=office365,servicebus,teamsThe 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.
This project is licensed under the MIT License — see the LICENSE file for details.