如何通过 DevOps API 设置团队的待办事项迭代

时间:2021-06-28 07:10:17

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

我有一个 Power Automate 流程,它根据表单响应执行一系列操作,其中之一是创建新的 DevOps 团队/董事会。根据我的发现,这需要 4 个步骤:创建新团队、分配待办事项迭代、创建新区域、将新区域分配给团队。这些都是使用流程中的“向 DevOps 发送 HTTP 请求”完成的。

我的问题是设置积压迭代,当前方法我正在尝试向位置 PATCH 发送一个 _apis/work/teamsettings?api-version=6.0,其正文完全匹配请求 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 匹配。此方法的响应始终返回 200 代码,但响应正文始终包含:

"backlogIteration": {
    "id": "00000000-0000-0000-0000-000000000000"
  }

访问 DevOps 团队确认尚未设置 Backlog Iteration。

我尝试过的其他方法是使用 _apis/work/teamsettings/iterations?api-version=6.0 地址,方法是发送一个 POST 正文为 {"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
}

我对这个工作没抱太大希望,因为根据我的理解,创建一个新的迭代和设置待办列表迭代是不同的。

如果有人对执行此操作的正确方法有什么建议,或者我的请求可能有什么问题,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

检查文档:https://docs.microsoft.com/en-us/rest/api/azure/devops/work/teamsettings/update?view=azure-devops-rest-6.0#request-body

您必须在请求正文中发送 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