✅ Authorization
✅ Read & write data
Tools | Status |
---|---|
Pre-built integrations | 🚫 (time to contribute: <48h) |
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 | ✅ |
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 |
---|---|
User.Read | Read the signed-in user’s profile |
User.ReadBasic.All | Read basic profiles of all users |
User.Read.All | Read full profiles of all users |
User.ReadWrite.All | Read and write all users’ full profiles |
Directory.Read.All | Read directory data (users, groups, apps, roles, etc.) |
Directory.ReadWrite.All | Read and write directory data |
Group.Read.All | Read all groups |
Group.ReadWrite.All | Read and write all groups |
Application.Read.All | Read all applications in the directory |
Application.ReadWrite.All | Read and write all applications in the directory |
RoleManagement.Read.Directory | Read directory role templates and assignments |
RoleManagement.ReadWrite.Directory | Manage role assignments across the directory |
Policy.Read.All | Read all directory policies |
Policy.ReadWrite.ConditionalAccess | Read and write conditional access policies |
AuditLog.Read.All | Read all audit log data |
offline_access | Access to refresh tokens for offline access |
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
. Use prompt=login
to force the user to enter their credentials (bypassing single-sign on) or prompt=consent
to trigger the OAuth consent dialog after sign-in, which asks the user to grant permissions to the app. For more details, see Microsoft’s OAuth 2.0 authorization documentation.