

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 팀 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` 파라미터의 기본값은 1,000이며, `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입니다.
+ **시간대** - `utc`, `browser` 또는 빈 문자열(기본값 사용)을 지정합니다.

파라미터를 생략하면 현재 값이 시스템 기본값으로 바뀝니다.

**응답의 예**

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

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