Поделиться через


event: delta

Пространство имен: microsoft.graph

Получение набора ресурсов event, которые были добавлены в calendarView (диапазон событий, определяемый датами начала и окончания) основного календаря пользователя, обновлены в нем или удалены из него.

Как правило, синхронизация событий в calendarView в локальном хранилище влечет за собой цикл из нескольких вызовов функции delta. Исходный вызов связан с полной синхронизацией, а каждый последующий вызов delta из того же цикла — с дополнительными изменениями (добавлениями, удалениями или обновлениями). Это позволяет обслуживать и синхронизировать локальное хранилище событий в указанном calendarView, не загружая каждый раз все события этого календаря с сервера.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.

Тип разрешения Разрешения с наименьшими привилегиями Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись) Calendars.Read Calendars.ReadBasic, Calendars.ReadWrite
Делегированные (личная учетная запись Майкрософт) Calendars.Read Calendars.ReadBasic, Calendars.ReadWrite
Для приложений Calendars.Read Calendars.ReadBasic, Calendars.ReadWrite

HTTP-запрос

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

Параметры запроса

При отслеживании изменений в событиях выполняется цикл из одного или нескольких вызовов разностных функций. Если вы используете параметры запроса, отличные от $deltatoken и $skiptoken, их необходимо указать в начальном запросе delta. Microsoft Graph автоматически кодирует указанные параметры в маркере, входящем в состав URL-адреса @odata.nextLink или @odata.deltaLink, включенного в отклик. Параметры запроса нужно указать только один раз в первом запросе. В последующих запросах просто скопируйте и примените @odata.nextLink URL-адрес или @odata.deltaLink из предыдущего ответа, так как этот URL-адрес уже содержит закодированные требуемые параметры.

Параметр запроса Тип Описание
startDateTime String Дата и время начала диапазона, представленные в формате ISO 8601. Пример: "2015-11-08T19:00:00.0000000".
endDateTime String Дата и время окончания диапазона, представленные в формате ISO 8601. Пример: "2015-11-08T20:00:00.0000000".
$deltatoken string Маркер состояния, возвращенный в @odata.deltaLink URL-адресе предыдущего вызова разностной функции для того же представления календаря, указывающий на завершение этого цикла отслеживания изменений. Сохраните и примените весь @odata.deltaLink URL-адрес, включая этот маркер, в первом запросе следующего цикла отслеживания изменений для этого представления календаря.
$skiptoken string Этот маркер состояния возвращается в URL-адресе @odata.nextLink при предыдущем вызове функции delta и указывает на то, что в представлении календаря остаются не отслеженные изменения.

Параметры запросов OData

  • Ожидайте вызова функции delta в calendarView, чтобы вернуть те же свойства, которые обычно получают с помощью запроса GET /calendarView. Вы не можете использовать $select для получения только подмножества этих свойств.

  • Существуют и другие параметры запросов OData, которые функция delta для calendarView не поддерживает: $expand, $filter, $orderby и $search.

Заголовки запросов

Имя Тип Описание
Authorization string Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации.
Content-Type string application/json. Обязательный параметр.
Prefer string odata.maxpagesize={x}. Необязательный параметр.
Prefer string {Часовой пояс}. Необязательный, предполагается в формате UTC, если отсутствует.

Отклик

В случае успешного выполнения этот метод возвращает код отклика 200 OK и объект коллекции event в теле отклика.

В цикле вызовов функции delta, ограниченном диапазоном дат calendarView,, можно найти вызов delta, возвращающий два типа событий в @removed с причиной deleted:

  • События, которые находятся в диапазоне дат и удалены с момента предыдущего вызова delta.
  • События, которые находятся за пределами диапазона дат и добавлены, удалены или обновлены с момента предыдущего вызова delta.

Отфильтруйте события в @removed для диапазона дат, которого требует сценарий.

Пример

Запрос

В следующем примере показано, как выполнить один вызов функции delta и ограничить максимальное количество событий в теле отклика двумя.

Чтобы отследить изменения в представлении календаря, выполните один или несколько вызовов функции delta с правильными маркерами состояния, чтобы получить набор добавочных изменений с момента последнего разностного запроса.

GET https://graph.microsoft.com/v1.0/me/calendarView/delta?startdatetime={start_datetime}&enddatetime={end_datetime}
Prefer: odata.maxpagesize=2

Отклик

Если запрос выполнен успешно, ответ будет включать маркер состояния, который представляет собой skipToken (в заголовке ответа @odata.nextLink ) или deltaToken (в заголовке ответа @odata.deltaLink ). Соответственно, они указывают, следует ли продолжить цикл или вы завершили получение всех изменений для этого раунда.

Ниже показан отклик с маркером состояния skipToken в заголовке отклика @odata.nextLink.

Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости.

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

{
  "@odata.nextLink":"https://graph.microsoft.com/v1.0/me/calendarView/delta?$skiptoken={_skipToken_}",
  "value": [
    {
      "originalStartTimeZone": "originalStartTimeZone-value",
      "originalEndTimeZone": "originalEndTimeZone-value",
      "responseStatus": {
        "response": "response-value",
        "time": "datetime-value"
      },
      "transactionId": null,
      "iCalUId": "iCalUId-value",
      "reminderMinutesBeforeStart": 99,
      "isDraft": false,
      "isReminderOn": true
    }
  ]
}