Microsoft Graph, a walk-through
Microsoft MVP Office Development
Microsoft MVP Office Apps and Services
Adis Jugo
Microsoft MVP Office Apps and Services
Microsoft MVP Office Development
In IT for way too long (first money earned with development in 91)
Still dreaming of a restaurant or a vineyard
Director of Product Technology at skybow AG
Mastermind behind European Collaboration Summit (www.collabsummit.eu)
Born in Sarajevo, Bosnia, living in Bingen, Germany
Cheering for Borussia Dortmund
Blogger, speaker, author. adisjugo.com
Microsoft Graph
AGENDA
Users Groups Outlook OneNote more…SharePoint IntuneTeams Azure ADPlanner Excel
https://graph.microsoft.com
Your appOne endpoint
One token
All users
Microsoft Graph
Access user, group and organizational data
Microsoft Graph
Office 365 Platform
STANDALONE WEB AND
DEVICE APPS
 
EXTENSIONS
Gateway to your data in the Microsoft cloud
Your app
Gateway
Your or your
customer’s
data
Office 365 Windows 10 Enterprise Mobility + Security
1Microsoft Graph
Microsoft Graph
ALL
Microsoft 365
Office 365
Windows 10
EMS
ALL ONE
https://graph.microsoft.com
Present
Your target
audience
ADALClient SDK
App registration
MSAL
Endpoint
Future
Your target
audience
Endpoint
ADAL MSALClient SDK
App registration
Auth
access_token
MSAL or
ADAL
YOUR APP
Microsoft
Graph
id_token
access_token refresh_token
Microsoft
Identity
Auth
access_token
MSAL or
ADAL
YOUR APP
Microsoft
Graph
id_token
access_token refresh_token
Microsoft
Identity
App types and permissions
Users can consent for their data or admin can consent for all users Only admin can consent
Delegated
permissions
User
privileges
App
permissions
Permission type: applicationPermission type: delegated
Get access on behalf of users Get access as a service
Effective permissionEffective permission
https://aka.ms/ConsentAndPermissions
SITES
GROUPS
ME
CONVERSATIONS CONTENT
INSIGHTS
CONTACTS
PEOPLE
ORGANIZATION
TASKS
EMAIL
EVENTS
DOCUMENTS
DEVICES
CHATS
TEAMS
ACTIVITY
TRENDING
SHARED
REPORTS
Microsoft Graph
profile
GET: /users/adisjugo
{
"displayName": “Adis Jugo",
"jobTitle": “Director Product Technology",
}
GET: /users/adisjugo/photo/…
{}
GET: /users/adisjugo/manager
{"displayName": “Philip", …}
GET: /users/adisjugo/directReports
"value" : [
{"displayName": “Matthias", …},
{"displayName": “Bart", …},
]
GET: /me/memberOf/…
"value" : [
{"displayName": “Innovation team", …},
{"displayName": “Architecture team", …},
]
Philip manager
Matthias Bart Christoph
directReports
Groups
memberOf
content GET /me/drive/root/…
"value" : [
{"name": "proposal.pptx",… },
{"name": "forecast.xlsx",… }
]
GET /drives/items/{id}/workbook
GET /me/messages
GET /me/events
GET /me/contacts
GET /me/onenote/notebooks
GET /me/planner/tasks
GET /me/devices
GET /sites:/teams/opg:/
GET /sites:/teams/opg:/lists
GET /groups/{id}/conversations
Email
Documents
Contacts
Calendar
Tasks
Meetings
Sites
insights
GET /me/insights/trending
"value" : [
{"name": "presentation.pptx", …},
{"name": "forecast.xlsx", …}
]
GET /me/drive/recent
"value" : [
{"name": "guidelines.pptx", …},
{"name": "budget.xlsx", …}
]
GET /me/people/?$search="topic: planning"
"value" : [
{"displayName": "Dan", …},
{"displayName": "Sean", …},
]
POST /me/findMeetingTimes
{
"attendees": [
{
"type": "required",
"emailAddress": {
"address": "ana@contoso.com"
}
],
"meetingDuration": "2h"
}
Trending
Documents
People I’m
working with
Find me the
best time to
meet Ana
Out of office
Search people
based on topics
Recent
Documents
Calling the API
/v1.0 /beta
/users /groups /sites /drives /devices more…
/users/adis
/users/adis/department
/users/adis/events
/users/adis/events?$top=5
$select $orderby
$filter $expand
$top $skip $skiptoken
/{version} ?{query-parameters}/{resource}/{id}/{property}
Generally Available ( /v1.0 ) Preview ( /beta )
Office 365
Exchange (Get MailTips)
OneDrive (Preview, Followed docs)
AAD (Device Configuration)
EMS
Security (Alerts)
Office 365
Exchange (Get free/busy data, Add custom internet headers to
message)
SharePoint (Sharing Links, Followed content, Pages and List Views
API’s)
Dynamics
Business Central (Financials)
EMS
AAD (Risky users, Sign-in, Access review, B2x ext user state)
Teams (Tab creation, Calling, App Context, Provisioning, Classroom
creation)
Security (Secure Score)
Coming by EOY CY18
AAD (Applications)
Exchange (Get MIME content of messages)
Microsoft Graph| Data sets
Generally Available ( /v1.0 ) Preview ( /beta )
Delta – return only changed properties for delta query on
Azure AD objects (user and groups)
Webhooks – notifications on user/group is
created/modified/deleted
Microsoft Graph data connect
Delta – query for new entities: apps, servicePrinicipals, directoryRoles
Ability to delta query base type /directoryObjects and use isOf filter
to select 1 or more derrived types. E.g. use a single DQ to sync user
and group objects
Project Rome (User Notifications)
Coming by EOY CY18
Webhooks – "Rich webhooks" for Microsoft Team "messages" - the
app can now subscribe to receive notifications with the actual
content
Microsoft Graph | Capabilities
SDKs, samples and tooling
adis@adisjugo.com

O365Con18 - Microsoft Graph, a Walk-through - Adis Jugo

  • 1.
    Microsoft Graph, awalk-through Microsoft MVP Office Development Microsoft MVP Office Apps and Services
  • 2.
    Adis Jugo Microsoft MVPOffice Apps and Services Microsoft MVP Office Development In IT for way too long (first money earned with development in 91) Still dreaming of a restaurant or a vineyard Director of Product Technology at skybow AG Mastermind behind European Collaboration Summit (www.collabsummit.eu) Born in Sarajevo, Bosnia, living in Bingen, Germany Cheering for Borussia Dortmund Blogger, speaker, author. adisjugo.com
  • 3.
  • 4.
  • 6.
    Users Groups OutlookOneNote more…SharePoint IntuneTeams Azure ADPlanner Excel https://graph.microsoft.com Your appOne endpoint One token All users Microsoft Graph Access user, group and organizational data
  • 7.
    Microsoft Graph Office 365Platform STANDALONE WEB AND DEVICE APPS   EXTENSIONS
  • 8.
    Gateway to yourdata in the Microsoft cloud Your app Gateway Your or your customer’s data Office 365 Windows 10 Enterprise Mobility + Security 1Microsoft Graph
  • 9.
    Microsoft Graph ALL Microsoft 365 Office365 Windows 10 EMS ALL ONE https://graph.microsoft.com
  • 11.
  • 12.
  • 13.
  • 14.
  • 16.
    App types andpermissions Users can consent for their data or admin can consent for all users Only admin can consent Delegated permissions User privileges App permissions Permission type: applicationPermission type: delegated Get access on behalf of users Get access as a service Effective permissionEffective permission https://aka.ms/ConsentAndPermissions
  • 18.
  • 19.
    profile GET: /users/adisjugo { "displayName": “AdisJugo", "jobTitle": “Director Product Technology", } GET: /users/adisjugo/photo/… {} GET: /users/adisjugo/manager {"displayName": “Philip", …} GET: /users/adisjugo/directReports "value" : [ {"displayName": “Matthias", …}, {"displayName": “Bart", …}, ] GET: /me/memberOf/… "value" : [ {"displayName": “Innovation team", …}, {"displayName": “Architecture team", …}, ] Philip manager Matthias Bart Christoph directReports Groups memberOf
  • 20.
    content GET /me/drive/root/… "value": [ {"name": "proposal.pptx",… }, {"name": "forecast.xlsx",… } ] GET /drives/items/{id}/workbook GET /me/messages GET /me/events GET /me/contacts GET /me/onenote/notebooks GET /me/planner/tasks GET /me/devices GET /sites:/teams/opg:/ GET /sites:/teams/opg:/lists GET /groups/{id}/conversations Email Documents Contacts Calendar Tasks Meetings Sites
  • 21.
    insights GET /me/insights/trending "value" :[ {"name": "presentation.pptx", …}, {"name": "forecast.xlsx", …} ] GET /me/drive/recent "value" : [ {"name": "guidelines.pptx", …}, {"name": "budget.xlsx", …} ] GET /me/people/?$search="topic: planning" "value" : [ {"displayName": "Dan", …}, {"displayName": "Sean", …}, ] POST /me/findMeetingTimes { "attendees": [ { "type": "required", "emailAddress": { "address": "ana@contoso.com" } ], "meetingDuration": "2h" } Trending Documents People I’m working with Find me the best time to meet Ana Out of office Search people based on topics Recent Documents
  • 22.
    Calling the API /v1.0/beta /users /groups /sites /drives /devices more… /users/adis /users/adis/department /users/adis/events /users/adis/events?$top=5 $select $orderby $filter $expand $top $skip $skiptoken /{version} ?{query-parameters}/{resource}/{id}/{property}
  • 24.
    Generally Available (/v1.0 ) Preview ( /beta ) Office 365 Exchange (Get MailTips) OneDrive (Preview, Followed docs) AAD (Device Configuration) EMS Security (Alerts) Office 365 Exchange (Get free/busy data, Add custom internet headers to message) SharePoint (Sharing Links, Followed content, Pages and List Views API’s) Dynamics Business Central (Financials) EMS AAD (Risky users, Sign-in, Access review, B2x ext user state) Teams (Tab creation, Calling, App Context, Provisioning, Classroom creation) Security (Secure Score) Coming by EOY CY18 AAD (Applications) Exchange (Get MIME content of messages) Microsoft Graph| Data sets
  • 25.
    Generally Available (/v1.0 ) Preview ( /beta ) Delta – return only changed properties for delta query on Azure AD objects (user and groups) Webhooks – notifications on user/group is created/modified/deleted Microsoft Graph data connect Delta – query for new entities: apps, servicePrinicipals, directoryRoles Ability to delta query base type /directoryObjects and use isOf filter to select 1 or more derrived types. E.g. use a single DQ to sync user and group objects Project Rome (User Notifications) Coming by EOY CY18 Webhooks – "Rich webhooks" for Microsoft Team "messages" - the app can now subscribe to receive notifications with the actual content Microsoft Graph | Capabilities
  • 27.
  • 31.