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
}
]
}