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 que lo comparten. 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.

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. Especificar estos identificadores de calendario y eventos en el buzón de la persona que los comparte (ID. de usuario o nombre principal de usuario de Nuria) devolverá un error. Para usar los ID de eventos y calendario que se corresponden con el buzón de las personas que los comparten, vea Obtener un calendario compartido personalizado o sus eventos desde el buzón de la persona que lo comparte.

Nota: los permisos de uso compartido (Calendars.Read.Shared o Calendars.ReadWrite.Shared) le permiten leer o escribir eventos en una carpeta compartida o delegada. 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 el proceso correctamente, obtendrá HTTP 200 OK y una instancia calendar que representa el calendario principal compartido de Alejandro en su mismo buzón.

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 Alejandro no ha compartido ni delegado su calendario principal con Nuria, especificar el ID. de usuario o el nombre principal de usuario de Alejandro en las operaciones GET anteriores, devolverá un error.

Obtener el calendario compartido personalizado o sus eventos desde el buzón de correo de la persona que lo comparte

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 una persona que lo comparte, Adele, la propiedad canShare del calendario compartido es siempre 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.OnMicrosoft.com"
                }
            },
            {
                "id": "AAMkADAABf0JlyAAA=",
                "name": "Kids parties",
                "color": "lightYellow",
                "changeKey": "NDznl+Uh50WkanaCOKHkaQAAYumJRQ==",
                "canShare": false,
                "canViewPrivateItems": false,
                "canEdit": false,
                "owner": {
                    "name": "Alex Wilber",
                    "address": "AlexW@contoso.OnMicrosoft.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 el proceso correctamente, obtendrá HTTP 200 OK y el evento solicitado, los eventos o el calendario que Alejandro ha compartido con Adele.

Pasos siguientes

Obtenga más información sobre: