Compartilhar ou delegar um calendário no Outlook

No Outlook, o proprietário do calendário pode compartilhá-lo com outro usuário. O proprietário pode especificar quais informações em eventos não particulares podem ser visualizadas e pode conceder acesso de gravação para os usuários na mesma organização.

O proprietário também pode delegar outro usuário a gerenciar reuniões no calendárioprincipal do proprietário. Os delegados são destinatários de compartilhamento que podem exibir todas as informações e ter acesso de gravação a eventos não privados. Eles também recebem solicitações de reunião e respostas, além de responder a solicitações de reunião em nome do proprietário. Além disso, o proprietário pode conceder permissões explícitas a delegados para exibir os eventos particulares do proprietário no calendário.

Antes que o compartilhamento de calendário ou delegação possa entrar em vigor, o proprietário envia um destinatário de compartilhamento ou delega um convite, e o destinatário ou delegado de compartilhamento aceita o convite ou adiciona explicitamente o calendário compartilhado ou delegado para acesso. O convite e a adição de um calendário compartilhado ou delegado ocorrem em um cliente do Outlook.

Depois de configurar o compartilhamento ou a delegação no Outlook, os aplicativos poderão usar a API do Microsoft Graph para gerenciar o compartilhamento e a delegação.

O restante deste artigo baseia-se no exemplo a seguir:

  • Alex Rodrigues delegou a Sara Melo seu calendário principal e também permitiu Sara para visualizar eventos privados nesse calendário.
  • Alex compartilhou no calendário o evento "festa das crianças" com Adele Vance e Sara Melo, e atribuiu Adele e a Sara permissões read para todos os detalhes de eventos não privados no calendário "festas das crianças" e o status de disponibilidade para eventos privados.

Este artigo descreve programaticamente a execução das seguintes tarefas com um calendário compartilhado ou delegado:

Os aplicativos também podem fazer o seguinte usando a API que geralmente está disponível:

Observação

As propriedades e API para compartilhamento e delegação de calendário conforme descrito neste tópico estão disponíveis atualmente no ponto de extremidade v1.0, com exceção das propriedades de calendário isShared e isSharedWithMe. Essas duas propriedades são expostas apenas no ponto de extremidade beta.

Obter informações de calendário sobre destinatários e delegados de compartilhamento e atualizar permissões individuais

Nesta seção:

Cada calendário está associado a uma coleção de objetos calendarPermission , cada um dos quais descreve um destinatário ou delegado de compartilhamento e a permissão associada que o proprietário do calendário configurou. A enumeração calendarRoleType define o intervalo de permissões que o Microsoft Graph dá suporte:

  • none Esse valor se aplica somente My Organization ao qual não há permissões para o calendário. Isso não se aplica a usuários individuais, pois somente os usuários com permissões estão associados a um objeto calendarPermission para o calendário.
  • freeBusyReadO destinatário do compartilhamento pode exibir o status gratuito/ocupado do proprietário, mas não outros detalhes sobre o calendário.
  • limitedReadO destinatário do compartilhamento pode exibir o status gratuito/ocupado do proprietário e os títulos e locais de eventos não privados no calendário.
  • readO destinatário do compartilhamento pode exibir o status gratuito/ocupado do proprietário em eventos privados e todos os detalhes de eventos não privados no calendário.
  • writeO destinatário do compartilhamento pode exibir o status gratuito/ocupado do proprietário em eventos privados e pode exibir todos os detalhes e editar (criar, atualizar ou excluir) eventos não privados no calendário.
  • delegateWithoutPrivateEventAccess O delegado pode visualizar o status de disponibilidade do proprietário em eventos privados e tem write acesso a eventos não privados no calendário.
  • delegateWithPrivateEventAccess O delegado pode visualizar o status de disponibilidade do proprietário em eventos privados e tem acesso write a eventos não privados no calendário.

O calendário principal de um usuário sempre é compartilhado com a "Minha Organização", que representa os usuários na mesma organização do proprietário. Por padrão, eles podem ler o status de disponibilidade do proprietário no calendário e ter a permissão freeBusyRead.

Proprietário do calendário: obter informações e permissões de compartilhamento e delegação

