Azure DevOps API技术问询:如何获取组织内各用户分配的所有工作项
获取Azure DevOps组织内用户分配工作项的API方案
没问题!Azure DevOps确实提供了专门的API来实现你的需求——获取组织内每个用户被分配的所有工作项,完全能支撑你生成高层报告的场景。下面是具体的实现细节和步骤:
1. 核心API:通过WIQL查询工作项
你需要用到Work Items - Query By Wiql API,它支持用WIQL(Work Item Query Language)编写灵活的查询语句,精准筛选分配给特定用户的工作项。
组织级查询端点(覆盖所有项目)
POST https://dev.azure.com/{organization}/_apis/wit/wiql?api-version=7.1-preview.2
如果你只需要查询单个项目,把路径里的
{organization}后加上/{project}即可。
关键查询语句示例
在请求体中传入WIQL语句,就能获取目标用户的所有工作项。比如:
SELECT [System.Id], [System.Title], [System.AssignedTo], [System.State], [System.Project], [System.CreatedDate] FROM WorkItems WHERE [System.AssignedTo] = '{user-email-or-id}' -- 可选:排除不需要的工作项类型,比如测试用例 AND [System.WorkItemType] NOT IN ('Test Case', 'Shared Parameter') ORDER BY [System.CreatedDate] DESC
{user-email-or-id}可以是用户的邮箱地址,或者Azure DevOps中的用户唯一ID。- 你可以根据报告需求,添加更多字段(比如完成时间、优先级等)到SELECT语句中。
请求示例(curl)
curl -X POST "https://dev.azure.com/your-organization/_apis/wit/wiql?api-version=7.1-preview.2" \ -H "Content-Type: application/json" \ -H "Authorization: Basic YOUR_PAT_TOKEN" \ -d '{ "query": "SELECT [System.Id], [System.Title], [System.AssignedTo], [System.State], [System.Project] FROM WorkItems WHERE [System.AssignedTo] = \"jane.smith@company.com\" ORDER BY [System.CreatedDate] DESC" }'
注意:
YOUR_PAT_TOKEN需要替换成你的个人访问令牌,且该令牌需拥有**Work Items (Read)**权限。
2. 辅助API:获取组织内所有用户列表
如果要遍历组织内所有用户,先调用这个API获取完整的用户清单:
GET https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1
返回结果会包含每个用户的邮箱、ID等信息,你可以用这些信息逐个调用WIQL API,收集所有用户的工作项数据。
重要注意事项
- 分页处理:如果某个用户的工作项数量较多,API会返回分页结果,需要通过响应中的
continuationToken参数继续请求,直到获取全部数据。 - 速率限制:Azure DevOps API有调用频率限制,建议批量处理时加入适当的延迟,避免被限流。
- 权限配置:除了工作项的读权限,获取用户列表的API需要你的PAT拥有**Graph (Read)**权限。
内容的提问来源于stack exchange,提问作者alao Ramon
相关产品推荐
相关产品推荐

