Compartir o delegar un calendario en Outlook

En Outlook, el propietario del calendario puede compartir el calendario con otro usuario. El propietario puede especificar qué información de los eventos no privados es visible y puede dar acceso de escritura al calendario a usuarios de la misma organización.

El propietario también puede delegar a otro usuario que administre las reuniones en el calendario principal del propietario. Los delegados son destinatarios de recursos compartidos que pueden ver toda la información en eventos no privados y tienen acceso de escritura a ellos. También reciben convocatorias de reunión y respuestas, y responden a convocatorias de reunión en nombre del propietario. Además, el propietario puede conceder permisos explícitos a los delegados para ver los eventos privados del propietario en el calendario.

Antes de que el uso compartido o la delegación del calendario puedan surtir efecto, el propietario envía una invitación a un destinatario o delegado del recurso compartido, y el destinatario o delegado del recurso compartido acepta la invitación o agrega explícitamente el calendario compartido o delegado para el acceso. La invitación y el agregado de un calendario compartido o delegado se producen en un cliente de Outlook.

Después de configurar el uso compartido o la delegación en Outlook, las aplicaciones pueden usar la API de Microsoft Graph para administrar el uso compartido y la delegación.

El resto de este artículo se basa en el escenario de ejemplo siguiente:

  • Sergio Valladares ha delegado a Nuria Acevedo su calendario principal, y también permitió a Nuria ver eventos privados en ese calendario.
  • Sergio ha compartido un calendario de "Fiesta infantil" con Isabel Robledo y Nuria Acevedo, y ha dado a Isabel y Nuria permisos de read para todos los detalles de los eventos no privados en el calendario de "Fiesta infantil", y el estado de disponibilidad de los eventos privados.

En este artículo se describe cómo se llevan a cabo las siguientes tareas mediante programación con un calendario compartido o delegado:

Las aplicaciones también pueden hacer lo siguiente con la API que por lo general está disponible:

Nota:

Las propiedades y la API para compartir y delegar calendarios descritas en este tema están disponibles actualmente en el punto de conexión v1.0, a excepción de la propiedad de calendario isShared, que solo se expone en el punto de conexión beta.

Obtener información del calendario sobre los destinatarios y delegados del recurso compartido, y actualizar los permisos individuales

En esta sección:

Cada calendario se asocia a una colección de objetos calendarPermission , cada uno de los cuales describe un destinatario o delegado del recurso compartido y el permiso asociado que ha configurado el propietario del calendario. La enumeración calendarRoleType define el rango de permisos que Microsoft Graph admite:

  • none Este valor se aplica solo My Organization a aquellos que no tienen ningún permiso para el calendario. No se aplica a usuarios individuales, ya que solo los usuarios con permisos están asociados a un calendarPermission para el calendario.
  • freeBusyRead El destinatario del recurso compartido puede ver el estado de disponibilidad del propietario, pero no otros detalles en el calendario.
  • limitedRead El destinatario del recurso compartido puede ver el estado de disponibilidad del propietario, así como los títulos y ubicaciones de los eventos no privados en el calendario.
  • read El destinatario del recurso compartido puede ver el estado de disponibilidad del propietario en eventos privados y todos los detalles de eventos no privados en el calendario.
  • write El destinatario del recurso compartido puede ver el estado de disponibilidad del propietario en eventos privados y ver todos los detalles y editar (crear, actualizar o eliminar) eventos no privados en el calendario.
  • delegateWithoutPrivateEventAccess El delegado puede ver el estado de disponibilidad del propietario en eventos privados y tiene acceso para write en los eventos no privados en el calendario.
  • delegateWithPrivateEventAccess El delegado puede ver los detalles de los eventos privados y no privados del propietario, y tiene acceso para write en todos los eventos del calendario.

El calendario principal de un usuario siempre se comparte con "Mi organización", que representa los usuarios de la misma organización que el propietario. De forma predeterminada, los usuarios pueden leer el estado de disponibilidad del propietario del calendario y tienen el permiso de freeBusyRead.

Propietario del calendario: obtener información y permisos de uso compartido o delegación

