Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пространство имен: microsoft.graph
Получение набора сообщений, добавленных, удаленных или обновленных в указанной папке.
Вызов разностной функции для сообщений в папке аналогичен запросу GET, за исключением того, что, применяя маркеры состояния в одном или нескольких из этих вызовов, можно запросить добавочные изменения в сообщениях в этой папке. Это позволяет поддерживать и синхронизировать локальное хранилище сообщений пользователя без необходимости каждый раз получать весь набор сообщений с сервера.
Этот API доступен в следующих национальных облачных развертываниях.
| Глобальная служба | Правительство США L4 | Правительство США L5 (DOD) | Китай управляется 21Vianet |
|---|---|---|---|
| ✅ | ✅ | ✅ | ❌ |
Разрешения
Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.
| Тип разрешения | Разрешения с наименьшими привилегиями | Более высокие привилегированные разрешения |
|---|---|---|
| Делегированные (рабочая или учебная учетная запись) | Mail.ReadBasic | Mail.Read, Mail.ReadWrite |
| Делегированные (личная учетная запись Майкрософт) | Mail.ReadBasic | Mail.Read, Mail.ReadWrite |
| Для приложений | Mail.ReadBasic.All | Mail.Read, Mail.ReadWrite |
HTTP-запрос
Чтобы получить все изменения в сообщениях в указанном mailFolder:
GET /me/mailFolders/{id}/messages/delta
GET /users/{id}/mailFolders/{id}/messages/delta
Чтобы получить только созданные, обновленные или удаленные сообщения в указанной папке mailFolder:
GET /me/mailFolders/{id}/messages/delta?changeType=created
GET /users/{id}/mailfolders/{id}/messages/delta?changeType=created
GET /me/mailFolders/{id}/messages/delta?changeType=updated
GET /users/{id}/mailFolders/{id}/messages/delta?changeType=updated
GET /me/mailFolders/{id}/messages/delta?changeType=deleted
GET /users/{id}/mailFolders/{id}/messages/delta?changeType=deleted
Параметры запроса
При отслеживании изменений в сообщениях выполняется цикл из одного или нескольких вызовов разностной функции. Если используется любой параметр запроса (кроме $deltatoken и $skiptoken), который является параметром системного запроса OData или параметром пользовательского запроса changeType, его необходимо указать в исходном разностном запросе. Microsoft Graph автоматически кодирует указанные параметры в маркере, входящем в состав URL-адреса @odata.nextLink или @odata.deltaLink, включенного в отклик.
Параметры запроса нужно указать только один раз в первом запросе.
В последующих запросах просто скопируйте и примените @odata.nextLink URL-адрес или @odata.deltaLink из предыдущего ответа, так как этот URL-адрес уже содержит закодированные требуемые параметры.
| Параметр запроса | Тип | Описание |
|---|---|---|
| $deltatoken | string |
Маркер состояния, возвращенный в @odata.deltaLink URL-адресе предыдущего вызова разностной функции для той же коллекции сообщений, что указывает на завершение этого цикла отслеживания изменений. Сохраните URL-адрес @odata.deltaLink с этим токеном и примените его в первом запросе следующего цикла отслеживания изменений для этой коллекции. |
| $skiptoken | строка | Этот токен состояния возвращается в URL-адресе @odata.nextLink предыдущего вызова функции delta и указывает, что из коллекции сообщений получены не все изменения. |
| changeType | string | Настраиваемый параметр запроса для фильтрации разностного ответа на основе типа изменения. Поддерживаемые значения: created, updatedили deleted. |
Параметры запросов OData
- Вы можете использовать параметр запроса
$selectтак же, как в любом другом запросе GET, чтобы задать только те свойства, которые необходимы для эффективной работы. Свойство id возвращается всегда. - Запросы изменений поддерживают параметры
$select,$topи$expandдля сообщений. - Имеется ограниченная поддержка параметров
$filterи$orderby:- Для параметра
$filterподдерживаются только выражения$filter=receivedDateTime+ge+{value}и$filter=receivedDateTime+gt+{value}. - Для параметра
$orderbyподдерживается только выражение$orderby=receivedDateTime+desc. Если выражение$orderbyне указано, результаты будут возвращаться в непредсказуемом порядке.
- Для параметра
- Параметр
$searchне поддерживается.
Примечание.
Разностные запросы для сообщений могут возвращать события изменений, которые не соответствуют условиям фильтра, указанным в первоначальном запросе.
В том числе:
-
@removedс"reason": "deleted"при удалении или перемещении элемента из папки. - Изменения состояния чтения и непрочитания.
Эти события не возникают из-за изменений в самом сообщении. Они создаются в рамках процесса синхронизации на уровне папок, на который полагаются разностные маркеры.
Разностное отслеживание работает на уровне коллекции , а не на уровне сообщений, поэтому эти события не отфильтровываются.
Клиенты должны быть готовы к обработке таких записей для поддержания точного и полностью синхронизированного локального представления коллекции сообщений.
Заголовки запросов
| Имя | Тип | Описание |
|---|---|---|
| Authorization | string | Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации. |
| Content-Type | string | application/json. Обязательный параметр. |
| Prefer | string | odata.maxpagesize={x}. Необязательный параметр. |
Отклик
В случае успешного выполнения этот метод возвращает код ответа 200 OK и объект message в тексте ответа.
Пример
Запрос
В следующем примере показано, как выполнить один вызов функции delta и ограничить максимальное количество сообщений в тексте ответа до 2.
Чтобы отслеживать изменения в сообщениях в папке, необходимо выполнить один или несколько вызовов разностной функции, чтобы получить набор добавочных изменений с момента последнего разностного запроса. Пример, показывающий цикл разностных вызовов запросов, см. в разделе Получение добавочных изменений в сообщениях в папке.
GET https://graph.microsoft.com/v1.0/me/mailFolders/AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OAAuAAAAAAAiQ8W967B7TKBjgx9rVEURAQAiIsqMbYjsT5e-T7KzowPTAAAAAAFNAAA=/messages/delta
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/mailFolders/{id}/messages/delta?$skiptoken={_skipToken_}",
"value": [
{
"receivedDateTime": "datetime-value",
"sentDateTime": "datetime-value",
"hasAttachments": true,
"internetMessageId": "internetMessageId-value",
"subject": "subject-value",
"body": {
"contentType": "contentType-value",
"content": "content-value"
}
}
]
}