Microsoft Graph API ReferenzMicrosoft Graph API Reference

Umfassende Referenz fĂŒr Authentifizierung, Berechtigungen, OData-Abfragen, Änderungsverfolgung und Automatisierung mit Microsoft Graph.Comprehensive reference for authentication, permissions, OData queries, change tracking, and automation with Microsoft Graph.

🌐 Einheitlicher Endpunkt🌐 Unified endpoint

Ein API-Gateway fĂŒr Entra ID, Exchange, SharePoint, Teams, Intune, Reports und Security.One API gateway for Entra ID, Exchange, SharePoint, Teams, Intune, reports, and security.

🔐 OAuth 2.0🔐 OAuth 2.0

Delegierte und Anwendungsberechtigungen mit standardisierten Token-Flows.Delegated and application permissions with standardized token flows.

📩 Datenmodell📩 Data model

OData, Delta, Batch, Webhooks und konsistente Ressourcentypen fĂŒr Microsoft 365.OData, delta, batch, webhooks, and consistent resource types for Microsoft 365.

đŸ› ïž AutomatisierungđŸ› ïž Automation

Nutzbar aus PowerShell, .NET, Python, JavaScript, Logic Apps, Azure Functions und Runbooks.Usable from PowerShell, .NET, Python, JavaScript, Logic Apps, Azure Functions, and runbooks.

Was ist Microsoft Graph?What is Microsoft Graph?

Microsoft Graph stellt praktisch alle wichtigen Microsoft-365-Workloads hinter einem einheitlichen REST-Endpunkt bereit. Statt fĂŒr jede Plattform eine eigene API zu lernen, adressierst du Benutzer, Gruppen, Teams, PostfĂ€cher, Dateien, GerĂ€te, Richtlinien und Berichte ĂŒber denselben Namensraum.Microsoft Graph exposes nearly every major Microsoft 365 workload behind a single REST endpoint. Instead of learning separate APIs per platform, you address users, groups, teams, mailboxes, files, devices, policies, and reports through the same namespace.

Der produktive Basis-Endpunkt ist https://graph.microsoft.com. Ressourcen werden mit Pfaden wie /v1.0/users, /v1.0/groups, /v1.0/sites, /beta/identity/conditionalAccess/policies oder /v1.0/deviceManagement/managedDevices angesprochen.The production base endpoint is https://graph.microsoft.com. Resources are addressed with paths such as /v1.0/users, /v1.0/groups, /v1.0/sites, /beta/identity/conditionalAccess/policies, or /v1.0/deviceManagement/managedDevices.

KernideeCore idea

Microsoft Graph ist nicht nur eine Verzeichnis-API. Die StĂ€rke liegt in der einheitlichen Authentifizierung, den konsistenten Antwortformaten und dem gemeinsamen OData-Abfragemodell fĂŒr nahezu alle Microsoft-365-Dienste.Microsoft Graph is not just a directory API. Its strength is the unified authentication model, consistent response payloads, and shared OData query model across nearly all Microsoft 365 services.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Ii4uLiJ9...
ConsistencyLevel: eventual

Endpunkte: v1.0 vs. betaEndpoints: v1.0 vs beta

Microsoft Graph besitzt zwei primĂ€re Versionspfade: v1.0 fĂŒr produktive, stabil unterstĂŒtzte Endpunkte und beta fĂŒr Funktionen, die sich noch Ă€ndern können. In Dokumentation, Tests und Pilotprojekten ist beta wertvoll; in produktiven GeschĂ€ftsprozessen sollte beta nur bewusst und kontrolliert eingesetzt werden.Microsoft Graph has two primary version paths: v1.0 for production-ready, supported endpoints and beta for capabilities that can still change. Beta is valuable for documentation review, testing, and pilots; in production business processes it should be used intentionally and with strong control.

AspektAspect v1.0v1.0 betabeta
StabilitĂ€tStability Vertraglich stabil, rĂŒckwĂ€rtskompatibel soweit dokumentiertContractually stable, backward compatible as documented Kann Felder, Semantik oder Berechtigungen Ă€ndernCan change fields, semantics, or permissions
SupportSupport FĂŒr produktive Anwendungen empfohlenRecommended for production applications Vor allem fĂŒr Evaluierung und frĂŒhe NutzungPrimarily for evaluation and early adoption
DokumentationDocumentation Meist vollstĂ€ndig und mit SDK-UnterstĂŒtzungUsually complete and supported by SDKs Oft zuerst dokumentiert, aber nicht endgĂŒltigOften documented first, but not final
BerechtigungenPermissions Planbar und auditierbarPredictable and auditable Können sich kurzfristig ÀndernMay change quickly
RisikoRisk Niedrig bei sauberer FehlerbehandlungLow with proper error handling Höher wegen Schema- und VerhaltensÀnderungenHigher because of schema and behavior changes
PraxisregelPractical rule

Verwende v1.0 ĂŒberall dort, wo ein Prozess geschĂ€ftskritisch, automatisiert, dokumentiert oder revisionsrelevant ist. Verwende beta nur, wenn eine benötigte Funktion in v1.0 fehlt und du Risiko, Regressionen und Monitoring bewusst einkalkulierst.Use v1.0 wherever a process is business critical, automated, documented, or audit relevant. Use beta only when a needed capability is missing from v1.0 and you explicitly account for risk, regressions, and monitoring.

PowerShellPowerShell

$stableUsers = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/users?$top=5"
$betaPolicies = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"

AuthentifizierungAuthentication

Microsoft Graph verwendet Microsoft Identity Platform und OAuth 2.0. Die Wahl des Flows hÀngt davon ab, ob ein Benutzer interaktiv beteiligt ist, ob ein Hintergrunddienst ohne Benutzerkontext arbeitet oder ob ein API-Gateway ein bestehendes Benutzertoken weiterreichen muss.Microsoft Graph uses Microsoft Identity Platform and OAuth 2.0. The correct flow depends on whether a user participates interactively, whether a background service runs without user context, or whether an API gateway must forward an existing user token.

FlowFlow Wann verwenden?When to use? TokeninhaltToken content
Authorization CodeAuthorization Code Web-Apps, Portale, Admin-Tools, interaktive Desktop-AppsWeb apps, portals, admin tools, interactive desktop apps Benutzerkontext mit Scopes im Claim scpUser context with scopes in the scp claim
Client CredentialsClient Credentials Daemons, Jobs, Runbooks, Backends ohne BenutzeranmeldungDaemons, jobs, runbooks, backends without user sign-in Anwendungsrollen im Claim rolesApplication roles in the roles claim
Device CodeDevice Code CLI, Skripte, GerÀte ohne Browser oder eingeschrÀnkte EingabeCLI, scripts, devices without a browser or with limited input Benutzerkontext nach separater BestÀtigungUser context after separate confirmation
On-Behalf-OfOn-Behalf-Of Middle-Tier APIs, wenn ein Frontend-Token weitergereicht wirdMiddle-tier APIs when a front-end token is exchanged Neues delegiertes Token fĂŒr die Downstream-APINew delegated token for the downstream API

Authorization Code FlowAuthorization Code Flow

Dieser Flow ist Standard fĂŒr Server-Webanwendungen und moderne interaktive Apps. Die Anwendung leitet den Benutzer zur Anmeldung um, erhĂ€lt einen Autorisierungscode und tauscht ihn serverseitig gegen Access- und Refresh-Token ein.This flow is the default for server-side web applications and modern interactive apps. The app redirects the user to sign in, receives an authorization code, and exchanges it server-side for access and refresh tokens.

HTTPHTTP

POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id={app-id}
scope=https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20offline_access
code={authorization-code}
redirect_uri=https%3A%2F%2Fapp.contoso.com%2Fsignin-oidc
grant_type=authorization_code
client_secret={client-secret}

Client Credentials FlowClient Credentials Flow

FĂŒr nicht interaktive Dienste ist Client Credentials der typische Flow. Die App authentifiziert sich mit Zertifikat oder Secret und erhĂ€lt ein Anwendungstoken ohne Benutzerkontext. Dieses Token darf nur Application Permissions enthalten.For non-interactive services, client credentials is the standard flow. The app authenticates with a certificate or secret and obtains an application token without user context. That token can contain application permissions only.

HTTPHTTP

POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id={app-id}
scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
client_secret={client-secret}
grant_type=client_credentials

Device Code FlowDevice Code Flow

Device Code eignet sich fĂŒr Skripte und Terminals. Der Benutzer erhĂ€lt einen Code und meldet sich auf einem zweiten GerĂ€t unter einem Browser an. PowerShell, CLI-Tools und interne Support-Skripte profitieren stark von diesem Flow.Device code is ideal for scripts and terminals. The user receives a code and signs in on a second device in a browser. PowerShell, CLI tools, and internal support scripts benefit strongly from this flow.

HTTPHTTP

POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/devicecode
Content-Type: application/x-www-form-urlencoded

client_id={public-client-id}
scope=https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20offline_access

# Antwort enthÀlt device_code, user_code, verification_uri und expires_in

On-Behalf-Of FlowOn-Behalf-Of Flow

Im OBO-Flow tauscht eine API ein vorhandenes Benutzertoken gegen ein neues delegiertes Token fĂŒr Graph. Das ist ideal fĂŒr Frontend → API → Graph-Szenarien, in denen die BenutzeridentitĂ€t erhalten bleiben muss.In the OBO flow, an API exchanges an existing user token for a new delegated token to Graph. This is ideal for frontend → API → Graph scenarios where user identity must remain intact.

HTTPHTTP

POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id={api-app-id}
client_secret={api-secret}
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
requested_token_use=on_behalf_of
scope=https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20Mail.Read
assertion={incoming-user-access-token}
ClaimClaim BedeutungMeaning
audaud Ressource bzw. Zielanwendung des TokensResource or target application of the token
tidtid Tenant-ID des ausstellenden VerzeichnissesTenant ID of the issuing directory
scpscp Delegierte OAuth-ScopesDelegated OAuth scopes
rolesroles Anwendungsrollen bei Client CredentialsApplication roles in client credentials tokens
appidappid Client-ID der AnwendungClient ID of the application
oidoid Objekt-ID des Benutzers oder DienstprinzipsObject ID of the user or service principal

Berechtigungen, Delegated vs. Application und ConsentPermissions, delegated vs application, and consent

Delegated Permissions wirken im Kontext des angemeldeten Benutzers. Application Permissions wirken ohne Benutzerkontext direkt fĂŒr die App. Der Unterschied entscheidet ĂŒber Reichweite, Risiko, Genehmigungsprozess und Betriebsmodell.Delegated permissions act in the context of the signed-in user. Application permissions act directly for the app without user context. The distinction determines scope, risk, approval workflow, and operating model.

KriteriumCriterion DelegiertDelegated AnwendungApplication
BenutzerkontextUser context Ja, der Benutzer ist Teil der BerechtigungsketteYes, the user is part of the permission chain Nein, nur die App ist berechtigtNo, only the app is authorized
Typische NutzungTypical use Portale, Clients, Self-Service, Helpdesk-ToolsPortals, clients, self-service, helpdesk tools Daemons, Synchronisierung, Integrationen, ReportsDaemons, synchronization, integrations, reports
KontrolleControl Begrenzt durch Benutzerrechte und ScopesBound by user rights and scopes Kann tenantweite Daten ohne Benutzerbezug lesen/schreibenCan read/write tenant-wide data without user involvement
ConsentConsent Benutzer oder Admin, je nach ScopeUser or admin, depending on scope Immer Admin ConsentAlways admin consent
Best PracticeBest practice Least privilege und rollenbasierte BenutzerkontenLeast privilege and role-based user accounts Zertifikate, minimale Rollen, dedizierte Apps, MonitoringCertificates, minimal roles, dedicated apps, monitoring

