菜单
企业版 开源

新的文件夹 API

如果您正在运行 Grafana Enterprise,对于某些端点,您需要拥有特定权限。请参阅基于角色的访问控制权限获取更多信息。

要了解更多关于新的 API 结构的信息,请参阅API 概述

获取所有文件夹

GET /apis/folder.grafana.app/v1beta1/namespaces/:namespace/folders

返回经过认证的用户在给定组织中拥有查看权限的所有文件夹。使用 limit 查询参数来控制返回的仪表盘最大数量。要检索更多仪表盘,请利用响应中提供的 continue 令牌来获取下一页数据。

  • namespace: 要了解更多关于使用的 namespace,请参阅API 概述

所需权限

请参阅简介中的注释获取解释。

操作作用域
folders:readfolders:*

请求示例:

http
GET /apis/folder.grafana.app/v1beta1/namespaces/default/folders?limit=1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

响应示例:

http
HTTP/1.1 200
Content-Type: application/json
{
  "kind": "FolderList",
  "apiVersion": "folder.grafana.app/v1beta1",
  "metadata": {
    "continue": "org:1/start:1158/folder:"
  },
  "items": [
    {
      "kind": "Folder",
      "apiVersion": "folder.grafana.app/v1beta1",
      "metadata": {
        "name": "aef30vrzxs3y8d",
        "namespace": "default",
        "uid": "KCtv1FXDsJmTYQoTgcPnfuwZhDZge3uMpXOefaOHjb4X",
        "resourceVersion": "1741343686000",
        "creationTimestamp": "2025-03-07T10:34:46Z",
        "annotations": {
          "grafana.app/createdBy": "service-account:cef2t2rfm73lsb",
          "grafana.app/updatedBy": "service-account:cef2t2rfm73lsb",
          "grafana.app/updatedTimestamp": "2025-03-07T10:34:46Z"
        }
      },
      "spec": {
        "title": "example"
      }
    }
  ]
}

状态码

  • 200 – 成功
  • 401 – 未授权
  • 403 – 访问被拒绝

按 uid 获取文件夹

GET /apis/folder.grafana.app/v1beta1/namespaces/:namespace/folders/:uid

根据文件夹 uid 返回文件夹。

  • namespace: 要了解更多关于使用的 namespace,请参阅API 概述
  • uid: 要更新的文件夹的唯一标识符。这将是文件夹响应中的名称

所需权限

请参阅简介中的注释获取解释。

操作作用域
folders:readfolders:*

请求示例:

http
GET /apis/folder.grafana.app/v1beta1/namespaces/default/folders/aef30vrzxs3y8d HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

响应示例:

http
HTTP/1.1 200
Content-Type: application/json
{
  "kind": "Folder",
  "apiVersion": "folder.grafana.app/v1beta1",
  "metadata": {
    "name": "aef30vrzxs3y8d",
    "namespace": "default",
    "uid": "KCtv1FXDsJmTYQoTgcPnfuwZhDZge3uMpXOefaOHjb4X",
    "resourceVersion": "1741343686000",
    "creationTimestamp": "2025-03-07T10:34:46Z",
    "annotations": {
      "grafana.app/createdBy": "service-account:cef2t2rfm73lsb",
      "grafana.app/updatedBy": "service-account:cef2t2rfm73lsb",
      "grafana.app/updatedTimestamp": "2025-03-07T10:34:46Z",
      "grafana.app/folder": "fef30w4jaxla8b"
    }
  },
  "spec": {
    "title": "test"
  }
}

请注意标注 grafana.app/folder,它包含父文件夹的 uid。

状态码

  • 200 – 找到
  • 401 – 未授权
  • 403 – 访问被拒绝
  • 404 – 文件夹未找到

创建文件夹

POST /apis/folder.grafana.app/v1beta1/namespaces/:namespace/folders

创建一个新文件夹。

  • namespace: 要了解更多关于使用的 namespace,请参阅API 概述

所需权限

请参阅简介中的注释获取解释。

