evento: delta

Namespace: microsoft.graph

Importante

As APIs na versão /beta no Microsoft Graph estão sujeitas a alterações. Não há suporte para o uso dessas APIs em aplicativos de produção. Para determinar se uma API está disponível na v1.0, use o seletor de versão.

Obter um conjunto de recursos de evento que foram adicionados, excluídos ou atualizados em um ou mais calendários.

Você pode obter tipos específicos dessas alterações incrementais nos eventos em todos os calendários de uma caixa de correio ou em um calendário específico ou em uma coleção de eventos de um calendarView (intervalo de eventos definidos por datas de início e término) de um calendário. O calendário pode ser o calendário padrão ou algum outro calendário especificado do usuário. No caso de obter alterações incrementais em calendarView, o calendário também pode ser um calendário de grupo.

Normalmente, a sincronização de eventos em um calendário ou calendarView em um armazenamento local envolve uma série de várias chamadas de função delta. A chamada inicial é uma sincronização completa e cada chamada delta subsequente na mesma rodada obtém as alterações incrementais (adições, exclusões ou atualizações). Isso permite manter e sincronizar um armazenamento local de eventos no calendário especificado, sem precisar buscar todos os eventos desse calendário do servidor sempre.

A tabela a seguir lista as diferenças entre a função delta em eventos e a função delta em um calendarView em um calendário.

Função Delta em eventos Função Delta no calendarView
Obtém alterações incrementais de todos os eventos em um calendário não limitado por um intervalo de datas inicial e final. Como alternativa, você pode obter alterações incrementais dos eventos em um calendário limitado por uma hora de início, começando em ou após essa data/hora. Obtém alterações incrementais de eventos na data/hora inicial e final do calendarView.
Retorna apenas um conjunto limitado de propriedades de evento por motivos de desempenho. Cliente a ser usado posteriormente GET /events/{id} para expandir quaisquer eventos. A expansão do lado do servidor retorna um conjunto mais completo de propriedades de evento.
A resposta inclui instâncias individuais e o mestre de série recorrente. A resposta inclui instâncias únicas e ocorrências e exceções de séries recorrentes.
Aplica-se a eventos em calendários de usuários, mas não a calendários de grupo. Aplica-se a eventos em calendários de usuários e grupos.
Atualmente disponível apenas na versão beta. Disponível nas versões v1.0 e beta.

Permissões

Uma das seguintes permissões é obrigatória para chamar esta API. Para saber mais, incluindo como escolher permissões, confira Permissões.

Tipo de permissão Permissões (da com menos para a com mais privilégios)
Delegado (conta corporativa ou de estudante) Calendars.Read, Calendars.ReadWrite
Delegado (conta pessoal da Microsoft) Calendars.Read, Calendars.ReadWrite
Aplicativo Calendars.Read, Calendars.ReadWrite

Solicitação HTTP

Esta seção mostra a sintaxe de solicitação HTTP para a chamada de função delta inicial para iniciar uma sincronização completa que recupera todos os eventos no calendário ou no visualização de calendário especificado. Essa sintaxe não contém tokens de estado.

A URL de consulta retornada em uma nextLink ou de uma resposta deltaLink bem-sucedida inclui um token de estado. Para qualquer chamada de função delta subsequente, use a URL de consulta em uma ou nextLink deltaLink precedindo-a.

Função Delta em eventos em um calendário do usuário (visualização)

Aplique a função delta em todos os eventos ou eventos que começam em ou após uma data/hora específica, nos calendários do usuário especificados:

  • Para obter alterações incrementais de todos os eventos ou de eventos que começam em ou após a data/hora especificada na caixa de correio do usuário:

    GET /me/events/delta 
    GET /users/{id | userPrincipalName}/events/delta 
    
    GET /me/events/delta?startDateTime={start_datetime}
    GET /users/{id | userPrincipalName}/events/delta?startDateTime={start_datetime}
    
  • Para obter alterações incrementais de todos os eventos ou de eventos que começam em ou após a data/hora especificada no calendário padrão do usuário:

    GET /me/calendar/events/delta 
    GET /users/{id | userPrincipalName}/calendar/events/delta 
    
    GET /me/calendar/events/delta?startDateTime={start_datetime} 
    GET /users/{id | userPrincipalName}/calendar/events/delta?startDateTime={start_datetime}
    
  • Para obter alterações incrementais de todos os eventos ou de eventos que começam em ou após a data/hora especificada no calendário do usuário especificado:

    GET /me/calendars/{id}/events/delta 
    GET /users/{id | userPrincipalName}/calendars/{id}/events/delta 
    
    GET /me/calendars/{id}/events/delta?startDateTime={start_datetime} 
    GET /users/{id | userPrincipalName}/calendars/{id}/events/delta?startDateTime={start_datetime}
    
  • Para obter alterações incrementais de todos os eventos ou de eventos que começam em ou após a data/hora especificada no grupo de calendários especificado e no calendário:

    GET /me/calendargroups/{id}/calendars/{id}/events/delta 
    GET /users/{id | userPrincipalName}/calendargroups/{id}/calendars/{id}/events/delta 
    
    GET /me/calendargroups/{id}/calendars/{id}/events/delta?startDateTime={start_datetime} 
    GET /users/{id | userPrincipalName}/calendargroups/{id}/calendars/{id}/events/delta?startDateTime={start_datetime}
    

