Workspaces

Test datasource credentials

POST
/api/v1/workspaces/datasource/test

Test datasource credentials

Test datasource credentials without persisting anything.

Validates that the provided credentials can connect to the external source. Returns 200 if the connection succeeds, 400 otherwise. No datasource or import is created. Use this before PATCH /api/v1/workspaces/{id} with a datasource payload to surface connection errors before committing the conversion.

Access: any authenticated user.

Credentials per type:

  • googledrive: service_account_file (JSON string of the service account key file)
  • sharepoint: client_id, client_secret, tenant_id, site_id (optional), site_name (optional)
  • servicenow: instance_url, username, password
  • webscrapper: no credentials required

Filter criteria per type:

  • googledrive: folder_id (required), recursive (optional)
  • sharepoint: folder_path (required), recursive (optional)
  • servicenow: doc_type (required, e.g. knowledge)
  • webscrapper: start_url (required)

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 (StandardWorkspaceDatasourceRequest).

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/workspaces/datasource/test" \  -H "Content-Type: application/json" \  -d '{    "type": "googledrive",    "name": "string"  }'
{  "detail": [    {      "loc": [        "string"      ],      "msg": "string",      "type": "string",      "input": null,      "ctx": {}    }  ]}

Browse datasource folders POST

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.

Retrieve a workspace GET

Retrieve a workspace Retrieve a workspace by ID. Returns workspace details. **Access:** Instance-level users (Sys Admin, Account Manager, Admin, DPO Admin) can retrieve any workspace. Company-level users (Company Admin, Company DPO) can retrieve workspaces in their company. Regular users can retrieve workspaces where they are members. **Member Visibility:** Instance-level users and company-level users see all members. Workspace OWNER sees members. EDITOR and VIEWER do not see members. **Sync status:** For synced workspaces, the response includes a `sync` block with `datasource_type`, `source_name`, `last_status`, `updated_at`, `failed_files_count`, and `next_import_date`. Use this field for polling the sync state. Returns 403 for both non-existent and unauthorized workspaces.