folders:create 允许创建文件夹和子文件夹。如果授权范围为 folders:uid:general,则允许创建根目录下的文件夹。否则,只允许在指定文件夹下创建子文件夹。

操作作用域
folders:createfolders:*
folders:writefolders:*

请求示例:

http
POST /apis/folder.grafana.app/v1beta1/namespaces/default/folders HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "metadata": {
    "name": "aef30vrzxs3y8d",
    "annotations": {
      "grafana.app/folder": "fef30w4jaxla8b"
    }
  }
  "spec": {
    "title": "child-folder"
  },
}

JSON 请求体 schema

  • metadata.name – Grafana 唯一标识符。如果您不想提供此项,可以将 metadata.generateName 设置为您希望用于 uid 的前缀。
  • metadata.annotations.grafana.app/folder - 可选字段,父文件夹的唯一标识符,新文件夹将在此父文件夹下创建。需要启用嵌套文件夹功能。
  • spec.title – 文件夹的标题。

响应示例:

http
HTTP/1.1 200
Content-Type: application/json
{
  "kind": "Folder",
  "apiVersion": "folder.grafana.app/v1beta1",
  "metadata": {
    "name": "eef33r1fprd34d",
    "namespace": "default",
    "uid": "X8momvVZnsXdOqvLD9I4ngqLVif2CgRWXHy9xb2UgjQX",
    "resourceVersion": "1741320415009",
    "creationTimestamp": "2025-03-07T04:06:55Z",
    "labels": {
      "grafana.app/deprecatedInternalID": "1159"
    },
    "annotations": {
      "grafana.app/folder": "fef30w4jaxla8b",
      "grafana.app/createdBy": "service-account:cef2t2rfm73lsb"
    }
  },
  "spec": {
    "title": "child-folder"
  }
}

状态码

  • 201 – 已创建
  • 400 – 错误(JSON 无效、字段缺失或无效等)
  • 401 – 未授权
  • 403 – 访问被拒绝
  • 409 – 冲突(同名 uid 的文件夹已存在)

更新文件夹

PUT /apis/folder.grafana.app/v1beta1/namespaces/:namespace/folders/:uid

更新由 uid 标识的现有文件夹。

  • namespace: 要了解更多关于使用的 namespace,请参阅API 概述
  • uid: 要更新的文件夹的唯一标识符。这将是文件夹响应中的名称

所需权限

请参阅简介中的注释获取解释。

操作作用域
folders:writefolders:*

请求示例:

http
PUT /apis/folder.grafana.app/v1beta1/namespaces/default/folders/fef30w4jaxla8b HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

"metadata": {
    "name": "aef30vrzxs3y8d",
    "annotations": {
      "grafana.app/folder": "xkj92m5pqw3vn4"
    }
  }
  "spec": {
    "title": "updated title"
  },

JSON 请求体 schema

  • metadata.name – 文件夹的唯一标识符
  • metadata.annotations.grafana.app/folder - 可选字段,父文件夹的唯一标识符。更新此字段可将文件夹移动到不同的父文件夹下。需要启用嵌套文件夹功能。
  • spec.title – 文件夹的标题。

响应示例:

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

{
  "kind": "Folder",
  "apiVersion": "folder.grafana.app/v1beta1",
  "metadata": {
    "name": "fef30w4jaxla8b",
    "namespace": "default",
    "uid": "YaWLsFrMwEaTlIQwX2iMnhHlJuZHtZugps50BQoyjXEX",
    "resourceVersion": "1741345736000",
    "creationTimestamp": "2025-03-07T11:08:56Z",
    "annotations": {
      "grafana.app/folder": "xkj92m5pqw3vn4",
      "grafana.app/createdBy": "service-account:cef2t2rfm73lsb",
      "grafana.app/updatedBy": "service-account:cef2t2rfm73lsb",
      "grafana.app/updatedTimestamp": "2025-03-07T11:08:56Z"
    }
  },
  "spec": {
    "title": "updated title"
  }
}

