공유 대시보드 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 구조