message: delta

Пространство имен: 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"
      }
    }
  ]
}