状态码

  • 200 – 已更新
  • 400 – 错误(JSON 无效、字段缺失或无效等)
  • 401 – 未授权
  • 403 – 访问被拒绝
  • 404 – 文件夹未找到
  • 412 – 前置条件失败(文件夹已被其他人修改)。在此状态码下,响应体将包含以下属性
http
HTTP/1.1 412 Precondition Failed
Content-Type: application/json; charset=UTF-8
Content-Length: 97

{
  "message": "The folder has been changed by someone else",
  "status": "version-mismatch"
}

删除文件夹

DELETE /apis/folder.grafana.app/v1beta1/namespaces/:namespace/folders/:uid

删除由 UID 标识的现有文件夹及其包含的所有仪表盘(和告警)。此操作无法撤销。如果Grafana 告警已启用,您可以设置一个可选的查询参数 forceDeleteRules=false,这样如果文件夹包含任何 Grafana 告警,请求将返回 400(错误请求)错误。但是,如果此参数设置为 true,则将删除此文件夹下的所有 Grafana 告警。

uid: 要删除的文件夹的唯一标识符。这将是文件夹响应中的名称

  • namespace: 要了解更多关于使用的 namespace,请参阅API 概述
  • folders:delete

所需权限

请参阅简介中的注释获取解释。

操作作用域
200 – 已删除folders:*

请求示例:

http
DELETE /apis/folder.grafana.app/v1beta1/namespaces/default/folders/fef30w4jaxla8b HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

响应示例:

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

{
  "kind": "Folder",
  "apiVersion": "folder.grafana.app/v1beta1",
  "metadata": {
    "name": "fef30w4jaxla8b",
    "namespace": "default",
    "uid": "YaWLsFrMwEaTlIQwX2iMnhHlJuZHtZugps50BQoyjXEX",
    "resourceVersion": "1741345736000",
    "creationTimestamp": "2025-03-07T11:08:56Z",
    "annotations": {
      "grafana.app/folder": "xkj92m5pqw3vn4",
      "grafana.app/createdBy": "service-account:cef2t2rfm73lsb",
      "grafana.app/updatedBy": "service-account:cef2t2rfm73lsb",
      "grafana.app/updatedTimestamp": "2025-03-07T11:08:56Z"
    }
  },
  "spec": {
    "title": "updated title"
  }
}

状态码

  • 400 – 错误请求
  • 401 – 未授权
  • API
  • 403 – 访问被拒绝
  • 404 – 文件夹未找到

标识符 (id) 与唯一标识符 (uid)

文件夹的唯一标识符 (uid) 可用于在组织中唯一标识文件夹。如果在创建文件夹时未提供,则会自动生成。uid 允许使用一致的 URL 访问文件夹,并在多个 Grafana 安装之间同步文件夹。这意味着更改文件夹的标题不会影响指向该文件夹的任何书签链接。

uid 最大长度为 40 个字符。

文件夹标识符 (id) 已弃用,推荐使用唯一标识符 (uid)。

GET /api/folders

获取所有文件夹

返回经认证的用户拥有查看权限的所有文件夹。您可以通过 limit 查询参数控制返回的文件夹最大数量,默认为 1000。您也可以传递 page 查询参数来获取非第一页的文件夹数据。

如果启用了嵌套文件夹,该操作需要一个额外的可选查询参数 parentUid(包含父文件夹 UID),并返回经认证用户拥有查看权限的直接子文件夹。如果未提供此参数,则该操作返回经认证用户拥有查看权限的根目录下的直接子文件夹。

GET /api/folders/:uid

所需权限

请参阅简介中的注释获取解释。

操作作用域
folders:readfolders:*

请求示例:

http
GET /api/folders?limit=10 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

响应示例:

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

[
  {
    "id":1,
    "uid": "nErXDvCkzz",
    "title": "Department ABC"
  },
  {
    "id":2,
    "uid": "k3S1cklGk",
    "title": "Department RND"
  }
]

按 uid 获取文件夹

