group: delta

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

Получение новых, обновленных или удаленных групп, включая изменения членства в группах, без необходимости выполнения полного чтения всей коллекции групп. Дополнительные сведения см. в статье "Использование разностного запроса для отслеживания изменений в данных Microsoft Graph ".

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

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

Разрешения

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

Тип разрешения Разрешения с наименьшим объемом привилегий Разрешения с более высоким уровнем привилегий
Делегированные (рабочая или учебная учетная запись) Group-NestingSupport.ReadWrite.All Group.ReadBasic.All, Directory.Read.All, Directory.ReadWrite.All, Group.Read.All, Group.ReadWrite.All, GroupMember.Read.All
Делегированные (личная учетная запись Майкрософт) Не поддерживается. Не поддерживается.
Приложение Group-NestingSupport.ReadWrite.All Group.ReadBasic.All, Directory.Read.All, Directory.ReadWrite.All, Group.Read.All, Group.ReadWrite.All, GroupMember.Read.All

HTTP-запрос

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

GET /groups/delta

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

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

Параметры запроса нужно указать только один раз в первом запросе.

Копируйте и применяйте URL-адрес @odata.nextLink или @odata.deltaLink из предыдущего ответа в последующих запросах, так как в нем уже содержаться закодированные параметры.

Параметр запроса Тип Описание
$deltatoken string Маркер состояния, возвращаемый в @odata.deltaLink URL-адресе предыдущего вызова разностной функции для той же коллекции групп, указывает на завершение этого раунда отслеживания изменений. Сохраните URL-адрес @odata.deltaLink с этим токеном и примените его в первом запросе следующего цикла отслеживания изменений для этой коллекции.
$skiptoken строка Этот токен состояния возвращается в URL-адресе @odata.nextLink предыдущего вызова функции delta и указывает, что из коллекции групп получены не все изменения.

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

Этот метод поддерживает необязательные параметры запроса OData, что помогает настроить ответ.

  • Вы можете использовать параметр запроса $select так же, как в любом другом запросе GET, чтобы задать только те свойства, которые необходимы для эффективной работы. Свойство id возвращается всегда.
  • Можно использовать $select=members для получения изменений статуса.
    • Кроме того, можно отслеживать другие изменения, например право собственности и т. д., выбрав любую групповую связь типа семейства directoryObject.
    • Возвращается только свойство id связанного ресурса.
  • Следующие функции $filterподдержки ограничены.
    • Единственное поддерживаемое выражение $filter предназначено для отслеживания изменений в определенном объекте: $filter=id+eq+{value}. Допускается фильтрация нескольких объектов. Например, https://graph.microsoft.com/v1.0/groups/delta/?$filter=id eq '477e9fc6-5de7-4406-bb2a-7e5c83c9ffff' or id eq '004d6a07-fe70-4b92-add5-e6e37b8affff'. Максимальное количество фильтруемых объектов: 50.

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

Имя Описание
Авторизация Bearer {token}. Обязательно. Дополнительные сведения об аутентификации и авторизации.
Content-Type application/json
Prefer return=minimal

Указание этого заголовка с запросом, использующим параметр @odata.deltaLink, приведет к возвращению только свойств объекта, измененных с момента последнего цикла. Необязательно.

Текст запроса

Не указывайте текст запроса для этого метода.

Отклик

В случае успешного выполнения этот метод возвращает код отклика 200 OK и объект коллекции group в тексте отклика. Ответ также содержит маркер состояния, который является URL-адресом @odata.nextLink или URL-адресом @odata.deltaLink .

  • Если возвращается URL-адрес @odata.nextLink:

    • Это означает, что в сеансе требуется извлечь дополнительные страницы данных. Приложение продолжает отправлять запросы, используя URL-адрес @odata.nextLink, пока в отклик не будет включен URL-адрес @odata.deltaLink.
    • Отклик включает тот же набор свойств, что и начальный разностный запрос. Это позволяет фиксировать полное текущее состояние объектов при запуске разностного цикла.
  • Если возвращается URL-адрес @odata.deltaLink:

    • Это означает, что данных о существующем состоянии возвращаемого ресурса больше нет. Сохраните и используйте URL-адрес @odata.deltaLink, чтобы узнавать об изменениях ресурса в следующем цикле.
    • Вы можете указать заголовок Prefer:return=minimal, чтобы включить в значения отклика только свойства, измененные с момента создания @odata.deltaLink.