Admin Consent kann interaktiv im Portal oder per URL ausgelöst werden. FĂŒr delegierte Test-Szenarien ist Graph Explorer hilfreich; fĂŒr Produktivbetrieb sollten Berechtigungen dokumentiert, regelmĂ€ĂŸig geprĂŒft und in Change-Prozesse aufgenommen werden.Admin consent can be granted interactively in the portal or via URL. Graph Explorer is helpful for delegated test scenarios; in production, permissions should be documented, reviewed regularly, and included in change processes.

HTTPHTTP

GET https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={app-id}&redirect_uri=https%3A%2F%2Fapp.contoso.com%2Fadminconsent
WichtigImportant

Directory.ReadWrite.All, Application.ReadWrite.All, RoleManagement.ReadWrite.Directory oder Policy.ReadWrite.ConditionalAccess sind Hochrisiko-Berechtigungen. Weise sie nur dedizierten Apps zu, sichere die Anmeldeinformationen mit Zertifikaten und ĂŒberwache ihre Nutzung.Directory.ReadWrite.All, Application.ReadWrite.All, RoleManagement.ReadWrite.Directory, and Policy.ReadWrite.ConditionalAccess are high-risk permissions. Assign them only to dedicated apps, protect credentials with certificates, and monitor their usage.

HĂ€ufige BerechtigungenCommon permissions

BerechtigungPermission TypType Admin ConsentAdmin consent BeschreibungDescription
User.ReadUser.Read DelegiertDelegated NeinNo Profil des angemeldeten Benutzers lesenRead the signed-in user profile
User.ReadBasic.AllUser.ReadBasic.All DelegiertDelegated NeinNo Basisprofile aller Benutzer lesenRead basic profiles of all users
User.Read.AllUser.Read.All BeideBoth JaYes VollstÀndige Benutzerprofile lesenRead full user profiles
User.ReadWriteUser.ReadWrite DelegiertDelegated NeinNo Eigenes Profil des Benutzers aktualisierenUpdate the signed-in user profile
User.ReadWrite.AllUser.ReadWrite.All BeideBoth JaYes Beliebige Benutzerobjekte ÀndernModify any user objects
Directory.Read.AllDirectory.Read.All BeideBoth JaYes Verzeichnisdaten lesenRead directory data
Directory.ReadWrite.AllDirectory.ReadWrite.All BeideBoth JaYes Verzeichnisdaten schreibenWrite directory data
Group.Read.AllGroup.Read.All BeideBoth JaYes Gruppen lesenRead groups
Group.ReadWrite.AllGroup.ReadWrite.All BeideBoth JaYes Gruppen und Gruppeneinstellungen verwaltenManage groups and group settings
GroupMember.Read.AllGroupMember.Read.All BeideBoth JaYes Gruppenmitglieder lesenRead group members
GroupMember.ReadWrite.AllGroupMember.ReadWrite.All BeideBoth JaYes Mitglieder zu Gruppen hinzufĂŒgen oder entfernenAdd or remove group members
Mail.ReadMail.Read BeideBoth TeilweisePartial E-Mails lesenRead mail
Mail.ReadBasicMail.ReadBasic BeideBoth TeilweisePartial Basisinformationen von Nachrichten lesenRead basic message metadata
Mail.ReadWriteMail.ReadWrite BeideBoth TeilweisePartial E-Mails lesen, erstellen und ÀndernRead, create, and update mail
Mail.SendMail.Send BeideBoth TeilweisePartial E-Mails sendenSend mail
Mail.Send.SharedMail.Send.Shared DelegiertDelegated NeinNo Als freigegebenes Postfach senden, wenn Berechtigung vorhandenSend as shared mailbox when mailbox permission exists
Calendars.ReadCalendars.Read BeideBoth TeilweisePartial Kalender lesenRead calendars
Calendars.ReadWriteCalendars.ReadWrite BeideBoth TeilweisePartial Kalendertermine erstellen und ÀndernCreate and update calendar events
Contacts.ReadContacts.Read BeideBoth TeilweisePartial Kontakte lesenRead contacts
Contacts.ReadWriteContacts.ReadWrite BeideBoth TeilweisePartial Kontakte verwaltenManage contacts
Sites.Read.AllSites.Read.All BeideBoth JaYes SharePoint-Sites lesenRead SharePoint sites
Sites.ReadWrite.AllSites.ReadWrite.All BeideBoth JaYes SharePoint-Sites und Inhalte ÀndernModify SharePoint sites and content
Files.Read.AllFiles.Read.All BeideBoth JaYes Dateien in OneDrive und SharePoint lesenRead files in OneDrive and SharePoint
Files.ReadWrite.AllFiles.ReadWrite.All BeideBoth JaYes Dateien lesen und ÀndernRead and modify files
Files.ReadWrite.AppFolderFiles.ReadWrite.AppFolder DelegiertDelegated NeinNo Nur App-spezifischen Ordner nutzenUse app-specific folder only
Team.ReadBasic.AllTeam.ReadBasic.All BeideBoth JaYes Basisinformationen zu Teams lesenRead basic team information
TeamSettings.Read.AllTeamSettings.Read.All BeideBoth JaYes Team-Einstellungen lesenRead team settings
TeamSettings.ReadWrite.AllTeamSettings.ReadWrite.All BeideBoth JaYes Team-Einstellungen verwaltenManage team settings
Channel.ReadBasic.AllChannel.ReadBasic.All BeideBoth JaYes KanÀle lesenRead channels
ChannelMessage.Read.AllChannelMessage.Read.All BeideBoth JaYes Kanalnachrichten lesenRead channel messages
ChannelMessage.SendChannelMessage.Send DelegiertDelegated NeinNo Nachrichten in KanÀlen sendenSend messages to channels
ChannelSettings.Read.AllChannelSettings.Read.All BeideBoth JaYes Kanaleinstellungen lesenRead channel settings
ChannelSettings.ReadWrite.AllChannelSettings.ReadWrite.All BeideBoth JaYes Kanaleinstellungen verwaltenManage channel settings
Application.Read.AllApplication.Read.All BeideBoth JaYes App-Registrierungen lesenRead app registrations
Application.ReadWrite.AllApplication.ReadWrite.All BeideBoth JaYes App-Registrierungen verwaltenManage app registrations
AppRoleAssignment.ReadWrite.AllAppRoleAssignment.ReadWrite.All BeideBoth JaYes App-Rollen-Zuweisungen verwaltenManage app role assignments
RoleManagement.Read.DirectoryRoleManagement.Read.Directory BeideBoth JaYes Rollen und Zuweisungen lesenRead roles and assignments
RoleManagement.ReadWrite.DirectoryRoleManagement.ReadWrite.Directory BeideBoth JaYes Rollen und Zuweisungen verwaltenManage roles and assignments
Policy.Read.AllPolicy.Read.All BeideBoth JaYes Richtlinien lesenRead policies
Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess BeideBoth JaYes Conditional-Access-Richtlinien verwaltenManage conditional access policies
Policy.ReadWrite.AuthenticationMethodPolicy.ReadWrite.AuthenticationMethod BeideBoth JaYes Authentifizierungsmethoden-Richtlinien verwaltenManage authentication method policies
IdentityRiskEvent.Read.AllIdentityRiskEvent.Read.All BeideBoth JaYes Risikoevents lesenRead risk events
IdentityRiskyUser.Read.AllIdentityRiskyUser.Read.All BeideBoth JaYes Risikobenutzer lesenRead risky users
IdentityRiskyUser.ReadWrite.AllIdentityRiskyUser.ReadWrite.All BeideBoth JaYes Risikobenutzer verwaltenManage risky users
AuditLog.Read.AllAuditLog.Read.All BeideBoth JaYes Sign-ins und Auditdaten lesenRead sign-ins and audit data
Reports.Read.AllReports.Read.All BeideBoth JaYes Nutzungs- und AktivitÀtsberichte lesenRead usage and activity reports
Device.Read.AllDevice.Read.All BeideBoth JaYes GerÀte lesenRead devices
Device.ReadWrite.AllDevice.ReadWrite.All BeideBoth JaYes GerÀteobjekte verwaltenManage device objects
DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All BeideBoth JaYes Intune-Konfigurationen lesenRead Intune configurations
DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All BeideBoth JaYes Intune-Konfigurationen verwaltenManage Intune configurations
DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All BeideBoth JaYes Verwaltete GerÀte lesenRead managed devices
DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All BeideBoth JaYes Verwaltete GerÀte verwaltenManage managed devices
SecurityEvents.Read.AllSecurityEvents.Read.All BeideBoth JaYes Sicherheitsereignisse lesenRead security events
SecurityEvents.ReadWrite.AllSecurityEvents.ReadWrite.All BeideBoth JaYes Sicherheitswarnungen aktualisierenUpdate security alerts
IdentityProvider.Read.AllIdentityProvider.Read.All BeideBoth JaYes Externe IdentitÀtsanbieter lesenRead identity providers
IdentityProvider.ReadWrite.AllIdentityProvider.ReadWrite.All BeideBoth JaYes Externe IdentitÀtsanbieter verwaltenManage identity providers
EntitlementManagement.Read.AllEntitlementManagement.Read.All BeideBoth JaYes Identity-Governance-Kataloge lesenRead identity governance catalogs
EntitlementManagement.ReadWrite.AllEntitlementManagement.ReadWrite.All BeideBoth JaYes Access Packages und Richtlinien verwaltenManage access packages and policies
PrivilegedAccess.Read.AzureADPrivilegedAccess.Read.AzureAD BeideBoth JaYes PIM-Daten lesenRead PIM data
PrivilegedAccess.ReadWrite.AzureADGroupPrivilegedAccess.ReadWrite.AzureADGroup BeideBoth JaYes Privilegierte Gruppen verwaltenManage privileged groups
AccessReview.Read.AllAccessReview.Read.All BeideBoth JaYes Access Reviews lesenRead access reviews
AccessReview.ReadWrite.AllAccessReview.ReadWrite.All BeideBoth JaYes Access Reviews verwaltenManage access reviews

Abfrageparameter und ODataQuery parameters and OData

Viele Graph-Endpunkte unterstĂŒtzen OData-Ă€hnliche Query-Parameter. Richtig eingesetzt reduzieren sie Netzwerklast, beschleunigen Scripts und vermeiden unnötiges Post-Processing im Client.Many Graph endpoints support OData-like query parameters. Used correctly, they reduce network load, speed up scripts, and avoid unnecessary client-side post-processing.

$select$select

Mit $select forderst du nur die benötigten Eigenschaften an. Das ist besonders wichtig bei großen Benutzer-, Gruppen- oder GerĂ€teabfragen.Use $select to request only the properties you need. This is especially important for large user, group, or device queries.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName,mail

$filter$filter

Mit $filter werden serverseitige Bedingungen formuliert. Dabei gelten je nach Ressource unterschiedliche EinschrĂ€nkungen; einige Felder unterstĂŒtzen nur Gleichheit, andere auch Funktionen oder Bereichsvergleiche.Use $filter for server-side conditions. Depending on the resource, different limitations apply; some properties support equality only, while others also support functions or range comparisons.

