Как создать фильтр запросов 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/