Devops Server 2019-是否有REST API将成员添加到项目和团队

时间:2019-10-06 15:37:39

标签: tfs azure-devops azure-devops-rest-api azure-devops-server-2019

我一直希望使用REST API将成员添加到Project中。

我能够使用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 个答案:

答案 0 :(得分:2)

  

开发服务器2019-是否有REST API将成员添加到项目中   和团队

对于这个问题,我认为没有现成的rest api可以实现。 Members - Add剩余api当前不适用于Azure DevOps Server 2019。

作为一种解决方法,我们可以通过在浏览器中按(?sm)Modifications[^,]+,(?:(?!^\s*'\\Modifications).)*\b并选择pattern = r"(?sm)Modifications[^,]+,(?:(?!^\s*'\\Modifications).)*\b" pattern = re.compile(pattern=pattern) df['tickethist'] = "" for i in range(len(df['log'])): search = [] log = df.at[i, 'log'] for match in pattern.findall(str(log)): search.append(match) df.at[i, 'tickethist'] = search 来跟踪该剩余api。

示例请求网址:

F12

示例请求正文:

Network

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

enter image description here

从此记录中,我们可以获取请求网址和请求正文。

我与邮递员进行了测试,可以成功地将成员添加到项目团队中。 enter image description here

这里有两种情况(case1case2)有类似的问题。您也可以参考它们。

以上情况下的使用语音实例不再可用。您可以向我们的main forum提交新的产品建议。我们的产品经理和产品小组正在定期审查这些建议,并考虑将其作为计划。

答案 1 :(得分:1)

未记录用于将成员添加到项目和团队的REST API。正如休提到的那样,我们可以使用开发工具(在浏览器中按F12键)来跟踪REST API,但是正如我们看到的那样,我们只能在请求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 APIs Projects和团队来获取其GUID。 对于用户而言,实际上是使用TeamFoundationId,将用户添加到Azure DevOps Server时会自动生成唯一的TeamFoundationId。我们无法使用外部工具生成ID。

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

当前,Azure DevOps Server 2019中没有REST API列出TeamFoundationId个用户,但是我们可以使用客户端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();
        }
    }
}