Получение общего или делегированного календаря Outlook и его событий

В Outlook владелец календаря может поделиться им с другими пользователями и предоставить им доступ на просмотр или изменение событий в своем календаре. Общий календарь может быть основным календарем владельца или пользовательским календарем, созданным владельцем. Владелец также может предоставить делегату для своего основного календаря право выполнять действия от его имени, чтобы получать приглашения на собрания или отвечать на них, а также создавать или изменять элементы в основном календаре.

Программно Microsoft Graph поддерживает чтение и запись событий в календарях, которыми поделились другие пользователи, а также чтение общих календарей и обновление имени календаря для получателей общих ресурсов. Поддержка также относится к делегированным календарям. Далее в этой статье описывается чтение событий в общем или делегированном календаре. Сведения о создании событий см. в статье Создание событий Outlook в общем или делегированном календаре.

Общий доступ к получателю: получение общего календаря или его событий непосредственно из почтового ящика владельца календаря

В трех примерах, приведенных ниже, используется следующий сценарий: Артем поделился своим основным календарем с Мартой в Outlook и предоставил ей разрешения на чтение. Если Марта войдет в приложение и предоставит делегированные разрешения (Calendars.Read.Shared или Calendars.ReadWrite.Shared) от своего имени, приложение сможет получить доступ к основному календарю Артема и его событиям непосредственно из почтового ящика Артема.

В трех примерах указан идентификатор владельца (ИД пользователя или имя участника-пользователя Артема) и ярлык calendar. У них есть доступ к идентификаторам календаря и событий, которые соответствуют почтовому ящику владельца. Указание этих идентификаторов календаря и событий в почтовом ящике получателя общей папки (идентификатор пользователя Или имя участника-пользователя) приведет к ошибке. Сведения об использовании идентификаторов календаря и событий, соответствующих почтовому ящику получателя общих папок, см. в статье Общий получатель: получение общего доступа, пользовательского календаря или его событий из почтового ящика получателя общей папки.

Примечание.

Разрешения общего доступа (Calendars.Read.Shared или Calendars.ReadWrite.Shared) позволяют читать или записывать события в общем или делегированном календаре. Они не поддерживают подписку на уведомления об изменениях элементов в таких папках. Чтобы настроить подписки на уведомления об изменениях событий в общем, делегированном или любом другом календаре пользователя или ресурса в клиенте, используйте разрешение приложения Calendars.Read.

Марта: получение общего основного календаря непосредственно из почтового ящика Артема

Войдя в систему под именем Марты, получите основной календарь, которым Артем поделился с Мартой, непосредственно из почтового ящика Артема.

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

После успешного завершения вы получите HTTP 200 OK и экземпляр календаря , который представляет общий основной календарь Алекса в почтовом ящике Alex.

Марта: получение события общего основного календаря непосредственно из почтового ящика Артема

При выполнении входа в систему под именем Марты приложение может получить определенное событие основного календаря, которым Артем поделился с Мартой, непосредственно из его почтового ящика.

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

В случае успешного выполнения вы получите отклик HTTP 200 OK и экземпляр объекта event, определенный параметром {id} в основном календаре Артема, непосредственно из его почтового ящика.

Марта: получение всех событий общего основного календаря из почтового ящика Артема

Войдя в систему под именем Марты, получите все события основного календаря, которым Артем поделился с Мартой, непосредственно из его почтового ящика.

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

В случае успешного выполнения вы получите отклик HTTP 200 OK и коллекцию экземпляров объекта event в основном календаре Артема непосредственно из его почтового ящика.

Те же возможности GET доступны в том случае, если Артем делегировал Марте доступ к своему основному календарю или если Артем делегировал Марте весь свой почтовый ящик.

Если Алекс не предоставил общий доступ к основному календарю и не делегировал его с Помощью Megan, при указании идентификатора пользователя или имени участника-пользователя в предыдущих операциях GET возвращается ошибка.

Получатель общего доступа: получение общего, пользовательского календаря или его событий из почтового ящика получателя общего доступа

Если Артем поделился пользовательским календарем (например, календарем «Детские праздники») с Анной и Анна предоставила делегированные разрешения (Calendars.Read или Calendars.ReadWrite), приложение может получить события или календарь из локальной копии календаря Артема в почтовом ящике Анны, как описано ниже.

  1. Войдя в систему под именем Анны, используйте один из следующих запросов, чтобы получить все календари, к которым Анна имеет доступ, в том числе общий пользовательский календарь.

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

    Успешный отклик включает код ответа HTTP 200 и коллекцию календарей, к которым Анна имеет доступ, в том числе календарь («Детские праздники») с именем владельца, указанным как "Артем Кузнецов", в качестве второго календаря. Для получателя общего ресурса, Адель, свойство canShare общего календаря всегда имеет значение 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. Войдя в систему под именем Анны, получите общий календарь или одно или несколько событий общего календаря, используя в отклике идентификатор второго календаря с шага 1. Идентификаторы общего календаря и его события соответствуют локальной копии календаря Артема в почтовом ящике Анны.

    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
    

После успешного завершения вы получите HTTP 200 OK и запрошенное событие, события или календарь, которые Алекс предоставил Адель.