Este exemplo mostra com o consentimento de Alex ou administrador, como obter os objetos calendarPermission associados ao calendário principal de Alex. A solicitação retorna dois objetos de permissão:

  • O primeiro objeto calendarPermission é atribuído ao delegado, Sara, e tem os seguintes valores de propriedade:

    • isRemovable está definida como true, o que permite a cancelamento de uma delegação.
    • isInsideOrganization é verdadeiro, pois somente os usuários na mesma organização podem ser delegados.
    • a função de Sara é delegateWithPrivateEventAccess, conforme configurado por Alex.
    • allowedRoles inclui os tipos de função delegateWithoutPrivateEventAccessedelegateWithPrivateEventAccess que oferecem suporte à delegação.
    • emailAddress especifica Sara.
  • O segundo objeto calendarPermission é um objeto padrão atribuído a "My Organization" e tem os seguintes valores de propriedade:

    • isRemovable está definido como falso, uma vez que o calendário principal é sempre compartilhado com a organização do proprietário.
    • isInsideOrganization é verdadeiro.
    • a funçãoéfreeBusyRead, a configuração padrão para "My Organization".
    • emailAddress especifica a subpropriedade name como "My Organization"; o endereçode "My Organization" é nulo.

Permissões do Microsoft Graph

Use a permissão delegada ou de aplicativo com menos privilégios, Calendars.Read, conforme apropriado, para esta operação. Para obter mais informações, confira permissões de calendário.

GET https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendar/calendarPermissions
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/calendar/calendarPermissions",
    "value": [
        {
            "id": "L289RXhjaGFuZ2VMYWJTWVnYW5C",
            "isRemovable": true,
            "isInsideOrganization": true,
            "role": "delegateWithPrivateEventAccess",
            "allowedRoles": [
                "freeBusyRead",
                "limitedRead",
                "read",
                "write",
                "delegateWithoutPrivateEventAccess",
                "delegateWithPrivateEventAccess"
            ],
            "emailAddress": {
                "name": "Megan Bowen",
                "address": "MeganB@contoso.com"
            }
        },
        {
            "id": "RGVmYXVsdA==",
            "isRemovable": false,
            "isInsideOrganization": true,
            "role": "freeBusyRead",
            "allowedRoles": [
                "none",
                "freeBusyRead",
                "limitedRead",
                "read",
                "write"
            ],
            "emailAddress": {
                "name": "My Organization"
            }
        }
    ]
}

Proprietário do calendário: atualizar permissões para um destinatário ou delegado de compartilhamento existente em um calendário

Com o consentimento de Alex ou administrador, você pode atualizar as permissões atribuídas a um destinatário ou delegado de compartilhamento existente (especificado pela propriedade role ), desde que as novas permissões sejam compatíveis com as permissões configuradas inicialmente para o destinatário ou delegado de compartilhamento para esse calendário.

Além da propriedade role , você não pode atualizar outras propriedades de um destinatário ou delegado de compartilhamento existente. Alterar o valor da propriedade emailAddress requer a exclusão do destinatário ou delegado do compartilhamento e a configuração de uma nova instância de calendarPermission novamente.

O exemplo nesta seção atualiza a propriedade de função , alterando a permissão de um destinatário de compartilhamento existente, Adele, de read para write o calendário personalizado "Festas kids".

Permissões do Microsoft Graph

Use a permissão delegada ou de aplicativo com menos privilégios, Calendars.ReadWrite, conforme apropriado, para esta operação. Para obter mais informações, confira permissões de calendário.

PATCH https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendars/AAMkADAwAABf02bAAAA=/calendarPermissions/L289RXhjaGFuZ2VMYWJQWRlbGVW
Content-type: application/json

{
  "role": "write"
}
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/calendars('AAMkADAwAABf02bAAAA%3D')/calendarPermissions/$entity",
    "id": "L289RXhjaGFuZ2VMYWJQWRlbGVW",
    "isRemovable": true,
    "isInsideOrganization": true,
    "role": "write",
    "allowedRoles": [
        "freeBusyRead",
        "limitedRead",
        "read",
        "write"
    ],
    "emailAddress": {
        "name": "Adele Vance",
        "address": "AdeleV@contoso.com"
    }
}

Obter propriedades de um calendário compartilhado ou delegado

Nesta seção:

Lembrando deste exemplo, Alex delegou seu calendário principal e concedeu à delegada, Sara Melo, a permissão para exibir itens de calendário marcados como particulares. Esta seção mostra as propriedades do calendário delegado, primeiro a partir da perspectiva de e com o consentimento do proprietário, Alex, da perspectiva de e com o consentimento da delegada, Sara. O consentimento do administrador também funciona para todos os casos.