Função Delta no calendarView em um calendário do usuário

Aplique a função delta em um intervalo de eventos delimitados por data/hora inicial e final, no calendário do usuário especificado:

  • Para obter alterações incrementais em um modo de exibição de calendário do calendário padrão do usuário:

    GET /me/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    GET /users/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    
  • Para obter alterações incrementais em uma exibição de calendário do calendário de usuário especificado:

    GET /me/calendars/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    GET /users/{id}/calendars/{id}/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
    

Função Delta no calendarView em um calendário de grupo

  • Para obter alterações incrementais em uma exibição de calendário do calendário de um grupo:
    GET /groups/{id}/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
    

Parâmetros de consulta

O controle de alterações incorre em uma rodada de uma ou mais chamadas de função delta. Se você usar qualquer parâmetro de consulta (diferente de $deltatoken e $skiptoken), especifique-o na primeira solicitação delta. O Microsoft Graph codifica automaticamente todos os parâmetros especificados na parte do token da URL nextLink ou deltaLink fornecida na resposta. Você só precisa especificar uma vez os parâmetros de consulta desejados antecipadamente. Em solicitações subsequentes, basta copiar e aplicar a URL ou da resposta anterior, pois essa URL já inclui os nextLink deltaLink parâmetros codificados e desejados.

Parâmetro de consulta Tipo Descrição
startDateTime String A data e a hora de início do intervalo de tempo, representadas no formato ISO 8601. Por exemplo, "2019-11-08T19:00:00-08:00".
O timezone é especificado na parte de deslocamento de zona de tempo do valor do parâmetro e não é afetado pelo Prefer: outlook.timezone header, se presente. Se nenhum deslocamento de fuso horário estiver incluído no valor, ele será interpretado como UTC.
Opcional para delta em eventos em um calendário.
Obrigatório para delta em calendarView.
endDateTime String A data e a hora de término do intervalo de tempo, representadas no formato ISO 8601. Por exemplo, "2019-11-08T20:00:00-08:00".
O timezone é especificado na parte de deslocamento de zona de tempo do valor do parâmetro e não é afetado pelo Prefer: outlook.timezone header, se presente. Se nenhum deslocamento de fuso horário estiver incluído no valor, ele será interpretado como UTC.
Não há suporte para delta em eventos em um calendário.
Obrigatório para delta em calendarView.
$deltatoken string Um token de estado retornado na URL deltaLink da chamada de função delta anterior do mesmo modo de exibição de calendário, indicando a conclusão da série de controle de alterações. Salve e aplique toda a URL deltaLink, incluindo esse token na primeira solicitação da próxima série de controle do modo de exibição de calendário.
$skiptoken string Um token de estado retornado na URL nextLink da chamada de função delta anterior indicando que não há mais alterações a serem controladas no mesmo modo de exibição de calendário.

Parâmetros de consulta OData

  • Espere uma chamada de função delta em um calendarView para retornar as mesmas propriedades que você normalmente obteria de uma GET /calendarview solicitação. Você não pode $select usar para obter apenas um subconjunto dessas propriedades.

  • A função delta não dá suporte aos seguintes parâmetros de consulta para eventos em um calendário do usuário ou eventos em um calendarView: , , , , e $expand $filter $orderby $search $select .

Cabeçalhos de solicitação

Nome Tipo Descrição
Autorização string {token} de portador. Obrigatório.
Content-Type string application/json. Obrigatório.
Preferir cadeia de caracteres odata.maxpagesize={x}. Opcional.
Preferir cadeia de caracteres outlook.timezone={Cadeia de caracteres de fuso horário}. Opcional, supõe-se o UTC se estiver ausente.

Resposta

Função Delta em eventos (visualização)

