

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 儀表板版本 API
<a name="Grafana-API-DashboardVersions"></a>

使用 Dashboard Versions API 擷取儀表板版本，並將儀表板還原至指定的版本。

**注意**  
若要搭配 Amazon Managed Grafana 工作區使用 Grafana API，您必須擁有有效的 Grafana API 字符。您可以在 API 請求的 `Authorization` 欄位中包含此項目。如需如何建立權杖以驗證 API 呼叫的詳細資訊，請參閱 [使用字符進行驗證](authenticating-grafana-apis.md)。

## 取得所有儀表板版本
<a name="Grafana-API-DashboardVersions-getall"></a>

```
GET /api/dashboards/id/:dashboardId/versions
```

使用指定的 取得儀表板的所有現有儀表板版本`dashboardId`。

查詢參數：
+ **limit** — 要傳回的結果數目上限。
+ **start** — 傳回查詢時要從 開始的版本。

**範例請求**

```
GET /api/dashboards/id/1/versions?limit=2?start=0 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**回應範例**

```
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 428

[
  {
    "id": 2,
    "dashboardId": 1,
    "parentVersion": 1,
    "restoredFrom": 0,
    "version": 2,
    "created": "2017-06-08T17:24:33-04:00",
    "createdBy": "admin",
    "message": "Updated panel title"
  },
  {
    "id": 1,
    "dashboardId": 1,
    "parentVersion": 0,
    "restoredFrom": 0,
    "version": 1,
    "created": "2017-06-08T17:23:33-04:00",
    "createdBy": "admin",
    "message": "Initial save"
  }
]
```

狀態碼：
+ **200** — OK
+ **400** — 錯誤
+ **401** — 未授權
+ **404** — 找不到儀表板版本

## 取得儀表板版本
<a name="Grafana-API-DashboardVersions-get"></a>

```
GET /api/dashboards/id/:dashboardId/versions/:id
```

針對具有指定 的儀表板，取得具有指定 ID 的儀表板版本`dashboardId`。

**範例請求**

```
GET /api/dashboards/id/1/versions/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**回應範例**

```
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 1300

{
  "id": 1,
  "dashboardId": 1,
  "parentVersion": 0,
  "restoredFrom": 0,
  "version": 1,
  "created": "2017-04-26T17:18:38-04:00",
  "message": "Initial save",
  "data": {
    "annotations": {
      "list": [

      ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "hideControls": false,
    "id": 1,
    "links": [

    ],
    "rows": [
      {
        "collapse": false,
        "height": "250px",
        "panels": [

        ],
        "repeat": null,
        "repeatIteration": null,
        "repeatRowId": null,
        "showTitle": false,
        "title": "Dashboard Row",
        "titleSize": "h6"
      }
    ],
    "schemaVersion": 14,
    "style": "dark",
    "tags": [

    ],
    "templating": {
      "list": [

      ]
    },
    "time": {
      "from": "now-6h",
      "to": "now"
    },
    "timepicker": {
      "refresh_intervals": [
        "5s",
        "10s",
        "30s",
        "1m",
        "5m",
        "15m",
        "30m",
        "1h",
        "2h",
        "1d"
      ],
      "time_options": [
        "5m",
        "15m",
        "1h",
        "6h",
        "12h",
        "24h",
        "2d",
        "7d",
        "30d"
      ]
    },
    "timezone": "browser",
    "title": "test",
    "version": 1
  },
  "createdBy": "admin"
}
```

狀態碼：
+ **200** — OK
+ **401** — 未授權
+ **404** — 找不到儀表板版本

## 還原儀表板
<a name="Grafana-API-DashboardVersions-restore"></a>

```
POST /api/dashboards/id/:dashboardId/restore
```

將儀表板還原至您指定的儀表板版本。

**範例請求**

```
POST /api/dashboards/id/1/restore
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "version": 1
}
```

JSON 內文結構描述：
+ **版本** — 要還原的儀表板版本。

**回應範例**

```
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 67

{
  "slug": "my-dashboard",
  "status": "success",
  "version": 3
}
```

JSON 回應內文結構描述：
+ **slug** — 儀表板標題的 URL 易記 slug。
+ **狀態** - 還原是否成功。
+ **版本** — 還原之後的新儀表板版本。

狀態碼：
+ **200** — 已建立
+ **401** — 未授權
+ **404** — 找不到儀表板或儀表板版本
+ **500** — 內部伺服器錯誤 （表示從資料庫擷取儀表板標籤時發生問題）

錯誤回應範例：

```
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=UTF-8
Content-Length: 46

{
  "message": "Dashboard version not found"
}
```

JSON 回應內文結構描述：
+ **訊息** — 說明失敗原因的訊息。

## 比較儀表板版本
<a name="Grafana-API-DashboardVersions-compare"></a>

```
POST /api/dashboards/calculate-diff
```

透過計算儀表板的 JSON 差異來比較兩個儀表板版本。

**範例請求**

```
POST /api/dashboards/calculate-diff HTTP/1.1
Accept: text/html
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "base": {
    "dashboardId": 1,
    "version": 1
  },
  "new": {
    "dashboardId": 1,
    "version": 2
  },
  "diffType": "json"
}
```

JSON 內文結構描述：
+ **base** — 代表基礎儀表板版本的物件。
+ **new** - 代表新儀表板版本的物件。
+ **difftype** — 要傳回的 diff 類型。有效值為 `json` 和 `basic`。

回應範例 (JSON diff)

```
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

<p id="l1" class="diff-line diff-json-same">
  <!-- Diff omitted -->
</p>
```

回應是 diff 的文字表示法，其中儀表板值在 JSON 中，類似於 GitHub 或 GitLab 等網站上的差異。

狀態碼：
+ **200** — OK
+ **200** — 錯誤請求，傳送無效的 JSON
+ **401** — 未授權
+ **404** — 找不到

回應範例 （基本差異）

```
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

<div class="diff-group">
  <!-- Diff omitted -->
</div>
```

回應是變更的摘要，衍生自兩個 JSON 物件之間的差異。

狀態碼：
+ **200** — OK
+ **200** — 錯誤請求，傳送無效的 JSON
+ **401** — 未授權
+ **404** — 找不到