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