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 compartidos que pueden ver toda la información en y tener acceso de escritura a eventos no privados. 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 del calendario o la delegación puedan surtir efecto, el propietario envía un destinatario o delegado del recurso compartido a una invitación y el destinatario o delegado del recurso compartido acepta la invitación, o bien 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 como se describe en este tema están disponibles actualmente en el punto de conexión v1.0, con la excepción de las propiedades de calendario esCompartido y esSharedWithMe. Estas dos propiedades se exponen solo en el punto de conexión beta.

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

En esta sección:

Cada calendario está asociado 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 el propietario del calendario ha configurado. La enumeración calendarRoleType define el rango de permisos que Microsoft Graph admite:

  • none Este valor solo My Organization se aplica a los que no tienen permisos 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 del calendario.
  • limitedRead El destinatario del recurso compartido puede ver el estado de disponibilidad del propietario y los títulos y las 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 los eventos no privados en el calendario.
  • write El destinatario del recurso compartido puede ver el estado de disponibilidad del propietario en eventos privados y puede 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 calendario: actualizar los permisos de un destinatario o delegado de recurso compartido existente en un calendario

Con el consentimiento de Alex o administrador, puede actualizar los permisos asignados a un destinatario o delegado de recurso compartido existente (especificados por la propiedad role ), siempre y cuando los nuevos permisos sean compatibles con los permitidosRoles configurados inicialmente para el destinatario o delegado del recurso compartido para ese calendario.

Aparte de la propiedad role , no se pueden actualizar otras propiedades de un destinatario o delegado de recurso compartido existente. Cambiar el valor de la propiedad emailAddress requiere eliminar el destinatario o delegado del recurso compartido y configurar una nueva instancia de calendarPermission de nuevo.

En el ejemplo de esta sección se actualiza la propiedad role y se cambia el permiso de un destinatario de recursos compartidos existente, Adele, de read a write para el calendario personalizado "Kids parties".

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

Compartir destinatario o delegado: obtener 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 Nuria no es el propietario de este calendario.
  • canViewPrivateItems es verdadero para el delegado Nuria, como ha configurado Sergio. En el caso de una persona con la que se comparte que no es delegado, el valor de esta propiedad es siempre falso.
  • 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