Proprietário do calendário: Obter propriedades de um calendário compartilhado ou delegado

O exemplo nesta seção obtém as propriedades do calendário principal da perspectiva do proprietário, Alex.

Observe as seguintes propriedades de Alex:

  • canshare é verdadeiro, pois Alex é o proprietário.
  • canViewPrivateItems é verdadeiro, uma vez que Alex é o proprietário.
  • isShared é definido como verdadeiro, uma vez que o Alex configurou um delegado para este calendário.
  • isSharedWithMe é sempre falso para o proprietário do calendário.
  • owner mostra Alex como proprietário.

Permissões do Microsoft Graph

Use a permissão delegada ou de aplicativo com menos privilégios, Calendars.Read, conforme apropriado, para esta operação. Para obter mais informações, confira permissões de calendário.

GET https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendar
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/calendar/$entity",
    "id": "AQMkADAw7QAAAJfygAAAA==",
    "name": "Calendar",
    "color": "auto",
    "hexColor": "",
    "changeKey": "NEXywgsVrkeNsFsyVyRrtAAAAAACOg==",
    "canShare": true,
    "canViewPrivateItems": true,
    "isShared": true,
    "isSharedWithMe": false,
    "canEdit": true,
    "allowedOnlineMeetingProviders": [
        "teamsForBusiness"
    ],
    "defaultOnlineMeetingProvider": "teamsForBusiness",
    "isTallyingResponses": true,
    "isRemovable": false,
    "owner": {
        "name": "Alex Wilber",
        "address": "AlexW@contoso.com"
    }
}

Compartilhar destinatário ou delegado: obter propriedades do calendário compartilhado ou delegado

O exemplo nesta seção obtém as propriedades do mesmo calendário da perspectiva da delegada, Sara.

Observe as seguintes propriedades:

  • nome do calendário é, por padrão, o nome de exibição do proprietário. Nesse caso, é "Alex Rodrigues", já que o calendário de Alex, foi delegado a Sara.
  • canShare é falso, uma vez que Sara não é a proprietária do calendário.
  • canViewPrivateItems é verdadeiro para a delegada Sara, conforme configurado por Alex. Para um sharee que não seja um delegado essa propriedade será sempre falsa.
  • isShared é falso. Esta propriedade indica apenas ao proprietário do calendário se o calendário foi compartilhado ou delegado.
  • A propriedadeisSharedWithMe é verdadeira, uma vez que Sara é uma delegada.
  • CanEdit é verdadeiro, uma vez que os delegados, incluindo Sara, têm acesso de gravação.
  • owner está definido como Alex.

Observação

Um compartilhamento ou representante só pode personalizar a propriedade nome de um calendário compartilhado/delegado. A atualização é visível apenas para eles mesmos; o proprietário do calendário não vê essas alterações no nome do calendário.

Permissões do Microsoft Graph

Use a permissão delegada com menos privilégios, Calendars.Read.Shared, ou permissão de aplicativo, Calendars.Read, conforme apropriado, para esta operação. Para obter mais informações, confira permissões de calendário.

GET https://graph.microsoft.com/beta/users/meganb@contoso.com/calendars/AAMkADlAABhbftjAAA=
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('meganb%40contoso.com')/calendars/$entity",
    "id": "AAMkADlAABhbftjAAA=",
    "name": "Alex Wilber",
    "color": "auto",
    "hexColor": "",
    "changeKey": "E6LznKWmX0KTsAD9qRJjeAAAYWo3EQ==",
    "canShare": false,
    "canViewPrivateItems": true,
    "isShared": false,
    "isSharedWithMe": true,
    "canEdit": true,
    "allowedOnlineMeetingProviders": [
        "teamsForBusiness"
    ],
    "defaultOnlineMeetingProvider": "teamsForBusiness",
    "isTallyingResponses": true,
    "isRemovable": true,
    "owner": {
        "name": "Alex Wilber",
        "address": "AlexW@contoso.com"
    }
}

Obtenha ou defina a configuração de caixa de correio para receber solicitações de reunião e respostas

Nesta seção:

Dependendo do nível de delegação que um proprietário de calendário prefere, o proprietário poderá especificar quem deve receber solicitações de reunião e respostas para gerenciar as reuniões no calendário.

