Folders API¶
10 confirmed endpoints — 7 respond with data, 3 require valid input.
Endpoints with Response Data¶
POST /api/v1/folders/ancestry¶
Retrieve folder path for a set of items or folders
✅ Live — responds with data
Sample Response:
Note
Error: {'statusCode': 500, 'message': 'TypeError', 'developerMessage': 'TypeError', 'payload': {'messages': ['TypeError'], 'debug': [], 'stack': 'TypeError\n at parseBody (/var/task/src/api/folder/index.j
POST /api/v1/folders/path¶
Create folder structure for given path
✅ Live — responds with data
Sample Response:
[
{
"path": "48a5706b-672b-4b4c-858a-cbb6067b8332"
},
{
"to": "e81bcde2-5be5-4419-baca-2b2f0450d8f5"
},
{
"folder": "4b5d263a-7c48-448f-b80d-59421864da98"
}
]
Note
Error: {'statusCode': 500, 'message': 'TypeError', 'developerMessage': 'TypeError', 'payload': {'messages': ['TypeError'], 'debug': [], 'stack': 'TypeError\n at parseBody (/var/task/src/api/folder/index.j
DELETE /api/v1/folders/{folderId}¶
Delete a folder
✅ Live — responds with data
Note
Error: {'statusCode': 404, 'message': 'The server can not find requested resource.'}
GET /api/v1/folders/{folderId}¶
Retrieve a folder entry
✅ Live — responds with data
Sample Response:
{
"id": "07a22be4-c7ad-483d-b79b-7ad2d6aebac0",
"owner": "0101e008-d785-4c6c-b549-a1c9bcefa282",
"name": "04",
"createdOn": "2026-04-01T15:29:20.482Z",
"hasSubfolder": true,
"parent": "d73d9454-8267-45d2-882b-37114960f1a4",
"itemType": "folder",
"visibleTo": {
"level": "selected_groups",
"groups": [
"versantstaging:KeldaAdminStaging",
"versantstaging:SystemAdmin",
"c6f15a7c-2145-446f-a226-2db481f1f377"
]
},
"updatableBy": {
"level": "selected_groups",
"groups": [
"c6f15a7c-2145-446f-a226-2db481f1f377",
"versantstaging:QvestPoweruser",
"versantstaging:SystemAdmin",
"versantstaging:MediaAdmin"
]
},
"metadata": {
"formId": "default_folder",
"formData": {}
}
}
Response Schema:
| Field | Type | Required |
|---|---|---|
createdOn |
string | Yes |
hasSubfolder |
boolean | Yes |
id |
string | Yes |
itemType |
string | Yes |
metadata |
object | Yes |
name |
string | Yes |
owner |
string | Yes |
parent |
string | Yes |
updatableBy |
object | Yes |
visibleTo |
object | Yes |
GET /api/v1/folders/{folderId}/content¶
Retrieve the content of a folder
✅ Live — responds with data
Sample Response:
{
"total": 2,
"hits": [
{
"owner": "4d98020d-1adf-49c9-bde7-4cdafbc2289e",
"folderParents": [
"07a22be4-c7ad-483d-b79b-7ad2d6aebac0"
],
"itemType": "folder",
"name": "06",
"updatableBy": {
"level": "selected_groups",
"groups": [
"c6f15a7c-2145-446f-a226-2db481f1f377",
"versantstaging:QvestPoweruser",
"versantstaging:SystemAdmin",
"versantstaging:MediaAdmin"
]
},
"visibleTo": {
"level": "selected_groups",
"groups": [
"versantstaging:KeldaAdminStaging",
"versantstaging:SystemAdmin",
"c6f15a7c-2145-446f-a226-2db481f1f377"
]
},
"id": "7cdfcadf-674a-441a-a9bc-2490931b06d8",
"createdOn": "2026-04-06T17:34:51.525Z"
},
{
"owner": "0101e008-d785-4c6c-b549-a1c9bcefa282",
"folderParents": [
"07a22be4-c7ad-483d-b79b-7ad2d6aebac0"
],
"itemType": "folder",
"name": "01",
"updatableBy": {
"level": "selected_groups",
"groups": [
"c6f15a7c-2145-446f-a226-2db481f1f377",
"versantstaging:QvestPoweruser",
"versantstaging:SystemAdmin",
"versantstaging:MediaAdmin"
]
},
"visibleTo": {
"level": "selected_groups",
"groups": [
"c6f15a7c-2145-446f-a226-2db481f1f377",
"versantstaging:KeldaAdminStaging",
"versantstaging:SystemAdmin",
"versantstaging:QvestPoweruser"
]
},
"id": "d965bb42-1f43-4870-a1c5-c2297f71a4b3",
"createdOn": "2026-04-01T15:29:20.630Z"
}
],
"from": 0
}
Response Schema:
| Field | Type | Required |
|---|---|---|
from |
integer | Yes |
hits |
array | Yes |
total |
integer | Yes |
PUT /api/v1/folders/{folderId}/metadata¶
Update metadata of a folder
✅ Live — responds with data
Sample Response:
{
"id": "07a22be4-c7ad-483d-b79b-7ad2d6aebac0",
"metadata": {
"formId": "default_folder",
"formData": {}
}
}
Response Schema:
| Field | Type | Required |
|---|---|---|
id |
string | Yes |
metadata |
object | Yes |
Note
Error: {'statusCode': 500, 'message': 'TypeError', 'developerMessage': 'TypeError', 'payload': {'messages': ['TypeError'], 'debug': [], 'stack': 'TypeError\n at parseBody (/var/task/src/api/folder/index.j
GET /config/api/v1/bookmarkFolders¶
Retrieve Bookmark Folders
✅ Live — responds with data
Sample Response:
Response Schema:
| Field | Type | Required |
|---|---|---|
folders |
array | Yes |
Endpoints Requiring Valid Input¶
These endpoints are confirmed live but need proper request bodies.
POST /api/v1/folders/{folderId}¶
Rename, move, change owner, or update access-controls or sortKey of a folder
⚠️ Live — requires valid request body
Sample Response:
{
"error": {
"statusCode": 400,
"message": "The new parent folder does not exists.",
"developerMessage": "The new parent folder does not exists.",
"payload": {
"messages": [
"The new parent folder does not exists."
],
"debug": [
"BadRequestError"
],
"code": 400,
"stack": "BadRequestError: The new parent folder does not exists.\n at planMoveAndVisibilityChange (/var/task/src/api/folder/index.js:287336:44)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async updateFolderCore (/var/task/src/api/folder/index.js:287063:22)\n at async Promise.all (index 0)\n at async updateFolder (/var/task/src/api/folder/index.js:287314:41)\n at async runRequest (/var/task/src/api/folder/index.js:259110:26)\n at async BufferedInvokeProcessor.processInvoke (file:///var/runtime/index.mjs:1092:22)\n at async _Runtime.processSingleConcurrent (file:///var/runtime/index.mjs:1178:7)\n at async _Runtime.start (file:///var/runtime/index.mjs:1165:7)\n at async ignition (file:///var/runtime/index.mjs:1634:5)",
"requestID": "2baabac1-57f6-463a-8298-c8c9132e0526"
}
}
}
Response Schema:
| Field | Type | Required |
|---|---|---|
error |
object | Yes |
Note
[400] {'statusCode': 400, 'message': 'The new parent folder does not exists.', 'developerMessage': 'The new parent folder does not exists.', 'payload': {'messages': ['The new parent folder does not exists.'
GET /api/v1/folders/{folderId}/metadata¶
Retrieve metadata for a folder
📝 Live — use a different HTTP method
PUT /config/api/v1/bookmarkFolders¶
Write Bookmark Folders
⚠️ Live — requires valid request body
Sample Response:
Response Schema:
| Field | Type | Required |
|---|---|---|
error |
object | Yes |
Note
[400] {'statusCode': 400, 'message': 'Malformed request'}
Not Found¶
| Method | Path | Code |
|---|---|---|
GET |
/api/v1/folders |
404 |
POST |
/api/v1/folders |
404 |
GET |
/api/v1/folders/{folderId}/ancestry |
404 |
DELETE |
/api/v1/folders/{folderId}/content |
404 |
PUT |
/api/v1/folders/{folderId}/content |
404 |
GET |
/api/v1/folders/{folderId}/items |
404 |
GET |
/api/v1/folders/{id}/content |
404 |