Qu’est-ce que Microsoft Graph ? Comment commencer ? OĂč se former ?

Microsoft Graph est une passerelle permettant l’accĂšs, l’Ă©change et la manipulation de donnĂ©es sur l’ensemble des services de l’Ă©cosystĂšme Micrsoft 365. Disposant d’une interface de communication unifiĂ©e, Microsoft Graph rend accessible les donnĂ©es disponibles dans Office 365, Windows 10 et Enterprise Mobility + Security : emails, discussions, calendriers, groupes, documents, alertes de sĂ©curitĂ©, #Planner, #OneNote, #Teams, #Yammer, mais pas seulement ….


graphapi-01


Il est Ă©galement possible de rĂ©aliser des scĂ©narios plus avancĂ©s avec l’utilisation des services Azures (Azure AI, Azure Bot Service, Azure Automation etc…). Ceci permet d’augmenter le champs des possibles et de rendre plus productif certains processus en passant par de l’automatisation pour optimiser la productivitĂ©, tout en permettant d’accĂ©der Ă  des donnĂ©es situĂ©es localement (OnPrem) Ă  l’aide des connecteurs (DataGateway).


Microsoft Graph est composé de 3 briques :


Les composants Microsoft Graph, Connexion aux données Microsoft Graph et Connecteurs Microsoft Graph permettent dĂąÂ€Â™ĂƒÂ©tendre les expériences Microsoft 365 et de créer des applications intelligentes.

👉Ce guide se concentrera sur le fonctionnement et l’utilisation de l’API Microsoft Graph.👈


Avant de se plonger sur l’API Microsoft Graph, son utilisation et les possibilitĂ©s d’applications mĂ©tiers, il est nĂ©cessaire de maĂźtriser les concepts liĂ©s au fonctionnement d’une API REST (ou RESTful).

Pour comprendre ce qu’est une API, dĂ©couvrir les diffĂ©rents types d’API je vous invite Ă  lire la documentation Microsoft suivante : https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design#introduction-to-rest


Pour pouvoir explorer le potentiel de l’API Microsoft Graph il faut tout d’abord assimiler les thĂšmes suivants :

L’authentification et l’authorisation : elles reposent sur l’utilisation du protocole OAuth 2.0. : https://oauth.net/2/ . Pour ĂȘtre Ă  mĂȘme de manipuler l’API Graph, il est nĂ©cessaire de savoir gĂ©nĂ©rer et utiliser des tokens (jeton d’accĂšs); et de disposer d’une application Azure Active Directory possĂ©dant des droits sur l’API Graph.

Note 💡Un Guide 🎓 pas-Ă -pas est disponible ici pour crĂ©er votre application Azure ActiveDirectory dans votre environnement 👈


Les diffĂ©rentes mĂ©thodes (Verb) HTTP : Ces mĂ©thodes permettent d’interagir de diffĂ©rentes maniĂšres avec les endpoints de l’API Microsoft Graph.

  • GET: RĂ©cupĂ©rer les donnĂ©es d’une ressource spĂ©cifiĂ©e.
  • POST: Soumettre les donnĂ©es Ă  traiter Ă  une ressource spĂ©cifiĂ©e.
  • PUT: Mettre Ă  jour une ressource spĂ©cifiĂ©e.
  • DELETE: Supprimer une ressource spĂ©cifiĂ©e.
  • PATCH: Mettre Ă  jour une partie d’une ressource spĂ©cifiĂ©e.

La syntaxe d’une requĂȘte :

{version} : l’API Graph dispose de 2 versions : la /v1.0 qui est celle supportĂ©e et recommandĂ©e par Microsoft; et la /beta qui permet de tester en avance des endpoint et les nouveautĂ©s Ă  venir. ⚠La version /beta n’est pas supportĂ©e dans les environnements de production.
Note 💡: Il est recommandĂ© de suivre l’Ă©volution de ces deux versions Ă  l’aide du changelog.

{resource} : dĂ©termine le service sur lequel l’opĂ©ration doit ĂȘtre effectuĂ©e. Exemple de resource : les utilisateurs, les groupes, les sites SharePoint, les fichiers …

{id} : (en option en fonction de la requĂȘte) permet de spĂ©cifier un objet prĂ©cis dans le type de resource cible.

{property} : (en option en fonction de la requĂȘte) permet de spĂ©cifier une propriĂ©tĂ© sous-jacente Ă  la ressource parent.

?{query-parameters} : (en option en fonction de la requĂȘte) permet de modifier la rĂ©ponse renvoyĂ©e par la requĂȘte pour y rĂ©aliser un filtre ou une mise en forme.

