

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 团队 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` 参数与 `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** — 未找到队伍 found/team 成员未找到

## 获取团队首选项
<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 正文架构：
+ **theme**：指定 `light`、`dark` 或空字符串以使用默认主题。
+ **homeDashboardId**— 仪表板`:id`的数字。默认值是 0。
+ **timezone**：指定 `utc`、`browser` 或空字符串以使用默认值。

省略参数会导致当前值被系统默认值替换。

**响应示例**

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

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