Se tiver êxito, este método retornará um código 200 OK de resposta e uma coleção de eventos no corpo da resposta. Cada evento na resposta contém apenas as propriedades id, type, start e end por motivos de desempenho. Use GET /events/{id} subsequentemente para expandir quaisquer eventos da resposta.

Função Delta no calendarView

Se tiver êxito, este método retornará um código 200 OK de resposta e uma coleção de eventos no corpo da resposta.

Espere obter todas as propriedades que você normalmente obteria de uma GET /calendarview solicitação.

Dentro de uma rodada de chamadas de função delta vinculadas pelo intervalo de datas de um calendarView, você pode encontrar uma chamada delta retornando dois tipos de eventos com o @removed motivo deleted :

  • Eventos que estão dentro do intervalo de datas e que foram excluídos desde a chamada delta anterior.
  • Eventos que estão fora do intervalo de datas e que foram adicionados, excluídos ou atualizados desde a chamada delta anterior.

Filtre os eventos @removed em para o intervalo de datas que seu cenário exige.

Exemplos

Exemplo 1: função Delta em eventos em um calendário (visualização)

Solicitação

O exemplo a seguir mostra a solicitação de sincronização inicial para obter eventos no calendário padrão do usuário in-loco, que ocorrem em ou após o parâmetro startDateTime especificado. A solicitação inicial não inclui nenhum token de estado.

A solicitação usa Prefer: odata.maxpagesize o header para limitar o número máximo de eventos em cada resposta a 1. Continue chamando a delta função usando a consulta retornada até obter uma na @odata.nextLink @odata.deltaLink resposta.

GET https://graph.microsoft.com/beta/me/calendar/events/delta?startDateTime=2020-06-12T00:00:00Z

Prefer: odata.maxpagesize=1

Resposta

Se a solicitação for bem-sucedida, a resposta incluirá um token de estado, que é um skipToken (em um header de resposta @ odata.nextLink) ou um deltaToken (em um header de resposta @ odata.deltaLink). Respectivamente, eles indicam se você deve continuar com a rodada ou se você concluiu todas as alterações para essa rodada.

A resposta a seguir mostra um skipToken em um header de resposta @ odata.nextLink.

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.nextLink":"https://graph.microsoft.com/beta/me/calendar/events/delta?$skiptoken=R0usmcdvmMu7jxWP8",
  "value": [
    { 
      "id": " AAMkADllMWMwNDkzLWJlY2EtNDIyOS1iZjAA=", 
      "type": "singleInstance", 
      "start": {  
             "DateTime": "2020-02-19T10:00:00.0000000",  
             "TimeZone": "UTC" 
         },  
       "end": {  
                "DateTime": "2020-02-19T11:00:00.0000000",  
                "TimeZone": "UTC"        
          }  
        } 
  ]
}

Exemplo 2: função Delta em calendarView

Solicitação

O exemplo a seguir mostra a solicitação de sincronização inicial para obter eventos no calendário especificado do usuário in-loco, dentro do intervalo de datas indicadas pelo calendarView. A solicitação inicial não inclui nenhum token de estado.

A solicitação usa Prefer: odata.maxpagesize o header para limitar o número máximo de eventos em cada resposta a 2. Continue chamando a função usando a consulta retornada até que você receba todos os eventos nesse delta @odata.nextLink exibição de calendário e @odata.deltaLink um na resposta.

GET https://graph.microsoft.com/beta/me/calendars/AAMkADI5M1BbeAAA=/calendarview/delta?startDateTime=2020-06-01T00:00:00Z&endDateTime=2020-06-10T00:00:00Z

Prefer: odata.maxpagesize=2

Resposta

Se a solicitação for bem-sucedida, a resposta incluirá um token de estado, que é um skipToken (em um header de resposta @ odata.nextLink) ou um deltaToken (em um header de resposta @ odata.deltaLink). Respectivamente, eles indicam se você deve continuar com a rodada ou se você concluiu todas as alterações para essa rodada.

