Devops сервер 2019 - Есть ли REST API для добавления участников в проект и команду? - PullRequest
0 голосов
/ 06 октября 2019

Я хотел добавить участников в Project с помощью REST API.

Мне удалось создать проект с помощью API:

POST https://{instance}/{collection}/_apis/projects?api-version=5.0

Кроме того, я смог создать команду впроект с использованием REST API:

POST https://{instance}/{collection}/_apis/projects/{projectId}/teams?api-version=5.0

Однако мне не удалось получить REST API для добавления участников в команду и проект.

Не могли бы вы помочь?

Ответы [ 2 ]

1 голос
/ 12 октября 2019

API REST для добавления участников в проекты и команду не задокументировано. Как упомянул Хью, мы можем отслеживать REST API с помощью инструментов разработки (нажмите F12 в браузере), однако, как мы видим, мы можем использовать GUID пользователя и команды / группы только в теле запроса json.

Post https://wsicads2019/DefaultCollection/{project}/_api/_identity/AddIdentities?api-version=5.0

Request Body:

{
    "newUsersJson": "[]",
    "existingUsersJson": "[\"55b98726-c6f5-48d2-976b-xxxxxx\"]",
    "groupsToJoinJson": "[\"7283653f-54b2-4ebf-86c3-xxxxxxx\"]",
    "aadGroupsJson": "[]"
}

Для конкретной команды / групп мы можем использовать REST APIs Projects и команды, чтобы получить их GUID. Для пользователя фактически используется TeamFoundationId, уникальный TeamFoundationId генерируется автоматически при добавлении пользователя на сервер Azure DevOps. Мы не можем сгенерировать идентификатор с помощью внешних инструментов.

Итак, чтобы использовать этот REST API, нам нужно получить TeamFoundationId конкретного пользователя, которого вы хотите добавить в проекты / команды.

В настоящее время нет REST API для перечисления TeamFoundationId пользователей Azure DevOps Server 2019, однако мы можем получить его с помощью Client API:

Ниже приведен пример для справки, чтобы получить TeamFoundationId изопределенный пользователь: (он также будет экспортировать список пользователей с их TeamFoundationId в userlist.txt)

using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.Framework.Common;
using System.Linq;
using System.IO;

namespace Getuserlist

{

    class Program

    {
        static void Main(string[] args)

        {

            TfsConfigurationServer tcs = new TfsConfigurationServer(new Uri("https://wsicads2019"));

            IIdentityManagementService ims = tcs.GetService<IIdentityManagementService>();

            TeamFoundationIdentity tfi = ims.ReadIdentity(IdentitySearchFactor.AccountName, "[DefaultCollection]\\Project Collection Valid Users", MembershipQuery.Expanded, ReadIdentityOptions.None);

            TeamFoundationIdentity[] ids = ims.ReadIdentities(tfi.Members, MembershipQuery.None, ReadIdentityOptions.None);

            using (StreamWriter file = new StreamWriter("userlist.txt"))

                foreach (TeamFoundationIdentity id in ids)

                {
                    if (id.Descriptor.IdentityType == "System.Security.Principal.WindowsIdentity" && id.UniqueName == "Domain\\User")

                    { Console.WriteLine("[{0},{1}]", id.UniqueName, id.TeamFoundationId); }

                    file.WriteLine("[{0},{1}]", id.UniqueName, id.TeamFoundationId);
                }

            var count = ids.Count(x => ids.Contains(x));
            Console.WriteLine(count);
            Console.ReadLine();
        }
    }
}
1 голос
/ 07 октября 2019

Devops-сервер 2019 - существует ли REST API для добавления участников в проект и команду

Для этой проблемы, я думаю, нет готового API Api для ее достижения. Участники - Добавить остальные API в настоящее время недоступны для Azure DevOps Server 2019.

В качестве обходного пути, мы можем отследить этот оставшийся API, нажав F12 в браузере, затем выбрав Network.

Пример запроса URL:

https://collectionName/DefaultCollection/projectId/_api/_identity/AddIdentities?__v=5

Пример запроса тела:

{
    "newUsersJson": "[]",
    "existingUsersJson": "[\"55b98726-c6f5-48d2-976b-xxxxxx\"]",
    "groupsToJoinJson": "[\"7283653f-54b2-4ebf-86c3-xxxxxxx\"]",
    "aadGroupsJson": "[]"
}

На этом шаге вам нужно преобразовать имя члена, которого вы хотите добавитьи название команды json, затем добавьте в тело запроса. Здесь case указывает, как преобразовать строку в JSON в C #.

enter image description here

Из этой записи мы можем получитьURL запроса и тело запроса.

Я проверяю это с почтальоном и могу успешно добавить члена в проектную команду. enter image description here

Вот два случая ( case1 , case2 ) с похожими проблемами. Вы также можете обратиться к ним.

Экземпляр использования голоса в приведенном выше случае больше не доступен. Вы можете отправить новый на наш основной форум для предложений продуктов. Наш PM и Product Group регулярно рассматривают это предложение и рассматривают его как план.

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