Turn a suite into a folder, moving its cases into a child suite of the same name
const url = 'https://beta-api.plune.ai/v1/suites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/convert-to-folder';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://beta-api.plune.ai/v1/suites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/convert-to-folder \ --header 'Authorization: Bearer <token>'The one way to convert a suite that holds cases (ADR 0031, AC-04). In a single transaction the node’s kind becomes folder — same id, same position — a child suite of the same name is inserted at position: 0, and every case moves into it; a file the node carried moves to the child, so the next case from that spec is filed beside its siblings. Two audit entries are written under one session, so the operation reads as one in D8 (send X-Plune-Session as elsewhere). Nothing is lost: the cases keep their ids, versions and history. Works on an empty suite too — the child is then empty, though PATCH { kind } is the lighter way for that. The tree the dashboard shows afterwards is GET /v1/suites.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Responses
Section titled “ Responses ”Converted — the folder (same id) and the child suite that now holds the cases
What POST /v1/suites/{id}/convert-to-folder produced (B-7 AC-04).
object
The converted node — same id and position, kind: folder.
object
Absent on a root node. Always a folder.
Order among siblings — dense and 0-based; every write that places a node renumbers them.
Free text, up to 16 384 bytes of UTF-8. Absent when empty.
The spec path this suite was filed from (an automated case’s specRef, normalised). Set by filing alone and never by hand; absent on nodes a person made.
The new suite of the same name at position: 0 that now holds every case (and the file, if the node was filed).
object
Absent on a root node. Always a folder.
Order among siblings — dense and 0-based; every write that places a node renumbers them.
Free text, up to 16 384 bytes of UTF-8. Absent when empty.
The spec path this suite was filed from (an automated case’s specRef, normalised). Set by filing alone and never by hand; absent on nodes a person made.
Example
{ "folder": { "schemaVersion": 1, "id": "6f1c2b3a-0000-4000-8000-0000000000e1", "projectId": "6f1c2b3a-0000-4000-8000-0000000000a1", "name": "Checkout", "kind": "folder", "position": 1, "createdAt": "2026-09-01T10:00:00.000Z", "updatedAt": "2026-09-11T10:09:00.000Z" }, "child": { "schemaVersion": 1, "id": "6f1c2b3a-0000-4000-8000-0000000000e9", "projectId": "6f1c2b3a-0000-4000-8000-0000000000a1", "parentId": "6f1c2b3a-0000-4000-8000-0000000000e1", "name": "Checkout", "kind": "suite", "position": 0, "createdAt": "2026-09-11T10:09:00.000Z", "updatedAt": "2026-09-11T10:09:00.000Z" }}No / invalid token or session
Not found or not yours
object
Example
{ "error": "suite '6f1c2b3a-0000-4000-8000-0000000000e1' not found"}The node is already a folder (AC-03)
object
Example
{ "error": "suite '6f1c2b3a-0000-4000-8000-0000000000f1' is already a folder"}Rate-limited: either the per-route throttle or a tenant quota. Retry-After carries the seconds until the window rolls over.
object
Example generated
{ "error": "example"}Headers
Section titled “Headers ”Seconds until the window rolls over