为什么 Azure Devops IterationId 是工作项历史记录的 Int?

Why is Azure Devops IterationId an Int for Workitem History?

我正在使用 Azure DevOps API 查询工作项以了解迭代如何随时间变化的历史记录。

所以我从一个典型的工作项查询开始,如下所示:

https://[ourserver]/[collection]/[project]/_apis/wit/workItems/[wi-id]/updates

并且在返回的 JSON 中我可以看到迭代更改。到目前为止一切顺利。

"System.IterationId": {
   "oldValue": 11068,
   "newValue": 11529
},

我的问题是当我尝试检索与这些 ID 关联的完整迭代记录时。 REST API 似乎使用 GUID 作为 ID,而不是整数。这是一个例子:

https://[ourserver]/[collection]/[project]/[team]/apis/work/teamsettings/iterations

{
   "id": "3c117833-d770-47f1-a483-65461c440721",
   "name": "Sprint 3",
   "path": "aa\bb\cc\Sprint 3",
   "attributes": {
      "startDate": "2020-02-05T00:00:00Z",
      "finishDate": "2020-02-18T00:00:00Z",
      "timeFrame": "past"
}

那么,工作项历史记录中的 System.IterationId 和 REST API 中用于迭代 ID 的 GUID 之间的魔法 link 在哪里?

您可以使用 Classification Nodes - Get Classification Nodes Rest API:

获取迭代 ID
GET https://dev.azure.com/{organization}/{project}/_apis/wit/classificationnodes?ids={ids}&api-version=5.1

您可以使用 URL 参数 $depth=2 来获取子项。

在结果中,您将得到 id,这是您在工作项更新中获得的 System.IterationId 值,identifier,这是您通过 teamsettings/iterations api.