Skip to content
Open
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
4164e0b
API connector backend class
Mar 9, 2026
95f81d2
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 9, 2026
fdb5d31
Added config schema, config validation entrypoint, connector integrat…
Mar 9, 2026
172bde6
Enums updated, connector exported, sync integration and registered in…
Mar 9, 2026
dfb307f
Web enums integration for rest api
Mar 9, 2026
f937c29
added API validation
Mar 9, 2026
9d1bf56
Added pagination helpers for different methods
Mar 9, 2026
4bfe52e
support advanced field mapping for REST API connector (nested paths, …
Mar 9, 2026
af27517
Metadata flow
Mar 9, 2026
f75f2ce
Resolve URL param duplication and simplify connector config
Mar 9, 2026
37c595e
Remove hardcoded params for api testing, refactor code
Mar 9, 2026
32025a5
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 9, 2026
7dd024c
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 10, 2026
383703d
Add REST API connector SVG icon
Mar 10, 2026
3ca44ec
Add query parameters in dictionary for pydantic validation
Mar 10, 2026
5110814
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 10, 2026
e8dfda3
Converted helper methods to static
Mar 10, 2026
55db599
fix: align REST API connector with codebase conventions and fix date …
Mar 10, 2026
6404543
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 10, 2026
d405da9
Max pages safety variable changed to constant
Mar 10, 2026
ff00a61
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 10, 2026
604991e
Import added
Mar 10, 2026
589f987
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 10, 2026
eee391c
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 11, 2026
41c4c0d
Added logs for api connection
Mar 11, 2026
a927feb
New _resolve_page_size() method with smart fallback priority
Mar 11, 2026
57c4826
Added rate limiting config in UI
Mar 11, 2026
34a40b5
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 11, 2026
7549f1a
removed unwanted config parameters
Mar 11, 2026
6fa2791
Merge branch 'main' into feature/generic-api-connector
ahmadintisar Mar 11, 2026
4964751
Merge branch 'main' into feature/generic-api-connector
yingfeng Mar 12, 2026
7550442
Add SSRF protection
ahmadintisar Mar 17, 2026
bb55443
Any 4xx error (except 401, 403, and 429) now raises ConnectorValidati…
Mar 17, 2026
56d2065
Unit tests for Rest API Connector (Data Source)
Mar 17, 2026
dd1fe6f
Merge branch 'main' into feature/generic-api-connector
ahmadintisar Mar 17, 2026
1ae285d
Fix ruff linting errors in test/unit_test/data_source/test_rest_api_c…
Mar 17, 2026
7cef3c0
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Mar 19, 2026
0b1594b
Merge branch 'main' into feature/generic-api-connector
ahmadintisar Mar 20, 2026
2b3b620
ci: use NEED_MIRROR=0 in Docker builds (avoid Gitee timeouts)
Mar 20, 2026
3248d7b
Merge branch 'main' into feature/generic-api-connector
ahmadintisar Mar 21, 2026
1802046
Merge branch 'main' into feature/generic-api-connector
yingfeng Mar 24, 2026
3240497
Reverted CI changes
Mar 24, 2026
1ac432c
Merge branch 'infiniflow:main' into feature/generic-api-connector
ahmadintisar Apr 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions api/apps/connector_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,50 @@ def rm_connector(connector_id):
return get_json_result(data=True)


@manager.route("/<connector_id>/test", methods=["POST"]) # noqa: F821
@login_required
async def test_connector(connector_id):
"""Validate connector configuration without persisting changes or triggering sync.

For the REST API connector, this uses `RestAPIConnector.validate_config`
against the existing saved configuration.
"""
from common.data_source.rest_api_connector import RestAPIConnector
from common.data_source.exceptions import ConnectorMissingCredentialError, ConnectorValidationError

ok, conn = ConnectorService.get_by_id(connector_id)
if not ok:
return get_data_error_result(message="Can't find this Connector!")

if conn.source != DocumentSource.REST_API:
return get_json_result(
code=RetCode.ARGUMENT_ERROR,
message="Test endpoint currently supports only REST API connectors.",
data=False,
)

config = conn.config or {}
credentials = config.get("credentials") or {}

try:
RestAPIConnector.validate_config(config=config, credentials=credentials)
except (ConnectorValidationError, ConnectorMissingCredentialError) as exc:
return get_json_result(
code=RetCode.DATA_ERROR,
message=str(exc),
data=False,
)
except Exception as exc:
logging.exception("REST API connector validation failed: %s", exc)
return get_json_result(
code=RetCode.SERVER_ERROR,
message="REST API connector validation failed, please check logs.",
data=False,
)

return get_json_result(data=True)


WEB_FLOW_TTL_SECS = 15 * 60


Expand Down
1 change: 1 addition & 0 deletions common/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ class FileSource(StrEnum):
KNOWLEDGEBASE = "knowledgebase"
S3 = "s3"
NOTION = "notion"
REST_API = "rest_api"
DISCORD = "discord"
CONFLUENCE = "confluence"
GMAIL = "gmail"
Expand Down
2 changes: 2 additions & 0 deletions common/data_source/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
from .seafile_connector import SeaFileConnector
from .rdbms_connector import RDBMSConnector
from .webdav_connector import WebDAVConnector
from .rest_api_connector import RestAPIConnector
from .config import BlobType, DocumentSource
from .models import Document, TextSection, ImageSection, BasicExpertInfo
from .exceptions import (
Expand Down Expand Up @@ -85,4 +86,5 @@
"RDBMSConnector",
"WebDAVConnector",
"DingTalkAITableConnector",
"RestAPIConnector",
]
1 change: 1 addition & 0 deletions common/data_source/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class DocumentSource(str, Enum):
"""Document sources"""
S3 = "s3"
NOTION = "notion"
REST_API = "rest_api"
R2 = "r2"
GOOGLE_CLOUD_STORAGE = "google_cloud_storage"
OCI_STORAGE = "oci_storage"
Expand Down
Loading
Loading