Este ejemplo muestra con el consentimiento de Alex o el administrador, cómo obtener los objetos calendarPermission asociados al calendario principal de Alex. La solicitud devuelve dos objetos de permiso:

  • El primer objeto calendarPermission se asigna al delegado, Nuria, y tiene los siguientes valores de propiedades:

    • isRemovable se establece en verdadero, lo que proporciona a Sergio la opción de cancelar la delegación.
    • isInsideOrganization es verdadero ya que solo los usuarios de la misma organización pueden ser delegados.
    • role para Nuria es delegateWithPrivateEventAccess, como lo configuró Sergio.
    • allowedRoles incluye los tipos de rol delegateWithoutPrivateEventAccess y delegateWithPrivateEventAccess que admiten la delegación.
    • emailAddress especifica Nuria.
  • El segundo objeto calendarPermission es un objeto predeterminado asignado a "Mi organización" y tiene los siguientes valores de propiedades:

    • isRemovable se configura como falso, ya que el calendario principal siempre se comparte con la organización del propietario.
    • isInsideOrganization es verdadero.
    • role es freeBusyRead, la configuración predeterminada para "Mi organización".
    • emailAddress especifica la subpropiedad name como "Mi organización", address de "Mi organización" es null de forma predeterminada.

Permisos de Microsoft Graph

Use el permiso de aplicación o delegado con menos privilegios, Calendars.Read, según corresponda, para esta operación. Para obtener más información, vea permisos de calendario.

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

Propietario del Calendar: actualizar los permisos de un destinatario o delegado de un recurso compartido existente en un calendario

Con el consentimiento de Alex o del administrador, puede actualizar los permisos asignados a un delegado o destinatario del recurso compartido existente (especificado por la propiedad del rol ), siempre que los nuevos permisos sean compatibles con esos allowedRoles configurados inicialmente para el destinatario del recurso compartido o delegado para ese calendario.

Aparte de la propiedad de rol , no puede actualizar otras propiedades de un destinatario o delegado de recurso compartido existente. Para cambiar el valor de la propiedad emailAddress es necesario eliminar el destinatario o delegado del recurso compartido y configurar de nuevo una nueva instancia de calendarPermission .

El ejemplo de esta sección actualiza la propiedad de rol, cambiando el permiso de un destinatario de recurso compartido existente, Adele, de a para write el calendario personalizado "Fiestas infantilesread".

Permisos de Microsoft Graph

Use el permiso de aplicación o delegado con menos privilegios, Calendars.ReadWrite, según corresponda, para esta operación. Para obtener más información, vea permisos de calendario.

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

Obtener las propiedades de un calendario compartido o delegado

En esta sección:

Volviendo a este ejemplo, Sergio ha delegado su calendario principal y dado al delegado, Nuria Acevedo, el permiso para ver los elementos de calendario que estén marcados como privados. En esta sección se muestran las propiedades del calendario delegado, en primer lugar desde la perspectiva y con el consentimiento del propietario, Sergio, y después desde la perspectiva y con el consentimiento del delegado, Nuria. El consentimiento del administrador también funciona en cada caso.

Propietario del calendario: obtener las propiedades de un calendario compartido o delegado

El ejemplo de esta sección obtiene las propiedades del calendario principal desde la perspectiva del propietario, Alex.

Tenga en cuenta las siguientes propiedades en nombre de Sergio:

  • canShare es verdadero, ya que Sergio es el propietario.
  • canViewPrivateItems es verdadero, ya que Sergio es el propietario.
  • isShared se establece en verdadero, ya que Sergio ha configurado un delegado para este calendario.
  • isSharedWithMe es siempre falso para el propietario del calendario.
  • owner muestra a Sergio como propietario.

Permisos de Microsoft Graph

Use el permiso de aplicación o delegado con menos privilegios, Calendars.Read, según corresponda, para esta operación. Para obtener más información, vea permisos de calendario.

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

Destinatario o delegado del uso compartido: obtener las propiedades del calendario compartido o delegado

El ejemplo de esta sección obtiene las propiedades del mismo calendario desde la perspectiva del delegado, Megan.