OperatorOperator ZweckPurpose BeispielExample
eqeq Gleichheit prĂŒfenTest equality accountEnabled eq trueaccountEnabled eq true
nene Ungleichheit prĂŒfenTest inequality userType ne 'Guest'userType ne 'Guest'
gtgt GrĂ¶ĂŸer alsGreater than createdDateTime gt 2024-01-01T00:00:00ZcreatedDateTime gt 2024-01-01T00:00:00Z
gege GrĂ¶ĂŸer oder gleichGreater than or equal signInActivity/lastSignInDateTime ge 2025-01-01T00:00:00ZsignInActivity/lastSignInDateTime ge 2025-01-01T00:00:00Z
ltlt Kleiner alsLess than assignedLicenses/$count lt 1assignedLicenses/$count lt 1
lele Kleiner oder gleichLess than or equal riskLevel le mediumriskLevel le medium
startsWithstartsWith PrÀfixvergleichPrefix match startsWith(displayName,'Adm')startsWith(displayName,'Adm')
endsWithendsWith SuffixvergleichSuffix match endsWith(mail,'@contoso.com')endsWith(mail,'@contoso.com')
hashas Flags und Enum-MengenFlags and enum sets assignedPlans/any(p:p/servicePlanName eq 'EXCHANGE_S_STANDARD')assignedPlans/any(p:p/servicePlanName eq 'EXCHANGE_S_STANDARD')
inin Wert in ListeValue in list department in ('IT','HR','Finance')department in ('IT','HR','Finance')
notnot NegationNegation not(accountEnabled eq true)not(accountEnabled eq true)
any/allany/all Lambda auf SammlungenLambda on collections proxyAddresses/any(p:startsWith(p,'SMTP:admin'))proxyAddresses/any(p:startsWith(p,'SMTP:admin'))

Komplexe Filter kombinieren Klammern, logische Operatoren und Lambda-AusdrĂŒcke. Gerade bei Gruppen, GerĂ€teobjekten und SharePoint-Items lohnt es sich, den Filter zunĂ€chst im Graph Explorer zu validieren.Complex filters combine parentheses, logical operators, and lambda expressions. Especially for groups, device objects, and SharePoint items, it helps to validate the filter in Graph Explorer first.

HTTPHTTP

GET https://graph.microsoft.com/beta/users?$filter=(accountEnabled eq true and userType eq 'Member') and assignedLicenses/$count gt 0&$count=true
ConsistencyLevel: eventual

Advanced Queries und $count=trueAdvanced queries and $count=true

FĂŒr bestimmte Filter auf Verzeichnisobjekten mĂŒssen erweiterte Abfragen aktiviert werden. Dazu setzt du $count=true und sendest den Header ConsistencyLevel: eventual.Certain filters on directory objects require advanced queries to be enabled. To do that, add $count=true and send the ConsistencyLevel: eventual header.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/groups?$filter=startsWith(displayName,'Sec-')&$count=true
ConsistencyLevel: eventual

$expand mit verschachteltem $select$expand with nested $select

Mit $expand werden verknĂŒpfte Objekte in dieselbe Antwort eingebettet. Das reduziert Round-Trips, muss aber wegen Payload-GrĂ¶ĂŸe und Endpoint-EinschrĂ€nkungen bewusst eingesetzt werden.Use $expand to embed related objects in the same response. It reduces round trips, but because of payload size and endpoint limitations it should be used deliberately.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/users/{id}?$select=id,displayName&$expand=manager($select=id,displayName,userPrincipalName)

$orderby$orderby

Sortierung ist nicht auf allen Ressourcen gleich verfĂŒgbar. Wenn $orderby unterstĂŒtzt wird, sollte die Sortierung möglichst auf indizierten oder hĂ€ufig verwendeten Eigenschaften erfolgen.Sorting is not available on all resources in the same way. When $orderby is supported, sort preferably on indexed or commonly used properties.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,createdDateTime&$orderby=displayName asc

$top und $skip$top and $skip

Mit $top begrenzt du die SeitengrĂ¶ĂŸe. $skip ist nur bei ausgewĂ€hlten Endpunkten sinnvoll; bei Directory-Daten ist @odata.nextLink meist der robustere Weg.Use $top to control page size. $skip is useful only on selected endpoints; for directory data, @odata.nextLink is usually the more reliable approach.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/users?$top=50

VolltextÀhnliche Suche ist vor allem bei Benutzern, Gruppen, Nachrichten und SharePoint hilfreich. HÀufig werden Syntaxformen wie displayName:value oder mailNickname:value verwendet.Search-like full-text queries are especially helpful for users, groups, messages, and SharePoint. Syntax patterns like displayName:value or mailNickname:value are commonly used.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/groups?$search="displayName:Sec"&$count=true
ConsistencyLevel: eventual

PaginierungPagination

Graph liefert grĂ¶ĂŸere Ergebnismengen fast immer seitenweise zurĂŒck. Die Antwort enthĂ€lt dann @odata.nextLink. Folge diesem Link unverĂ€ndert, bis kein nextLink mehr vorhanden ist.Graph almost always returns large result sets in pages. The response then includes @odata.nextLink. Follow that URL unchanged until no nextLink remains.

PowerShellPowerShell

$uri = "https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName&$top=999"
$headers = @{ Authorization = "Bearer $AccessToken" }
$allUsers = @()

do {
    $response = Invoke-RestMethod -Method GET -Uri $uri -Headers $headers
    if ($response.value) {
        $allUsers += $response.value
    }
    $uri = $response."@odata.nextLink"
} while ($uri)

$allUsers | Sort-Object displayName | Select-Object id, displayName, userPrincipalName

Batch-AnfragenBatch requests

Mit POST /$batch fasst du bis zu 20 Einzelanfragen in eine HTTP-Anfrage zusammen. Das spart Latenz, senkt aber nicht automatisch Berechtigungsanforderungen oder Throttling-Risiken.Use POST /$batch to combine up to 20 individual requests into one HTTP request. This saves latency, but it does not automatically lower permission requirements or throttling risk.

RegelRule BeschreibungDescription
Maximal 20 RequestsMaximum 20 requests Mehr Anfragen mĂŒssen auf mehrere Batch-Payloads verteilt werdenMore requests must be split across multiple batch payloads
dependsOn möglichdependsOn supported Einzelne Schritte können von frĂŒheren Request-IDs abhĂ€ngenIndividual steps can depend on earlier request IDs
Relative URLsRelative URLs In Requests werden Pfade wie /users oder /groups/{id}/members verwendetUse paths such as /users or /groups/{id}/members inside requests
Teilweise FehlerPartial failures Jeder Teilrequest hat eigenen Statuscode und eigenes FehlerobjektEach subrequest has its own status code and error object
JSONJSON

{
  "requests": [
    {
      "id": "1",
      "method": "GET",
      "url": "/users?$top=5&$select=id,displayName,userPrincipalName"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/groups?$top=5&$select=id,displayName,mailNickname"
    },
    {
      "id": "3",
      "method": "GET",
      "url": "/groups/{group-id}/members?$select=id,displayName,userPrincipalName",
      "dependsOn": ["2"]
    }
  ]
}

Webhooks und Change NotificationsWebhooks and change notifications

Über Subscriptions kann Graph Änderungen an unterstĂŒtzten Ressourcen aktiv an einen HTTPS-Endpunkt melden. Das spart Polling und ist ideal fĂŒr Near-Real-Time-Integrationen.With subscriptions, Graph can actively notify an HTTPS endpoint about changes to supported resources. This reduces polling and is ideal for near-real-time integrations.

JSONJSON

{
  "changeType": "created,updated",
  "notificationUrl": "https://app.contoso.com/api/graph/notifications",
  "resource": "/users/{id}/messages",
  "expirationDateTime": "2026-06-12T08:00:00Z",
  "clientState": "contoso-graph-webhook-secret"
}
RessourceResource Typische NutzungTypical use HinweisNote
/users/{id}/messages/users/{id}/messages Neue oder geÀnderte E-MailsNew or updated email HÀufig mit Mailbox-Automatisierung kombiniertOften combined with mailbox automation
/users/{id}/events/users/{id}/events Kalenderereignisse beobachtenObserve calendar events Gut fĂŒr Booking- und IntegrationsszenarienUseful for booking and integration scenarios
/groups/{id}/members/groups/{id}/members MitgliedschaftsĂ€nderungenMembership changes Nicht jeder Gruppen-Typ unterstĂŒtzt alle Change TypesNot every group type supports all change types
/teams/{id}/channels/{id}/messages/teams/{id}/channels/{id}/messages Channel-MonitoringChannel monitoring Teams-spezifische Berechtigungen notwendigTeams-specific permissions required
/sites/{id}/lists/{id}/items/sites/{id}/lists/{id}/items ListenĂ€nderungen in SharePointSharePoint list changes NĂŒtzlich fĂŒr Workflow-TriggerUseful for workflow triggers
/drives/{id}/root/drives/{id}/root DateiÀnderungenFile changes Oft mit Delta-Abfragen kombiniertOften combined with delta queries
/users/users BenutzerĂ€nderungenUser changes PrĂŒfe Dokumentation fĂŒr Property-AbdeckungCheck docs for property coverage
/groups/groups GruppenlebenszyklusGroup lifecycle Interessant fĂŒr GovernanceUseful for governance
/chats/getAllMessages/chats/getAllMessages Tenantweites Chat-ArchivTenant-wide chat archive Hohe SensibilitÀt und Consent-AnforderungenHigh sensitivity and consent requirements
/teams/getAllMessages/teams/getAllMessages Tenantweites Channel-ArchivTenant-wide channel archive Vor allem fĂŒr Compliance und ExportPrimarily for compliance and export
LebenszyklusLifecycle

Viele Subscriptions laufen nach Stunden oder Tagen ab und mĂŒssen erneuert werden. Plane Renew-Logik, Validierungs-Token-PrĂŒfung und Retry-Verhalten fĂŒr temporĂ€re Zustellfehler.Many subscriptions expire after hours or days and must be renewed. Plan renewal logic, validation token handling, and retry behavior for temporary delivery failures.

Delta-AbfragenDelta queries

Delta-Abfragen liefern erst einen vollstĂ€ndigen Snapshot und danach nur noch Änderungen seit dem letzten Stand. Das ist das Standardmuster fĂŒr Synchronisierung und inkrementelle Importe.Delta queries return a full snapshot first and then only changes since the last state. This is the standard pattern for synchronization and incremental imports.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/users/delta?$select=id,displayName,userPrincipalName,accountEnabled

# Folge @odata.nextLink bis zur letzten Seite
# Speichere anschließend @odata.deltaLink fĂŒr den nĂ€chsten Lauf
PowerShellPowerShell

$deltaUri = Get-Content .\users.deltaLink -ErrorAction SilentlyContinue
if (-not $deltaUri) {
    $deltaUri = "https://graph.microsoft.com/v1.0/users/delta?$select=id,displayName,userPrincipalName,accountEnabled"
}

do {
    $page = Invoke-RestMethod -Method GET -Uri $deltaUri -Headers @{ Authorization = "Bearer $AccessToken" }
    foreach ($user in $page.value) {
        $user
    }
    if ($page."@odata.nextLink") {
        $deltaUri = $page."@odata.nextLink"
    }
    elseif ($page."@odata.deltaLink") {
        $page."@odata.deltaLink" | Set-Content .\users.deltaLink
        $deltaUri = $null
    }
} while ($deltaUri)

Wichtige Endpunkte – ReferenzImportant endpoints – reference

