Obter calendário do Outlook compartilhado ou delegado e seus eventos

No Outlook, um proprietário de calendário pode compartilhar um calendário com outros usuários e deixá-los exibir ou modificar eventos nesse calendário. o calendário compartilhado pode ser um calendário personalizado ou o calendário principal do proprietário, criado por ele.. Os clientes também podem permitir que um representante aja em nome deles, para receber ou responder a solicitações de reunião ou então para criar ou alterar itens no calendário.

Programaticamente, o Microsoft Graph dá suporte à leitura e gravação de eventos em calendários que foram compartilhados por outros usuários, além de ler os calendários compartilhados e atualizar o nome do calendário para destinatários de compartilhamento. O suporte também se aplica a calendários que foram delegados. O restante deste artigo descreve a leitura de eventos em um calendário compartilhado ou delegado. Para obter eventos, consulteObter eventos do Outlook em um calendário compartilhado ou delegado.

Destinatário de compartilhamento: obter um calendário compartilhado ou seus eventos diretamente da caixa de correio do proprietário do calendário

Os três exemplos a seguir usam esse cenário: no Outlook, Alex compartilhou seu calendário principal com Sara e recebeu de Sara permissões de leitura. Se Sara entrar no aplicativo e oferecer permissões delegadas (Calendars.Read.Shared ou Calendars.ReadWrite.Shared), em nome de Sara, seu aplicativo poderá acessar o calendário principal e seus eventos diretamente da caixa de correio.

Os três exemplos especificam a identidade do proprietário (Alex ' ID de usuário ou nome de usuário do usuário) e o atalho calendar. Eles acessam o calendário e as IDs de eventos que correspondem somente à caixa de correio do proprietário. Especificar essas IDs de calendário e evento na caixa de correio do destinatário do compartilhamento (A ID do usuário ou o nome da entidade de usuário) retornaria um erro. Para usar IDs de calendário e eventos que correspondam à caixa de correio do destinatário do compartilhamento, confira Compartilhar destinatário: Obter calendário compartilhado, personalizado ou seus eventos na caixa de correio do destinatário do compartilhamento.

Observação

As permissões de compartilhamento (Calendars.Read.Shared ou Calendars.ReadWrite.Shared) permitem que você leia ou grave eventos em um calendário compartilhado ou delegado. Eles não têm suporte subscrever para alterar notificações em itens como pastas. Para configurar as assinaturas de notificação de alteração em eventos em um usuário compartilhado, representante ou qualquer outro usuário ou calendário de recursos no locatário, use a permissão de aplicativo Calendars.Read.

Sara: Obtenha o calendário principal compartilhado diretamente da caixa de correio de Alex

Conectado como Sara, obtenha o calendário principal que Alex compartilhou com Sara, diretamente da caixa de correio de Alex:

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

Após a conclusão bem-sucedida, você obtém HTTP 200 OK e uma instância de calendário que representa o calendário principal e compartilhado de Alex na caixa de correio de Alex.

Sara: Obtenha o calendário principal compartilhado diretamente a partir da caixa de correio de Alex

Conectado como Sara, seu aplicativo pode obter um evento específico no calendário principal que Alex compartilhou com Sara, diretamente da caixa de correio de Alex:

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

Após a conclusão bem-sucedida, você receberá HTTP 200 OK e a instância de evento identificada por {id} do calendário principal de Alex, diretamente da caixa de correio de Alex.

Sara: Obtenha todos os eventos no calendário principal compartilhado da caixa de correio de Alex

Conectado como Sara, obtenha todos os eventos no calendário principal que Alex compartilhou com Sara, diretamente da caixa de correio de Alex:

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

Após a conclusão bem-sucedida, você receberá HTTP 200 OK e uma coleção das instâncias de evento do calendário principal de Alex, diretamente da caixa de correio de Alex.

Os mesmos recursos GET se aplicam se a Alex tiver delegado o acesso a Sara ao calendário principal de Alex, ou se Alex tiver delegado a Sara a sua caixa de correio inteira.

Se Alex não compartilhou nem delegou seu calendário principal com Megan, especificando a ID do usuário ou o nome da entidade de usuário nas operações GET anteriores retornará um erro.

Destinatário de compartilhamento: obter calendário compartilhado, personalizado ou seus eventos da caixa de correio do destinatário de compartilhamento

Se Alex compartilhou um calendário personalizado (por exemplo, um calendário chamado "festas de crianças") com Adele e Adele tiver fornecido permissões delegadas (Calendars.Read ou Calendars.ReadWrite), seu aplicativo poderá obter os eventos ou o calendário do calendário da cópia local do Alex ", na caixa de email de Adele, conforme descrito abaixo.

  1. Conectado como Adele, use uma das seguintes solicitações para obter todos os calendários aos quais Adele tem acesso, incluindo o calendário personalizado compartilhado.

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

    Uma resposta bem-sucedida inclui o código de resposta HTTP 200 e o conjunto de calendários que Adele tem acesso, incluindo o calendário ("festas das crianças") com o nome do proprietário como "Alex Rodrigues" como o segundo calendário na resposta. Para um destinatário de compartilhamento, Adele, a propriedade canShare do calendário compartilhado é sempre falsa.

    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. Conectado como Adele, obtenha o calendário compartilhado ou obtenha um ou mais eventos no calendário compartilhado usando a segunda ID de calendário na resposta da etapa 1. As IDs do calendário compartilhado e seu evento correspondem à cópia local do calendário de Alex na caixa de correio de 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
    

Após a conclusão bem-sucedida, você obtém HTTP 200 OK e o evento, eventos ou calendário solicitados que Alex compartilhou com Adele.