Azure Devops Rest Api 获取团队当前 Sprint 的工作项和任务
Azure Devops Rest Api Get Team's Current Sprint's Work Items and Tasks
我正在寻找构建一些工具来查询团队冲刺的当前工作项。对于一个组织、项目和团队,我不确定如何做到这一点。我似乎可以通过调用来获取当前迭代:
https://dev.azure.com/{org}/{project}/{{team}/_apis/work/teamsettings/iterations?$timeframe=current&api-version=5.1
它return是这样的:
{
"count": 1,
"value": [
{
"id": "8c15e886-ece7-49ce-ab5a-4090aefb5ce2",
"name": "Sprint 1",
"path": "Red Kitten Matrix\Sprint 1",
"attributes": {
"startDate": null,
"finishDate": null,
"timeFrame": "current"
},
"url": "https://dev.azure.com/chrisdevopsprojects/e8d05711-3014-4ba7-82b7-ab6829c455dc/aed68f47-9035-4af5-9b0d-b0c19b4e9e9e/_apis/work/teamsettings/iterations/8c15e886-ece7-49ce-ab5a-4090aefb5ce2"
}
]
}
所以我可以获得指向当前团队冲刺的指针,但是你如何return其中的所有冲刺工作项和任务?
我在这里没有看到任何信息:
谢谢!
编辑:
所以我找到了一个工作项查询语言(WIQL...为什么不猜)查询,当我在 UI 的 devops 中调用它时,它会起作用,并且会在其余部分起作用API,但它会导致我发出一堆 ajax 请求来拉回所有内容。如果有更简单的方法,请告诉我。
这是我的 WIQL:
SELECT
[System.Id],
[System.WorkItemType],
[System.Title],
[System.AssignedTo],
[System.State],
[System.Tags]
FROM workitemLinks
WHERE
(
[Source].[System.TeamProject] = @project
AND [Source].[System.WorkItemType] <> 'Task'
AND [Source].[System.State] <> ''
AND [Source].[System.IterationPath] = @currentIteration('[Red Kitten Matrix]\Red Kitten Matrix Team <id:aed68f47-9035-4af5-9b0d-b0c19b4e9e9e>')
)
AND (
[Target].[System.TeamProject] = @project
AND [Target].[System.WorkItemType] <> ''
)
ORDER BY [System.Id]
MODE (MayContain)
它 return 在 UI 中取得了这个漂亮的结果:
但是当我尝试通过此端点通过 api 执行此操作时:
https://dev.azure.com/chrisdevopsprojects/Red%20Kitten%20Matrix/Red%20Kitten%20Matrix%20Team/_apis/wit/wiql?api-version=5.1
发布此正文:
{
"query": "SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] FROM workitemLinks WHERE ( [Source].[System.TeamProject] = @project AND [Source].[System.WorkItemType] <> 'Task' AND [Source].[System.State] <> '' AND [Source].[System.IterationPath] = @currentIteration('[Red Kitten Matrix]\Red Kitten Matrix Team')) AND ([Target].[System.TeamProject] = @project AND [Target].[System.WorkItemType] <> '' ) ORDER BY [System.Id] MODE (MayContain)"
}
我得到的响应是这样的:
{
"queryType": "oneHop",
"queryResultType": "workItemLink",
"asOf": "2020-04-28T03:00:48.353Z",
"columns": [
{
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
{
"referenceName": "System.WorkItemType",
"name": "Work Item Type",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.WorkItemType"
},
{
"referenceName": "System.Title",
"name": "Title",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Title"
},
{
"referenceName": "System.AssignedTo",
"name": "Assigned To",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.AssignedTo"
},
{
"referenceName": "System.State",
"name": "State",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.State"
},
{
"referenceName": "System.Tags",
"name": "Tags",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Tags"
}
],
"sortColumns": [
{
"field": {
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
"descending": false
},
{
"field": {
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
"descending": false
}
],
"workItemRelations": [
{
"rel": null,
"source": null,
"target": {
"id": 6,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/6"
}
},
{
"rel": "System.LinkTypes.Hierarchy-Forward",
"source": {
"id": 6,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/6"
},
"target": {
"id": 10,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/10"
}
},
...
所以看起来它没有 returning 我在 WIQL 中指定的列,我将不得不转身查询每个工作项 ID 的工作项 api return从此查询编辑。我想避免进行 20 次以上的休息调用来解析我想要的数据。有没有更好的方法?
谢谢
您可以使用OData API查询工作项数据。 https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}
对于以下 powershell 脚本中的示例:
$ourl = "https://analytics.dev.azure.com/{AzureOrganizationName}/{ProjectName}/_odata/v3.0-preview/WorkItems?`$filter=Iteration/IterationPath eq 'iterationName\iteration 5' and WorkItemType ne 'Task'&`$expand=Children(`$filter=WorkItemType ne '')&`$select=WorkItemId, Title, State"
$full="Personal access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($full)"))
$result = Invoke-RestMethod -Uri $ourl -Method Get -Header @{Authorization = "Basic $base64AuthInfo"}
$result.value
从下面的返回结果可以看出,返回了所需的工作项列。
检查文档中的示例 Query for linked work items 查询链接的工作项。
希望以上内容对您有所帮助!
我正在寻找构建一些工具来查询团队冲刺的当前工作项。对于一个组织、项目和团队,我不确定如何做到这一点。我似乎可以通过调用来获取当前迭代:
https://dev.azure.com/{org}/{project}/{{team}/_apis/work/teamsettings/iterations?$timeframe=current&api-version=5.1
它return是这样的:
{
"count": 1,
"value": [
{
"id": "8c15e886-ece7-49ce-ab5a-4090aefb5ce2",
"name": "Sprint 1",
"path": "Red Kitten Matrix\Sprint 1",
"attributes": {
"startDate": null,
"finishDate": null,
"timeFrame": "current"
},
"url": "https://dev.azure.com/chrisdevopsprojects/e8d05711-3014-4ba7-82b7-ab6829c455dc/aed68f47-9035-4af5-9b0d-b0c19b4e9e9e/_apis/work/teamsettings/iterations/8c15e886-ece7-49ce-ab5a-4090aefb5ce2"
}
]
}
所以我可以获得指向当前团队冲刺的指针,但是你如何return其中的所有冲刺工作项和任务?
我在这里没有看到任何信息:
谢谢!
编辑:
所以我找到了一个工作项查询语言(WIQL...为什么不猜)查询,当我在 UI 的 devops 中调用它时,它会起作用,并且会在其余部分起作用API,但它会导致我发出一堆 ajax 请求来拉回所有内容。如果有更简单的方法,请告诉我。
这是我的 WIQL:
SELECT
[System.Id],
[System.WorkItemType],
[System.Title],
[System.AssignedTo],
[System.State],
[System.Tags]
FROM workitemLinks
WHERE
(
[Source].[System.TeamProject] = @project
AND [Source].[System.WorkItemType] <> 'Task'
AND [Source].[System.State] <> ''
AND [Source].[System.IterationPath] = @currentIteration('[Red Kitten Matrix]\Red Kitten Matrix Team <id:aed68f47-9035-4af5-9b0d-b0c19b4e9e9e>')
)
AND (
[Target].[System.TeamProject] = @project
AND [Target].[System.WorkItemType] <> ''
)
ORDER BY [System.Id]
MODE (MayContain)
它 return 在 UI 中取得了这个漂亮的结果:
但是当我尝试通过此端点通过 api 执行此操作时: https://dev.azure.com/chrisdevopsprojects/Red%20Kitten%20Matrix/Red%20Kitten%20Matrix%20Team/_apis/wit/wiql?api-version=5.1
发布此正文:
{
"query": "SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] FROM workitemLinks WHERE ( [Source].[System.TeamProject] = @project AND [Source].[System.WorkItemType] <> 'Task' AND [Source].[System.State] <> '' AND [Source].[System.IterationPath] = @currentIteration('[Red Kitten Matrix]\Red Kitten Matrix Team')) AND ([Target].[System.TeamProject] = @project AND [Target].[System.WorkItemType] <> '' ) ORDER BY [System.Id] MODE (MayContain)"
}
我得到的响应是这样的:
{
"queryType": "oneHop",
"queryResultType": "workItemLink",
"asOf": "2020-04-28T03:00:48.353Z",
"columns": [
{
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
{
"referenceName": "System.WorkItemType",
"name": "Work Item Type",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.WorkItemType"
},
{
"referenceName": "System.Title",
"name": "Title",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Title"
},
{
"referenceName": "System.AssignedTo",
"name": "Assigned To",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.AssignedTo"
},
{
"referenceName": "System.State",
"name": "State",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.State"
},
{
"referenceName": "System.Tags",
"name": "Tags",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Tags"
}
],
"sortColumns": [
{
"field": {
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
"descending": false
},
{
"field": {
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
"descending": false
}
],
"workItemRelations": [
{
"rel": null,
"source": null,
"target": {
"id": 6,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/6"
}
},
{
"rel": "System.LinkTypes.Hierarchy-Forward",
"source": {
"id": 6,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/6"
},
"target": {
"id": 10,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/10"
}
},
...
所以看起来它没有 returning 我在 WIQL 中指定的列,我将不得不转身查询每个工作项 ID 的工作项 api return从此查询编辑。我想避免进行 20 次以上的休息调用来解析我想要的数据。有没有更好的方法?
谢谢
您可以使用OData API查询工作项数据。 https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}
对于以下 powershell 脚本中的示例:
$ourl = "https://analytics.dev.azure.com/{AzureOrganizationName}/{ProjectName}/_odata/v3.0-preview/WorkItems?`$filter=Iteration/IterationPath eq 'iterationName\iteration 5' and WorkItemType ne 'Task'&`$expand=Children(`$filter=WorkItemType ne '')&`$select=WorkItemId, Title, State"
$full="Personal access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($full)"))
$result = Invoke-RestMethod -Uri $ourl -Method Get -Header @{Authorization = "Basic $base64AuthInfo"}
$result.value
从下面的返回结果可以看出,返回了所需的工作项列。
检查文档中的示例 Query for linked work items 查询链接的工作项。
希望以上内容对您有所帮助!