WorkloadWorkload MethodeMethod URLURL Erforderliche BerechtigungenRequired permissions
UsersUsers GETGET /users/users User.Read.All oder Directory.Read.AllUser.Read.All or Directory.Read.All
UsersUsers POSTPOST /users/users User.ReadWrite.AllUser.ReadWrite.All
UsersUsers GETGET /users/{id}/users/{id} User.Read.AllUser.Read.All
UsersUsers PATCHPATCH /users/{id}/users/{id} User.ReadWrite.AllUser.ReadWrite.All
UsersUsers DELETEDELETE /users/{id}/users/{id} User.ReadWrite.AllUser.ReadWrite.All
UsersUsers GETGET /users/{id}/memberOf/users/{id}/memberOf Group.Read.AllGroup.Read.All
UsersUsers GETGET /users/{id}/manager/users/{id}/manager User.Read.AllUser.Read.All
UsersUsers PUTPUT /users/{id}/manager/$ref/users/{id}/manager/$ref User.ReadWrite.AllUser.ReadWrite.All
UsersUsers GETGET /users/{id}/directReports/users/{id}/directReports User.Read.AllUser.Read.All
UsersUsers POSTPOST /users/{id}/assignLicense/users/{id}/assignLicense User.ReadWrite.AllUser.ReadWrite.All
GroupsGroups GETGET /groups/groups Group.Read.AllGroup.Read.All
GroupsGroups POSTPOST /groups/groups Group.ReadWrite.AllGroup.ReadWrite.All
GroupsGroups GETGET /groups/{id}/groups/{id} Group.Read.AllGroup.Read.All
GroupsGroups PATCHPATCH /groups/{id}/groups/{id} Group.ReadWrite.AllGroup.ReadWrite.All
GroupsGroups DELETEDELETE /groups/{id}/groups/{id} Group.ReadWrite.AllGroup.ReadWrite.All
GroupsGroups GETGET /groups/{id}/members/groups/{id}/members GroupMember.Read.AllGroupMember.Read.All
GroupsGroups POSTPOST /groups/{id}/members/$ref/groups/{id}/members/$ref GroupMember.ReadWrite.AllGroupMember.ReadWrite.All
GroupsGroups GETGET /groups/{id}/owners/groups/{id}/owners Group.Read.AllGroup.Read.All
GroupsGroups GETGET /groups/{id}/transitiveMembers/groups/{id}/transitiveMembers GroupMember.Read.AllGroupMember.Read.All
GroupsGroups POSTPOST /groups/{id}/assignLicense/groups/{id}/assignLicense Group.ReadWrite.AllGroup.ReadWrite.All
AppsApps GETGET /applications/applications Application.Read.AllApplication.Read.All
AppsApps POSTPOST /applications/applications Application.ReadWrite.AllApplication.ReadWrite.All
AppsApps GETGET /applications/{id}/applications/{id} Application.Read.AllApplication.Read.All
AppsApps PATCHPATCH /applications/{id}/applications/{id} Application.ReadWrite.AllApplication.ReadWrite.All
AppsApps DELETEDELETE /applications/{id}/applications/{id} Application.ReadWrite.AllApplication.ReadWrite.All
AppsApps GETGET /servicePrincipals/servicePrincipals Application.Read.AllApplication.Read.All
AppsApps GETGET /servicePrincipals/{id}/appRoleAssignedTo/servicePrincipals/{id}/appRoleAssignedTo AppRoleAssignment.ReadWrite.AllAppRoleAssignment.ReadWrite.All
Conditional AccessConditional Access GETGET /identity/conditionalAccess/policies/identity/conditionalAccess/policies Policy.Read.AllPolicy.Read.All
Conditional AccessConditional Access POSTPOST /identity/conditionalAccess/policies/identity/conditionalAccess/policies Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess
Conditional AccessConditional Access PATCHPATCH /identity/conditionalAccess/policies/{id}/identity/conditionalAccess/policies/{id} Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess
Conditional AccessConditional Access DELETEDELETE /identity/conditionalAccess/policies/{id}/identity/conditionalAccess/policies/{id} Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess
RolesRoles GETGET /directoryRoles/directoryRoles RoleManagement.Read.DirectoryRoleManagement.Read.Directory
RolesRoles GETGET /directoryRoles/{id}/members/directoryRoles/{id}/members RoleManagement.Read.DirectoryRoleManagement.Read.Directory
RolesRoles GETGET /roleManagement/directory/roleAssignments/roleManagement/directory/roleAssignments RoleManagement.Read.DirectoryRoleManagement.Read.Directory
RolesRoles POSTPOST /roleManagement/directory/roleAssignments/roleManagement/directory/roleAssignments RoleManagement.ReadWrite.DirectoryRoleManagement.ReadWrite.Directory
RolesRoles GETGET /roleManagement/directory/roleDefinitions/roleManagement/directory/roleDefinitions RoleManagement.Read.DirectoryRoleManagement.Read.Directory
MailMail GETGET /users/{id}/messages/users/{id}/messages Mail.ReadMail.Read
MailMail GETGET /users/{id}/messages/{message-id}/users/{id}/messages/{message-id} Mail.ReadMail.Read
MailMail POSTPOST /users/{id}/sendMail/users/{id}/sendMail Mail.SendMail.Send
MailMail GETGET /users/{id}/mailFolders/users/{id}/mailFolders Mail.ReadMail.Read
CalendarCalendar GETGET /users/{id}/events/users/{id}/events Calendars.ReadCalendars.Read
CalendarCalendar POSTPOST /users/{id}/events/users/{id}/events Calendars.ReadWriteCalendars.ReadWrite
CalendarCalendar GETGET /users/{id}/calendars/users/{id}/calendars Calendars.ReadCalendars.Read
SitesSites GETGET /sites/sites Sites.Read.AllSites.Read.All
SitesSites GETGET /sites/{id}/sites/{id} Sites.Read.AllSites.Read.All
SitesSites GETGET /sites/{id}/lists/sites/{id}/lists Sites.Read.AllSites.Read.All
SitesSites GETGET /sites/{id}/lists/{id}/items/sites/{id}/lists/{id}/items Sites.Read.AllSites.Read.All
SitesSites POSTPOST /sites/{id}/lists/{id}/items/sites/{id}/lists/{id}/items Sites.ReadWrite.AllSites.ReadWrite.All
TeamsTeams GETGET /teams/teams Team.ReadBasic.AllTeam.ReadBasic.All
TeamsTeams PUTPUT /teams/{id}/teams/{id} Group.ReadWrite.AllGroup.ReadWrite.All
TeamsTeams GETGET /teams/{id}/channels/teams/{id}/channels Channel.ReadBasic.AllChannel.ReadBasic.All
TeamsTeams POSTPOST /teams/{id}/channels/teams/{id}/channels ChannelSettings.ReadWrite.AllChannelSettings.ReadWrite.All
TeamsTeams GETGET /teams/{id}/channels/{id}/messages/teams/{id}/channels/{id}/messages ChannelMessage.Read.AllChannelMessage.Read.All
DevicesDevices GETGET /devices/devices Device.Read.AllDevice.Read.All
DevicesDevices GETGET /devices/{id}/devices/{id} Device.Read.AllDevice.Read.All
DevicesDevices PATCHPATCH /devices/{id}/devices/{id} Device.ReadWrite.AllDevice.ReadWrite.All
DevicesDevices GETGET /deviceManagement/managedDevices/deviceManagement/managedDevices DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All
DevicesDevices POSTPOST /deviceManagement/managedDevices/{id}/retire/deviceManagement/managedDevices/{id}/retire DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All
AuditAudit GETGET /auditLogs/signIns/auditLogs/signIns AuditLog.Read.AllAuditLog.Read.All
AuditAudit GETGET /auditLogs/directoryAudits/auditLogs/directoryAudits AuditLog.Read.AllAuditLog.Read.All
AuditAudit GETGET /auditLogs/provisioning/auditLogs/provisioning AuditLog.Read.AllAuditLog.Read.All
ReportsReports GETGET /reports/getOffice365ActiveUserDetail(period='D7')/reports/getOffice365ActiveUserDetail(period='D7') Reports.Read.AllReports.Read.All
ReportsReports GETGET /reports/getMailboxUsageDetail(period='D7')/reports/getMailboxUsageDetail(period='D7') Reports.Read.AllReports.Read.All
ReportsReports GETGET /reports/getSharePointSiteUsageDetail(period='D7')/reports/getSharePointSiteUsageDetail(period='D7') Reports.Read.AllReports.Read.All

Fehlerbehandlung und ThrottlingError handling and throttling

Jede Graph-Integration braucht robuste Fehlerbehandlung. Statuscodes, Retry-After-Header, transiente Netzwerkfehler, Berechtigungsprobleme und SchemaĂ€nderungen mĂŒssen systematisch behandelt werden.Every Graph integration needs robust error handling. Status codes, Retry-After headers, transient network errors, permission issues, and schema changes must be handled systematically.

JSONJSON

{
  "error": {
    "code": "TooManyRequests",
    "message": "Please retry again later.",
    "innerError": {
      "date": "2026-06-11T08:00:00",
      "request-id": "4f1b63d9-2d7e-4b36-9af9-123456789abc",
      "client-request-id": "4f1b63d9-2d7e-4b36-9af9-123456789abc"
    }
  }
}
StatusStatus Typischer GrundTypical reason EmpfehlungRecommendation
400400 UngĂŒltiger Filter, falscher Body, fehlende PropertyInvalid filter, wrong body, missing property Request validieren, Payload loggen, Schema prĂŒfenValidate request, log payload, verify schema
401401 Token fehlt, ist abgelaufen oder an falsche Ressource ausgestelltToken missing, expired, or issued for the wrong resource Token erneuern und Aud/Scope prĂŒfenRefresh token and verify audience/scope
403403 Berechtigung oder Rolle fehltPermission or role missing Consent, App-Rollen und Admin-Rollen prĂŒfenCheck consent, app roles, and admin roles
404404 Objekt existiert nicht oder ist nicht sichtbarObject does not exist or is not visible IDs, Soft Delete und Sichtbarkeit prĂŒfenCheck IDs, soft delete, and visibility
409409 Konflikt bei konkurrierenden ÄnderungenConflict during concurrent updates ETag, Retry und Optimistic Concurrency einsetzenUse ETags, retries, and optimistic concurrency
429429 Throttling wegen zu vieler RequestsThrottling due to too many requests Retry-After respektieren und Backoff nutzenHonor Retry-After and use backoff
PowerShellPowerShell

for ($attempt = 1; $attempt -le 6; $attempt++) {
    try {
        return Invoke-RestMethod -Method GET -Uri $Uri -Headers $Headers
    }
    catch {
        $response = $_.Exception.Response
        if ($response -and $response.StatusCode.value__ -eq 429) {
            $retryAfter = [int]($response.Headers["Retry-After"] | Select-Object -First 1)
            if (-not $retryAfter) { $retryAfter = [math]::Pow(2, $attempt) }
            Start-Sleep -Seconds $retryAfter
            continue
        }
        throw
    }
}

Graph ExplorerGraph Explorer

Graph Explorer ist das schnellste Werkzeug, um Endpunkte, Berechtigungen, Filter und Antwortstrukturen interaktiv zu testen. FĂŒr Helpdesk, Engineering, Security und Architektur ist es das ideale Labor.Graph Explorer is the fastest tool for interactively testing endpoints, permissions, filters, and response structures. For helpdesk, engineering, security, and architecture, it is the ideal lab environment.

HTTPHTTP

GET https://graph.microsoft.com/v1.0/me/memberOf?$select=id,displayName

SDKs und ToolsSDKs and tools

Neben rohen REST-Aufrufen existieren offizielle SDKs und Tooling fĂŒr gĂ€ngige Sprachen. FĂŒr Administrationsaufgaben ist das Microsoft.Graph-PowerShell-Modul besonders relevant; fĂŒr Anwendungsentwicklung sind .NET, Python und JavaScript die hĂ€ufigsten Optionen.In addition to raw REST calls, official SDKs and tools exist for common languages. For administration tasks, the Microsoft.Graph PowerShell module is especially relevant; for application development, .NET, Python, and JavaScript are the most common options.

Tool/SDKTool/SDK PaketPackage StÀrkenStrengths
PowerShellPowerShell Microsoft.GraphMicrosoft.Graph Schnelle Administration, Reports, Runbooks, Hybrid-SkripteFast administration, reports, runbooks, hybrid scripts
.NET.NET Microsoft.GraphMicrosoft.Graph Starke Typisierung, Middleware, ASP.NET-IntegrationStrong typing, middleware, ASP.NET integration
PythonPython msgraph-sdkmsgraph-sdk Automation, Data Processing, Integration in bestehende Python-StacksAutomation, data processing, integration into existing Python stacks
JavaScript/TypeScriptJavaScript/TypeScript @microsoft/microsoft-graph-client@microsoft/microsoft-graph-client SPAs, Node.js, Azure Functions, BotsSPAs, Node.js, Azure Functions, bots
PowerShellPowerShell

