공유 대시보드 API
공유 대시보드 API
⚠️ Grafana 13부터
/api엔드포인트가/apis라우트로 대체되어 더 이상 사용되지 않게(deprecated) 되고 있어요. Grafana가 기존 API를 마이그레이션하는 동안 현재 사용 중인 레거시 API와 정확히 일치하지 않을 수 있어요. 이 변경으로 현재 설정이 중단되거나 깨지지는 않아요. 레거시 API는 비활성화되지 않으며 완전히 접근·사용 가능하지만,/api라우트는 더 이상 업데이트되지 않아요. 자세한 내용은 "Grafana의 새 API 구조" 문서를 참조해요.
요구 사항
Grafana Enterprise를 사용 중이라면 일부 엔드포인트에 특정 권한이 필요해요. 자세한 내용은 "Role-based access control permissions" 문서를 참조해요.
출처: 문서
본문
공유 대시보드 생성
POST /api/dashboards/uid/:uid/public-dashboards/
새 공유 대시보드를 생성해요.
필요한 권한 — 서문의 참고를 참조해요.
| Action | Scope |
|---|---|
| dashboards.public:write | dashboards:uid:<dashboard UID> |
새 공유 대시보드 예제 요청:
POST /api/dashboards/uid/xCpsVuc4z/public-dashboards/ HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...KEN>
{
"uid": "cd56d9fd-f3d4-486d-afba-a21760e2acbe",
"accessToken": "5c948bf96e6a4b13bd91975f9a2028b7",
"timeSelectionEnabled": false,
"isEnabled": true,
"annotationsEnabled": false,
"share": "public"
}
JSON body 스키마:
uid– 선택 사항. 공유 대시보드 생성 시의 고유 식별자. null이면 새 uid가 생성돼요.accessToken– 선택 사항. 고유한 접근 토큰. null이면 새 접근 토큰이 생성돼요.timeSelectionEnabled– 선택 사항. 공유 대시보드에서 시간 선택기를 활성화하려면true로 설정해요. 기본값은false.isEnabled– 선택 사항. 공유 대시보드를 활성화하려면true로 설정해요. 기본값은false.annotationsEnabled– 선택 사항. 주석을 표시하려면true로 설정해요. 기본값은false.share– 선택 사항. 공유 모드를 설정해요. 기본값은public.
예제 응답:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 78
{
"uid": "cd56d9fd-f3d4-486d-afba-a21760e2acbe",
"dashboardUid": "xCpsVuc4z",
"accessToken": "5c948bf96e6a4b13bd91975f9a2028b7",
"createdBy": 1,
"updatedBy": 1,
"createdAt": "2023-09-05T15:48:21-03:00",
"updatedAt": "2023-09-05T15:48:21-03:00",
"timeSelectionEnabled": false,
"isEnabled": false,
"annotationsEnabled": false,
"share": "public"
}
상태 코드:
- 200 – Created
- 400 – Errors (잘못된 JSON, 누락되거나 잘못된 필드, 또는 대시보드가 이미 공유된 경우)
- 401 – Unauthorized
- 403 – Access denied
- 404 – Dashboard not found
오류 응답 body에는 다음과 같은 속성이 있어요:
HTTP/1.1 400 Bad request
Content-Type: application/json; charset=UTF-8
Content-Length: 107
{
"statusCode": 400,
"messageId": "publicdashboards.dashboardIsPublic",
"message": "Dashboard is already public"
}
공유 대시보드 업데이트
PATCH /api/dashboards/uid/:uid/public-dashboards/:publicDashboardUid
지정된 고유 식별자(uid)의 공유 대시보드를 업데이트해요.
필요한 권한 — 서문의 참고를 참조해요.
| Action | Scope |
|---|---|
| dashboards.public:write | dashboards:uid:<dashboard UID> |
공유 대시보드 업데이트 예제 요청:
PATCH /api/dashboards/uid/xCpsVuc4z/public-dashboards/cd56d9fd-f3d4-486d-afba-a21760e2acbe HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...KEN>
{
"timeSelectionEnabled": false,
"isEnabled": true,
"annotationsEnabled": false,
"share": "public"
}
JSON body 스키마:
timeSelectionEnabled– 선택 사항. 공유 대시보드에서 시간 선택기를 활성화하려면true로 설정해요. 기본값은false.isEnabled– 선택 사항. 공유 대시보드를 활성화하려면true로 설정해요. 기본값은false.annotationsEnabled– 선택 사항. 주석을 표시하려면true로 설정해요. 기본값은false.share– 선택 사항. 공유 모드를 설정해요. 기본값은public.
예제 응답:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 78
{
"uid": "cd56d9fd-f3d4-486d-afba-a21760e2acbe",
"dashboardUid": "xCpsVuc4z",
"accessToken": "5c948bf96e6a4b13bd91975f9a2028b7",
"createdBy": 1,
"updatedBy": 1,
"createdAt": "2023-09-05T15:48:21-03:00",
"updatedAt": "2023-09-05T15:48:21-03:00",
"timeSelectionEnabled": false,
"isEnabled": false,
"annotationsEnabled": false,
"share": "public"
}
상태 코드:
- 200 – Updated
- 400 – Errors (잘못된 JSON, 누락되거나 잘못된 필드)
- 401 – Unauthorized
- 403 – Access denied
- 404 – Dashboard not found
오류 응답 body에는 다음과 같은 속성이 있어요:
HTTP/1.1 400 Bad request
Content-Type: application/json; charset=UTF-8
Content-Length: 107
{
"statusCode": 400,
"messageId": "publicdashboards.dashboardIsPublic",
"message": "Dashboard is already public"
}
대시보드 uid로 공유 대시보드 가져오기
GET /api/dashboards/uid/:uid/public-dashboards/
대시보드의 고유 식별자(uid)가 주어지면 공유 대시보드를 반환해요.
필요한 권한 — 서문의 참고를 참조해요.
| Action | Scope |
|---|---|
| dashboards:read | dashboards:uid:<dashboard UID> |
예제 요청:
GET /api/dashboards/uid/xCpsVuc4z/public-dashboards/ HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...>
예제 응답:
HTTP/1.1 200
Content-Type: application/json
{
"uid": "e71950f3-e7dd-4d1e-aa8a-a857bc5e7d64",
"dashboardUid": "xCpsVuc4z",
"accessToken": "dab10f3a4fbb4342a602b03079c7ed64",
"createdBy": 1,
"updatedBy": 1,
"createdAt": "2023-09-05T15:48:21-03:00",
"updatedAt": "2023-09-05T15:48:21-03:00",
"timeSelectionEnabled": false,
"isEnabled": false,
"annotationsEnabled": false,
"share": "public"
}
상태 코드:
- 200 – Found
- 401 – Unauthorized
- 403 – Access denied
- 404 – Dashboard not found
대시보드 uid와 공유 대시보드 uid로 공유 대시보드 삭제
DELETE /api/dashboards/uid/:uid/public-dashboards/:publicDashboardUid
지정된 고유 식별자(uid)의 공유 대시보드를 삭제해요.
필요한 권한 — 서문의 참고를 참조해요.
| Action | Scope |
|---|---|
| dashboards.public:write | dashboards:uid:<dashboard UID> |
예제 요청:
DELETE /api/dashboards/uid/xCpsVuc4z/public-dashboards/cd56d9fd-f3d4-486d-afba-a21760e2acbe HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...>
상태 코드:
- 200 – Deleted
- 401 – Unauthorized
- 403 – Access denied
모든 공유 대시보드 목록 가져오기 (페이지네이션)
GET /api/dashboards/public-dashboards
필요한 권한 — 서문의 참고를 참조해요.
| Action | Scope |
|---|---|
| dashboards:read | dashboards:uid:<dashboard UID> |
예제 요청:
GET /api/dashboards/public-dashboards?perpage=2&page=3 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...>
예제 응답:
HTTP/1.1 200
Content-Type: application/json
{
"publicDashboards": [
{
"uid": "e9f29a3c-fcc3-4fc5-a690-ae39c97d24ba",
"accessToken": "6c13ec1997ba48c5af8c9c5079049692",
"title": "Datasource Shared Queries",
"dashboardUid": "d2f21d0a-76c7-47ec-b5f3-9dda16e5a996",
"isEnabled": true
},
{
"uid": "a174f604-6fe7-47de-97b4-48b7e401b540",
"accessToken": "d1fcff345c0f45e8a78c096c9696034a",
"title": "Datasource with template variables",
"dashboardUid": "51DiOw0Vz",
"isEnabled": true
}
],
"totalCount": 30,
"page": 3,
"perPage": 2
}
더 알아보기 (Learn more)
- 공유 대시보드 전반 개요
- Grafana의 새 API 구조