如果启用了嵌套文件夹,并且文件夹是嵌套的(位于另一个文件夹下),则响应中还会包含

根据文件夹 uid 返回文件夹。

所需权限

请参阅简介中的注释获取解释。

操作作用域
folders:readfolders:*

请求示例:

http
GET /api/folders/nErXDvCkzzh HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

响应示例:

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

{
  "id":1,
  "uid": "nErXDvCkzz",
  "title": "Department ABC",
  "url": "/dashboards/f/nErXDvCkzz/department-abc",
  "hasAcl": false,
  "canSave": true,
  "canEdit": true,
  "canAdmin": true,
  "createdBy": "admin",
  "created": "2018-01-31T17:43:12+01:00",
  "updatedBy": "admin",
  "updated": "2018-01-31T17:43:12+01:00",
  "version": 1
}

parentUid - 父文件夹的 UID。

  • parents - 一个包含整个树状结构的数组,从根节点开始向下直到父文件夹。
  • POST /api/folders

状态码

  • 200 – 找到
  • 401 – 未授权
  • 403 – 访问被拒绝
  • 404 – 文件夹未找到

创建文件夹

uid – 可选的唯一标识符

创建一个新文件夹。

所需权限

请参阅简介中的注释获取解释。

folders:create 允许创建文件夹和子文件夹。如果授权范围为 folders:uid:general,则允许创建根目录下的文件夹。否则,只允许在指定文件夹下创建子文件夹。

操作作用域
folders:createfolders:*
folders:writefolders:*

请求示例:

http
POST /api/folders HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "uid": "nErXDvCkzz",
  "title": "Department ABC",
  "parentUid": "fgnj5e52gel76g"
}

JSON 请求体 schema

  • title – 文件夹的标题。
  • parentUid - 可选字段,父文件夹的唯一标识符,新文件夹将在此父文件夹下创建。需要启用嵌套文件夹功能。
  • 如果启用了嵌套文件夹,并且文件夹是嵌套的(位于另一个文件夹下),则响应中还会包含

响应示例:

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

{
  "id":1,
  "uid": "nErXDvCkzz",
  "title": "Department ABC",
  "url": "/dashboards/f/nErXDvCkzz/department-abc",
  "hasAcl": false,
  "canSave": true,
  "canEdit": true,
  "canAdmin": true,
  "createdBy": "admin",
  "created": "2018-01-31T17:43:12+01:00",
  "updatedBy": "admin",
  "updated": "2018-01-31T17:43:12+01:00",
  "version": 1
}

parentUid - 父文件夹的 UID。

  • parents - 一个包含整个树状结构的数组,从根节点开始向下直到父文件夹。
  • 200 – 已创建

状态码

  • 412 - 文件夹已存在
  • 400 – 错误(JSON 无效、字段缺失或无效等)
  • 401 – 未授权
  • 403 – 访问被拒绝
  • PUT /api/folders/:uid

更新文件夹

version – 提供当前版本以更新文件夹。如果 overwrite=true 则不需要。

更新由 uid 标识的现有文件夹。

所需权限

请参阅简介中的注释获取解释。

操作作用域
folders:writefolders:*

请求示例:

http
PUT /api/folders/nErXDvCkzz HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "title":"Department DEF",
  "version": 1
}

JSON 请求体 schema

  • parentUid - 可选字段,父文件夹的唯一标识符,新文件夹将在此父文件夹下创建。需要启用嵌套文件夹功能。
  • overwrite – 如果要用较新的版本覆盖现有文件夹,请设置为 true。
  • 412 – 前置条件失败

响应示例:

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

{
  "id":1,
  "uid": "nErXDvCkzz",
  "title": "Department DEF",
  "url": "/dashboards/f/nErXDvCkzz/department-def",
  "hasAcl": false,
  "canSave": true,
  "canEdit": true,
  "canAdmin": true,
  "createdBy": "admin",
  "created": "2018-01-31T17:43:12+01:00",
  "updatedBy": "admin",
  "updated": "2018-01-31T17:43:12+01:00",
  "version": 1
}

