如何使用Rest API管理Azure DevOps组权限

如何使用Rest API管理Azure DevOps组权限,azure,rest,azure-devops,azure-devops-rest-api,Azure,Rest,Azure Devops,Azure Devops Rest Api,我正在进行一项自动化任务,其中我需要一个组对repo、管道和发布等具有一组权限。我正在寻找一个Rest API,它可以管理此组的权限 例如: 在交叉回购策略中,我如何管理/设置组“项目管理员”的权限,以便使用Rest API允许“推送时绕过策略”、“推送时绕过策略”等 提前感谢。根据您的要求,您可以使用Rest API: 请求机构: { "token": "repoV2/{ProjectID}/{RepoID(If you want to set the pe

我正在进行一项自动化任务,其中我需要一个组对repo、管道和发布等具有一组权限。我正在寻找一个Rest API,它可以管理此组的权限

例如:

在交叉回购策略中,我如何管理/设置组“项目管理员”的权限,以便使用Rest API允许“推送时绕过策略”、“推送时绕过策略”等


提前感谢。

根据您的要求,您可以使用Rest API:

请求机构:

{
  "token": "repoV2/{ProjectID}/{RepoID(If you want to set the permission for a single repo)}",
  "merge": true,
  "accessControlEntries": [
    {
      "descriptor": "Microsoft.TeamFoundation.Identity;S-....",
      "allow": 32768,
      "deny": 0,
      "extendedinfo": {}
    }
  ]
}
您可以通过以下方法获得Rest API中所需的参数值:

安全名称空间ID:

GET https://dev.azure.com/{OrganizationName}/_apis/securitynamespaces?api-version=6.0
在响应正文中:您可以搜索Git存储库

然后可以获得与权限相对应的名称空间ID和参数值

例如:

要获取组标识(S-…),没有直接的RESTAPI来获取它。您可以使用以下方法获取它:

1.获取描述符:

 GET https://vssps.dev.azure.com/{org name}/_apis/graph/users?api-version=5.1-preview.1
2.使用以下C#代码进行转换:

public static string Base64Decode(string base64EncodedData)
        {
            var lengthMod4 = base64EncodedData.Length % 4;
            if (lengthMod4 != 0)
            {
                //fix Invalid length for a Base-64 char array or string
                base64EncodedData += new string('=', 4 - lengthMod4);
            }
            var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
            return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
        }

public static string Base64Encode(string plainText)
        {
            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
            return System.Convert.ToBase64String(plainTextBytes);
        }
这里有我们的Azure Identity团队工程师编写的,您可以参考它以获得更详细的信息

此外,您还可以通过浏览器F12记录直接获取所有参数的值


根据您的要求,您可以使用Rest API:

请求机构:

{
  "token": "repoV2/{ProjectID}/{RepoID(If you want to set the permission for a single repo)}",
  "merge": true,
  "accessControlEntries": [
    {
      "descriptor": "Microsoft.TeamFoundation.Identity;S-....",
      "allow": 32768,
      "deny": 0,
      "extendedinfo": {}
    }
  ]
}
您可以通过以下方法获得Rest API中所需的参数值:

安全名称空间ID:

GET https://dev.azure.com/{OrganizationName}/_apis/securitynamespaces?api-version=6.0
在响应正文中:您可以搜索Git存储库

然后可以获得与权限相对应的名称空间ID和参数值

例如:

要获取组标识(S-…),没有直接的RESTAPI来获取它。您可以使用以下方法获取它:

1.获取描述符:

 GET https://vssps.dev.azure.com/{org name}/_apis/graph/users?api-version=5.1-preview.1
2.使用以下C#代码进行转换:

public static string Base64Decode(string base64EncodedData)
        {
            var lengthMod4 = base64EncodedData.Length % 4;
            if (lengthMod4 != 0)
            {
                //fix Invalid length for a Base-64 char array or string
                base64EncodedData += new string('=', 4 - lengthMod4);
            }
            var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
            return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
        }

public static string Base64Encode(string plainText)
        {
            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
            return System.Convert.ToBase64String(plainTextBytes);
        }
这里有我们的Azure Identity团队工程师编写的,您可以参考它以获得更详细的信息

此外,您还可以通过浏览器F12记录直接获取所有参数的值


查看您可以使用fiddler捕获大多数REST API调用。您看过REST API文档了吗?您好@irudne。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒一下。看看吧,您可以使用fiddler捕获大多数REST API调用。您看过REST API文档了吗?您好@irudne。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒一下。谢谢。它正在按预期工作。谢谢。它正在按预期工作。