Programaticamente, você pode obter ou definir a propriedade delegateMeetingMessageDeliveryOptions do proprietário do calendário mailboxSettings para especificar para quem o Outlook deve direcionar as instânciaseventMessageRequest e eventMessageResponse:

  • sendToDelegateOnly

    O Outlook para direcionar as instânciaseventMessageRequest e eventMessageResponse para delegados. Esta é a configuração padrão. O proprietário pode ver as respostas a uma reunião ou responder a um convite através do evento correspondente no calendário delegado.

  • sendToDelegateAndInformationToPrincipal

    O Outlook direciona as instânciaseventMessageRequest e eventMessageResponse para delegados e para o proprietário do calendário. Somente os representantes veem a opção de aceitar ou recusar uma solicitação de reunião, e a notificação enviada ao proprietário aparece como uma mensagem de e-mail normal. O proprietário ainda pode responder à reunião, abrindo o evento no calendário delegado e respondendo.

  • sendToDelegateAndPrincipal

    O Outlook direciona as instânciaseventMessageRequest e eventMessageResponse para delegados e para o proprietário do calendário, ou seja, que podem responder à solicitação de reunião.

Essa é uma configuração para toda a caixa de correio; portanto, a mesma configuração se aplica a todos os delegados do proprietário da caixa de correio.

Obter a configuração de entrega de delegação para a caixa de correio de um usuário

O exemplo nesta seção obtém as mailboxSettings de um proprietário de calendário que permite que o Outlook direcione solicitações e respostas de reunião apenas para delegados de calendário; ou seja, delegateMeetingMessageDeliveryOptions é definido como sendToDelegateOnly.

Permissões do Microsoft Graph

Use a permissão delegada ou de aplicativo com menos privilégios, MailboxSettings.Read, conforme apropriado, para esta operação. Para obter mais informações sobre permissões de caixa de correio, confira permissões de email.

GET https://graph.microsoft.com/beta/users/AlexW@contoso.com/mailboxsettings
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/mailboxSettings",
    "archiveFolder": "AQMkADAwAGVQAAAKfowAAAA==",
    "timeZone": "Pacific Standard Time",
    "delegateMeetingMessageDeliveryOptions": "sendToDelegateOnly",
    "dateFormat": "M/d/yyyy",
    "timeFormat": "h:mm tt",
    "automaticRepliesSetting": {
        "status": "disabled",
        "externalAudience": "all",
        "internalReplyMessage": "",
        "externalReplyMessage": "",
        "scheduledStartDateTime": {
            "dateTime": "2019-12-24T05:00:00.0000000",
            "timeZone": "UTC"
        },
        "scheduledEndDateTime": {
            "dateTime": "2019-12-25T05:00:00.0000000",
            "timeZone": "UTC"
        }
    },
    "language": {
        "locale": "en-US",
        "displayName": "English (United States)"
    },
    "workingHours": {
        "daysOfWeek": [
            "monday",
            "tuesday",
            "wednesday",
            "thursday",
            "friday"
        ],
        "startTime": "08:00:00.0000000",
        "endTime": "17:00:00.0000000",
        "timeZone": {
            "name": "Pacific Standard Time"
        }
    }
}

Definir a configuração de entrega de delegação para a caixa de correio de um usuário

O exemplo nesta seção atualiza a propriedade delegateMeetingMessageDeliveryOptions para sendToDelegateAndPrincipal, para que o Outlook direcione solicitações de reunião e respostas do calendário delegado para todos os delegados e o proprietário.

Permissões do Microsoft Graph

Use a permissão delegada ou de aplicativo com menos privilégios, MailboxSettings.ReadWrite, conforme apropriado, para esta operação. Para obter mais informações sobre permissões de caixa de correio, confira permissões de email.

PATCH https://graph.microsoft.com/beta/users/AlexW@contoso.com/mailboxsettings
Content-type: application/json

{
  "delegateMeetingMessageDeliveryOptions": "sendToDelegateAndPrincipal"
}
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/mailboxSettings",
    "delegateMeetingMessageDeliveryOptions": "sendToDelegateAndPrincipal"
}

Exclua um compartilhamento ou um representante de um calendário.

No exemplo abaixo, Alex exclui Sara como um sharee do calendário "Festas infantis".

Permissões do Microsoft Graph

Use a permissão delegada ou de aplicativo com menos privilégios, Calendars.ReadWrite, conforme apropriado, para esta operação. Para obter mais informações, confira permissões de calendário.

DELETE https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendars/AAMkADAwAABf02bAAAA=/calendarPermissions/L289RXhjaGFuZ2VMYWJTWVnYW5C
HTTP/1.1 204 No Content