

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

# 團隊 API
<a name="Grafana-API-Team"></a>

使用 團隊 API 與 Amazon Managed Grafana 工作區中的團隊合作。此 API 中的所有動作都需要您擁有 管理員角色。

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

## 使用分頁進行團隊搜尋
<a name="Grafana-API-Team-Searchpaging"></a>

```
GET /api/teams/search?perpage=50&page=1&query=myteam
```

或

```
GET /api/teams/search?name=myteam
```

**範例請求**

```
GET /api/teams/search?perpage=10&page=1&query=myteam HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**使用查詢參數**

`perpage` 參數的預設值為 1000，`page`參數的預設值為 1。

回應中的 `totalCount` 欄位可用於團隊清單的分頁。例如，如果 `totalCount`是 100 個團隊，`perpage`而 參數設定為 10，則有 10 頁的團隊。

`query` 參數是選用的，並傳回查詢值包含在 `name`欄位中的結果。包含空格的查詢值需要 URL 編碼。例如 `query=my%20team`。

**使用名稱參數**

如果 `name` 參數符合 `name` 欄位， 參數會傳回單一團隊。

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

{
  "totalCount": 1,
  "teams": [
    {
      "id": 1,
      "orgId": 1,
      "name": "MyTestTeam",
      "email": "",
      "avatarUrl": "\/avatar\/3f49c15916554246daa714b9bd0ee39",
      "memberCount": 1
    }
  ],
  "page": 1,
  "perPage": 1000
```

狀態碼：
+ **200** — 已建立
+ **401** — 未授權
+ **403** — 許可遭拒
+ **404** — 找不到團隊 （如果依名稱搜尋）

## 依 ID 取得團隊
<a name="Grafana-API-Team-getbyId"></a>

```
GET /api/teams/:id
```

**範例請求**

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

**回應範例**

```
HHTTP/1.1 200
Content-Type: application/json

{
  "id": 1,
  "orgId": 1,
  "name": "MyTestTeam",
  "email": "",
  "created": "2017-12-15T10:40:45+01:00",
  "updated": "2017-12-15T10:40:45+01:00"
}
```

## 新增團隊
<a name="Grafana-API-Team-add"></a>

團隊 `name` 的 必須是唯一的。`name` 欄位為必要欄位，而 `email`和 `orgId` 欄位為選用欄位。

```
POST /api/teams
```

**範例請求**

```
POST /api/teams HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "name": "MyTestTeam",
  "email": "email@test.com",
  "orgId": 2
}
```

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

{"message":"Team created","teamId":2}
```

狀態碼：
+ **200** — 已建立
+ **401** — 未授權
+ **403** — 許可遭拒
+ **409** — 團隊名稱已存在

## 更新團隊
<a name="Grafana-API-Team-update"></a>

```
PUT /api/teams/:id
```

只有 `name`和 `email` 欄位可以更新。

**範例請求**

```
PUT /api/teams/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
        
{
  "name": "MyTestTeam",
  "email": "email@test.com"
}
```

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

{"message":"Team updated"}
```

狀態碼：
+ **200** — 已建立
+ **401** — 未授權
+ **403** — 許可遭拒
+ **404** — 找不到團隊
+ **409** — 團隊名稱已存在

## 依 ID 刪除團隊
<a name="Grafana-API-Team-deletebyId"></a>

```
DELETE /api/teams/:id
```

**範例請求**

```
DELETE /api/teams/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

{"message":"Team deleted"}
```

狀態碼：
+ **200** — 已建立
+ **401** — 未授權
+ **403** — 許可遭拒
+ **404** — 找不到團隊

## 取得團隊成員
<a name="Grafana-API-Team-getmembers"></a>

```
GET /api/teams/:teamId/members
```

**範例請求**

```
GET /api/teams/1/members HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

[
  {
    "orgId": 1,
    "teamId": 1,
    "userId": 3,
    "email": "user1@email.com",
    "login": "user1",
    "avatarUrl": "\/avatar\/1b3c32f6386b0185c40d359cdc733a7"
  },
  {
    "orgId": 1,
    "teamId": 1,
    "userId": 2,
    "email": "user2@email.com",
    "login": "user2",
    "avatarUrl": "\/avatar\/cad3c68da76e45d10269e8ef02f8e7"
  }
]
```

狀態碼：
+ **200** — 已建立
+ **401** — 未授權
+ **403** — 許可遭拒

## 新增 團隊成員
<a name="Grafana-API-Team-addmember"></a>

```
POST /api/teams/:teamId/members
```

**範例請求**

```
POST /api/teams/1/members HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
      
{
  "userId": 2
}
```

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

{"message":"Member added to Team"}
```

狀態碼：
+ **200** — 已建立
+ **400** — 使用者已在團隊中
+ **401** — 未授權
+ **403** — 許可遭拒
+ **404** — 找不到團隊

## 從團隊中移除成員
<a name="Grafana-API-Team-removemember"></a>

```
DELETE /api/teams/:teamId/members/:userId
```

**範例請求**

```
DELETE /api/teams/2/members/3 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

{"message":"Team Member removed"}
```

狀態碼：
+ **200** — 已建立
+ **401** — 未授權
+ **403** — 許可遭拒
+ **404** — 找不到團隊/找不到團隊成員

## 取得團隊偏好設定
<a name="Grafana-API-Team-getpreferences"></a>

```
GET /api/teams/:teamId/preferences
```

**範例請求**

```
GET /api/teams/2/preferences HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**回應範例**

```
HTTP/1.1 200
Content-Type: application/json

{
  "theme": "",
  "homeDashboardId": 0,
  "timezone": ""
}
```

## 更新團隊偏好設定
<a name="Grafana-API-Team-updatepreferences"></a>

```
PUT /api/teams/:teamId/preferences
```

**範例請求**

```
PUT /api/teams/2/preferences HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "theme": "dark",
  "homeDashboardId": 39,
  "timezone": "utc"
}
```

JSON 內文結構描述：
+ **佈景主題** — 指定 `light`、 `dark`或空字串以使用預設佈景主題。
+ **homeDashboardId** — 儀表板`:id`的數值。預設值為 0。
+ **timezone** - 指定 `utc`、 `browser`或空字串以使用預設值。

省略參數會導致目前值取代為系統預設值。

**回應範例**

```
HTTP/1.1 200
Content-Type: text/plain; charset=utf-8

{
  "message":"Preferences updated"
}
```