Rename, re-parent, reorder or re-kind a node
const url = 'https://beta-api.plune.ai/v1/suites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"checkout — cart.spec.ts","position":0}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://beta-api.plune.ai/v1/suites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "checkout — cart.spec.ts", "position": 0 }'Every structural edit of the Suites screen goes through here (api.ts → updateSuite): inline rename, “Move to…”, the ↑/↓ that reorder siblings, and the change of kind. Send only what changes; parentId: null moves a node back to the root. Siblings are renumbered densely after every placement, so position is always 0-based and gap-free when read back.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”Rename, re-parent, reorder, re-kind. A parent that would close a cycle, or that is a suite, is rejected with 400. A change of kind is refused with 409 while the node still holds what the new kind cannot: test cases (suite → folder — POST /v1/suites/{id}/convert-to-folder moves them into a child suite) or child suites (folder → suite — move or delete them first).
object
Three states: omit to keep the current parent, a folder id to move under it, or null to move this node back to the root. A move without position lands after the last sibling.
The new slot among the siblings; the others close ranks.
null clears it.
Example
{ "name": "checkout — cart.spec.ts", "position": 0}Responses
Section titled “ Responses ”Updated
A node of the tree as stored: the authoring core plus server-owned scoping metadata. The tree is a filesystem (B-7): a folder holds folders and suites, a suite holds test cases.
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
{ "schemaVersion": 1, "id": "6f1c2b3a-0000-4000-8000-0000000000a1", "name": "checkout — cart.spec.ts", "projectId": "u-shop::default", "kind": "suite", "position": 0, "description": "Cart and checkout flows of the web shop.", "createdAt": "2026-09-16T09:12:04.151Z", "updatedAt": "2026-09-16T09:12:04.151Z"}Invalid body, unknown/foreign parent, a parent that would create a cycle, or a parent that is a suite
object
Example generated
{ "error": "example"}No / invalid token or session
Not found or not yours
object
Example generated
{ "error": "example"}The kind cannot change yet: a suite that still holds test cases, or a folder that still holds child suites
object
Example generated
{ "error": "example"}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