Как создать фильтр запросов Ms graph api для объекта массива?

Я планирую использовать API-интерфейс List Groups Ms graph, чтобы вывести список групп O365 в моей организации, а затем отфильтровать их для групп Yammer.

Когда я использую этот API в проводнике графиков, он возвращает следующий объект ответа.

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups",
  "@odata.nextLink": "https://graph.microsoft.com/v1.0/groups?,
  "value": [
    {
      "id": "",
      "description": "",
      "displayName": "",
      "groupTypes": [
        "Unified"
      ],
      "isAssignableToRole": null,
      "mail": "",
      "mailEnabled": true,
      "mailNickname": "",
      "onPremisesDomainName": null,
      "onPremisesLastSyncDateTime": null,
      "onPremisesNetBiosName": null,
      "onPremisesSamAccountName": null,
      "onPremisesSecurityIdentifier": null,
      "onPremisesSyncEnabled": null,
      "preferredDataLocation": null,
      "proxyAddresses": [
        "",
        "SMTP:",
        "smtp:"
      ],
      "renewedDateTime": "2018-09-07T16:23:37Z",
      "onPremisesProvisioningErrors": []
    },
    {
      "id": "",
      "deletedDateTime": null,
      "classification": null,
      "createdDateTime": "2019-01-11T17:34:30Z",
      "**creationOptions**": [
        "Team",
        "ExchangeProvisioningFlags"
      ],
      "description": "Discuss",
      "displayName": "I&O",
      "groupTypes": [
        "Unified"
      ],
      "isAssignableToRole": null,
      "mail": "",
      "preferredDataLocation": null,
      "proxyAddresses": [
        "SPO",
        "SMTP:",
        "smtp:"
      ],
      "renewedDateTime": "2019-01-11T17:34:30Z",
      "resourceBehaviorOptions": [],
      "resourceProvisioningOptions": [
        "Team"
      ],
      "onPremisesProvisioningErrors": []
    },
    {
      "id": "",
      "deletedDateTime": null,
      "classification": null,
      "createdDateTime": "2018-12-10T21:14:47Z",
      "**creationOptions**": [
        "YammerProvisioning"
      ],
      "description": "",
      "displayName": "",
      "groupTypes": [
        "Unified"
      ],
      "isAssignableToRole": null,
      "mailEnabled": true,
      "onPremisesDomainName": null,
      "onPremisesLastSyncDateTime": null,
      "onPremisesNetBiosName": null,
      "onPremisesSamAccountName": null,
      "onPremisesSecurityIdentifier": null,
      "onPremisesSyncEnabled": null,
      "preferredDataLocation": null,
      "proxyAddresses": [],
      "renewedDateTime": "2018-12-10T21:14:47Z",
      "resourceBehaviorOptions": [
        "CalendarMemberReadOnly"
      ],
      "resourceProvisioningOptions": [],
      "onPremisesProvisioningErrors": []
    }
  ]
}

Как вы можете видеть, каждый объект в json имеет "createOptions", это означает, что у группы может быть это поле заполнено некоторым значением. Мне интересно возвращать только те группы, в которых createOptions = YammerProvisioning.

Но $filter может применяться только к строке, а не к массиву, поэтому я не уверен, как правильно этот запрос. Я пробовал следовать, но его предложение Invalid filter.

https://graph.microsoft.com/v1.0/groups?$filter=equals(creationOptions,'YammerProvisioning')

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

https://graph.microsoft.com/v1.0/groups?$filter=startswith(creationOptions,['YammerProvisioning'])

Моя цель - просто получить все группы, имеющие createOptions как 'YammerProvisioning'

Помощь или примеры приветствуются:) Спасибо

1 ответ

Решение

Этот синтаксис должен работать, но он может не поддерживаться в версии 1.0.?$filter=creationOptions/any(r:r+eq+'YammerProvisioning')

Конечная точка бета-версии, похоже, не имеет createOptions, но вы можете попробовать пойти против resourceBehaviorOptions.

https://www.techmikael.com/2017/11/how-to-list-all-office-365-groups-which.html?m=1

Хотя это ненадежно для всех клиентов ("Однако не все группы с поддержкой Yammer сообщаются при просмотре ResourceBehaviorOptions. Похоже, что сообщества Yammer, которые уже использовали группы Office 365 до миграции, настроили свойство, в то время как сообщества преобразованы в группы Office 365 во время миграции - нет. Возможно, какой-то фоновый процесс со временем обновит свойство для других групп. ")https://office365itpros.com/2020/04/13/moving-yammer-networks-native-mode-microsoft-365/

Другие вопросы по тегам