Les endpoints : Ce sont des Points de terminaison qui permettent de rĂ©cupĂ©rer ou de manipuler de la donnĂ©e. Voici un exemple de endpoints propres Ă  l’API Microsoft Graph.

OpérationURL
GET mon profilhttps://graph.microsoft.com/v1.0/me
GET mes fichiershttps://graph.microsoft.com/v1.0/me/drive/root/children
GET ma photohttps://graph.microsoft.com/v1.0/me/photo/$value
GET mon courrierhttps://graph.microsoft.com/v1.0/me/messages
GET mon courrier Importance hautehttps://graph.microsoft.com/v1.0/me/messages?$filter=importance%20eq%20'high'
GET mes événements du calendrierhttps://graph.microsoft.com/v1.0/me/events
GET mon responsablehttps://graph.microsoft.com/v1.0/me/manager
GET le dernier utilisateur pour modifier le fichier foo.txthttps://graph.microsoft.com/v1.0/me/drive/root/children/foo.txt/lastModifiedByUser
GET les groupes Office 365 dont je suis membrehttps://graph.microsoft.com/v1.0/me/memberOf/$/microsoft.graph.group?$filter=groupTypes/any(a:a%20eq%20'unified')
GET des utilisateurs dans mon organisationhttps://graph.microsoft.com/v1.0/users
GET les groupes de mon organisationhttps://graph.microsoft.com/v1.0/groups
GET des personnes en relation avec moihttps://graph.microsoft.com/v1.0/me/people
GET les éléments qui me sont suggéréshttps://graph.microsoft.com/beta/me/insights/trending
GET mes noteshttps://graph.microsoft.com/v1.0/me/onenote/notebooks

La liste complĂšte des endpoints est disponible dans la documentation “rĂ©fĂ©rence” de l’API Graph : https://docs.microsoft.com/en-us/graph/api/overview?view=graph-rest-1.0


Note 💡 : Dans le cas d’une utilisation sur un grand volume de donnĂ©es, les rĂ©ponses faites par l’API Microsoft Graph sont gĂ©nĂ©ralement paginĂ©es par lot de 500 valeurs. Exemple : GET /users/ dans une organisation avec 2000 comptes, retournera une rĂ©ponse avec 4 pages, 4 x500. A prendre en compte dans la conception de vos projets đŸ€“.


Enfin, la manipulation du language JSON : https://en.wikipedia.org/wiki/
ou à défaut des notions en XML sont nécessaires.

AprĂšs avoir apprĂ©hender l’ensemble des concepts ci-dessus il est dĂ©sormais possible d’utiliser l’API Microsoft Graph. Pour cela, les 3 solutions les plus simples Ă  disposition sont :


Graph explorer :

Microsoft nous a mis Ă  disposition un outil pour jouer avec l’API Microsoft Graph. C’est le Graph Explorer. Ce dernier permet d’essayer des appels, dĂ©couvrir les rĂ©ponses et les valeurs, metas disponibles, celles qu’il est possible de manipuler ou non et ainsi comprendre l’utilisation de l’API.



Pour utiliser l’application Graph Explorer avec les donnĂ©es d’un environnement Office 365 il faut se connecter : “Sign in with Microsoft”.

Il est nĂ©cessaire d’utiliser un compte membre de l’organisation cible.

Lors de la premiĂšre connexion, le processus de permission et de consentement s’applique (voir concepts). Par dĂ©faut les droits accordĂ©s sont ceux propres au compte utilisĂ©.

Il est Ă©galement possible pour des comptes administrateurs de rĂ©aliser un consentement de niveau supĂ©rieur et avoir accĂšs Ă  l’ensemble des donnĂ©es de l’organisation Ă  travers ce compte.

Il est possible de voir l’ajout du compte dans l’application via l’administration Azure Active Directory > Entreprise Applications – All applications > Graph explorer > Users & Groups.

Il est possible de voir l’ajout des permissions dans l’application via l’administration Azure Active Directory > Entreprise Applications – All applications > Graph explorer > Users & Groups.

Ecran d’accueil une fois le compte connectĂ©.

Pour avoir accĂšs Ă  l’ensemble des exemples de requĂȘtes il faut utiliser le bouton “show more samples” dans le menu de gauche.
Pour avoir accĂšs Ă  l’historique d’execution des requĂȘtes, il faut utiliser le bouton “show more” dans le menu de gauche sous “History”.

Ecran d’ajout/suppression d’exemple de requĂȘtes triĂ©es par catĂ©gories.

Vue complĂšte de l’historique d’execution des requĂȘtes.

Il est possible de choisir le type de methode HTTP pour la requĂȘte.

