diff --git a/surfsense_web/contracts/enums/connector.ts b/surfsense_web/contracts/enums/connector.ts
index 36d39f4fc..501f5d9a3 100644
--- a/surfsense_web/contracts/enums/connector.ts
+++ b/surfsense_web/contracts/enums/connector.ts
@@ -25,6 +25,7 @@ export enum EnumConnectorName {
YOUTUBE_CONNECTOR = "YOUTUBE_CONNECTOR",
CIRCLEBACK_CONNECTOR = "CIRCLEBACK_CONNECTOR",
OBSIDIAN_CONNECTOR = "OBSIDIAN_CONNECTOR",
+ DROPBOX_CONNECTOR = "DROPBOX_CONNECTOR",
MCP_CONNECTOR = "MCP_CONNECTOR",
COMPOSIO_GOOGLE_DRIVE_CONNECTOR = "COMPOSIO_GOOGLE_DRIVE_CONNECTOR",
COMPOSIO_GMAIL_CONNECTOR = "COMPOSIO_GMAIL_CONNECTOR",
diff --git a/surfsense_web/contracts/enums/connectorIcons.tsx b/surfsense_web/contracts/enums/connectorIcons.tsx
index 19b24cd59..2e609b060 100644
--- a/surfsense_web/contracts/enums/connectorIcons.tsx
+++ b/surfsense_web/contracts/enums/connectorIcons.tsx
@@ -43,6 +43,8 @@ export const getConnectorIcon = (connectorType: EnumConnectorName | string, clas
return ;
case EnumConnectorName.NOTION_CONNECTOR:
return ;
+ case EnumConnectorName.DROPBOX_CONNECTOR:
+ return ;
case EnumConnectorName.DISCORD_CONNECTOR:
return ;
case EnumConnectorName.JIRA_CONNECTOR:
@@ -100,6 +102,9 @@ export const getConnectorIcon = (connectorType: EnumConnectorName | string, clas
return ;
case "GOOGLE_DRIVE_FILE":
return ;
+ case "DROPBOX_FILE":
+ case "DROPBOX_CONNECTOR":
+ return ;
case "ONEDRIVE_FILE":
case "ONEDRIVE_CONNECTOR":
return ;
diff --git a/surfsense_web/contracts/enums/toolIcons.tsx b/surfsense_web/contracts/enums/toolIcons.tsx
index b90adf780..8e5d1e452 100644
--- a/surfsense_web/contracts/enums/toolIcons.tsx
+++ b/surfsense_web/contracts/enums/toolIcons.tsx
@@ -31,6 +31,7 @@ export const CONNECTOR_TOOL_ICON_PATHS: Record = {
gmail: ["GOOGLE_GMAIL_CONNECTOR", "COMPOSIO_GMAIL_CONNECTOR"],
google_calendar: ["GOOGLE_CALENDAR_CONNECTOR", "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR"],
google_drive: ["GOOGLE_DRIVE_CONNECTOR", "COMPOSIO_GOOGLE_DRIVE_CONNECTOR"],
+ dropbox: ["DROPBOX_CONNECTOR"],
onedrive: ["ONEDRIVE_CONNECTOR"],
notion: ["NOTION_CONNECTOR"],
linear: ["LINEAR_CONNECTOR"],
diff --git a/surfsense_web/contracts/types/connector.types.ts b/surfsense_web/contracts/types/connector.types.ts
index ef089f1f5..b83e05dcc 100644
--- a/surfsense_web/contracts/types/connector.types.ts
+++ b/surfsense_web/contracts/types/connector.types.ts
@@ -27,6 +27,7 @@ export const searchSourceConnectorTypeEnum = z.enum([
"YOUTUBE_CONNECTOR",
"BOOKSTACK_CONNECTOR",
"CIRCLEBACK_CONNECTOR",
+ "DROPBOX_CONNECTOR",
"MCP_CONNECTOR",
"OBSIDIAN_CONNECTOR",
"COMPOSIO_GOOGLE_DRIVE_CONNECTOR",
diff --git a/surfsense_web/lib/apis/connectors-api.service.ts b/surfsense_web/lib/apis/connectors-api.service.ts
index 062d3b780..abd16c7a7 100644
--- a/surfsense_web/lib/apis/connectors-api.service.ts
+++ b/surfsense_web/lib/apis/connectors-api.service.ts
@@ -290,6 +290,19 @@ class ConnectorsApiService {
);
};
+ /**
+ * List Dropbox folders and files
+ */
+ listDropboxFolders = async (request: { connector_id: number; parent_path?: string }) => {
+ const queryParams = request.parent_path
+ ? `?parent_path=${encodeURIComponent(request.parent_path)}`
+ : "";
+ return baseApiService.get(
+ `/api/v1/connectors/${request.connector_id}/dropbox/folders${queryParams}`,
+ listGoogleDriveFoldersResponse
+ );
+ };
+
// =============================================================================
// MCP Connector Methods
// =============================================================================
diff --git a/surfsense_web/public/connectors/dropbox.svg b/surfsense_web/public/connectors/dropbox.svg
new file mode 100644
index 000000000..84ac86026
--- /dev/null
+++ b/surfsense_web/public/connectors/dropbox.svg
@@ -0,0 +1,4 @@
+
+