Obtener el calendario de Outlook compartido o delegado y sus eventos

En Outlook, el propietario de un calendario puede compartirlo con otros usuarios y permitirles ver o modificar eventos en el mismo. El calendario compartido puede ser el calendario principal del propietario o un calendario personalizado creado por él. El propietario también puede nominar un delegado que actúe en su nombre, para recibir o responder a convocatorias de reunión y crear o cambiar elementos en el calendario principal.

Mediante programación, Microsoft Graph admite la lectura y escritura de eventos en calendarios compartidos por otros usuarios, así como la lectura de los calendarios compartidos y la actualización del nombre del calendario para los destinatarios del recurso compartido. El soporte también se aplica a los calendarios que se han delegado. En el resto de este artículo se describe cómo leer eventos en un calendario compartido o delegado. Para crear eventos, consulte Crear eventos de Outlook en un calendario compartido o delegado.

Destinatario del recurso compartido: obtener un calendario compartido o sus eventos directamente desde el buzón del propietario del calendario

Los tres ejemplos siguientes usan este escenario: en Outlook, Alejandro ha compartido su calendario principal con Nuria y le ha dado permisos de lectura. Si Nuria inicia sesión en la aplicación y proporciona permisos delegados (Calendars.Read.Shared o Calendars.ReadWrite.Shared), en nombre de Nuria, la aplicación puede tener acceso al calendario principal de Alejandro y sus eventos directamente desde el buzón de Alejandro.

Los tres ejemplos especifican la identidad del propietario (ID. de usuario o nombre principal de usuario de Alejandro) y el método abreviado de calendar. Tienen acceso a los ID. de calendario y de eventos que se corresponden solo con el buzón del propietario. La especificación de estos identificadores de calendario y evento en el buzón del destinatario del recurso compartido (el identificador de usuario o el nombre principal de usuario de Megan) devolvería un error. Para usar los identificadores de calendario y de evento que corresponden al buzón del destinatario del recurso compartido, consulte Share recipient: Get shared, custom calendar or its events from share recipient's mailbox (Compartir destinatario: Obtener un calendario compartido, personalizado o sus eventos del buzón del destinatario del recurso compartido).

Nota:

Los permisos de uso compartido (Calendars.Read.Shared o Calendars.ReadWrite.Shared) le permiten leer o escribir eventos en un calendario compartido o delegado. No admiten la suscripción a notificaciones de cambios en elementos de dichas carpetas. Para configurar las suscripciones de notificación de cambios a los eventos en un calendario compartido o delegado, o cualquier otro calendario de recursos de un usuario en el espacio empresarial, use los permisos de aplicación Calendars.Read.

Nuria: obtener el calendario principal compartido directamente desde el buzón de Alejandro

Al iniciar sesión como Nuria, consiga el calendario principal que Alejandro ha compartido con Nuria, directamente desde el buzón de Alejandro:

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

Una vez completado correctamente, obtendrá HTTP 200 OK y una instancia de calendario que representa el calendario principal compartido de Alex en el buzón de Alex.

Nuria: obtener un evento del calendario principal compartido directamente desde el buzón de Alejandro

Al iniciar sesión como Nuria, la aplicación puede obtener un evento específico en el calendario principal que Alejandro ha compartido con Nuria, directamente desde el buzón de Alejandro:

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

Una vez completado el proceso correctamente, obtendrá HTTP 200 OK y la instancia event identificada por {id} en el calendario principal de Alejandro, directamente desde su buzón.

Nuria: obtener todos los eventos del calendario principal compartido del buzón de Alejandro

Al iniciar sesión como Nuria, consiga todos los eventos del calendario principal que Alejandro ha compartido con ella, directamente desde el buzón de Alejandro:

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

Una vez completado el proceso correctamente, obtendrá HTTP 200 OK y una colección de instancias event del calendario principal de Alejandro directamente desde su buzón.

Las mismas funciones GET se aplican si Alejandro ha delegado el acceso a Nuria a su calendario principal o si ha delegado su buzón completo.

Si Alex no ha compartido ni delegado su calendario principal con Megan, especificar el identificador de usuario o el nombre principal de usuario de Alex en las operaciones GET anteriores devuelven un error.

Destinatario del recurso compartido: obtenga un calendario personalizado o sus eventos compartidos desde el buzón del destinatario del recurso compartido.

Si Alejandro ha compartido un calendario personalizado (por ejemplo, un calendario denominado "Fiesta para niños") con Adele y ella ha proporcionado permisos delegados (Calendars.Read o Calendars.ReadWrite), la aplicación puede obtener los eventos o el calendario de la copia local del calendario de Alejandro en el buzón de Adele, como se describe a continuación.

  1. Al iniciar sesión como Adele, use cualquiera de las siguientes solicitudes para obtener todos los calendarios a los que tiene acceso Adele, incluido el calendario personalizado compartido.

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

    Una respuesta correcta incluye el código de respuesta HTTP 200 y la colección de calendarios a los que Adele tiene acceso, incluido el calendario ("Fiestas para niños") cuyo nombre de propietario es "Alex Wilber", como el segundo calendario de la respuesta. Para un destinatario del recurso compartido, Adele, la propiedad canShare del calendario compartido siempre es false.

    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. Al iniciar sesión como Adele, consiga el calendario compartido o uno o más eventos del calendario compartido mediante el ID del segundo calendario de la respuesta del paso 1. Los ID. del calendario compartido y su evento se corresponden con la copia local del calendario de Alejandro en el buzón 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
    

Una vez completado correctamente, obtendrá HTTP 200 OK y el evento, los eventos o el calendario solicitados que Alex ha compartido con Adele.