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 Versão.

Obtenha um conjunto de recursos de evento 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 definido 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 que pertença ao usuário. Ao obter alterações incrementais no 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 repositório local envolve uma rodada de várias chamadas de função delta . A chamada inicial é uma sincronização completa, e cada chamada delta subsequente na mesma rodada recebe as alterações incrementais (acréscimos, exclusões ou atualizações). O uso de deltas permite que você mantenha e sincronize incrementalmente um repositório local de eventos no calendário especificado.

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 de início e término. 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 dentro da data/hora de início e término do calendarView.
Retorna apenas um conjunto limitado de propriedades de evento por motivos de desempenho. Cliente a ser usado GET /events/{id} posteriormente 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 únicas e série master 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ário, mas não a calendários de grupo. Aplica-se a eventos em calendários de usuário e grupo.
Atualmente disponível apenas na versão beta. Disponível nas versões v1.0 e beta.

Essa API está disponível nas seguintes implantações de nuvem nacional.

Serviço global Governo dos EUA L4 US Government L5 (DOD) China operada pela 21Vianet
✅ ✅ ✅ ✅

Permissões

Escolha a(s) permissão(s) marcada(s) como menos privilegiada(s) para essa API. Use uma permissão ou permissões com privilégios mais altos somente se o aplicativo exigir. Para obter detalhes sobre permissões delegadas e de aplicativo, consulte Tipos de permissão. Para saber mais sobre essas permissões, consulte a referência de permissões.

Tipo de permissão Permissões menos privilegiadas Permissões com privilégios mais elevados
Delegado (conta corporativa ou de estudante) Calendars.ReadBasic Calendars.Read, Calendars.ReadWrite
Delegado (conta pessoal da Microsoft) Calendars.ReadBasic Calendars.Read, Calendars.ReadWrite
Aplicativo Calendars.Read Calendars.ReadBasic, 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 modo de exibição de calendário especificado. Essa sintaxe não contém nenhum token de estado.

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

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 comecem em ou após uma data/hora específica, no(s) calendário(s) de usuário especificado(s):

  • Para obter alterações incrementais de todos os eventos ou de eventos que comecem 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 comecem 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 comecem 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, todos os eventos, ou os eventos que comecem em ou após a data/hora especificada no grupo de calendários e no calendário especificados:

    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 delimitado por datas/horas de início e término, no calendário do usuário especificado:

  • Para obter alterações incrementais em uma 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 do 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 calendárioExibir 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 acompanhamento 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 @odata.nextLink ou @odata.deltaLink fornecida na resposta. Você só precisa especificar uma vez os parâmetros de consulta desejados antecipadamente. Em solicitações subsequentes, copie e aplique a URL @odata.nextLink ou @odata.deltaLink da resposta anterior, já que essa URL inclui os parâmetros codificados 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 fuso horário é especificado na parte de deslocamento de fuso horário do valor do parâmetro e não é afetado Prefer: outlook.timezone pelo cabeçalho, se presente. Se nenhum deslocamento de fuso horário for incluído no valor, ele será interpretado como UTC.
Opcional para delta em eventos em um calendário.
Necessário para delta no 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 fuso horário é especificado na parte de deslocamento de fuso horário do valor do parâmetro e não é afetado Prefer: outlook.timezone pelo cabeçalho, se presente. Se nenhum deslocamento de fuso horário for incluído no valor, ele será interpretado como UTC.
Não é suportado pela delta em eventos em um calendário.
Necessário para delta no calendarView.
$deltatoken string Um token de estado retornado na @odata.deltaLink URL da chamada de função delta anterior para o mesmo modo de exibição de calendário, indicando a conclusão da rodada de controle de alterações. Salve e aplique a URL inteira @odata.deltaLink , incluindo esse token, na primeira solicitação da próxima rodada de controle de alterações para essa exibição de calendário.
$skiptoken string Um token de estado retornado na URL @odata.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

  • Esperar uma delta chamada de função em um calendárioView para retornar as mesmas propriedades que você normalmente obteria de um GET /calendarView solicitação. Você não pode usar $select 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: $expand, $filter,$orderby, $searche $select.

Cabeçalhos de solicitação

Nome Tipo Descrição
Autorização string {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.
Content-Type string application/json. Obrigatório.
Preferir cadeia de caracteres odata.maxpagesize={x}. Opcional.
Preferir string outlook.timezone={Time zone string}. Opcional, supõe-se o UTC se estiver ausente.

Resposta

Função Delta em eventos (versão prévia)

Se for bem-sucedido, esse método retornará um código de 200 OK 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} mais tarde para expandir os eventos da resposta.

Função Delta no calendarView

Se for bem-sucedido, esse método retornará um código de 200 OK 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.

Em uma rodada de chamadas de função delta limitadas pelo intervalo de datas de um calendarView, às vezes você pode encontrar uma chamada delta retornando dois tipos de eventos com @removed o 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 sob @removed para o intervalo de datas que seu cenário requer.

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 conectado, que ocorrem no ou após o parâmetro especificado startDateTime . A solicitação inicial não inclui nenhum token de estado.

A solicitação usa o Prefer: odata.maxpagesize cabeçalho 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é @odata.nextLink obter uma @odata.deltaLink na 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 cabeçalho de resposta @odata.nextLink ) ou um deltaToken (em um cabeçalho de resposta @odata.deltaLink ). Respectivamente, eles indicam se você deve continuar com a rodada ou se concluiu a obtenção de todas as alterações para essa rodada.

A resposta abaixo mostra um skipToken em um cabeçalho 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 no 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 conectado, dentro do intervalo de datas indicado pelo calendarView. A solicitação inicial não inclui nenhum token de estado.

A solicitação usa o Prefer: odata.maxpagesize cabeçalho para limitar o número máximo de eventos em cada resposta a 2. Continue chamando a delta função usando a consulta retornada até @odata.nextLink obter todos os eventos nesse modo de exibição de calendário e a @odata.deltaLink 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 cabeçalho de resposta @odata.nextLink ) ou um deltaToken (em um cabeçalho de resposta @odata.deltaLink ). Respectivamente, eles indicam se você deve continuar com a rodada ou se concluiu a obtenção de todas as alterações para essa rodada.

A resposta a seguir mostra um skipToken em um cabeçalho de resposta @odata.nextLink .

Observação: O objeto de resposta exibido 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.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.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.com"
                    }
                }
            ],
            "organizer": {
                "emailAddress": {
                    "name": "Samantha Booth",
                    "address": "samanthab@contoso.com"
                }
            }
        }
    ]
}