Obtenir un calendrier Outlook partagé ou délégué et ses événements

Dans Outlook, un propriétaire de calendrier peut partager celui-ci avec d’autres utilisateurs et leur permettre de consulter ou de modifier les événements qu’il contient. Le calendrier partagé peut être le calendrier principal du propriétaire ou un calendrier personnalisé qu’il a lui-même créé. Le propriétaire peut également accorder un délégué à son calendrier principal et agir en son nom pour recevoir ou répondre aux demandes de réunion, ou créer ou modifier des éléments dans le calendrier principal.

Par programmation, Microsoft Graph prend en charge la lecture et l’écriture d’événements dans des calendriers partagés par d’autres utilisateurs, ainsi que la lecture des calendriers partagés et la mise à jour du nom du calendrier pour les destinataires du partage. La prise en charge s’applique également aux calendriers délégués. Le reste de cet article explique comment lire des événements dans un calendrier partagé ou délégué. Pour créer des événements, reportez-vous à Créer des événements Outlook dans un calendrier partagé ou délégué.

Partager le destinataire : obtenir un calendrier partagé ou ses événements directement à partir de la boîte aux lettres du propriétaire du calendrier

Les trois exemples ci-dessous reposent sur le scénario suivant : dans Outlook, Alex a partagé son calendrier principal avec Megan et lui a accordé des autorisations de lecture. Si Megan se connecte à votre application et fournit des autorisations déléguées (Calendars.Read.Shared ou Calendars.ReadWrite.Shared), au nom de Megan, votre application peut accéder au calendrier principal d’Alex et à ses événements directement depuis la boite aux lettres de celui-ci.

Les trois exemples spécifient l’identité du propriétaire (identifiant utilisateur ou nom d’utilisateur principal d’Alex) et le raccourci calendar. Ils accèdent aux ID du calendrier et des événements qui correspondent à la boîte aux lettres du propriétaire uniquement. La spécification de ces ID de calendrier et d’événement dans la boîte aux lettres du destinataire du partage (ID d’utilisateur ou nom d’utilisateur principal de Megan) renvoie une erreur. Pour utiliser des ID de calendrier et d’événement qui correspondent à la boîte aux lettres du destinataire du partage, consultez Partager le destinataire : obtenir un calendrier partagé, personnalisé ou ses événements à partir de la boîte aux lettres du destinataire du partage.

Remarque

Les autorisations de partage (Calendars.Read.Shared ou Calendars.ReadWrite.Shared) vous permettent de lire ou d’écrire des événements dans un calendrier partagé ou délégué. Elles ne prennent pas en charge l’abonnement aux notifications de modifications sur les éléments dans ces dossiers. Pour configurer les abonnements aux notifications de modifications sur les événements dans un calendrier d’utilisateur ou de ressource partagé, délégué ou tout autre calendrier d’utilisateur ou de ressource dans le client, utilisez l’autorisation d’application Calendars.Read.

Megan : Obtenir le calendrier principal partagé directement depuis la boîte aux lettres d’Alex

Connectez-vous sous le nom de Megan et obtenez le calendrier principal qu’Alex a partagé avec Megan, directement depuis la boîte aux lettres d’Alex :

GET https://graph.microsoft.com/v1.0/users/{Alex-userId | Alex-userPrincipalName}/calendar

Une fois l’opération terminée, vous obtenez HTTP 200 OK et un instance de calendrier qui représente le calendrier principal partagé d’Alex dans la boîte aux lettres d’Alex.

Megan : Obtenir un événement du calendrier principal partagé directement depuis la boîte aux lettres d’Alex

Dans le cadre d’une connexion sous le nom de Megan, votre application peut obtenir un événement spécifique du calendrier principal qu’Alex a partagé avec Megan, directement depuis la boîte aux lettres d’Alex :

GET https://graph.microsoft.com/v1.0/users/{Alex-userId | Alex-userPrincipalName}/calendar/events/{id}

Si l’opération réussit, vous recevez le message « HTTP 200 OK » et l’instance event identifiée par {id} dans le calendrier principal d’Alex, directement depuis la boîte aux lettres d’Alex.

Megan : Obtenir tous les événements du calendrier principal partagé depuis la boîte aux lettres d’Alex

