Skip to content

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:

{
  "folders": []
}

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:

{
  "error": {
    "statusCode": 400,
    "message": "Malformed request"
  }
}

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