如何通过REST API查询Azure Devops工作项的可分配用户列表
查询Azure DevOps可分配工作项的经办人列表
你用的安全命名空间ID52d39943-cb85-4d7f-8fa8-c6baac873819确实对应工作项跟踪的权限空间,但直接查这个命名空间的安全组成员不是正确的做法——可分配经办人是指拥有「分配工作项」权限的用户/组,需要结合项目成员身份和权限检查来获取。
以下是正确的实现思路和方法:
核心逻辑
可分配工作项的用户需要同时满足两个条件:
- 是目标项目的有效成员(包括通过Azure AD组、项目组继承的成员)
- 拥有工作项跟踪模块下的「分配工作项」权限(权限状态为「允许」)
具体实现步骤
1. 获取项目的所有有效成员
通过Azure DevOps REST API获取项目的全部成员(含嵌套组的成员):
GET https://dev.azure.com/{组织名}/{项目名}/_apis/graph/members?api-version=7.1-preview.1
该接口会返回项目中所有直接/间接关联的用户,无需手动处理组嵌套。
2. 检查用户的「分配工作项」权限
用权限检查API批量验证用户是否拥有分配权限,对应的参数:
- 命名空间ID:你之前用的
52d39943-cb85-4d7f-8fa8-c6baac873819(工作项跟踪) - 权限ID:
256(对应「分配工作项」权限) - 资源Token:
project/{项目ID}(指定目标项目)
请求示例:
POST https://dev.azure.com/{组织名}/{项目名}/_apis/securitypermissions/checkpermissions?api-version=7.1-preview.1
请求体:
{ "namespaceId": "52d39943-cb85-4d7f-8fa8-c6baac873819", "token": "project/{项目ID}", "permissions": [ { "permissionId": 256, "name": "AssignWorkItem" } ], "descriptors": ["{用户1的Descriptor}", "{用户2的Descriptor}"] }
返回结果中,permissionEvaluations字段会显示每个用户是否拥有该权限。
3. 简化方案:直接获取默认有权限的组
项目的「Contributors(参与者)」组默认拥有「分配工作项」权限,你可以直接查询该组的成员:
- 先获取Contributors组的Descriptor:
GET https://dev.azure.com/{组织名}/{项目名}/_apis/graph/groups?api-version=7.1-preview.1
在返回结果中找到displayName为「Contributors」的组,提取其descriptor字段。
- 查询该组的成员:
GET https://dev.azure.com/{组织名}/{项目名}/_apis/graph/groups/{组Descriptor}/members?api-version=7.1-preview.1
这种方法适合大部分场景,若有额外自定义权限的用户,再补充步骤2的权限检查即可。
内容的提问来源于stack exchange,提问作者Sanket Kar
相关产品推荐
相关产品推荐