По умолчанию: возвращение свойств, совпадающих с начальным разностным запросом

По умолчанию запросы с использованием @odata.deltaLink или @odata.nextLink возвращают те же свойства, которые выбраны в начальном разностном запросе, следующим образом:

  • Если свойство изменилось, в отклике содержится новое значение. Сюда включаются свойства с заданным значением NULL.
  • Если свойство не изменилось, в ответ включается старое значение.
  • Если свойство ранее никогда не настраивалось, оно не включается в отклик.

Примечание. При таком поведении просмотр отклика не дает возможность определить, изменилось ли свойство. Кроме того, дельта-ответы имеют тенденцию быть большими, поскольку они содержат все значения свойств, как показано во втором примере ниже.

Альтернатива: возвращение только измененных свойств

Добавление необязательного заголовка запроса prefer:return=minimal приводит к следующему результату:

  • Если свойство изменилось, в отклике содержится новое значение. Сюда включаются свойства с заданным значением NULL.
  • Если свойство не изменилось, оно вообще не включается в ответ. (Отличается от поведения по умолчанию.)

Примечание. Заголовок можно добавить в запрос @odata.deltaLink в любой момент разностного цикла. Заголовок влияет только на набор свойств, включенных в ответ, и не влияет на выполнение разностного запроса. См. третий пример ниже.

Пример

Запрос 1

Ниже показан пример запроса. Параметр отсутствует $select , поэтому отслеживается и возвращается набор свойств по умолчанию.

GET https://graph.microsoft.com/v1.0/groups/delta

Отклик 1

Вот пример ответа при использовании @odata.deltaLink , полученного при инициализации запроса.

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

Обратите внимание на наличие свойства members@delta , которое включает идентификаторы объектов-членов в группе.

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

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#groups","@odata.nextLink":"https://graph.microsoft.com/v1.0/groups/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjvY1FSSc_",
  "value":[
    {
      "createdDateTime":"2021-03-12T10:36:14Z",
      "description":"This is the default group for everyone in the network",
      "displayName":"All Company",
      "groupTypes": [
        "Unified"
      ],
      "mail": "allcompany@contoso.com",
      "members@delta": [
        {
          "@odata.type": "#microsoft.graph.user",
          "id": "693acd06-2877-4339-8ade-b704261fe7a0"
        },
        {
          "@odata.type": "#microsoft.graph.user",
          "id": "49320844-be99-4164-8167-87ff5d047ace"
        }
      ]
    }
  ]
}

Запрос 2

В следующем примере показан начальный запрос, выбирающий три свойства для отслеживания изменений с поведением ответа по умолчанию:

GET https://graph.microsoft.com/v1.0/groups/delta?$select=displayName,description,mailNickname

Отклик 2

Вот пример ответа при использовании @odata.deltaLink , полученного при инициализации запроса. Все три свойства включены в ответ, и неизвестно, какие именно из них изменились с момента получения @odata.deltaLink .

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

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#groups",
  "@odata.nextLink":"https://graph.microsoft.com/v1.0/groups/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjsXoYQp_dpA3cNJWc",
  "value": [
    {
      "displayName": "All Company",
      "description": null,
      "mailNickname": "allcompany@contoso.com"
    }
  ]
}

Запрос 3

В следующем примере показан начальный запрос, выбирающий три свойства для отслеживания изменений с альтернативным минимальным ответом:

GET https://graph.microsoft.com/v1.0/groups/delta?$select=displayName,description,mailNickname
Prefer: return=minimal

Отклик 3

Вот пример ответа при использовании @odata.deltaLink , полученного при инициализации запроса. Свойство mailNickname не включено (это значит, что оно не менялось со времени последнего разностного запроса); displayName и description включено, что означает, что их значения изменились.

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

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#groups",
  "@odata.nextLink":"https://graph.microsoft.com/v1.0/groups/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjsXoYQp_dpA3cNJWc",
  "value": [
    {
      "displayName": "Everyone",
      "description": null
    }
  ]
}