mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 03:52:31 +08:00
Docs: Update HTTP API docs for nested folders (#67412)
* Docs: Update HTTP API docs for nested folders * Apply suggestions from code review Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
This commit is contained in:

committed by
GitHub

parent
3b257b151b
commit
3a50d7ea84
@ -39,6 +39,10 @@ that you cannot use this API for retrieving information about the General folder
|
|||||||
|
|
||||||
Returns all folders that the authenticated user has permission to view. You can control the maximum number of folders returned through the `limit` query parameter, the default is 1000. You can also pass the `page` query parameter for fetching folders from a page other than the first one.
|
Returns all folders that the authenticated user has permission to view. You can control the maximum number of folders returned through the `limit` query parameter, the default is 1000. You can also pass the `page` query parameter for fetching folders from a page other than the first one.
|
||||||
|
|
||||||
|
If nested folders are enabled, the operation expects an additional optional query parameter `parentUid` with the parent folder UID, and returns the immediate subfolders that the authenticated user has permission to view.
|
||||||
|
If the parameter is not supplied, then the operation returns immediate subfolders under the root
|
||||||
|
that the authenticated user has permission to view.
|
||||||
|
|
||||||
**Required permissions**
|
**Required permissions**
|
||||||
|
|
||||||
See note in the [introduction]({{< ref "#folder-api" >}}) for an explanation.
|
See note in the [introduction]({{< ref "#folder-api" >}}) for an explanation.
|
||||||
@ -122,6 +126,11 @@ Content-Type: application/json
|
|||||||
| Action | Scope |
|
| Action | Scope |
|
||||||
| ---------------- | ----------- |
|
| ---------------- | ----------- |
|
||||||
| `folders:create` | n/a |
|
| `folders:create` | n/a |
|
||||||
|
| `folders:write` | `folders:*` |
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```http
|
||||||
POST /api/folders HTTP/1.1
|
POST /api/folders HTTP/1.1
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
@ -162,7 +171,7 @@ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
|||||||
Updates an existing folder identified by uid.
|
Updates an existing folder identified by uid.
|
||||||
|
|
||||||
**Required permissions**
|
**Required permissions**
|
||||||
| `folders:write` | `folders:*` |
|
|
||||||
See note in the [introduction]({{< ref "#folder-api" >}}) for an explanation.
|
See note in the [introduction]({{< ref "#folder-api" >}}) for an explanation.
|
||||||
|
|
||||||
| Action | Scope |
|
| Action | Scope |
|
||||||
@ -188,6 +197,11 @@ Content-Type: application/json
|
|||||||
|
|
||||||
**Example Response**:
|
**Example Response**:
|
||||||
|
|
||||||
|
```http
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
If nested folders are enabled, and the folder is nested (lives under another folder) then the response additionally contains:
|
If nested folders are enabled, and the folder is nested (lives under another folder) then the response additionally contains:
|
||||||
|
|
||||||
@ -254,6 +268,11 @@ Content-Type: application/json
|
|||||||
Status Codes:
|
Status Codes:
|
||||||
|
|
||||||
- **200** – Deleted
|
- **200** – Deleted
|
||||||
|
- **401** – Unauthorized
|
||||||
|
- **400** – Bad Request
|
||||||
|
- **403** – Access Denied
|
||||||
|
- **404** – Folder not found
|
||||||
|
|
||||||
## Get folder by id
|
## Get folder by id
|
||||||
|
|
||||||
`GET /api/folders/id/:id`
|
`GET /api/folders/id/:id`
|
||||||
@ -333,6 +352,8 @@ Status Codes:
|
|||||||
|
|
||||||
**Example Response**:
|
**Example Response**:
|
||||||
|
|
||||||
|
```http
|
||||||
|
HTTP/1.1 200
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -379,3 +400,92 @@ Status Codes:
|
|||||||
- **401** – Unauthorized
|
- **401** – Unauthorized
|
||||||
- **403** – Access Denied
|
- **403** – Access Denied
|
||||||
- **404** – Folder not found
|
- **404** – Folder not found
|
||||||
|
|
||||||
|
## Move folder
|
||||||
|
|
||||||
|
`POST /api/folders/:uid/move`
|
||||||
|
|
||||||
|
Moves the folder.
|
||||||
|
|
||||||
|
This is relevant only if nested folders are enabled.
|
||||||
|
|
||||||
|
**Required permissions**
|
||||||
|
|
||||||
|
See note in the [introduction]({{< ref "#folder-api" >}}) for an explanation.
|
||||||
|
|
||||||
|
If moving the folder under another folder:
|
||||||
|
|
||||||
|
| Action | Scope |
|
||||||
|
| --------------- | -------------------------------------- |
|
||||||
|
| `folders:write` | `folders:uid:<destination folder UID>` |
|
||||||
|
|
||||||
|
If moving the folder under root:
|
||||||
|
| Action | Scope |
|
||||||
|
| -------------- | ------------- |
|
||||||
|
| `folders:create` | `folders:*` |
|
||||||
|
|
||||||
|
JSON body schema:
|
||||||
|
|
||||||
|
- **parentUid** – Optional [unique identifier]({{< relref "#identifier-id-vs-unique-identifier-uid" >}}) of the new parent folder. If this is empty, then the folder is moved under the root.
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```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",
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Status Codes:
|
||||||
|
|
||||||
|
- **200** – Moved
|
||||||
|
- **400** – Errors (invalid JSON, missing or invalid fields, and so on)
|
||||||
|
- **401** – Unauthorized
|
||||||
|
- **403** – Access denied
|
||||||
|
- **404** – Not found
|
||||||
|
Reference in New Issue
Block a user