Connect-MgGraph -Scopes "User.Read.All","Group.Read.All"
Get-MgUser -Top 5 -Property Id,DisplayName,UserPrincipalName |
    Select-Object Id, DisplayName, UserPrincipalName
C#C#

var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var scopes = new[] { "https://graph.microsoft.com/.default" };
var graphClient = new GraphServiceClient(credential, scopes);

var users = await graphClient.Users
    .GetAsync(requestConfiguration =>
    {
        requestConfiguration.QueryParameters.Select = new[] { "id", "displayName", "userPrincipalName" };
        requestConfiguration.QueryParameters.Top = 10;
    });
PythonPython

from azure.identity import ClientSecretCredential
from msgraph import GraphServiceClient

credential = ClientSecretCredential(tenant_id, client_id, client_secret)
client = GraphServiceClient(credentials=credential, scopes=["https://graph.microsoft.com/.default"])
users = await client.users.get()
JavaScriptJavaScript

import { Client } from "@microsoft/microsoft-graph-client";
import "isomorphic-fetch";

const client = Client.init({
  authProvider: done => done(null, accessToken)
});

const result = await client
  .api("/users")
  .select(["id", "displayName", "userPrincipalName"])
  .top(10)
  .get();

Graph API Rate Limits & Throttling Deep DiveGraph API Rate Limits & Throttling Deep Dive

Throttling ist kein Sonderfall, sondern ein fester Schutzmechanismus in Microsoft Graph. Erfolgreiche Integrationen planen deshalb Request-Budgets, Retry-Verhalten, Datenreduktion und Workload-spezifische Limits von Anfang an mit ein.Throttling is not an edge case but a built-in protection mechanism in Microsoft Graph. Successful integrations therefore plan request budgets, retry behavior, data reduction, and workload-specific limits from the start.

⚡ Per-App Limits⚡ Per-app limits

FĂŒr viele Kernendpunkte ist 2000 Requests pro 10 Sekunden je App ein brauchbarer Planungswert. Intensive Schreiblast, $expand oder große Response-Payloads können dieses Budget effektiv verkleinern.For many core endpoints, 2000 requests per 10 seconds per app is a useful planning value. Heavy write patterns, $expand, or large response payloads can reduce the effective budget.

🏱 Per-Tenant Limits🏱 Per-tenant limits

ZusĂ€tzlich gilt eine tenantweite Drosselung. Die tatsĂ€chliche Obergrenze variiert nach Workload, Tageszeit, ParallelitĂ€t und Datenvolumen – deshalb mĂŒssen mehrere Runbooks und Portale gemeinsam eingeplant werden.A tenant-wide throttle applies on top. The real ceiling varies by workload, time of day, concurrency, and data volume, so multiple runbooks and portals must be planned together.

⏱ Retry-After⏱ Retry-After

Wenn der Header Retry-After vorhanden ist, hat er immer Vorrang. Eigene Backoff-Logik darf nur einspringen, wenn Graph keinen prÀzisen Wartewert liefert.When the Retry-After header is present, it always wins. Custom backoff logic should only take over when Graph does not provide an exact wait value.

📩 Batch Requests📩 Batch requests

Ein $batch-Aufruf spart Roundtrips, aber Teilanforderungen werden weiterhin einzeln bewertet. Ein erfolgreicher Batch kann einzelne 429- oder 503-Antworten enthalten.A $batch call saves round trips, but sub-requests are still evaluated individually. A successful batch can contain individual 429 or 503 responses.

SteuerungControlRichtwertGuidancePraxisempfehlungOperational guidance
Per-App BurstPer-app burst~2000 / 10 SekundenFĂŒr Verzeichnis-, Benutzer- und Gruppenabfragen ein realistischer Startpunkt. Bei SchreibvorgĂ€ngen frĂŒhzeitig mit kontrollierter ParallelitĂ€t arbeiten.A realistic starting point for directory, user, and group queries. For write operations, use controlled concurrency early.
Per-Tenant BudgetPer-tenant budgetWorkload-abhĂ€ngigVaries by workloadMehrere Apps teilen sich das Mandantenbudget – Reporting, Self-Service-Portale und Hintergrundjobs beeinflussen sich gegenseitig.Multiple apps share the tenant budget; reporting, self-service portals, and background jobs influence each other.
HTTP 429HTTP 429Zu viele AnforderungenToo many requestsHeader, Response-Body und Zielressource mitloggen. So lÀsst sich spÀter erkennen, welcher Workflow das Budget verbraucht hat.Log headers, response body, and target resource so you can later identify which workflow consumed the budget.
HTTP 503/504HTTP 503/504TemporÀre DienstlastTransient service loadWie 429 behandeln, aber mit engerem Retry-Budget. Lange Endlosschleifen verschlechtern die Lage meist nur.Treat like 429, but with a tighter retry budget. Long endless loops usually make things worse.
Reduktion der LastLoad reductionDelta + Filter + CachingDelta + filters + cachingNutze $select, serverseitige Filter, Delta-Links und lokale Zustandsdateien, um VollabzĂŒge zu vermeiden.Use $select, server-side filters, delta links, and local state files to avoid full extracts.

Service-spezifische LimitsService-specific limits

WorkloadWorkloadTypischer RichtwertTypical guidanceHinweiseNotes
Outlook / ExchangeOutlook / Exchange~10000 / 10 MinutenMailbox-nahe Endpunkte reagieren empfindlich auf breite Suche und große Mailboxmengen. Datenfenster begrenzen und pro Postfach serialisieren.Mailbox-adjacent endpoints are sensitive to broad searches and large mailbox populations. Limit time windows and serialize per mailbox.
SharePoint / OneDriveSharePoint / OneDriveVariiert je nach VorgangVaries by operationDateigrĂ¶ĂŸe, ParallelitĂ€t und Site-Auslastung spielen stark hinein. Große Dateioperationen staffeln und Upload-Sessions wiederverwenden.File size, concurrency, and site load matter heavily. Stagger large file operations and reuse upload sessions.
TeamsTeams~30–60 / Sekunde je AppMessaging-, Channel- und Meeting-Endpunkte haben hĂ€ufig engere Grenzen. Realtime-Szenarien entkoppeln und Queueing einsetzen.Messaging, channel, and meeting endpoints often have tighter caps. Decouple real-time scenarios and use queueing.
Identity / DirectoryIdentity / Directory~2000 / 10 Sekunden je AppBenutzer, Gruppen, Rollen, Domains und viele Verzeichnisobjekte teilen sich das Kernbudget. $expand und große Property-Sets sparsam einsetzen.Users, groups, roles, domains, and many directory objects share the core budget. Use $expand and large property sets sparingly.
ReportsReportsNiedrige Burst-LimitsLow burst limitsReports sollten geplant, gecacht und außerhalb von Spitzenzeiten gezogen werden. FĂŒr CSV-Generierung besser weniger, dafĂŒr grĂ¶ĂŸere LĂ€ufe einplanen.Reports should be scheduled, cached, and collected outside peak hours. For CSV generation, prefer fewer but larger runs.
SecuritySecurityProvider-abhĂ€ngigProvider-dependentAlerts, Incidents und Hunting liefern oft große Payloads. Zeitfenster, Statusfilter und seitenweise Verarbeitung kombinieren.Alerts, incidents, and hunting data often return large payloads. Combine time windows, status filters, and page-wise processing.

Retry-After und Batch-ThrottlingRetry-After and batch throttling

Exponentielles Backoff in PowerShellExponential backoff in PowerShell

Die Funktion unten respektiert Retry-After und nutzt Jitter, damit parallele Worker nicht gleichzeitig erneut auf Graph treffen.The function below honors Retry-After and adds jitter so parallel workers do not hammer Graph again at the same instant.

PowerShellPowerShell

function Invoke-GraphRequestWithRetry {
    param(
        [Parameter(Mandatory)]
        [string]$Uri,
        [ValidateSet("GET","POST","PATCH","PUT","DELETE")]
        [string]$Method = "GET",
        [object]$Body,
        [int]$MaxAttempts = 8
    )

    for ($attempt = 1; $attempt -le $MaxAttempts; $attempt++) {
        try {
            $params = @{
                Method     = $Method
                Uri        = $Uri
                OutputType = "PSObject"
            }

            if ($null -ne $Body) {
                $params.Body = ($Body | ConvertTo-Json -Depth 10)
                $params.ContentType = "application/json"
            }

            return Invoke-MgGraphRequest @params
        }
        catch {
            $response = $_.Exception.Response
            $statusCode = if ($response) { [int]$response.StatusCode } else { 0 }
            if ($statusCode -notin 429, 503, 504 -or $attempt -eq $MaxAttempts) {
                throw
            }

            $retryAfter = $response.Headers.RetryAfter.Delta.TotalSeconds
            if (-not $retryAfter) {
                $retryAfter = [math]::Min(60, [math]::Pow(2, $attempt) + (Get-Random -Minimum 0 -Maximum 3))
            }

            Write-Warning "Graph throttled with status $statusCode. Waiting $retryAfter seconds before retry $($attempt + 1)."
            Start-Sleep -Seconds [int][math]::Ceiling($retryAfter)
        }
    }
}

$result = Invoke-GraphRequestWithRetry -Uri "https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName&$top=25"
$result.value | Select-Object displayName, userPrincipalName

Microsoft Graph PowerShell SDK Complete ReferenceMicrosoft Graph PowerShell SDK Complete Reference

Das Meta-Modul Microsoft.Graph ist praktisch, fĂŒr Automatisierungen mit knappen Startzeiten sind gezielte Submodule aber meist effizienter. Die Referenz unten deckt mehr als 40 Submodule ab – inklusive Install, Import, SchlĂŒssel-Cmdlets und einer schnellen Einzeiler-Idee.The Microsoft.Graph meta module is convenient, but targeted submodules are usually more efficient for automations with tight startup times. The reference below covers more than 40 submodules including install, import, key cmdlets, and a quick one-liner idea.

PraxisPractice

FĂŒr Azure Automation, GitHub Actions oder kleine Runbooks lohnt sich hĂ€ufig Install-Module Microsoft.Graph.Authentication,Microsoft.Graph.Users,Microsoft.Graph.Groups statt des kompletten Pakets. Das reduziert Importzeit und mögliche Modulkonflikte.For Azure Automation, GitHub Actions, or small runbooks, it is often worth installing Microsoft.Graph.Authentication,Microsoft.Graph.Users,Microsoft.Graph.Groups instead of the entire package. That reduces import time and potential module conflicts.

Identity & CoreIdentity & Core

