Azure.Connectors.Sdk
Lightweight SDK for building typed connectors for Azure
Install
| Product | Versions |
|---|---|
| .NET |
README
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 = "[email protected]",
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
- 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 - ROADMAP.md - Connector generation progress and lessons learned
- Azure/Connectors-NET-Samples - Full working samples (Azure Functions, triggers, etc.)
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 |
| π 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 |
Related Projects
| 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.
Changes from Previous Version
Adoption Assessment
A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.
Related Guides & Workflows
Learn how to evaluate, integrate, or audit this package in your .NET project.