Skip to content

Turn a suite into a folder, moving its cases into a child suite of the same name

POST
/v1/suites/{id}/convert-to-folder
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.

id
required
string format: uuid

Converted — the folder (same id) and the child suite that now holds the cases

Media type application/json

What POST /v1/suites/{id}/convert-to-folder produced (B-7 AC-04).

object
folder
required

The converted node — same id and position, kind: folder.

object
schemaVersion
required
integer
Allowed values: 1
id
required
string format: uuid
name
required
string
parentId

Absent on a root node. Always a folder.

string
projectId
required
string
kind
required
string
Allowed values: folder suite
position
required

Order among siblings — dense and 0-based; every write that places a node renumbers them.

integer
description

Free text, up to 16 384 bytes of UTF-8. Absent when empty.

string
file

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.

string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
child
required

The new suite of the same name at position: 0 that now holds every case (and the file, if the node was filed).

object
schemaVersion
required
integer
Allowed values: 1
id
required
string format: uuid
name
required
string
parentId

Absent on a root node. Always a folder.

string
projectId
required
string
kind
required
string
Allowed values: folder suite
position
required

Order among siblings — dense and 0-based; every write that places a node renumbers them.

integer
description

Free text, up to 16 384 bytes of UTF-8. Absent when empty.

string
file

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.

string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
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

Media type application/json
object
error
required
string
Example
{
"error": "suite '6f1c2b3a-0000-4000-8000-0000000000e1' not found"
}

The node is already a folder (AC-03)

Media type application/json
object
error
required
string
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.

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}
Retry-After
integer

Seconds until the window rolls over