如何通过 DevOps 设置团队的积压迭代 API
How the Backlog Iteration of a Team be set via DevOps API
我有一个 Power Automate 流程,它根据表单响应执行 collection 的操作,其中之一是创建新的 DevOps Team/Board。根据我的发现,这需要 4 个步骤:创建新团队、分配积压迭代、创建新区域、将新区域分配给团队。这些都是使用流程中的“向 DevOps 发送 HTTP 请求”完成的。
我的问题是设置积压迭代,当前方法我正在尝试将 PATCH
发送到位置 _apis/work/teamsettings?api-version=6.0
body 请求 teamsettings
时与其他团队完全匹配,看起来像这样:
{
"backlogIteration": {
"id": "1591fdfe-9822-4549-9163-9d359a1699aa",
"name": "{Name of the main project}",
"path": "",
"url": "https://dev.azure.com/{org}/{project ID}/_apis/wit/classificationNodes/Iterations"
}
}
我仔细检查了这是否与项目中所有其他团队的 backlogIteration
匹配。此方法的响应始终 returns 一个 200
代码,但响应 body 始终包含:
"backlogIteration": {
"id": "00000000-0000-0000-0000-000000000000"
}
访问 DevOps 团队确认未设置积压迭代。
我试过的其他方法是使用_apis/work/teamsettings/iterations?api-version=6.0
地址发送POST
和body {"id": "1591fdfe-9822-4549-9163-9d359a1699aa"}
,匹配上一个方法中的 ID。对此的响应是:
{
"$id": "1",
"innerException": null,
"message": "TF400494: A team iteration cannot be created for the top-level iteration node.",
"typeName": "System.InvalidOperationException, mscorlib",
"typeKey": "InvalidOperationException",
"errorCode": 0,
"eventId": 0
}
我对它的工作没有抱太大希望,因为根据我的理解,创建新迭代和设置积压迭代是不同的。
如果有人对执行此操作的正确方法有什么建议,或者我的请求可能有什么问题,我们将不胜感激。
您必须在请求正文中发送 id:
{"backlogIteration":"17d4dcfd-4bda-4d80-8293-a7ff4f7c9e06"}
Powershell 示例:
$user = ""
$token = "YOUR_PAT"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$org = "ORGNAME"
$teamProject = "TEAM PROJECT"
$teamName = "TEAM"
$restApiPatchIterations = "https://dev.azure.com/$org/$teamProject/$teamName/_apis/work/teamsettings?api-version=6.1-preview.1"
function InvokePatchRequest ($PatchUrl, $body)
{
return Invoke-RestMethod -Uri $PatchUrl -Method Patch -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body
}
$body = "{`"backlogIteration`":`"YOUR_ID"}"
InvokePatchRequest $restApiPatchIterations $body
我有一个 Power Automate 流程,它根据表单响应执行 collection 的操作,其中之一是创建新的 DevOps Team/Board。根据我的发现,这需要 4 个步骤:创建新团队、分配积压迭代、创建新区域、将新区域分配给团队。这些都是使用流程中的“向 DevOps 发送 HTTP 请求”完成的。
我的问题是设置积压迭代,当前方法我正在尝试将 PATCH
发送到位置 _apis/work/teamsettings?api-version=6.0
body 请求 teamsettings
时与其他团队完全匹配,看起来像这样:
{
"backlogIteration": {
"id": "1591fdfe-9822-4549-9163-9d359a1699aa",
"name": "{Name of the main project}",
"path": "",
"url": "https://dev.azure.com/{org}/{project ID}/_apis/wit/classificationNodes/Iterations"
}
}
我仔细检查了这是否与项目中所有其他团队的 backlogIteration
匹配。此方法的响应始终 returns 一个 200
代码,但响应 body 始终包含:
"backlogIteration": {
"id": "00000000-0000-0000-0000-000000000000"
}
访问 DevOps 团队确认未设置积压迭代。
我试过的其他方法是使用_apis/work/teamsettings/iterations?api-version=6.0
地址发送POST
和body {"id": "1591fdfe-9822-4549-9163-9d359a1699aa"}
,匹配上一个方法中的 ID。对此的响应是:
{
"$id": "1",
"innerException": null,
"message": "TF400494: A team iteration cannot be created for the top-level iteration node.",
"typeName": "System.InvalidOperationException, mscorlib",
"typeKey": "InvalidOperationException",
"errorCode": 0,
"eventId": 0
}
我对它的工作没有抱太大希望,因为根据我的理解,创建新迭代和设置积压迭代是不同的。
如果有人对执行此操作的正确方法有什么建议,或者我的请求可能有什么问题,我们将不胜感激。
您必须在请求正文中发送 id:
{"backlogIteration":"17d4dcfd-4bda-4d80-8293-a7ff4f7c9e06"}
Powershell 示例:
$user = ""
$token = "YOUR_PAT"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$org = "ORGNAME"
$teamProject = "TEAM PROJECT"
$teamName = "TEAM"
$restApiPatchIterations = "https://dev.azure.com/$org/$teamProject/$teamName/_apis/work/teamsettings?api-version=6.1-preview.1"
function InvokePatchRequest ($PatchUrl, $body)
{
return Invoke-RestMethod -Uri $PatchUrl -Method Patch -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $body
}
$body = "{`"backlogIteration`":`"YOUR_ID"}"
InvokePatchRequest $restApiPatchIterations $body