使用 VSTS Rest API,如何创建 Markdown 小部件?

Using VSTS Rest API, how do you create a Markdown widget?

我正在尝试使用 this REST API 在 VSTS 的仪表板上创建(或更新...同样的问题)一个 "Markdown" 小部件。

POST https://{accountName}.visualstudio.com/{project}/{team}/_apis/dashboard/dashboards/{dashboardId}/widgets?api-version=5.0-preview.2

使用下面的 JSON 正文,根据示例,我不断收到 eTag 错误?我也试过更新现有的 Markdown Widget 但没有成功,所以这就是我转而删除和创建的原因。

{
    "name": "Markdown",
    "position": {
      "row": 1,
      "column": 4
    },
    "size": {
      "rowSpan": 2,
      "columnSpan": 2
    },
    "settings": "# AK Markdown\nAdd content using the markdown widget.\n- **Bold**\n- *Italic*\n- [Links]()",
    "settingsVersion": {
      "major": 1,
      "minor": 0,
      "patch": 0
    },
    "dashboard": {
      "eTag": "18"
    },
    "contributionId": "ms.vss-dashboards-web.Microsoft.VisualStudioOnline.Dashboards.MarkdownWidget"
  }

请参阅下面的 Fiddler Request/Response 屏幕截图。

我的目标是在各种 Build/Releases 的末尾,我想要 create/update 一个带有 markdown 的小部件,显示我们 users/stakeholders 的特定数据。许多不熟悉 VSTS 的人。

当add/create一个新的widget,position和eTag时,有一些原因会抛出407冲突错误,例如,如果已经有一个widget在相同的位置,那么它会抛出错误如果你add/create 一个新的小部件再次到该位置,因此您需要确保目标位置没有小部件

注意:小部件的大小会影响其他小部件的位置,例如小部件的位置是column:1; row:2,大小为rowSpan:2,那么下一个widget的位置可以是column:3; row:2,但不能column:2; row:2

处理此问题的简单方法是从 json 数据中删除位置 属性。

关于eTag值,可以调用Get a dashboard REST API,结果包含eTag 属性,在其他REST上使用此值即可API , 此外,您可以在创建小部件时从 json 数据中删除仪表板 属性。

关于更新widget,你可以调用Get Widget REST API,然后结果包含eTagsdashboard属性,之后使用这些值在更新小部件 REST API.