Microsoft Graph API поддерживает некоторые необязательные параметры запроса, такие как выбор, фильтрация, расширение, поиск и т. Д., Которые помогают контролировать, какие данные вы возвращаете в ответ на ваш запрос.Вы можете прочитать о них здесь
параметр расширения может быть полезным для вашего случая использования.
Я быстро опробовалзапрос, подобный приведенному ниже, Microsoft Graph Explorer , который возвращает информацию о группе, а также коллекцию владельцев для каждой группы.
https://graph.microsoft.com/v1.0/groups?$expand=owners
Отказ от ответственности: в параметре Документы Microsoft для расширения есть примечание, в котором говорится:что-то вроде
С ресурсами Azure AD, которые создаются на основе directoryObject, такими как пользователь и группа, $ expand поддерживается только для бета-версии и обычно возвращает максимум 20 элементов для расширенного отношения.
Хотя вышеупомянутый запрос, который использует v1.0, работал нормально для меня, по крайней мере, из Graph Explorer.Поэтому сделайте как можно больше тестов (с большим количеством групп), прежде чем начинать полагаться на него.Я также обновлю информацию на случай, если найду более свежую документацию, касающуюся того же самого.
Вот точный ответ, который я получил на запрос, который я упомянул выше.Он довольно большой, я просто включил 2 группы и удалил другие, чтобы вы поняли.
Важно отметить, что коллекция владельцев присутствует вместе с группами.Обратите внимание, что первая группа не имеет назначенных владельцев, но вторая группа имеет 2 пользователей в качестве владельцев.
REQUEST
GET https://graph.microsoft.com/v1.0/groups?$expand=owners
RESPONSE
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups",
"value": [
{
"id": "xxxx-redacted-49b4e13fcf0f",
"deletedDateTime": null,
"classification": null,
"createdDateTime": "2018-09-26T04:41:10Z",
"creationOptions": [],
"description": null,
"displayName": "Business",
"groupTypes": [],
"mail": null,
"mailEnabled": false,
"mailNickname": "xxxx-redacted-88df-adf033b7f545",
"onPremisesLastSyncDateTime": null,
"onPremisesSecurityIdentifier": null,
"onPremisesSyncEnabled": null,
"preferredDataLocation": null,
"proxyAddresses": [],
"renewedDateTime": "2018-09-26T04:41:10Z",
"resourceBehaviorOptions": [],
"resourceProvisioningOptions": [],
"securityEnabled": true,
"visibility": null,
"onPremisesProvisioningErrors": [],
"owners": []
},
{
"id": "xxxx-redacted-9316-a5acea4412d8",
"deletedDateTime": null,
"classification": null,
"createdDateTime": "2018-09-26T04:19:29Z",
"creationOptions": [],
"description": null,
"displayName": "DevOps",
"groupTypes": [],
"mail": null,
"mailEnabled": false,
"mailNickname": "xxxx-redacted-4f18-b2b1-e5a7b80d19ea",
"onPremisesLastSyncDateTime": null,
"onPremisesSecurityIdentifier": null,
"onPremisesSyncEnabled": null,
"preferredDataLocation": null,
"proxyAddresses": [],
"renewedDateTime": "2018-09-26T04:19:29Z",
"resourceBehaviorOptions": [],
"resourceProvisioningOptions": [],
"securityEnabled": true,
"visibility": null,
"onPremisesProvisioningErrors": [],
"owners": [
{
"@odata.type": "#microsoft.graph.user",
"id": "xxxx-redacted-8000-8cb9f0d497c9",
"deletedDateTime": null,
"accountEnabled": true,
"ageGroup": null,
"businessPhones": [],
"city": "xxxx",
"companyName": null,
"consentProvidedForMinor": null,
"country": "xxxx",
"createdDateTime": null,
"department": "Human Resources",
"displayName": "Adam G",
"employeeId": null,
"faxNumber": null,
"givenName": "Adam",
"jobTitle": "Senior Human Resource Manager",
"legalAgeGroupClassification": null,
"mail": null,
"mailNickname": "adamg",
"mobilePhone": "xxxx",
"onPremisesDistinguishedName": null,
"onPremisesDomainName": null,
"onPremisesImmutableId": null,
"onPremisesLastSyncDateTime": null,
"onPremisesSecurityIdentifier": null,
"onPremisesSamAccountName": null,
"onPremisesSyncEnabled": null,
"onPremisesUserPrincipalName": null,
"otherMails": [],
"passwordPolicies": "DisablePasswordExpiration",
"passwordProfile": null,
"officeLocation": "131/1105",
"postalCode": "98052",
"preferredLanguage": "en-US",
"proxyAddresses": [],
"refreshTokensValidFromDateTime": "2018-09-19T03:34:39Z",
"imAddresses": [],
"isResourceAccount": null,
"showInAddressList": null,
"state": "MH",
"streetAddress": "xxxxxxxe",
"surname": "Gily",
"usageLocation": "US",
"userPrincipalName": "adamg@xxxxx.onmicrosoft.com",
"userType": "Member",
"assignedLicenses": [],
"assignedPlans": [],
"onPremisesProvisioningErrors": [],
"onPremisesExtensionAttributes": {
"extensionAttribute1": null,
"extensionAttribute2": null,
"extensionAttribute3": null,
"extensionAttribute4": null,
"extensionAttribute5": null,
"extensionAttribute6": null,
"extensionAttribute7": null,
"extensionAttribute8": null,
"extensionAttribute9": null,
"extensionAttribute10": null,
"extensionAttribute11": null,
"extensionAttribute12": null,
"extensionAttribute13": null,
"extensionAttribute14": null,
"extensionAttribute15": null
},
"provisionedPlans": []
},
{
"@odata.type": "#microsoft.graph.user",
"id": "xxxx-redacted-4824-8013-4325f68e275d",
"deletedDateTime": null,
"accountEnabled": true,
"ageGroup": null,
"businessPhones": [],
"city": null,
"companyName": null,
"consentProvidedForMinor": null,
"country": null,
"createdDateTime": null,
"department": null,
"displayName": "groupownertest",
"employeeId": null,
"faxNumber": null,
"givenName": null,
"jobTitle": null,
"legalAgeGroupClassification": null,
"mail": null,
"mailNickname": "groupownertest",
"mobilePhone": null,
"onPremisesDistinguishedName": null,
"onPremisesDomainName": null,
"onPremisesImmutableId": null,
"onPremisesLastSyncDateTime": null,
"onPremisesSecurityIdentifier": null,
"onPremisesSamAccountName": null,
"onPremisesSyncEnabled": null,
"onPremisesUserPrincipalName": null,
"otherMails": [],
"passwordPolicies": null,
"passwordProfile": null,
"officeLocation": null,
"postalCode": null,
"preferredLanguage": null,
"proxyAddresses": [],
"refreshTokensValidFromDateTime": "2019-01-23T18:56:43Z",
"imAddresses": [],
"isResourceAccount": null,
"showInAddressList": null,
"state": null,
"streetAddress": null,
"surname": null,
"usageLocation": null,
"userPrincipalName": "groupownertest@XXXXX.onmicrosoft.com",
"userType": "Member",
"assignedLicenses": [],
"assignedPlans": [],
"onPremisesProvisioningErrors": [],
"onPremisesExtensionAttributes": {
"extensionAttribute1": null,
"extensionAttribute2": null,
"extensionAttribute3": null,
"extensionAttribute4": null,
"extensionAttribute5": null,
"extensionAttribute6": null,
"extensionAttribute7": null,
"extensionAttribute8": null,
"extensionAttribute9": null,
"extensionAttribute10": null,
"extensionAttribute11": null,
"extensionAttribute12": null,
"extensionAttribute13": null,
"extensionAttribute14": null,
"extensionAttribute15": null
},
"provisionedPlans": []
}
]
}
]
}
ОБНОВЛЕНИЕ 1 (для ответов на вопросы из комментариев)
члены и владельцы являются навигационными свойствами / отношениями, а не прямыми свойствами для групп.Вы можете расширить только по одному за раз.Я покажу вам 3 быстрых вызова API, которые можно протестировать из Microsoft Graph Explorer.
развернуть только элементы - Это работает, как ожидается, и возвращает группы, а также членов для каждой группы.
GET https://graph.microsoft.com/v1.0/groups?$expand=members
развернуть только владельцев - Это работает, как ожидается, и возвращает группы, а также владельцев для каждой группы.Пример ответа, приведенный выше, уже.
GET https://graph.microsoft.com/v1.0/groups?$expand=owners
разверните участников и владельцев одним вызовом
GET https://graph.microsoft.com/v1.0/groups?$expand=members,owners
RESPONSE
youможно развернуть только одно навигационное свойство за один вызов. Посмотрите на сообщение об ошибке, оно довольно интуитивно :
{
"error": {
"code": "Request_BadRequest",
"message": "The result of parsing $expand contained at least 2 items, but the maximum allowed is 1.",
"innerError": {
"request-id": "119cf794-af56-48a0-b415-4d52c2e60e98",
"date": "2019-02-13T02:57:13"
}
}
}
ОБНОВЛЕНИЕ 2 (чтобы ответить на запрос о расширении и выбрать вместе из комментариев)
Я не думаю, что вы сможете $ выбрать только несколько столбцов вместе с $ expand в запросе.Это, кажется, известное ограничение.См. Две ссылки ниже для получения дополнительной информации
- Ограничения параметров запроса - Документы Microsoft
- Еще одно сообщение SO В частности, в этом сообщении SOпосмотрите на комментарий от Marc LaFleur и ответ от Дэн Кершоу - MSFT