从项目Azure Devops REST API获取所有工作项

时间:2020-07-21 18:48:22

标签: azure-devops azure-devops-rest-api

我正在使用Azure devops API通过AWS Lambda node.js创建一个通知机器人。此时,我需要检查每个任务工作项是否都附加到父用户故事。

第一步是获取“给定”项目上的所有任务工作项,为此,我正在阅读azure devops api文档并发现了以下内容:Work Items - List

API正在询问我想要获取的工作项的ID,但是如果我需要“给定”项目中的所有工作项怎么办?

GET https://dev.azure.com/{organization}/{project}/_apis/wit/workitems?ids={ids}&api-version=5.1

或者是否有其他方法可以从给定项目中获取所有工作项ID?

2 个答案:

答案 0 :(得分:2)

您可以使用不需要ID的Work Items - Get Work Items Batch API,但结果中的最大工作项为200。

但是,如果需要检查“任务”,为什么需要所有项目中的工作项?您只能使用Wiql - Query By Wiql API来获得任务:

POST https://dev.azure.com/{organization}/{project}/{team}/_apis/wit/wiql?api-version=5.1

在正文中进行查询:

{
  "query": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Task'"
}

答案 1 :(得分:1)

进一步了解Shayki关于使用WIQL查询的回答,我建议您通过执行工作项链接查询来查找没有父用户故事的任务,从而在这里拥有两只鸟,只有一块石头。

POST https://dev.azure.com/{organization}/{project}/{team}/_apis/wit/wiql?api-version=5.1

请求有效载荷:

{
  "query": "SELECT [System.Id] FROM workitemLinks WHERE ([Source].[System.WorkItemType] = 'Task') AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse') AND ([Target].[System.WorkItemType] = 'User Story') MODE (DoesNotContain)"
}

这样,您不必遍历每个工作项即可检查它是否具有父项。

注意:WIQL查询将返回的结果限制为20K,如果查询产生的工作项多于20K,则返回错误。如果适用,请进一步使用上述查询的原因。