Table of contents
TOC
Collapse the table of content
Expand the table of content
Última actualización: 20/06/2018

Sincronizar eventos en una vista de calendario de Outlook

Se aplica a: Exchange Online | Office 365

Puedes utilizar la API REST del calendario de Outlook para sincronizar y obtener eventos nuevos, modificados o eliminados dentro de un intervalo de tiempo específico desde un calendario de usuario. La API para sincronizar una vista de calendario es una operación GET en una vista de calendario que especifica:

  • El calendario específico que se va a sincronizar en
  • Fechas de inicio y finalización para el intervalo de eventos que se va a sincronizar
  • Encabezados de solicitud especiales que diferencian esta operación GET de una operación GET vista de calendario:
    • "Prefer: odata.track-changes": debes incluir este encabezado en todas las solicitudes de sincronización, excepto en aquellas que incluyen un skipToken (se explica más detalladamente en el paso 2).
    • "Prefer: odata.maxpagesize={x}": puedes incluir este encabezado para especificar el número máximo de eventos completos que devuelve al mismo tiempo la solicitud de sincronización.

La sincronización de una vista de calendario puede implicar una o más solicitudes de sincronización; cada solicitud de sincronización es una llamada GET. El número de llamadas GET que necesitas para sincronizar una vista de calendario depende del "delta" (cuántos eventos nuevos, actualizados o eliminados) del intervalo de tiempo especificado y el maxpagesize que especificas para cada llamada GET. Después de sincronizar una vista de calendario con una ronda de llamadas GET, los intentos posteriores de sincronización no devolverán más deltas hasta que los eventos de esa vista de calendario se vuelvan a añadir, modificar o eliminar.

Flujo de trabajo para sincronizar una vista de calendario

A continuación se describe cómo se encadenan múltiples llamadas GET en una típica ronda de sincronización.

Las solicitudes de sincronización iniciales devuelven un enlace delta. Usa el deltaToken y cualquier saltarToken posterior para hacer la siguiente solicitud. Si de nuevo se devuelve un deltalink, el cliente está sincronizado con el servicio.

  1. Solicitud de sincronización inicial: la primera solicitud de sincronización establece el estado de la misma.
  2. Respuesta inicial de sincronización:
    • Comprueba que "Preference-Applied: odata.track-changes" aparece en el encabezado de respuesta para confirmar un intento de sincronización con éxito y que el recurso es compatible con la sincronización.
    • Si el intento de sincronización tuvo éxito, la respuesta inicial siempre incluirá un valor @odata.deltaLink con un deltaToken. Si la respuesta contiene algún dato, guarda el valor deltaToken para la segunda solicitud.
    • Si la respuesta inicial no tuvo éxito o no devuelve ningún dato que indique que no hay eventos en la vista de calendario especificada, la ronda de sincronización se termina.
  3. Solicitud de sincronización posterior: usa el deltaToken o el valor skipToken de la solicitud anterior para emitir la siguiente. Ver la segunda y la tercera solicitud de sincronización como ejemplos.
  4. Respuesta de sincronización posterior:
    • Si la respuesta devuelve algún dato y hay más datos para sincronizar en ese intervalo de tiempo, la respuesta incluirá un valor @odata.nextLink y un skipToken . Guarda el skipToken para la próxima solicitud de sincronización.
    • Vuelve al paso 3, sigue el nextLink, si existe, aplica el correspondiente valor skipToken en la siguiente solicitud de sincronización y sigue cualquier otro nextLinkposterior, hasta que tengas sincronizados todos los datos del intervalo de tiempo para ese calendario.
  5. Respuesta final de sincronización: cuando todos los eventos en la vista de calendario estén sincronizados, la respuesta final de esta ronda incluirá un @odata.deltaLink y un deltaToken de nuevo. Guarda el deltaTokenvalor para la próxima ronda de sincronización.

La primera ronda de solicitudes de sincronización consigue todos los eventos dentro del intervalo de tiempo y el calendario especificados. Al usar el deltaToken valor de la ronda anterior, la siguiente ronda de sincronización devolverá sólo las diferencias (eventos recién añadidos, modificados o eliminados) desde la última ronda.