Il est possible de choisir le type de version de l’API Graph que va utiliser la requĂȘte.

Il est possible d’ajouter un “body” Ă  ĂȘtre utiliser avec la requĂȘte.

Il est possible d’ajouter un/des “headers” associĂ©(s) Ă  la requĂȘte.

Lors de l’execution d’une requĂȘte (bouton “Run Query”), le rĂ©sultat s’affiche au format JSON dans l’encart “Response Preview”.

Il est possible Ă©galement de lire les “Headers” de la rĂ©ponse.

PostMan :

PostMan est un outil permettant d’interroger des webservices et des APIs. Il est disponible sous Windows, Mac et Linux, dispose d’une interface graphique simple Ă  prendre en main. Il permet entre autres de dĂ©finir des environnements, crĂ©er des collections de requĂȘtes, exporter et partager son travail. Il dispose Ă©galement d’une forte communautĂ© et d’une documentation riche en exemples.



Ecran de connexion : Pour utiliser PostMan il est recommandĂ© d’avoir un compte actif afin de pouvoir sauvegarder (synchronisation) son travail et pouvoir le retrouver facilement.

Pour crĂ©er une requĂȘte il faut utiliser le menu/block : Request.

Pour utiliser PostMan et ĂȘtre Ă  mĂȘme d’interroger l’API Microsoft Graph il est nĂ©cessaire de gĂ©nĂ©rer un token d’accĂšs (voir partie sur les tokens).

Note 💡: Il peut ĂȘtre nĂ©cessaire de valider “manuellement” le consentement lors d’une premiĂšre utilisation (ou lors de phases de tests).

Lors de la crĂ©ation de la requĂȘte, il faut renseigner les informations nĂ©cessaires dans les Headers (key/value).
Le rĂ©sultat de la requĂȘte s’affiche via la section “Body”.

PowerPlatform : Microsoft Flow

Microsoft Flow est l’une des briques de la PowerPlatform de Microsoft 365 et permet de crĂ©er des flux et processus de travails pour en automatiser les opĂ©rations. Cet outil est intĂ©grĂ© Ă  l’Ă©co-systĂšme Office 365 et permet donc d’interagir de maniĂšre native avec les briques tel que SharePoint, Teams, OneDrive … et les donnĂ©es qui y sont prĂ©sentes. Pour en savoir plus : 🎓 Guide 🚀Microsoft Flow – Comment bien dĂ©marrer ? 👈



CrĂ©ation d’un Flow Ă  dĂ©clenchement manuel

Note 💡 : si vous ne disposez pas d’une licence Microsoft Flow P1, il est possible d’activer une license d’essai. L’utilisation d’une action de type requĂȘtes HTTP nĂ©cessite une licence Microsoft Flow Premium.
⚠ Attention au changement concernant les licences de la PowerPlatform prĂ©vu pour entrer en vigueur Ă  partir d’Octobre 2019 >>> LINK TWITTER <<<

DĂ©tail des actions du workflow pour effectuer un appel Ă  l’API Graph.

RĂ©sultat de l’execution du workflow.

RĂ©ponse de l’appel Ă  l’API Graph via l’historique d’execution du Flow. Comme pour le Graph Explorer et PostMan, la rĂ©ponse se trouve dans le Body de la rĂ©ponse.

” L’API est au CitizenDeveloper (ou PowerUser) ce que l’User Interface (UI) est Ă  l’utilisateur “


En rĂ©sumĂ© l’API Microsoft Graph peut ĂȘtre comparĂ©e Ă  une interface, simple d’accĂšs, et disponible pour toute personne dĂ©sirant construire une solution ayant besoin d’accĂ©der ou d’interagir avec l’Ă©cosystĂšme Office 365. De part sa facilitĂ© d’utilisation, sa standardisation et la richesse de sa documentation, les donnĂ©es prĂ©sentes dans les environnements Microsoft Office 365 sont consommables aussi bien par des dĂ©veloppeurs que des utilisateurs avancĂ©s (PowerUser; CitizenDeveloper).


Pourquoi Microsoft Graph ?


Microsoft Graph est une initiative de Microsoft qui vise Ă  centraliser ses diffĂ©rentes API en un seul point. Le fait d’unifier les API va permettre de faciliter l’accessibilitĂ© des donnĂ©es que ce soit par des utilisateurs, des services informatiques ou des partenaires qui souhaitent concevoir des solutions gĂ©nĂ©ratrices de facturation.
Exemples de processus qu’il est possible de traiter via Microsoft Graph :

Traitement de l’ajout de nouveau collaborateur dans une organisation (on boarding). Il est Ă©galement possible via la PowerPlatform ou via des dĂ©veloppements spĂ©cifiques d’automatiser les processus de flux de travail.

