From 86131d4bd8081dd0102df2d78295c9669003799c Mon Sep 17 00:00:00 2001 From: Ryusei Hashimoto <146686591+r-hashi01@users.noreply.github.com> Date: Wed, 17 Dec 2025 11:37:55 +0900 Subject: [PATCH] feat: add datasource_parameters handling for API requests (#29757) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- api/controllers/console/datasets/data_source.py | 14 +++++++++++++- .../data-source/online-documents/index.tsx | 10 ++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/api/controllers/console/datasets/data_source.py b/api/controllers/console/datasets/data_source.py index 95399fad13..cd958bbb36 100644 --- a/api/controllers/console/datasets/data_source.py +++ b/api/controllers/console/datasets/data_source.py @@ -140,6 +140,18 @@ class DataSourceNotionListApi(Resource): credential_id = request.args.get("credential_id", default=None, type=str) if not credential_id: raise ValueError("Credential id is required.") + + # Get datasource_parameters from query string (optional, for GitHub and other datasources) + datasource_parameters_str = request.args.get("datasource_parameters", default=None, type=str) + datasource_parameters = {} + if datasource_parameters_str: + try: + datasource_parameters = json.loads(datasource_parameters_str) + if not isinstance(datasource_parameters, dict): + raise ValueError("datasource_parameters must be a JSON object.") + except json.JSONDecodeError: + raise ValueError("Invalid datasource_parameters JSON format.") + datasource_provider_service = DatasourceProviderService() credential = datasource_provider_service.get_datasource_credentials( tenant_id=current_tenant_id, @@ -187,7 +199,7 @@ class DataSourceNotionListApi(Resource): online_document_result: Generator[OnlineDocumentPagesMessage, None, None] = ( datasource_runtime.get_online_document_pages( user_id=current_user.id, - datasource_parameters={}, + datasource_parameters=datasource_parameters, provider_type=datasource_runtime.datasource_provider_type(), ) ) diff --git a/web/app/components/datasets/documents/create-from-pipeline/data-source/online-documents/index.tsx b/web/app/components/datasets/documents/create-from-pipeline/data-source/online-documents/index.tsx index b7502f337f..607e4c17ea 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/data-source/online-documents/index.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/data-source/online-documents/index.tsx @@ -75,11 +75,17 @@ const OnlineDocuments = ({ const getOnlineDocuments = useCallback(async () => { const { currentCredentialId } = dataSourceStore.getState() + // Convert datasource_parameters to inputs format for the API + const inputs = Object.entries(nodeData.datasource_parameters || {}).reduce((acc, [key, value]) => { + acc[key] = typeof value === 'object' && value !== null && 'value' in value ? value.value : value + return acc + }, {} as Record) + ssePost( datasourceNodeRunURL, { body: { - inputs: {}, + inputs, credential_id: currentCredentialId, datasource_type: DatasourceType.onlineDocument, }, @@ -97,7 +103,7 @@ const OnlineDocuments = ({ }, }, ) - }, [dataSourceStore, datasourceNodeRunURL]) + }, [dataSourceStore, datasourceNodeRunURL, nodeData.datasource_parameters]) useEffect(() => { if (!currentCredentialId) return