К сожалению, на данный момент поиск пользователей вместе с менеджерами не поддерживается с помощью одного запроса, но вместо этого можно рассмотреть следующий подход:
a) отправьте первый запрос на получение пользователей через List users
конечную точку
b) создать и отправить пакетный запрос для извлечения менеджеров пользователя через List manager
конечную точку :
POST https://graph.microsoft.com/v1.0/$batch
Accept: application/json
Content-Type: application/json
{
"requests": [
{
"id": "1",
"method": "GET",
"url": "/users/{id1 | userPrincipalName1}/manager"
},
{
"id": "2",
"method": "GET",
"url": "/users/{id2 | userPrincipalName2}/manager"
},
//...
]
}
Вот пример для msgraph-sdk-dotnet
:
//1. get user properties
var users = await graphClient.Users
.Request()
.Select(e => new
{
e.Department,
e.OfficeLocation,
e.JobTitle,
e.UserPrincipalName,
e.Mail,
e.GivenName,
e.DisplayName,
e.Surname,
e.MobilePhone,
e.Id,
e.EmployeeId
})
.GetAsync();
//2 get user's managers
var batchRequest = new BatchRequest();
foreach (var user in users)
{
batchRequest.AddQuery(graphClient.Users[user.UserPrincipalName].Manager.Request(), typeof(Microsoft.Graph.User));
}
var managers = await graphClient.GetBatchAsync(batchRequest);
foreach(var manager in managers)
{
if (manager != null)
{
//...
}
}
где BatchRequest class
- это пользовательский класс, который реализует поддержку пакетирования JSON.