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или deletedupdated .

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

  • Вы можете использовать параметр запроса $select так же, как в любом другом запросе GET, чтобы задать только те свойства, которые необходимы для эффективной работы. Свойство id возвращается всегда.
  • Запросы изменений поддерживают параметры $select, $top и $expand для сообщений.
  • Имеется ограниченная поддержка параметров $filter и $orderby:
    • Для параметра $filter поддерживаются только выражения $filter=receivedDateTime+ge+{value} и $filter=receivedDateTime+gt+{value}.
    • Для параметра $orderby поддерживается только выражение $orderby=receivedDateTime+desc. Если выражение $orderby не указано, результаты будут возвращаться в непредсказуемом порядке.
  • Параметр $search не поддерживается.

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

Имя Тип Описание
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"
      }
    }
  ]
}