Sub-ModulSubmoduleInstall / ImportInstall / importWichtige CmdletsKey cmdletsEinzeilerOne-liner
Microsoft.Graph.AuthenticationInstall-Module Microsoft.Graph.Authentication -Scope CurrentUser
Import-Module Microsoft.Graph.Authentication
Connect-MgGraph, Disconnect-MgGraph, Get-MgContext, Invoke-MgGraphRequest, Find-MgGraphCommandConnect-MgGraph -Scopes "User.Read.All"
Microsoft.Graph.UsersInstall-Module Microsoft.Graph.Users -Scope CurrentUser
Import-Module Microsoft.Graph.Users
Get-MgUser, New-MgUser, Update-MgUser, Remove-MgUser, Get-MgUserManager, Set-MgUserManagerByRefGet-MgUser -Top 10 -Property Id,DisplayName,UserPrincipalName
Microsoft.Graph.Users.ActionsInstall-Module Microsoft.Graph.Users.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Users.Actions
Get-MgUserMemberOf, Revoke-MgUserSignInSession, Send-MgUserMail, Get-MgUserLicenseDetail, Confirm-MgUserMemberGroupRevoke-MgUserSignInSession -UserId $UserId
Microsoft.Graph.GroupsInstall-Module Microsoft.Graph.Groups -Scope CurrentUser
Import-Module Microsoft.Graph.Groups
Get-MgGroup, New-MgGroup, Update-MgGroup, Get-MgGroupMember, New-MgGroupMemberByRefGet-MgGroup -Filter "groupTypes/any(c:c eq 'Unified')"
Microsoft.Graph.Groups.ActionsInstall-Module Microsoft.Graph.Groups.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Groups.Actions
Get-MgGroupDrive, Get-MgGroupSite, Get-MgGroupCalendarEvent, Get-MgGroupThread, Remove-MgGroupMemberByRefGet-MgGroupDrive -GroupId $GroupId
Microsoft.Graph.Identity.DirectoryManagementInstall-Module Microsoft.Graph.Identity.DirectoryManagement -Scope CurrentUser
Import-Module Microsoft.Graph.Identity.DirectoryManagement
Get-MgDomain, Get-MgOrganization, Get-MgSubscribedSku, Get-MgDirectoryRole, Get-MgAdministrativeUnitGet-MgSubscribedSku | Select-Object SkuPartNumber, ConsumedUnits
Microsoft.Graph.Identity.DirectoryManagement.ActionsInstall-Module Microsoft.Graph.Identity.DirectoryManagement.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Identity.DirectoryManagement.Actions
Restore-MgDirectoryDeletedItem, Confirm-MgDomain, Get-MgDirectoryDeletedItemAsUser, Get-MgDirectoryDeletedItemAsGroup, Invoke-MgAvailableIdentityProviderTypeRestore-MgDirectoryDeletedItem -DirectoryObjectId $DeletedUserId
Microsoft.Graph.Identity.SignInsInstall-Module Microsoft.Graph.Identity.SignIns -Scope CurrentUser
Import-Module Microsoft.Graph.Identity.SignIns
Get-MgAuditLogSignIn, Get-MgIdentityConditionalAccessPolicy, New-MgIdentityConditionalAccessPolicy, Get-MgRiskyUser, Get-MgRiskDetectionGet-MgAuditLogSignIn -Top 25 -Sort "createdDateTime DESC"
Microsoft.Graph.Identity.SignIns.ActionsInstall-Module Microsoft.Graph.Identity.SignIns.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Identity.SignIns.Actions
Confirm-MgRiskyUserCompromised, Dismiss-MgRiskyUser, Dismiss-MgRiskDetection, Reprocess-MgIdentityConditionalAccessEvaluate, Confirm-MgUserCompromisedDismiss-MgRiskyUser -UserId $UserId
Microsoft.Graph.Identity.GovernanceInstall-Module Microsoft.Graph.Identity.Governance -Scope CurrentUser
Import-Module Microsoft.Graph.Identity.Governance
Get-MgIdentityGovernanceAccessReviewDefinition, Get-MgEntitlementManagementAccessPackage, Get-MgEntitlementManagementCatalog, Get-MgIdentityLifecycleWorkflow, Get-MgRoleManagementDirectoryRoleAssignmentScheduleGet-MgEntitlementManagementAccessPackage -Top 10

Apps, Governance & CollaborationApps, Governance & Collaboration

Sub-ModulSubmoduleInstall / ImportInstall / importWichtige CmdletsKey cmdletsEinzeilerOne-liner
Microsoft.Graph.Identity.Governance.ActionsInstall-Module Microsoft.Graph.Identity.Governance.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Identity.Governance.Actions
Start-MgIdentityGovernanceAccessReviewDefinitionInstance, Stop-MgIdentityLifecycleWorkflow, Resume-MgIdentityLifecycleWorkflow, Invoke-MgEntitlementManagementReprocess, Filter-MgIdentityGovernanceLifecycleWorkflowUserProcessingResultStart-MgIdentityGovernanceAccessReviewDefinitionInstance -AccessReviewScheduleDefinitionId $DefinitionId
Microsoft.Graph.ApplicationsInstall-Module Microsoft.Graph.Applications -Scope CurrentUser
Import-Module Microsoft.Graph.Applications
Get-MgApplication, New-MgApplication, Update-MgApplication, Get-MgServicePrincipal, New-MgServicePrincipalGet-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'"
Microsoft.Graph.Applications.ActionsInstall-Module Microsoft.Graph.Applications.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Applications.Actions
Add-MgApplicationPassword, Add-MgServicePrincipalPassword, Remove-MgApplicationPassword, Get-MgApplicationDelta, Sync-MgApplicationSynchronizationJobAdd-MgApplicationPassword -ApplicationId $AppId -PasswordCredential @{ displayName = "Automation" }
Microsoft.Graph.MailInstall-Module Microsoft.Graph.Mail -Scope CurrentUser
Import-Module Microsoft.Graph.Mail
Get-MgUserMessage, Get-MgUserMailFolder, New-MgUserMessage, Update-MgUserMessage, Send-MgUserMailGet-MgUserMessage -UserId $UserId -Top 10
Microsoft.Graph.Mail.ActionsInstall-Module Microsoft.Graph.Mail.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Mail.Actions
Move-MgUserMessage, Reply-MgUserMessage, Forward-MgUserMessage, CreateReply-MgUserMessage, CreateForward-MgUserMessageReply-MgUserMessage -UserId $UserId -MessageId $MessageId -Comment "Received"
Microsoft.Graph.CalendarInstall-Module Microsoft.Graph.Calendar -Scope CurrentUser
Import-Module Microsoft.Graph.Calendar
Get-MgUserEvent, New-MgUserEvent, Update-MgUserEvent, Remove-MgUserEvent, Get-MgUserCalendarGet-MgUserEvent -UserId $UserId -Top 10
Microsoft.Graph.Calendar.ActionsInstall-Module Microsoft.Graph.Calendar.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Calendar.Actions
Accept-MgUserEvent, Decline-MgUserEvent, TentativelyAccept-MgUserEvent, Dismiss-MgUserEventReminder, Forward-MgUserEventAccept-MgUserEvent -UserId $UserId -EventId $EventId
Microsoft.Graph.SitesInstall-Module Microsoft.Graph.Sites -Scope CurrentUser
Import-Module Microsoft.Graph.Sites
Get-MgSite, Get-MgSiteList, Get-MgSiteDrive, Get-MgSitePage, Get-MgSiteColumnGet-MgSite -Search "contoso"
Microsoft.Graph.Sites.ActionsInstall-Module Microsoft.Graph.Sites.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Sites.Actions
Publish-MgSitePage, Get-MgSiteByPath, Invoke-MgFollowSite, Add-MgSiteListContentTypeCopyFromContentTypeHub, Copy-MgSiteContentTypeToDefaultContentLocationGet-MgSiteByPath -Path "/sites/IT" -HostName "contoso.sharepoint.com"
Microsoft.Graph.FilesInstall-Module Microsoft.Graph.Files -Scope CurrentUser
Import-Module Microsoft.Graph.Files
Get-MgDrive, Get-MgDriveItem, New-MgDriveItem, Update-MgDriveItem, Remove-MgDriveItemGet-MgDriveItem -DriveId $DriveId -DriveItemId root
Microsoft.Graph.Files.ActionsInstall-Module Microsoft.Graph.Files.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Files.Actions
Copy-MgDriveItem, Invite-MgDriveItem, Checkout-MgDriveItem, Checkin-MgDriveItem, CreateLink-MgDriveItemCreateLink-MgDriveItem -DriveId $DriveId -DriveItemId $ItemId -Type View
Microsoft.Graph.TeamsInstall-Module Microsoft.Graph.Teams -Scope CurrentUser
Import-Module Microsoft.Graph.Teams
Get-MgTeam, New-MgTeam, Update-MgTeam, Get-MgTeamChannel, New-MgTeamChannelGet-MgTeam -Top 10

Device Management & SecurityDevice Management & Security