Eventos periódicos y sincronización

Aquí tienes la información que necesitas saber sobre cómo se manejan los eventos periódicos para la sincronización de la vista del calendario.

  • El servicio realiza la expansión de la reunión y envía el evento maestro de la serie y todos los casos del evento dentro de la ventana de tiempo.
  • El evento maestro de la serie contiene el patrón de periodicidad y la ventana de tiempo de la serie.
  • Los casos del evento contienen información de las horas de inicio y finalización, así como información sobre la excepción de periodicidad del mismo.

Eventos eliminados y sincronización

Los eventos eliminados contendrán una propiedad de razón con el valor de "eliminado" para indicar una entidad eliminada. Si el evento es un evento maestro periódico, deberás eliminar todas las periodicidades y excepciones.

Siguientes pasos

Tanto si ya estás preparado para comenzar a compilar una aplicación o si sólo quieres obtener más información, tenemos todo lo que necesitas.

O bien obtén más información sobre como usar la plataforma de Office 365:

Apéndice: ejemplos de solicitudes y respuestas de sincronización

Esta sección contiene una ronda de 3 solicitudes de sincronización y sus respuestas para un intervalo de tiempo del calendario predeterminado del usuario.

Solicitud de sincronización inicial

GET https://contoso.com/api/v1.0/me/calendarview?startDateTime=2015-04-25T00:00:00Z&endDateTime=2015-05-30T00:00:00Z HTTP/1.1

El encabezado de la solicitud incluye las siguientes 2 líneas, que solicitan hasta 3 eventos completos para la respuesta de sincronización.

Prefer: odata.track-changes
Prefer: odata.maxpagesize=3

Respuesta inicial de sincronización

El encabezado de la respuesta incluye estas líneas, lo que indica que el intento de sincronización tuvo éxito:

HTTP/1.1 200 OK
Preference-Applied: odata.track-changes

El cuerpo de la respuesta contiene 3 eventos únicos sin periodicidades e incluye un @odata.deltaLink con un valordeltaToken.