Tenga en cuenta las propiedades siguientes:

  • name del calendario es, de forma predeterminada, el nombre para mostrar del propietario. En este caso, es "Sergio Valladares", ya que este es el calendario de Sergio que se ha delegado en Nuria.
  • canShare es falso, ya que Megan no es la propietaria de este calendario.
  • canViewPrivateItems es verdadero para el delegado Nuria, como ha configurado Sergio. Para un usuario compartido que no es un delegado, esta propiedad siempre es falsa.
  • isShared es falso. Esta propiedad solo indica al propietario del calendario si el calendario se ha compartido o delegado.
  • isSharedWithMe propiedad es verdadero, ya que Nuria es un delegado.
  • canEdit es verdadero, ya que los delegados, incluida Nuria, tienen acceso de escritura.
  • owner se establece como Sergio.

Nota:

Una persona con la que se comparte o delegado solo puede personalizar la propiedad name de un calendario compartido/delegado. La actualización solo pueden verla ellos mismos; el propietario del calendario no ve estos cambios en el nombre del calendario.

Permisos de Microsoft Graph

Use el permiso delegado con menos privilegios, Calendars.Read.Shared, o permiso de aplicación, Calendars.Read, según corresponda para esta operación. Para obtener más información, vea permisos de calendario.

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

Obtener o establecer la configuración de buzón para recibir convocatorias de reunión y respuestas

En esta sección:

Según el nivel de delegación que prefiera el propietario del calendario, el propietario puede especificar quién debe recibir las convocatorias de reunión y las respuestas para administrar las reuniones en el calendario.

Mediante programación, puede obtener o establecer la propiedad delegateMeetingMessageDeliveryOptions de las mailboxSettings del propietario del calendario para especificar a quién debe dirigir Outlook las instancias eventMessageRequest y eventMessageResponse:

  • sendToDelegateOnly

    Outlook debe dirigir instancias eventMessageRequest y eventMessageResponse solo a los delegados. Esta configuración es la predeterminada. El propietario puede ver las respuestas a una reunión o responder a una invitación a través del evento correspondiente en el calendario delegado.

  • sendToDelegateAndInformationToPrincipal

    Outlook debe dirigir instancias eventMessageRequest y eventMessageResponse a los delegados y el propietario del calendario. Solo los delegados ven la opción para aceptar o rechazar una convocatoria de reunión, y la notificación que se envía al propietario parecerá un correo electrónico normal. El propietario aún puede responder a la reunión abriendo el evento en el calendario delegado y respondiendo.

  • sendToDelegateAndPrincipal

    Outlook debe dirigir las instancias eventMessageRequest y eventMessageResponse a los delegados y el propietario del calendario, cualquiera de los cuales puede responder a la convocatoria de reunión.

Se trata de una configuración para todo el buzón, por lo que la misma configuración se aplica a todos los delegados del propietario del buzón.

Obtener la configuración de entrega de delegación para el buzón de un usuario

El ejemplo de esta sección obtiene la propiedad mailboxSettings de un propietario del calendario que permite que Outlook dirija las convocatorias de reunión y las respuestas solo a los delegados del calendario; es decir, delegateMeetingMessageDeliveryOptions se establece como sendToDelegateOnly.

Permisos de Microsoft Graph

Use el permiso de aplicación o delegado con menos privilegios, MailboxSettings.Read, según corresponda para esta operación. Para obtener más información sobre los permisos de buzón, vea lospermisos de correo electrónico.

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

Establecer la configuración de entrega de delegación para el buzón de un usuario

El ejemplo en esta sección de presentación se actualiza la propiedad delegateMeetingMessageDeliveryOptions en sendToDelegateAndPrincipal, para que Outlook dirija las convocatorias de reunión y las respuestas del calendario delegado a todos los delegados y al propietario.

Permisos de Microsoft Graph

Use el permiso de aplicación o delegado con menos privilegios, MailboxSettings.ReadWrite, según corresponda para esta operación. Para obtener más información sobre los permisos de buzón, vea lospermisos de correo electrónico.

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

Eliminar una persona con la que se comparte o un delegado de un calendario.

En el ejemplo siguiente, Alex elimina Megan como recurso compartido del calendario de "Fiestas infantiles".

Permisos de Microsoft Graph

Use el permiso de aplicación o delegado con menos privilegios, Calendars.ReadWrite, según corresponda, para esta operación. Para obtener más información, vea permisos de calendario.

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