Sub-ModulSubmoduleInstall / ImportInstall / importWichtige CmdletsKey cmdletsEinzeilerOne-liner
Microsoft.Graph.Teams.ActionsInstall-Module Microsoft.Graph.Teams.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.Teams.Actions
Archive-MgTeam, Unarchive-MgTeam, Complete-MgTeamMigration, Send-MgTeamChannelMessage, Add-MgTeamMemberArchive-MgTeam -TeamId $TeamId
Microsoft.Graph.DeviceManagementInstall-Module Microsoft.Graph.DeviceManagement -Scope CurrentUser
Import-Module Microsoft.Graph.DeviceManagement
Get-MgDeviceManagementManagedDevice, Get-MgDeviceManagementDeviceCompliancePolicy, Get-MgDeviceManagementConfigurationPolicy, Get-MgDeviceManagementDetectedApp, Get-MgDeviceManagementManagedDeviceOverviewGet-MgDeviceManagementManagedDevice -Top 25
Microsoft.Graph.DeviceManagement.ActionsInstall-Module Microsoft.Graph.DeviceManagement.Actions -Scope CurrentUser
Import-Module Microsoft.Graph.DeviceManagement.Actions
Sync-MgDeviceManagementManagedDevice, Reboot-MgDeviceManagementManagedDeviceNow, Wipe-MgDeviceManagementManagedDevice, Retire-MgDeviceManagementManagedDevice, Set-MgDeviceManagementManagedDeviceNameSync-MgDeviceManagementManagedDevice -ManagedDeviceId $DeviceId
Microsoft.Graph.DeviceManagement.AdministrationInstall-Module Microsoft.Graph.DeviceManagement.Administration -Scope CurrentUser
Import-Module Microsoft.Graph.DeviceManagement.Administration
Get-MgDeviceManagementResourceOperation, Get-MgDeviceManagementRoleDefinition, Get-MgDeviceManagementRoleAssignment, Get-MgDeviceManagementTermsAndConditions, Get-MgDeviceManagementAuditEventGet-MgDeviceManagementAuditEvent -Top 20
Microsoft.Graph.DeviceManagement.EnrollmentInstall-Module Microsoft.Graph.DeviceManagement.Enrollment -Scope CurrentUser
Import-Module Microsoft.Graph.DeviceManagement.Enrollment
Get-MgDeviceManagementEnrollmentProfile, Get-MgDeviceManagementImportedWindowsAutopilotDeviceIdentity, Get-MgDeviceManagementWindowsAutopilotDeploymentProfile, Get-MgDeviceManagementEnrollmentConfiguration, Get-MgDeviceManagementDepOnboardingSettingGet-MgDeviceManagementWindowsAutopilotDeploymentProfile
Microsoft.Graph.DeviceManagement.FunctionsInstall-Module Microsoft.Graph.DeviceManagement.Functions -Scope CurrentUser
Import-Module Microsoft.Graph.DeviceManagement.Functions
Get-MgDeviceManagementAssignmentFilterStatusDetail, Get-MgDeviceManagementTroubleshootingEvent, Get-MgDeviceManagementComplianceManagementPartner, Get-MgDeviceManagementManagedDeviceEncryptionStateSummary, Get-MgDeviceManagementUserExperienceAnalyticsMetricGet-MgDeviceManagementTroubleshootingEvent -Top 20
Microsoft.Graph.ReportsInstall-Module Microsoft.Graph.Reports -Scope CurrentUser
Import-Module Microsoft.Graph.Reports
Get-MgReportAuthenticationMethodUserRegistrationDetail, Get-MgReportOffice365ActiveUserDetail, Get-MgReportMailboxUsageDetail, Get-MgReportOneDriveUsageAccountDetail, Get-MgReportTeamUserActivityUserDetailGet-MgReportAuthenticationMethodUserRegistrationDetail -All
Microsoft.Graph.SecurityInstall-Module Microsoft.Graph.Security -Scope CurrentUser
Import-Module Microsoft.Graph.Security
Get-MgSecurityAlert, Get-MgSecurityIncident, Get-MgSecurityCaseEdiscoveryCase, Get-MgSecurityThreatIntelligenceHost, Get-MgSecuritySecureScoreGet-MgSecurityIncident -Top 10
Microsoft.Graph.Communications.CallsInstall-Module Microsoft.Graph.Communications.Calls -Scope CurrentUser
Import-Module Microsoft.Graph.Communications.Calls
Get-MgCommunicationCall, New-MgCommunicationCall, Update-MgCommunicationCall, Get-MgCommunicationCallParticipant, Remove-MgCommunicationCallGet-MgCommunicationCall -Top 10
Microsoft.Graph.Communications.CallRecordsInstall-Module Microsoft.Graph.Communications.CallRecords -Scope CurrentUser
Import-Module Microsoft.Graph.Communications.CallRecords
Get-MgCommunicationCallRecord, Get-MgCommunicationCallRecordSession, Get-MgCommunicationCallRecordParticipant, Get-MgCommunicationCallRecordOrganizer, Get-MgCommunicationCallRecordSegmentGet-MgCommunicationCallRecord -Top 10
Sub-ModulSubmoduleInstall / ImportInstall / importWichtige CmdletsKey cmdletsEinzeilerOne-liner
Microsoft.Graph.Communications.OnlineMeetingsInstall-Module Microsoft.Graph.Communications.OnlineMeetings -Scope CurrentUser
Import-Module Microsoft.Graph.Communications.OnlineMeetings
Get-MgUserOnlineMeeting, New-MgUserOnlineMeeting, Update-MgUserOnlineMeeting, Remove-MgUserOnlineMeeting, Get-MgUserOnlineMeetingAttendanceReportGet-MgUserOnlineMeeting -UserId $UserId -Top 10
Microsoft.Graph.PeopleInstall-Module Microsoft.Graph.People -Scope CurrentUser
Import-Module Microsoft.Graph.People
Get-MgUserPerson, Get-MgUserProfileAccount, Get-MgUserProfileAddress, Get-MgUserProfileWebsite, Get-MgGroupThreadPostInReplyToGet-MgUserPerson -UserId $UserId -Top 10
Microsoft.Graph.PlannerInstall-Module Microsoft.Graph.Planner -Scope CurrentUser
Import-Module Microsoft.Graph.Planner
Get-MgPlannerPlan, New-MgPlannerPlan, Get-MgPlannerBucket, Get-MgPlannerTask, Update-MgPlannerTaskGet-MgPlannerTask -PlannerTaskId $TaskId
Microsoft.Graph.NotesInstall-Module Microsoft.Graph.Notes -Scope CurrentUser
Import-Module Microsoft.Graph.Notes
Get-MgUserOnenoteNotebook, Get-MgUserOnenoteSection, Get-MgUserOnenotePage, New-MgUserOnenoteNotebook, Remove-MgUserOnenotePageGet-MgUserOnenoteNotebook -UserId $UserId
Microsoft.Graph.SearchInstall-Module Microsoft.Graph.Search -Scope CurrentUser
Import-Module Microsoft.Graph.Search
Invoke-MgQuerySearch, Get-MgExternalConnection, New-MgExternalConnection, Get-MgExternalItem, Update-MgExternalItemInvoke-MgQuerySearch -BodyParameter $SearchBody
Microsoft.Graph.BookingsInstall-Module Microsoft.Graph.Bookings -Scope CurrentUser
Import-Module Microsoft.Graph.Bookings
Get-MgBookingBusiness, Get-MgBookingBusinessAppointment, New-MgBookingBusinessAppointment, Get-MgBookingBusinessStaffMember, Get-MgBookingBusinessServiceGet-MgBookingBusiness -Top 10
Microsoft.Graph.EducationInstall-Module Microsoft.Graph.Education -Scope CurrentUser
Import-Module Microsoft.Graph.Education
Get-MgEducationClass, Get-MgEducationUser, Get-MgEducationSchool, Get-MgEducationAssignment, Get-MgEducationSubmissionGet-MgEducationClass -Top 10
Microsoft.Graph.ComplianceInstall-Module Microsoft.Graph.Compliance -Scope CurrentUser
Import-Module Microsoft.Graph.Compliance
Get-MgComplianceEdiscoveryCase, Get-MgComplianceEdiscoveryCaseCustodian, Get-MgComplianceEdiscoveryCaseSearch, Get-MgComplianceEdiscoveryCaseTag, Get-MgComplianceSubjectRightsRequestGet-MgComplianceEdiscoveryCase -Top 10
Microsoft.Graph.CrossDeviceExperiencesInstall-Module Microsoft.Graph.CrossDeviceExperiences -Scope CurrentUser
Import-Module Microsoft.Graph.CrossDeviceExperiences
Get-MgUserActivity, New-MgUserActivity, Update-MgUserActivity, Get-MgUserActivityHistoryItem, New-MgUserActivityHistoryItemGet-MgUserActivity -UserId $UserId -Top 10
Microsoft.Graph.Devices.CloudPrintInstall-Module Microsoft.Graph.Devices.CloudPrint -Scope CurrentUser
Import-Module Microsoft.Graph.Devices.CloudPrint
Get-MgPrintPrinter, Get-MgPrintShare, Get-MgPrintTaskDefinition, Get-MgPrintOperation, Get-MgPrintConnectorGet-MgPrintPrinter -Top 10

Specialized WorkloadsSpecialized Workloads

Sub-ModulSubmoduleInstall / ImportInstall / importWichtige CmdletsKey cmdletsEinzeilerOne-liner
Microsoft.Graph.Devices.CorporateManagementInstall-Module Microsoft.Graph.Devices.CorporateManagement -Scope CurrentUser
Import-Module Microsoft.Graph.Devices.CorporateManagement
Get-MgDeviceAppManagementMobileApp, Get-MgDeviceAppManagementManagedAppPolicy, Get-MgDeviceAppManagementIosManagedAppProtection, Get-MgDeviceAppManagementAndroidManagedAppProtection, Get-MgDeviceAppManagementVppTokenGet-MgDeviceAppManagementMobileApp -Top 10
Microsoft.Graph.Devices.ServiceAnnouncementInstall-Module Microsoft.Graph.Devices.ServiceAnnouncement -Scope CurrentUser
Import-Module Microsoft.Graph.Devices.ServiceAnnouncement
Get-MgAdminServiceAnnouncementHealthOverview, Get-MgAdminServiceAnnouncementIssue, Get-MgAdminServiceAnnouncementMessage, Get-MgAdminWindowsUpdateCatalogEntry, Get-MgAdminReportSettingGet-MgAdminServiceAnnouncementIssue -Top 10
Microsoft.Graph.DrivesInstall-Module Microsoft.Graph.Drives -Scope CurrentUser
Import-Module Microsoft.Graph.Drives
Get-MgUserDrive, Get-MgGroupDrive, Get-MgSiteDrive, Get-MgUserDriveRecent, Get-MgUserDriveSharedWithMeGet-MgUserDrive -UserId $UserId
Microsoft.Graph.ExternalConnectorsInstall-Module Microsoft.Graph.ExternalConnectors -Scope CurrentUser
Import-Module Microsoft.Graph.ExternalConnectors
Get-MgExternalConnection, New-MgExternalConnection, Get-MgExternalConnectionSchema, New-MgExternalItem, Update-MgExternalItemGet-MgExternalConnection -Top 10
Microsoft.Graph.FinancialsInstall-Module Microsoft.Graph.Financials -Scope CurrentUser
Import-Module Microsoft.Graph.Financials
Get-MgFinancialCompany, Get-MgFinancialCompanyCustomer, Get-MgFinancialCompanyVendor, Get-MgFinancialCompanyItem, Get-MgFinancialCompanySalesInvoiceGet-MgFinancialCompany -Top 10
Microsoft.Graph.Identity.PartnerInstall-Module Microsoft.Graph.Identity.Partner -Scope CurrentUser
Import-Module Microsoft.Graph.Identity.Partner
Get-MgTenantRelationshipDelegatedAdminCustomer, Get-MgTenantRelationshipDelegatedAdminRelationship, Get-MgTenantRelationshipManagedTenantAlert, Get-MgTenantRelationshipManagedTenantTag, Get-MgTenantRelationshipManagedTenantTenantGet-MgTenantRelationshipDelegatedAdminCustomer -Top 10
Microsoft.Graph.WindowsUpdatesInstall-Module Microsoft.Graph.WindowsUpdates -Scope CurrentUser
Import-Module Microsoft.Graph.WindowsUpdates
Get-MgWindowsUpdatesDeployment, New-MgWindowsUpdatesDeployment, Update-MgWindowsUpdatesDeployment, Get-MgWindowsUpdatesCatalogEntry, Get-MgWindowsUpdatesUpdatableAssetGet-MgWindowsUpdatesDeployment -Top 10

Complete Permission Scopes by WorkloadComplete Permission Scopes by Workload

Statt alphabetischer Listen ist die folgende Referenz nach Workloads organisiert. So wird fĂŒr Architektur-Reviews, App-Freigaben und Least-Privilege-Design schneller sichtbar, welche Scopes im selben Betriebsbereich liegen.Instead of alphabetical lists, the following reference is organized by workload. That makes it easier to see which scopes belong to the same operational domain during architecture reviews, app approvals, and least-privilege design.

Consent richtig bewertenEvaluate consent correctly

Bei EintrÀgen mit Beide / Both ist Delegated oft ohne Admin Consent testbar, wÀhrend die Application-Variante immer Admin Consent benötigt. Plane Freigaben daher pro App-Modell und nicht nur pro Scope-Name.For entries marked Beide / Both, delegated access is often testable without admin consent, while the application variant always requires admin consent. Plan approvals per app model, not only per scope name.

Benutzer & VerzeichnisUser & Directory

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
User.ReadDelegiertDelegatedNeinNoProfil des angemeldeten Benutzers lesenRead the signed-in user profile
User.ReadWriteDelegiertDelegatedNeinNoEigenes Profil des Benutzers aktualisierenUpdate the signed-in user profile
User.Read.AllBeideBothJaYesAlle vollstÀndigen Benutzerprofile lesenRead all full user profiles
User.ReadWrite.AllBeideBothJaYesBenutzerobjekte tenantweit ÀndernModify user objects tenant-wide
User.ReadBasic.AllDelegiertDelegatedNeinNoBasisattribute aller Benutzer lesenRead basic attributes for all users
User.Export.AllAnwendungApplicationJaYesBenutzerexporte mit erweiterten Profildaten durchfĂŒhrenRun user exports with extended profile data
User.ManageIdentities.AllBeideBothJaYesAnmeldeidentitÀten und Anmeldemethoden verwaltenManage sign-in identities and sign-in methods
Directory.Read.AllBeideBothJaYesVerzeichnisobjekte mandantenweit lesenRead directory objects tenant-wide
Directory.ReadWrite.AllBeideBothJaYesVerzeichnisobjekte mandantenweit ÀndernModify directory objects tenant-wide
Directory.AccessAsUser.AllDelegiertDelegatedJaYesGraph mit voller Benutzerdelegation gegen das Verzeichnis ausfĂŒhrenRun Graph with full user delegation against the directory
Organization.Read.AllBeideBothJaYesMandantenorganisation und Branding lesenRead tenant organization and branding
AdministrativeUnit.Read.AllBeideBothJaYesAdministrative Units und ihren Scope lesenRead administrative units and their scope

GruppenGroups

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
Group.Read.AllBeideBothJaYesGruppenobjekte und Eigenschaften lesenRead group objects and properties
Group.ReadWrite.AllBeideBothJaYesGruppen erstellen und aktualisierenCreate and update groups
GroupMember.Read.AllBeideBothJaYesGruppenmitgliedschaften lesenRead group memberships
GroupMember.ReadWrite.AllBeideBothJaYesGruppenmitgliedschaften schreibenWrite group memberships
Group.CreateDelegiertDelegatedNeinNoNeue Sicherheits- oder Microsoft-365-Gruppen anlegenCreate new security or Microsoft 365 groups
DirectoryObjects.Read.AllBeideBothJaYesReferenzobjekte und Mitglieder auflösenResolve reference objects and members
DirectoryObjects.ReadWrite.AllBeideBothJaYesReferenzobjekte fĂŒr Gruppenmitgliedschaften aktualisierenUpdate reference objects used by group membership

