✅ Authorization
✅ Read & write data
Tools | Status |
---|---|
Pre-built integrations | ✅ |
API unification | ✅ |
2-way sync | ✅ |
Webhooks from Nango on data modifications | ✅ |
Real-time webhooks from 3rd-party API | 🚫 (time to contribute: <48h) |
Proxy requests | ✅ |
✅ Observability & data quality
Tools | Status |
---|---|
HTTP request logging | ✅ |
End-to-type type safety | ✅ |
Data runtime validation | ✅ |
OpenTelemetry export | ✅ |
Slack alerts on errors | ✅ |
Integration status API | ✅ |
✅ Customization
Tools | Status |
---|---|
Create or customize use-cases | ✅ |
Pre-configured pagination | 🚫 (time to contribute: <48h) |
Pre-configured rate-limit handling | 🚫 (time to contribute: <48h) |
Per-customer configurations | ✅ |
Messsages
Endpoint | Description | Readme |
---|---|---|
GET /messages | Continuously fetches messages from Microsoft Teams channels and chats. Details: incremental sync, goes back 10 days on first sync, metadata tracks last sync per channel/chat. | 🔗 |
Org Units
Endpoint | Description | Readme |
---|---|---|
GET /org-units | Continuously fetches groups from either Microsoft 365 or Azure Active Directory. Details: full refresh, support deletes, goes back all time, metadata is not required. | 🔗 |
Users
Endpoint | Description | Readme |
---|---|---|
GET /users | Continuously fetches users from either Microsoft 365 or Azure Active Directory given specified groups to sync. | 🔗 |
Pre-Requisites | Status | Comment |
---|---|---|
Paid dev account | ✅ Not required | Free, self-signup for a Microsoft account and Azure account. |
Paid test account | ✅ Not required | Free Microsoft account can be used for testing. |
Partnership | ✅ Not required | |
App review | ⚠️ Conditional | Required only if you want to publish your app to the Microsoft commercial marketplace or if your app needs admin consent for certain permissions. |
Security audit | ✅ Not required |
Create a Microsoft account and Azure account
Register an application in Microsoft Entra ID
Note your application (client) ID
Add a redirect URI
https://api.nango.dev/oauth/callback
as the Redirect URI.Add API permissions
Create a client secret
Configure token settings (optional)
Configure app visibility (optional)
Next
Scope | Description |
---|---|
offline_access | Access to refresh tokens for offline access |
Chat.Read | Read the signed-in user’s chat messages |
Chat.ReadWrite | Read and write the user’s chat messages |
ChannelMessage.Read.All | Read all channel messages in teams the user has access to |
ChannelMessage.Send | Send messages to channels the user is a member of |
Team.ReadBasic.All | Read team names and descriptions the user has access to |
Team.Read.All | Read full team properties and memberships |
Presence.Read | Read the user’s presence (availability and status) |
Presence.Read.All | Read presence information for all users in the organization |
User.Read.All | Read user profiles in the organization |
offline_access
scope to get a refresh token and keep access with your integration..default
scope documentation to ensure the permissions remain the same as those granted at the organization level..default
scope can’t be combined with the scopes registered in the Azure portal. So either just use the .default
scope or remove it to list out explicit parameters that are required. If you attempt to combine them you’ll receive the following errorauthorization_params
: