Compartilhar via


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 partilha que podem ver todas as informações no e têm acesso de escrita 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 de a partilha ou delegação do calendário poder entrar em vigor, o proprietário envia um convite a um destinatário ou delegado de partilha e o destinatário ou delegado da partilha aceita o convite ou adiciona explicitamente o calendário partilhado 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 a partilha de destinatários e delegados 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 partilha 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 Este valor aplica-se apenas My Organization ao que não tem 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 da partilha pode ver a status de disponibilidade do proprietário, mas não outros detalhes no calendário.
  • limitedReadO destinatário da partilha pode ver a status de disponibilidade do proprietário e os títulos e localizações de eventos não privados no calendário.
  • readO destinatário da partilha pode ver os status de disponibilidade do proprietário em eventos privados e todos os detalhes de eventos não privados no calendário.
  • writeO destinatário da partilha pode ver os status de disponibilidade do proprietário em eventos privados e pode ver todos os detalhes e editar (criar, atualizar ou eliminar) 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 partilha existente num calendário

Com o consentimento do Alex ou do administrador, pode atualizar as permissões atribuídas a um destinatário ou delegado de partilha existente (especificado pela propriedade da função), desde que as novas permissões sejam suportadas pelas permissões permitidas Configuradas inicialmente para o destinatário da partilha ou delegado desse calendário.

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

O exemplo nesta secção atualiza a propriedade da função, alterando a permissão de um destinatário de partilha existente, Adele, de read para write o calendário personalizado "Festas de crianças".

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"
    }
}

Partilhar destinatário ou delegado: obter propriedades de calendários partilhados ou delegados

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