{
    "@odata.context": "https://contoso.com/api/v1.0/$metadata#Me/CalendarView",
    "value": [
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE1M2==_bs88AAAFKPQUAAA=')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAABSlf9A==\"",
            "Id": "AAMkAGE1M2==_bs88AAAFKPQUAAA=",
            "ChangeKey": "mODEKWhc/Um6lA3uPm7PPAAABSlf9A==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-04-24T23:18:44.1912484Z",
            "DateTimeLastModified": "2015-04-24T23:18:44.8932487Z",
            "Subject": "Bug bash",
            "BodyPreview": "Let's get this right!",
            "Body": {
                "ContentType": "HTML",
                "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\n</body>\r\n</html>\r\n"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": "2015-04-24T23:30:00Z",
            "StartTimeZone": "Pacific Standard Time",
            "End": "2015-04-25T00:00:00Z",
            "EndTimeZone": "Pacific Standard Time",
            "Reminder": 15,
            "Location": {
                "DisplayName": "My house",
                "Address": {
                    "Street": "",
                    "City": "",
                    "State": "",
                    "CountryOrRegion": "",
                    "PostalCode": ""
                },
                "Coordinates": {
                    "Accuracy": "NaN",
                    "Altitude": "NaN",
                    "AltitudeAccuracy": "NaN",
                    "Latitude": "NaN",
                    "Longitude": "NaN"
                }
            },
            "ResponseStatus": {
                "Response": "Organizer",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Busy",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": true,
            "ResponseRequested": true,
            "Type": "SingleInstance",
            "SeriesMasterId": null,
            "Attendees": [
                {
                    "EmailAddress": {
                        "Address": "may@contoso.com",
                        "Name": "May Walton"
                    },
                    "Status": {
                        "Response": "None",
                        "Time": "0001-01-01T00:00:00Z"
                    },
                    "Type": "Required"
                }
            ],
            "Recurrence": null,
            "Organizer": {
                "EmailAddress": {
                    "Address": "chasity@contoso.com",
                    "Name": "Chasity Bonner"
                }
            },
            "iCalUId": "040000008200==F283EB",
            "WebLink": "https://contoso.com/owa/?ItemID=AAMkAGE1M2%3D%3D%2Bbs88AAAAAAENAACY4MQpaFz9SbqUDe4%2Bbs88AAAFKPQUAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE1M2==_bs88AAAFKPQXAAA=')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAABSlf+A==\"",
            "Id": "AAMkAGE1M2==_bs88AAAFKPQXAAA=",
            "ChangeKey": "mODEKWhc/Um6lA3uPm7PPAAABSlf+A==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-04-25T03:23:32.2628681Z",
            "DateTimeLastModified": "2015-04-25T03:23:32.2784683Z",
            "Subject": "Dinner!",
            "BodyPreview": "",
            "Body": {
                "ContentType": "HTML",
                "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\n</body>\r\n</html>\r\n"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": "2015-04-25T01:00:00Z",
            "StartTimeZone": "Eastern Standard Time",
            "End": "2015-04-25T01:30:00Z",
            "EndTimeZone": "Eastern Standard Time",
            "Reminder": 15,
            "Location": {
                "DisplayName": "Kitchen",
                "Address": {
                    "Street": "",
                    "City": "",
                    "State": "",
                    "CountryOrRegion": "",
                    "PostalCode": ""
                },
                "Coordinates": {
                    "Accuracy": "NaN",
                    "Altitude": "NaN",
                    "AltitudeAccuracy": "NaN",
                    "Latitude": "NaN",
                    "Longitude": "NaN"
                }
            },
            "ResponseStatus": {
                "Response": "Organizer",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Busy",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": true,
            "ResponseRequested": true,
            "Type": "SingleInstance",
            "SeriesMasterId": null,
            "Attendees": [
            ],
            "Recurrence": null,
            "Organizer": {
                "EmailAddress": {
                    "Address": "chasity@contoso.com",
                    "Name": "Chasity Bonner"
                }
            },
            "iCalUId": "040000008200==4F6A35",
            "WebLink": "https://contoso.com/owa/?ItemID=AAMkAGE1M2%3D%3D%2Bbs88AAAFKPQXAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE1M2==_bs88AAAFKPQcAAA=')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAABSlgBw==\"",
            "Id": "AAMkAGE1M2==_bs88AAAFKPQcAAA=",
            "ChangeKey": "mODEKWhc/Um6lA3uPm7PPAAABSlgBw==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-04-26T02:54:03.4260923Z",
            "DateTimeLastModified": "2015-04-26T02:54:03.6132924Z",
            "Subject": "Discuss all the REST API",
            "BodyPreview": "I think it will meet our requirements!",
            "Body": {
                "ContentType": "HTML",
                "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r\n"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": "2015-04-26T02:00:00Z",
            "StartTimeZone": "Pacific Standard Time",
            "End": "2015-04-26T03:00:00Z",
            "EndTimeZone": "Pacific Standard Time",
            "Reminder": 15,
            "Location": {
                "DisplayName": "",
                "Address": null,
                "Coordinates": null
            },
            "ResponseStatus": {
                "Response": "Organizer",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Busy",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": true,
            "ResponseRequested": true,
            "Type": "SingleInstance",
            "SeriesMasterId": null,
            "Attendees": [
                {
                    "EmailAddress": {
                        "Address": "kristopher@contoso.com",
                        "Name": "Kristopher Nemeth"
                    },
                    "Status": {
                        "Response": "None",
                        "Time": "0001-01-01T00:00:00Z"
                    },
                    "Type": "Required"
                }
            ],
            "Recurrence": null,
            "Organizer": {
                "EmailAddress": {
                    "Address": "chasity@contoso.com",
                    "Name": "Chasity Bonner"
                }
            },
            "iCalUId": "040000008200==D1D0BF",
            "WebLink": "https://contoso.com/owa/?ItemID=AAMkAGE1M2%3D%3D%2Bbs88AAAAAAENAACY4MQpaFz9SbqUDe4%2Bbs88AAAFKPQcAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
        }
    ],
    "@odata.deltaLink": "https://contoso.com/api/v1.0/me/calendarview/?startDateTime=2015-04-25T00%3a00%3a00Z&endDateTime=2015-05-30T00%3a00%3a00Z&%24deltatoken=d17ffb043b724d3c9521e8464ed318d6"
}

Segunda solicitud de sincronización

La segunda solicitud de sincronización usa el valor deltaToken de la primera respuesta.

GET https://contoso.com/api/v1.0/me/calendarview?startDateTime=2015-04-25T00:00:00Z&endDateTime=2015-05-30T00:00:00Z&$deltatoken=d17ffb043b724d3c9521e8464ed318d6 HTTP/1.1

El encabezado de la solicitud incluye las siguientes 2 líneas:

Prefer: odata.track-changes
Prefer: odata.maxpagesize=3

Segunda respuesta de sincronización

El segundo encabezado de la respuesta incluye esta línea, lo que indica que el intento de sincronización tuvo éxito:

HTTP/1.1 200 OK

El segundo cuerpo de la respuesta contiene un evento maestro de la serie, 2 casos individuales y 5 periodicidades asociadas al evento maestro de la serie. El cuerpo de la respuesta también incluye un valor @odata.nextLink con un skipToken.

{
    "@odata.context": "https://contoso.com/api/v1.0/$metadata#Me/CalendarView/$delta",
    "value": [
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==_bs88AAAFKPQVAAA=')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAAB7h3QQ==\"",
            "Id": "AAMkAGE==_bs88AAAFKPQVAAA=",
            "ChangeKey": "mODEKWhc/Um6lA3uPm7PPAAAB7h3QQ==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-04-25T00:18:24.7188484Z",
            "DateTimeLastModified": "2015-04-29T01:27:42.8480225Z",
            "Subject": "Little nap",
            "BodyPreview": "",
            "Body": {
                "ContentType": "HTML",
                "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\n</body>\r\n</html>\r\n"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": "2015-04-25T00:30:00Z",
            "StartTimeZone": "Pacific Standard Time",
            "End": "2015-04-25T01:00:00Z",
            "EndTimeZone": "Pacific Standard Time",
            "Reminder": 15,
            "Location": {
                "DisplayName": "In the sun",
                "Address": {
                    "Street": "",
                    "City": "",
                    "State": "",
                    "CountryOrRegion": "",
                    "PostalCode": ""
                },
                "Coordinates": {
                    "Accuracy": "NaN",
                    "Altitude": "NaN",
                    "AltitudeAccuracy": "NaN",
                    "Latitude": "NaN",
                    "Longitude": "NaN"
                }
            },
            "ResponseStatus": {
                "Response": "Organizer",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Busy",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": true,
            "ResponseRequested": true,
            "Type": "SeriesMaster",
            "SeriesMasterId": null,
            "Attendees": [
            ],
            "Recurrence": {
                "Pattern": {
                    "Type": "Daily",
                    "Interval": 1,
                    "Month": 0,
                    "Index": "First",
                    "FirstDayOfWeek": "Sunday",
                    "DayOfMonth": 0
                },
                "Range": {
                    "Type": "EndDate",
                    "StartDate": "2015-04-24T00:00:00-07:00",
                    "EndDate": "2015-04-28T00:00:00-07:00",
                    "NumberOfOccurrences": 0
                }
            },
            "Organizer": {
                "EmailAddress": {
                    "Address": "chasity@contoso.com",
                    "Name": "Chasity Bonner"
                }
            },
            "iCalUId": "040000008200==C98B54",
            "WebLink": "https://contoso.com/owa/?ItemID=AAMkAGE%3D%3D%2Bbs88AAAFKPQVAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==_bs88AAAFKPQdAAA=')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAABSlgCg==\"",
            "Id": "AAMkAGE==_bs88AAAFKPQdAAA=",
            "ChangeKey": "mODEKWhc/Um6lA3uPm7PPAAABSlgCg==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-04-26T02:54:17.4192923Z",
            "DateTimeLastModified": "2015-04-26T02:54:17.6064929Z",
            "Subject": "Discuss all the REST API",
            "BodyPreview": "I think it will meet our requirements!",
            "Body": {
                "ContentType": "HTML",
                "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r

\n"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": "2015-04-26T02:00:00Z",
            "StartTimeZone": "Pacific Standard Time",
            "End": "2015-04-26T03:00:00Z",
            "EndTimeZone": "Pacific Standard Time",
            "Reminder": 15,
            "Location": {
                "DisplayName": "",
                "Address": null,
                "Coordinates": null
            },
            "ResponseStatus": {
                "Response": "Organizer",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Busy",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": true,
            "ResponseRequested": true,
            "Type": "SingleInstance",
            "SeriesMasterId": null,
            "Attendees": [
                {
                    "EmailAddress": {
                        "Address": "diana@contoso.com",
                        "Name": "Diana Michael"
                    },
                    "Status": {
                        "Response": "None",
                        "Time": "0001-01-01T00:00:00Z"
                    },
                    "Type": "Required"
                }
            ],
            "Recurrence": null,
            "Organizer": {
                "EmailAddress": {
                    "Address": "chasity@contoso.com",
                    "Name": "Chasity Bonner"
                }
            },
            "iCalUId": "040000008200==CDA6AD",
            "WebLink": "https://contoso.com/owa/?ItemID=AAMkAGE%3D%3D%2Bbs88AAAFKPQdAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
        },

        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==_bs88AAAKB6KtAAA=')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAACgkNZA==\"",
            "Id": "AAMkAGE==_bs88AAAKB6KtAAA=",
            "ChangeKey": "mODEKWhc/Um6lA3uPm7PPAAACgkNZA==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-05-05T11:15:43.0696852Z",
            "DateTimeLastModified": "2015-05-05T11:15:43.1944851Z",
            "Subject": "Outlook APIs talk",
            "BodyPreview": "",
            "Body": {
                "ContentType": "HTML",
                "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\n</body>\r\n</html>\r\n"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": "2015-05-06T17:30:00Z",
            "StartTimeZone": "Pacific Standard Time",
            "End": "2015-05-06T18:30:00Z",
            "EndTimeZone": "Pacific Standard Time",
            "Reminder": 15,
            "Location": {
                "DisplayName": "Downtown park",
                "Address": {
                    "Street": "",
                    "City": "",
                    "State": "",
                    "CountryOrRegion": "",
                    "PostalCode": ""
                },
                "Coordinates": {
                    "Accuracy": "NaN",
                    "Altitude": "NaN",
                    "AltitudeAccuracy": "NaN",
                    "Latitude": "NaN",
                    "Longitude": "NaN"
                }
            },
            "ResponseStatus": {
                "Response": "NotResponded",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Tentative",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": false,
            "ResponseRequested": true,
            "Type": "SingleInstance",
            "SeriesMasterId": null,
            "Attendees": [
                {
                    "EmailAddress": {
                        "Address": "Donovan@contoso.com",
                        "Name": "Donovan Sandberg"
                    },
                    "Status": null,
                    "Type": "Required"
                },
                {
                    "EmailAddress": {
                        "Address": "may@contoso.com",
                        "Name": "May Walton"
                    },
                    "Status": null,
                    "Type": "Required"
                },
                {
                    "EmailAddress": {
                        "Address": "Kristopher@contoso.com",
                        "Name": "Kristopher Nemeth"
                    },
                    "Status": null,
                    "Type": "Required"
                }
            ],
            "Recurrence": null,
            "Organizer": {
                "EmailAddress": {
                    "Address": "Donovan@contoso.com",
                    "Name": "Donovan Sandberg"
                }
            },
            "iCalUId": "040000008200==C81231",
            "WebLink": "https://contoso.com/owa/?ItemID=AAMkAGE%3D%3d%2Bbs88AAAKB6KtAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAAB7h3QQ==\"",
            "Id": "AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==",
            "SeriesMasterId": "AAMkAGE_bs88AAAFKPQVAAA=",
            "Start": "2015-04-25T00:30:00Z",
            "End": "2015-04-25T01:00:00Z",
            "Type": "Occurrence"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAAB7h3QQ==\"",
            "Id": "AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==",
            "SeriesMasterId": "AAMkAGE_bs88AAAFKPQVAAA=",
            "Start": "2015-04-26T00:30:00Z",
            "End": "2015-04-26T01:00:00Z",
            "Type": "Occurrence"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAAB7h3QQ==\"",
            "Id": "AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==",
            "SeriesMasterId": "AAMkAGE_bs88AAAFKPQVAAA=",
            "Start": "2015-04-27T00:30:00Z",
            "End": "2015-04-27T01:00:00Z",
            "Type": "Occurrence"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAAB7h3QQ==\"",
            "Id": "AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==",
            "SeriesMasterId": "AAMkAGE_bs88AAAFKPQVAAA=",
            "Start": "2015-04-28T00:30:00Z",
            "End": "2015-04-28T01:00:00Z",
            "Type": "Occurrence"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAAB7h3QQ==\"",
            "Id": "AAMkAGE-Um6lA3uPm7PPAAABSj0FQAAEA==",
            "SeriesMasterId": "AAMkAGE_bs88AAAFKPQVAAA=",
            "Start": "2015-04-29T00:30:00Z",
            "End": "2015-04-29T01:00:00Z",
            "Type": "Occurrence"
        }
    ],
    "@odata.nextLink": "https://contoso.com/api/v1.0/me/calendarview/?startDateTime=2015-04-25T00%3a00%3a00Z&endDateTime=2015-05-30T00%3a00%3a00Z&%24skipToken=a1e5b10261804221aceb856143b8af19"
}

Tercera solicitud de sincronización

La tercera solicitud de sincronización usa el valor skipToken de la segunda respuesta.

GET https://contoso.com/api/v1.0/me/calendarview?startDateTime=2015-04-25T00:00:00Z&endDateTime=2015-05-30T00:00:00Z&$skiptoken=a1e5b10261804221aceb856143b8af19 HTTP/1.1

El encabezado de la solicitud incluye las siguientes 2 líneas:

Prefer: odata.track-changes
Prefer: odata.maxpagesize=3

Respuesta final de sincronización

El encabezado de la respuesta final incluye esta línea, lo que indica que el intento de sincronización tuvo éxito:

HTTP/1.1 200 OK

El cuerpo de la respuesta final contiene un evento de la serie maestra y 4 periodicidades asociadas al evento maestro de la serie. El cuerpo de la respuesta también incluye un @odata.deltaLink con un valor deltaToken, que indica que la sincronización está completa para esa vista de calendario.


{
    "@odata.context": "https://contoso.com/api/v1.0/$metadata#Me/CalendarView/$delta",
    "value": [
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==_bs88AAAKB6KrAAA=')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAACgkNYA==\"",
            "Id": "AAMkAGE==_bs88AAAKB6KrAAA=",
            "ChangeKey": "mODEKWhc/Um6lA3uPm7PPAAACgkNYA==",
            "Categories": [
            ],
            "DateTimeCreated": "2015-03-05T11:14:13.7752849Z",
            "DateTimeLastModified": "2015-03-05T11:14:13.8220851Z",
            "Subject": "Breakfast at Cafe",
            "BodyPreview": "",
            "Body": {
                "ContentType": "HTML",
                "Content": ""<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\n</body>\r\n</html>\r\n"
            },
            "Importance": "Normal",
            "HasAttachments": false,
            "Start": "2015-04-27T15:00:00Z",
            "StartTimeZone": "Pacific Standard Time",
            "End": "2015-04-27T16:00:00Z",
            "EndTimeZone": "Pacific Standard Time",
            "Reminder": 15,
            "Location": {
                "DisplayName": "City Hall",
                "Address": {
                    "Street": "",
                    "City": "",
                    "State": "",
                    "CountryOrRegion": "",
                    "PostalCode": ""
                },
                "Coordinates": {
                    "Accuracy": "NaN",
                    "Altitude": "NaN",
                    "AltitudeAccuracy": "NaN",
                    "Latitude": "NaN",
                    "Longitude": "NaN"
                }
            },
            "ResponseStatus": {
                "Response": "NotResponded",
                "Time": "0001-01-01T00:00:00Z"
            },
            "ShowAs": "Tentative",
            "IsAllDay": false,
            "IsCancelled": false,
            "IsOrganizer": false,
            "ResponseRequested": true,
            "Type": "SeriesMaster",
            "SeriesMasterId": null,
            "Attendees": [
                {
                    "EmailAddress": {
                        "Address": "Donovan@contoso.com",
                        "Name": "Donovan Sandberg"
                    },
                    "Status": null,
                    "Type": "Required"
                },
                {
                    "EmailAddress": {
                        "Address": "May@contoso.com",
                        "Name": "May Walton"
                    },
                    "Status": null,
                    "Type": "Required"
                },
                {
                    "EmailAddress": {
                        "Address": "Kristopher@contoso.com",
                        "Name": "Kristopher Nemeth"
                    },
                    "Status": null,
                    "Type": "Required"
                }
            ],
            "Recurrence": {
                "Pattern": {
                    "Type": "Daily",
                    "Interval": 1,
                    "Month": 0,
                    "Index": "First",
                    "FirstDayOfWeek": "Sunday",
                    "DayOfMonth": 0
                },
                "Range": {
                    "Type": "EndDate",
                    "StartDate": "2015-04-27T00:00:00-07:00",
                    "EndDate": "2015-04-30T00:00:00-07:00",
                    "NumberOfOccurrences": 0
                }
            },
            "Organizer": {
                "EmailAddress": {
                    "Address": "Donovan@contoso.com",
                    "Name": "Donovan Sandberg"
                }
            },
            "iCalUId": "040000008200==D272AE",
            "WebLink": "https://contoso.com/owa/?ItemID=AAMkAGE%3D%3D2Bbs88AAAKB6KrAAA3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==7PPAAACgeiqwAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAACgkNYA==\"",
            "Id": "AAMkAGE==7PPAAACgeiqwAAEA==",
            "SeriesMasterId": "AAMkAGE==_bs88AAAKB6KrAAA=",
            "Start": "2015-04-27T15:00:00Z",
            "End": "2015-04-27T16:00:00Z",
            "Type": "Occurrence"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==7PPAAACgeiqwAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAACgkNYA==\"",
            "Id": "AAMkAGE==7PPAAACgeiqwAAEA==",
            "SeriesMasterId": "AAMkAGE==_bs88AAAKB6KrAAA=",
            "Start": "2015-04-28T15:00:00Z",
            "End": "2015-04-28T16:00:00Z",
            "Type": "Occurrence"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==7PPAAACgeiqwAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAACgkNYA==\"",
            "Id": "AAMkAGE==7PPAAACgeiqwAAEA==",
            "SeriesMasterId": "AAMkAGE==_bs88AAAKB6KrAAA=",
            "Start": "2015-04-29T15:00:00Z",
            "End": "2015-04-29T16:00:00Z",
            "Type": "Occurrence"
        },
        {
            "@odata.id": "https://contoso.com/api/v1.0/Users('chasity@contoso.com')/Events('AAMkAGE==7PPAAACgeiqwAAEA==')",
            "@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAACgkNYA==\"",
            "Id": "AAMkAGE==7PPAAACgeiqwAAEA==",
            "SeriesMasterId": "AAMkAGE==_bs88AAAKB6KrAAA=",
            "Start": "2015-04-30T15:00:00Z",
            "End": "2015-04-30T16:00:00Z",
            "Type": "Occurrence"
        },

    ],
    "@odata.deltaLink": "https://contoso.com/api/v1.0/me/calendarview/?startDateTime=2015-04-25T00%3a00%3a00Z&endDateTime=2015-05-30T00%3a00%3a00Z&%24deltaToken=294a8f04cc0345c5ae093d484629e186"
}
© 2018 Microsoft