Workspaces

Browse datasource folders

POST
/api/v1/workspaces/datasource/browse

Browse datasource folders

Browse the remote folder hierarchy of a datasource without persisting anything.

Connects to the external provider using the credentials in the payload and returns the immediate subfolders of parent_id (or the top-level entries when parent_id is null). Use this to power a visual folder picker before submitting a datasource configuration via PATCH /api/v1/workspaces/{id} with a datasource payload.

Access: any authenticated user.

Supported providers and credentials:

  • googledrive: service_account_file (JSON string of the service account key file). When parent_id is omitted, returns the folders explicitly shared with the service account.
  • sharepoint: client_id, client_secret, tenant_id, instance_url, site_name. When both drive_id and parent_id are null, returns the site's document libraries as kind="library" entries (each entry's id is the drive id). Pass that id back as drive_id (with parent_id=null) to list the library root; pass it as drive_id together with a folder's id as parent_id to descend into a folder.

Authorization

bearerAuth
AuthorizationBearer <token>

Console session token (Authorization: Bearer <session>) or product API key (Authorization: Bearer <api-key> or x-api-key). Session tokens are validated via Better Auth get-session; API keys against the shared database.

In: header

Header Parameters

authorization?string|null
x-api-key?string|null

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Request body (WorkspaceDatasourceBrowseRequest).

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/v1/workspaces/datasource/browse" \  -H "Content-Type: application/json" \  -d '{    "type": "googledrive"  }'
{  "folders": [    {      "id": "string",      "name": "string",      "has_children": true,      "path": "string",      "drive_id": "string",      "kind": "folder"    }  ]}