L’intĂ©gration avec les donnĂ©es prĂ©sentes dans les fichiers Excel mais Ă©galement la manipulation des tableurs.

La conversion de fichiers.


N’Ă©tant pas un dĂ©veloppeur et ayant appris par la pratique comment utiliser l’API Microsoft Graph, voici mon retour d’expĂ©rience et mes recommandations pour se former de maniĂšre efficace :

  1. Commencer avec la sĂ©rie “30 days of Microsoft Graph” : Cette sĂ©rie est normalement Ă  destination des dĂ©veloppeurs, mais il est facile de suivre et de reproduire les exemples qui y sont prĂ©sentĂ©s sans avoir de connaissances particuliĂšres en dĂ©veloppement.
    Note 💡: Pensez Ă  dĂ©laisser Notepad++ au profit de VisualStudio Code et Ă  prendre le temps de lire la documentation pour comprendre la structures des appels, les headers JSON associĂ©s etc…
  2. Approfondir ses connaissances autour de l’authentification et des permission pour bien maitriser les concepts et comprendre les notions de consentement, de bear token, refresh token, de session, de droit d’application et droit dĂ©lĂ©guĂ©.
    Note 💡: PrivilĂ©giez ici l’utilisation de PostMan pour vos tests autour de la gĂ©nĂ©ration, manipulation, utilisation de token. Pensez Ă  utiliser un profile Chrome/Edge dĂ©diĂ© pour ne pas avoir de chevauchement avec une Ă©ventuelle session MS/365 dans votre navigateur/profil principal
  3. Tester des endpoints en utilisant de prĂ©fĂ©rence la version 1.0 de l’API Graph pour commencer. Puis, adapter les exemples mis Ă  disposition par Jeremy Thake dans la collection disponible sur GitHub : MicrosoftGraph Postman Collection
  4. Finir par l’utilisation de Microsoft Flow et se construire un workflow de test disponible Ă  tout moment pour dĂ©couvrir le fonctionnement de nouveaux appels. Les outils de la PowerPlatform et plus particuliĂšrement les briques logiques et algorithmiques de Flow permettent facilement d’imbriquer des appels et de stocker le(s) rĂ©sultat(s) directement dans votre environnement Office365 et/ou Azure (OneDrive, SharePoint, Teams, Blob…)

Dans le cas de R&D ou d’un projet qui va vous demander d’ĂȘtre au quotidien sur des tests d’appels je vous invite fortement Ă  configurer PostMan pour ĂȘtre Ă  mĂȘme de rĂ©cupĂ©rer un token automatiquement et rĂ©aliser vos tests. L’un des avantages majeur de PostMan est la possibilitĂ© d’enregistrer votre travail, le partager et le tester dans diffĂ©rents environnement depuis le mĂȘme client.


Afin de s’affranchir des limitations des droits que l’on peut vous accorder sur votre environnement de production, il est fortement conseiller de disposer de son propre environnement de test/dev/demo : Voir la procĂ©dure pas-Ă -pas ici pour crĂ©er votre propre environnement de DĂ©mo : 🎓 Guide – Comment crĂ©er un environnement Microsoft Office 365 de DĂ©mo


Microsoft Graph dispose Ă©galement d’une communautĂ© trĂšs active aussi bien cĂŽtĂ© Microsoft que cĂŽtĂ© partenaires.

👉Pour aller plus loin :
Page d’accueil du site de Microsoft Graph : Microsoft Graph Developer
Microsoft Graph sur GitHub : Microsoft Graph sur GitHub
Documentation Microsoft Graph : https://docs.microsoft.com/en-us/graph/overview
Vidéo : Présentation Microsoft Graph API (Ignite 2018)
Blog Serie : 30 Days of Microsoft Graph : https://aka.ms/30DaysMSGraph

Note💡: Le contenu est exact au moment de la publication. Toutefois, des mises Ă  jour et des ajouts sont effectuĂ©s quotidiennement par Microsoft, ce qui pourrait en modifier l’exactitude ou la pertinence. Veuillez garder cela Ă  l’esprit lorsque vous utilisez mes articles.

N’hĂ©sitez pas Ă  partager votre retour d’expĂ©rience dans les commentaires ou si vous avez des questions.

Actuellement en cours de rĂ©daction…📝

🔜Retours d’expĂ©riences et recommandations sur #Flow et la #PowerPlatform
🔜PrĂ©sentation d’un outil 3rd party pour la gestion de vos #WorkFlow dans un environnement avancĂ©
🔜Microsoft Teams Governance : Flow, un outil au service de la gouvernance, l’automatisation et le reporting.