A resposta a seguir mostra um skipToken em um header de resposta @ odata.nextLink.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(event)",
    "@odata.nextLink": "https://graph.microsoft.com/beta/me/calendars/AAMkADI5M1BbeAAA=/calendarview/delta?$skiptoken=R0usmcdvmMu7jxWP8",
    "value": [
        {
            "@odata.type": "#microsoft.graph.event",
            "@odata.etag": "W/\"Jdsb3FEkPk2qoUHCdliYowACwixTgw==\"",
            "createdDateTime": "2020-06-16T04:05:43.8668791Z",
            "lastModifiedDateTime": "2020-06-16T04:08:27.354268Z",
            "changeKey": "Jdsb3FEkPk2qoUHCdliYowACwixTgw==",
            "categories": [],
            "transactionId": null,
            "originalStartTimeZone": "Pacific Standard Time",
            "originalEndTimeZone": "Pacific Standard Time",
            "uid": "040000008200E00074C5B7101A82E00800000000F088B8B95843D601000000000000000010000000165CD5547CFC9545B6492B261750B48C",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": false,
            "hasAttachments": false,
            "subject": "Summer party",
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "IsRoomRequested": false,
            "AutoRoomBookingStatus": "None",
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADI5MAAKkeE1QAAA%3D&exvsurl=1&path=/calendar/item",
            "onlineMeetingUrl": null,
            "isOnlineMeeting": false,
            "onlineMeetingProvider": "unknown",
            "allowNewTimeProposals": true,
            "OccurrenceId": null,
            "isDraft": false,
            "recurrence": null,
            "AutoRoomBookingOptions": null,
            "onlineMeeting": null,
            "id": "AAMkADI5MAAKkeE1QAAA=",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "body": {
                "contentType": "html",
                "content": "<html>\r\n<head></head>\r\n<body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\">&nbsp;</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
            },
            "start": {
                "dateTime": "2020-06-02T20:00:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2020-06-02T22:30:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "",
                "locationType": "default",
                "uniqueIdType": "unknown",
                "address": {
                    "type": "unknown"
                },
                "coordinates": {}
            },
            "locations": [],
            "attendees": [
                {
                    "type": "required",
                    "status": {
                        "response": "none",
                        "time": "0001-01-01T00:00:00Z"
                    },
                    "emailAddress": {
                        "name": "Samantha Booth",
                        "address": "samanthab@contoso.onmicrosoft.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.type": "#microsoft.graph.event",
            "@odata.etag": "W/\"Jdsb3FEkPk2qoUHCdliYowACwixTfw==\"",
            "createdDateTime": "2020-06-16T04:06:18.386713Z",
            "lastModifiedDateTime": "2020-06-16T04:08:19.5694048Z",
            "changeKey": "Jdsb3FEkPk2qoUHCdliYowACwixTfw==",
            "categories": [],
            "transactionId": null,
            "originalStartTimeZone": "Pacific Standard Time",
            "originalEndTimeZone": "Pacific Standard Time",
            "uid": "040000008200E00074C5B7101A82E0080000000060074BC55843D6010000000000000000100000002D33A89F36B10D43A12FD990B62858B2",
            "reminderMinutesBeforeStart": 15,
            "isReminderOn": true,
            "hasAttachments": false,
            "subject": "Summer party part 2",
            "bodyPreview": "",
            "importance": "normal",
            "sensitivity": "normal",
            "isAllDay": false,
            "isCancelled": false,
            "isOrganizer": true,
            "IsRoomRequested": false,
            "AutoRoomBookingStatus": "None",
            "responseRequested": true,
            "seriesMasterId": null,
            "showAs": "busy",
            "type": "singleInstance",
            "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADI5MAAKkeE1RAAA%3D&exvsurl=1&path=/calendar/item",
            "onlineMeetingUrl": null,
            "isOnlineMeeting": false,
            "onlineMeetingProvider": "unknown",
            "allowNewTimeProposals": true,
            "OccurrenceId": null,
            "isDraft": false,
            "recurrence": null,
            "AutoRoomBookingOptions": null,
            "onlineMeeting": null,
            "id": "AAMkADI5MAAKkeE1RAAA=",
            "responseStatus": {
                "response": "none",
                "time": "0001-01-01T00:00:00Z"
            },
            "body": {
                "contentType": "html",
                "content": "<html>\r\n<head></head>\r\n<body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"\">\r\n<div class=\"WordSection1\">\r\n<p class=\"MsoNormal\">&nbsp;</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
            },
            "start": {
                "dateTime": "2020-06-04T19:30:00.0000000",
                "timeZone": "UTC"
            },
            "end": {
                "dateTime": "2020-06-04T22:30:00.0000000",
                "timeZone": "UTC"
            },
            "location": {
                "displayName": "",
                "locationType": "default",
                "uniqueIdType": "unknown",
                "address": {
                    "type": "unknown"
                },
                "coordinates": {}
            },
            "locations": [],
            "attendees": [
                {
                    "type": "required",
                    "status": {
                        "response": "none",
                        "time": "0001-01-01T00:00:00Z"
                    },
                    "emailAddress": {
                        "name": "Samantha Booth",
                        "address": "samanthab@contoso.onmicrosoft.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.onmicrosoft.com"
                }
            }
        }
    ]
}

Confira também