parentUid - 父文件夹的 UID。

  • parents - 一个包含整个树状结构的数组,从根节点开始向下直到父文件夹。
  • 200 – 已创建

状态码

  • 200 – 已更新
  • 400 – 错误(JSON 无效、字段缺失或无效等)
  • 401 – 未授权
  • 403 – 访问被拒绝
  • 404 – 文件夹未找到
  • 412 状态码用于解释为什么无法更新文件夹及其原因。可能有不同的原因:

文件夹已被其他人修改,status=version-mismatch

  • 响应体将包含以下属性

DELETE /api/folders/:uid

http
HTTP/1.1 412 Precondition Failed
Content-Type: application/json; charset=UTF-8
Content-Length: 97

{
  "message": "The folder has been changed by someone else",
  "status": "version-mismatch"
}

删除文件夹

移动文件夹

删除由 UID 标识的现有文件夹及其包含的所有仪表盘(和告警)。此操作无法撤销。如果Grafana 告警已启用,您可以设置一个可选的查询参数 forceDeleteRules=false,这样如果文件夹包含任何 Grafana 告警,请求将返回 400(错误请求)错误。但是,如果此参数设置为 true,则将删除此文件夹下的所有 Grafana 告警。

uid: 要删除的文件夹的唯一标识符。这将是文件夹响应中的名称

所需权限

请参阅简介中的注释获取解释。

操作作用域
200 – 已删除folders:*

请求示例:

http
DELETE /api/folders/nErXDvCkzz HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

响应示例:

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

{
  "message":"Folder deleted",
  "id": 2
}

状态码

  • 400 – 错误请求
  • 401 – 未授权
  • API
  • 403 – 访问被拒绝
  • 404 – 文件夹未找到

POST /api/folders/:uid/move

移动文件夹。

这仅在启用嵌套文件夹时相关。

如果将文件夹移动到另一个文件夹下

所需权限

请参阅简介中的注释获取解释。

folders:uid:<目标文件夹 UID>

操作作用域
folders:create如果将文件夹移动到根目录
folders:*

folders:uid:general

操作作用域
folders:createJSON 请求体 schema
folders:*

parentUid – 可选的唯一标识符的新父文件夹。如果此字段为空,则文件夹移动到根目录下。

  • 200 – 已移动

请求示例:

http
POST /api/folders/a5393ec3-5568-4e88-8809-b866968ae8a6/move HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "parentUid": "d80b18c0-266a-4aa4-ad5d-5537a00cb8e8",
}

响应示例:

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

{
	"id": 4,
	"uid": "a5393ec3-5568-4e88-8809-b866968ae8a6",
	"title": "just-testing",
	"url": "/dashboards/f/a5393ec3-5568-4e88-8809-b866968ae8a6/just-testing",
	"hasAcl": false,
	"canSave": true,
	"canEdit": true,
	"canAdmin": true,
	"canDelete": true,
	"createdBy": "Anonymous",
	"created": "2023-04-27T21:55:01.593741+03:00",
	"updatedBy": "Anonymous",
	"updated": "2023-04-27T21:55:15.747444+03:00",
	"parentUid": "d80b18c0-266a-4aa4-ad5d-5537a00cb8e8",
	"parents": [
		{
			"id": 2,
			"uid": "d80b18c0-266a-4aa4-ad5d-5537a00cb8e8",
			"title": "f0",
			"url": "",
			"hasAcl": false,
			"canSave": true,
			"canEdit": true,
			"canAdmin": true,
			"canDelete": true,
			"createdBy": "Anonymous",
			"created": "2023-04-27T21:53:46.070672+03:00",
			"updatedBy": "Anonymous",
			"updated": "2023-04-27T21:53:46.070673+03:00"
		}
	]
}

状态码

  • 400 – 错误(JSON 无效、字段缺失或无效等)
  • 404 – 未找到
  • 401 – 未授权
  • 403 – 访问被拒绝
  • 本页面有帮助吗?