Connectez-vous sous le nom de Megan et obtenez tous les événements du calendrier principal qu’Alex a partagés avec Megan, directement depuis la boîte aux lettres d’Alex :

GET https://graph.microsoft.com/v1.0/users/{Alex-userId | Alex-userPrincipalName}/calendar/events

Si l’opération réussit, vous recevez le message « HTTP 200 OK » et une collection d’instances event dans le calendrier principal d’Alex, directement depuis la boîte aux lettres de celui-ci.

Les mêmes fonctionnalités GET s’appliquent si Alex a délégué l’accès à son calendrier principal ou l’intégralité de sa boîte aux lettres à Megan.

Si Alex n’a pas partagé ni délégué son calendrier principal avec Megan, la spécification de l’ID utilisateur ou du nom d’utilisateur principal d’Alex dans les opérations GET précédentes renvoie une erreur.

Partager le destinataire : obtenir un calendrier partagé et personnalisé ou ses événements à partir de la boîte aux lettres du destinataire de partage

Si Alex a partagé un calendrier personnalisé (par exemple, un calendrier nommé « Fêtes d’enfants ») avec Adele, et qu’Adele a fourni des autorisations déléguées (Calendars.Read ou Calendars.ReadWrite), votre application peut obtenir les événements ou le calendrier à partir de la copie locale du calendrier d’Alex dans la boîte aux lettres d’Adèle, comme décrit ci-dessous.

  1. Connectez-vous sous le nom d’Adele et utilisez l’une des demandes suivantes pour obtenir tous les calendriers auxquels Adele a accès, y compris le calendrier personnalisé partagé.

    GET https://graph.microsoft.com/v1.0/me/calendars
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars
    

    Une réponse réussie inclut le code de réponse HTTP 200 et la collection de calendriers auxquels Adele a accès, y compris le calendrier (« Fêtes d’enfants ») dont le nom du propriétaire est « Alex Wilber » et qui apparaît en deuxième dans la réponse. Pour un destinataire de partage, Adele, la propriété canShare du calendrier partagé est toujours false.

    HTTP/1.1 200 OK
    Content-type: application/json
    
    {
        "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('d3b9214b-dd8b-441d-b7dc-c446c9fa0e69')/calendars",
        "value": [
            {
                "id": "AQMkADU5NAAAJMjAAAAA==",
                "name": "Calendar",
                "color": "auto",
                "changeKey": "NDznl+Uh50WkanaCOKHkaQAAAAACXQ==",
                "canShare": true,
                "canViewPrivateItems": true,
                "canEdit": true,
                "owner": {
                    "name": "Adele Vance",
                    "address": "AdeleV@contoso.com"
                }
            },
            {
                "id": "AAMkADAABf0JlyAAA=",
                "name": "Kids parties",
                "color": "lightYellow",
                "changeKey": "NDznl+Uh50WkanaCOKHkaQAAYumJRQ==",
                "canShare": false,
                "canViewPrivateItems": false,
                "canEdit": false,
                "owner": {
                    "name": "Alex Wilber",
                    "address": "AlexW@contoso.com"
                }
            }
        ]
    }
    
  2. Connectez-vous sous le nom d’Adele, obtenez le calendrier partagé, ou obtenez un ou plusieurs événements du calendrier partagé, en utilisant le deuxième ID de calendrier de la réponse de l’étape 1. Les ID du calendrier partagé et de son événement correspondent à la copie locale du calendrier d’Alex dans la boîte aux lettres d’Adele.

    GET https://graph.microsoft.com/v1.0/me/calendars/AAMkADAABf0JlyAAA=
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars/AAMkADAABf0JlyAAA=
    
    GET https://graph.microsoft.com/v1.0/me/calendars/AAMkADAABf0JlyAAA=/events/{id}
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars/AAMkADAABf0JlyAAA=/events/{id}
    
    GET https://graph.microsoft.com/v1.0/me/calendars/AAMkADAABf0JlyAAA=/events
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars/AAMkADAABf0JlyAAA=/events
    

Une fois l’opération terminée, vous obtenez HTTP 200 OK et l’événement, les événements ou le calendrier demandés qu’Alex a partagés avec Adele.