MailMail

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
Mail.ReadDelegiertDelegatedNeinNoEigene E-Mails lesenRead the signed-in user's mail
Mail.ReadWriteDelegiertDelegatedNeinNoEigene E-Mails lesen und ÀndernRead and modify the signed-in user's mail
Mail.Read.SharedDelegiertDelegatedNeinNoFreigegebene PostfÀcher lesenRead shared mailboxes
Mail.ReadWrite.SharedDelegiertDelegatedNeinNoFreigegebene PostfÀcher ÀndernModify shared mailboxes
Mail.SendDelegiertDelegatedNeinNoIm Namen des angemeldeten Benutzers sendenSend mail as the signed-in user
Mail.Send.SharedDelegiertDelegatedNeinNoAus freigegebenen PostfÀchern sendenSend from shared mailboxes
MailboxSettings.ReadDelegiertDelegatedNeinNoMailbox-Einstellungen lesenRead mailbox settings
MailboxSettings.ReadWriteDelegiertDelegatedNeinNoMailbox-Einstellungen ÀndernModify mailbox settings
Mail.ReadBasicDelegiertDelegatedNeinNoNur Basis-Metadaten von Nachrichten lesenRead only basic message metadata

KalenderCalendar

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
Calendars.ReadDelegiertDelegatedNeinNoEigene Kalender und Termine lesenRead the signed-in user's calendars and events
Calendars.ReadWriteDelegiertDelegatedNeinNoEigene Termine erstellen und ÀndernCreate and modify the signed-in user's events
Calendars.Read.SharedDelegiertDelegatedNeinNoFreigegebene Kalender lesenRead shared calendars
Calendars.ReadWrite.SharedDelegiertDelegatedNeinNoFreigegebene Kalender bearbeitenModify shared calendars
OnlineMeetings.ReadDelegiertDelegatedNeinNoEigene Online-Meetings lesenRead the signed-in user's online meetings
OnlineMeetings.ReadWriteDelegiertDelegatedNeinNoEigene Online-Meetings verwaltenManage the signed-in user's online meetings

DateienFiles

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
Files.ReadDelegiertDelegatedNeinNoEigene Dateien lesenRead the signed-in user's files
Files.Read.AllBeideBothJaYesDateien tenantweit lesenRead files across the tenant
Files.ReadWriteDelegiertDelegatedNeinNoEigene Dateien ÀndernModify the signed-in user's files
Files.ReadWrite.AllBeideBothJaYesDateien tenantweit erstellen, Àndern und löschenCreate, modify, and delete files across the tenant
Files.Read.SelectedAnwendungApplicationJaYesNur explizit zugewiesene Ressourcen lesenRead only explicitly assigned resources
Files.ReadWrite.SelectedAnwendungApplicationJaYesNur explizit zugewiesene Ressourcen schreibenWrite only explicitly assigned resources
FileStorageContainer.SelectedAnwendungApplicationJaYesContainer-basierte Speicherorte gezielt ansprechenTarget container-based storage locations explicitly

SitesSites

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
Sites.Read.AllBeideBothJaYesAlle SharePoint-Sites lesenRead all SharePoint sites
Sites.ReadWrite.AllBeideBothJaYesAlle SharePoint-Sites ÀndernModify all SharePoint sites
Sites.Manage.AllBeideBothJaYesListen, Spalten und Inhalte verwaltenManage lists, columns, and content
Sites.FullControl.AllBeideBothJaYesVollzugriff auf SharePoint-SitesFull control over SharePoint sites
Sites.SelectedAnwendungApplicationJaYesNur explizit zugewiesene Sites per App zugreifenAccess only explicitly assigned sites per app
TermStore.Read.AllBeideBothJaYesTaxonomie und Term Store lesenRead taxonomy and term store data
TermStore.ReadWrite.AllBeideBothJaYesTaxonomie zentral verwaltenManage taxonomy centrally

TeamsTeams

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
Team.ReadBasic.AllBeideBothJaYesBasisinformationen zu Teams lesenRead basic information about teams
Team.CreateDelegiertDelegatedJaYesNeue Teams erstellenCreate new teams
TeamSettings.Read.AllBeideBothJaYesTeam-Einstellungen auslesenRead team settings
TeamSettings.ReadWrite.AllBeideBothJaYesTeam-Einstellungen ÀndernModify team settings
Channel.ReadBasic.AllBeideBothJaYesKanalstammdaten lesenRead basic channel metadata
Channel.CreateDelegiertDelegatedJaYesNeue KanÀle anlegenCreate new channels
ChannelMessage.Read.AllBeideBothJaYesKanalmeldungen lesenRead channel messages
ChannelMessage.SendDelegiertDelegatedJaYesIn KanÀle postenPost messages to channels
Chat.ReadDelegiertDelegatedNeinNoEigene Chats lesenRead the signed-in user's chats
Chat.ReadWriteDelegiertDelegatedNeinNoEigene Chats lesen und schreibenRead and write the signed-in user's chats
Chat.CreateDelegiertDelegatedNeinNoNeue 1:1- oder Gruppen-Chats anlegenCreate new one-to-one or group chats
TeamsAppInstallation.ReadWriteForTeam.AllAnwendungApplicationJaYesTeams-Apps zentral pro Team installieren oder entfernenInstall or remove Teams apps centrally per team

SicherheitSecurity

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
SecurityEvents.Read.AllBeideBothJaYesSicherheitsereignisse und Alerts lesenRead security events and alerts
SecurityEvents.ReadWrite.AllBeideBothJaYesSicherheitsereignisse aktualisierenUpdate security events
ThreatAssessment.ReadWrite.AllBeideBothJaYesBedrohungsbewertungen erstellen und bearbeitenCreate and manage threat assessments
SecurityActions.Read.AllBeideBothJaYesResponse-Aktionen lesenRead response actions
SecurityActions.ReadWrite.AllBeideBothJaYesSicherheitsmaßnahmen auslösen oder Ă€ndernTrigger or modify security actions
SecurityIncident.Read.AllBeideBothJaYesDefender-Incidents lesenRead Defender incidents
SecurityIncident.ReadWrite.AllBeideBothJaYesDefender-Incidents anreichern und aktualisierenEnrich and update Defender incidents

IdentitÀtIdentity

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
IdentityRiskEvent.Read.AllBeideBothJaYesRisikoevents und Detektionen lesenRead risk events and detections
IdentityRiskyUser.Read.AllBeideBothJaYesRiskante Benutzer lesenRead risky users
IdentityRiskyUser.ReadWrite.AllBeideBothJaYesRiskante Benutzer bestĂ€tigen oder schließenConfirm or dismiss risky users
IdentityRiskyServicePrincipal.Read.AllBeideBothJaYesRiskante Service Principals lesenRead risky service principals
IdentityProvider.Read.AllBeideBothJaYesExterne Identity Provider lesenRead external identity providers
IdentityProvider.ReadWrite.AllBeideBothJaYesExterne Identity Provider verwaltenManage external identity providers
IdentityUserFlow.Read.AllBeideBothJaYesB2C-User-Flows lesenRead B2C user flows
IdentityUserFlow.ReadWrite.AllBeideBothJaYesB2C-User-Flows verwaltenManage B2C user flows

RichtlinienPolicy

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
Policy.Read.AllBeideBothJaYesMandantenrichtlinien lesenRead tenant policies
Policy.ReadWrite.ConditionalAccessBeideBothJaYesConditional-Access-Richtlinien verwaltenManage Conditional Access policies
Policy.ReadWrite.AuthenticationMethodBeideBothJaYesAuthentifizierungsmethodenrichtlinien verwaltenManage authentication methods policies
Policy.ReadWrite.AuthenticationFlowsBeideBothJaYesAnmelde- und Registrierungsflows steuernControl sign-in and registration flows
Policy.ReadWrite.AuthorizationBeideBothJaYesAutorisierungs- und Consent-Richtlinien ÀndernModify authorization and consent policies
Policy.ReadWrite.CrossTenantAccessBeideBothJaYesCross-Tenant-Zugriff und Vertrauenseinstellungen ÀndernModify cross-tenant access and trust settings
Policy.ReadWrite.PermissionGrantBeideBothJaYesOAuth-Consent und Grants administrierenAdminister OAuth consent and grants
Policy.ReadWrite.TrustFrameworkBeideBothJaYesB2C Trust Framework Policies verwaltenManage B2C trust framework policies

RollenRoles

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
RoleManagement.Read.DirectoryBeideBothJaYesVerzeichnisrollen und Zuweisungen lesenRead directory roles and assignments
RoleManagement.ReadWrite.DirectoryBeideBothJaYesVerzeichnisrollen und Zuweisungen ÀndernModify directory roles and assignments
RoleManagement.Read.AllBeideBothJaYesRollen ĂŒber mehrere Workloads lesenRead roles across workloads
RoleAssignmentSchedule.Read.DirectoryBeideBothJaYesPIM AktivierungsplÀne lesenRead PIM activation schedules
RoleAssignmentSchedule.ReadWrite.DirectoryBeideBothJaYesPIM AktivierungsplÀne ÀndernModify PIM activation schedules
RoleEligibilitySchedule.Read.DirectoryBeideBothJaYesEligible-Zuweisungen lesenRead eligible assignments
RoleEligibilitySchedule.ReadWrite.DirectoryBeideBothJaYesEligible-Zuweisungen verwaltenManage eligible assignments

AuditAudit

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
AuditLog.Read.AllBeideBothJaYesAnmelde-, Audit- und Provisioning-Logs lesenRead sign-in, audit, and provisioning logs
Reports.Read.AllBeideBothJaYesNutzungs- und AktivitÀtsberichte lesenRead usage and activity reports
Reports.ReadWrite.AllAnwendungApplicationJaYesBerichtsexporte und administrative Report-Workflows verwaltenManage report exports and administrative reporting workflows
UserActivity.Read.AllAnwendungApplicationJaYesAktivitĂ€tsdaten fĂŒr Analysen lesenRead activity data for analytics
Directory.Read.AllBeideBothJaYesKontextdaten fĂŒr Audit-Korrelation bereitstellenProvide directory context for audit correlation

GerÀteverwaltungDevice Management

ScopeScopeTypTypeAdmin ConsentAdmin consentBeschreibungDescription
DeviceManagementApps.ReadWrite.AllBeideBothJaYesIntune App-Verwaltung steuernControl Intune app management
DeviceManagementConfiguration.ReadWrite.AllBeideBothJaYesKonfigurationsprofile verwaltenManage configuration profiles
DeviceManagementManagedDevices.ReadWrite.AllBeideBothJaYesVerwaltete GerÀte steuernControl managed devices
DeviceManagementRBAC.ReadWrite.AllBeideBothJaYesIntune RBAC Rollen und Assignments verwaltenManage Intune RBAC roles and assignments
DeviceManagementServiceConfig.ReadWrite.AllBeideBothJaYesIntune Service-Konfiguration ÀndernModify Intune service configuration
DeviceManagementManagedDevices.Read.AllBeideBothJaYesVerwaltete GerÀte lesend inventarisierenRead managed devices for inventory
DeviceManagementConfiguration.Read.AllBeideBothJaYesKonfigurationsprofile lesend prĂŒfenRead configuration profiles for review
DeviceManagementServiceConfig.Read.AllBeideBothJaYesTenantweite Intune-Serviceeinstellungen lesenRead tenant-wide Intune service settings