1

我正在寻找使用 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 来将成员添加到团队和项目中。

你能帮忙吗?

4

2 回答 2

3

Devops server 2019 - 是否有 REST api 可以将成员添加到项目和团队

对于这个问题,我认为没有开箱即用的 rest api 来实现它。成员 - 添加rest api目前不适用于 Azure DevOps Server 2019。

作为一种解决方法,我们可以通过F12在浏览器中按下然后选择来跟踪这个 rest api Network

示例请求网址:

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

示例请求正文:

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

在此步骤中,您需要将要添加的成员名称和团队名称转换为 json,然后添加到请求正文中。这是一个案例说明如何在 C# 中将字符串转换为 JSON。

在此处输入图像描述

从这条记录中,我们可以得到请求的url和请求体。

我用邮递员对此进行了测试,并且可以成功地将成员添加到项目团队中。 在此处输入图像描述

这是两个有类似问题的案例( case1case2 )。您也可以参考它们。

上述案例中的使用语音实例不再可用。您可以向我们的主论坛提交新的产品建议。我们的 PM 和产品组正在定期审查这些建议,并考虑将其作为计划。

于 2019-10-07T09:02:01.837 回答
1

没有记录用于将成员添加到项目和团队的 REST API。正如 Hugh 提到的,我们可以使用开发工具跟踪 REST API(在浏览器中按 F12),但是正如我们所见,我们只能在请求 json 正文中使用用户和团队/组 GUID。

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 API 项目和团队来获取他们的 GUID。对于用户而言,实际上是使用,将用户添加到 Azure DevOps Server 时会自动生成TeamFoundationId唯一性。TeamFoundationId我们无法使用外部工具生成 ID。

因此,要使用该 REST API,我们需要获取TeamFoundationId您想要将其添加到项目/团队的特定用户。

目前,没有 REST API 来列出TeamFoundationIdAzure DevOps Server 2019 中的用户,但是我们可以使用 Client API 获取它:

下面的示例供您参考以获取TeamFoundationId特定用户的:(它还将导出用户列表及其TeamFoundationIduserlist.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();
        }
    }
}
于 2019-10-12T07:18:02.800 回答