diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index 9ecca12c3..20e4c2d05 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -41,7 +41,7 @@ def create_component( ): try: decrypted = auth_utils.decrypt_api_key(store_api_Key, settings_service) - return store_service.upload(decrypted, component.dict()) + return store_service.upload(decrypted, component) except Exception as exc: raise HTTPException(status_code=400, detail=str(exc)) diff --git a/src/backend/langflow/services/store/service.py b/src/backend/langflow/services/store/service.py index 4486535a7..c4cf355cf 100644 --- a/src/backend/langflow/services/store/service.py +++ b/src/backend/langflow/services/store/service.py @@ -3,7 +3,7 @@ from langflow.services.base import Service from typing import TYPE_CHECKING, List, Dict, Any, Optional import httpx from httpx import HTTPError -from langflow.services.store.schema import ComponentResponse +from langflow.services.store.schema import ComponentResponse, StoreComponentCreate if TYPE_CHECKING: from langflow.services.settings.service import SettingsService @@ -109,11 +109,17 @@ class StoreService(Service): component = self._get(url, api_key, params) return ComponentResponse(**component) - def upload(self, api_key: str, component_data: Dict[str, Any]) -> ComponentResponse: + def upload( + self, api_key: str, component_data: StoreComponentCreate + ) -> ComponentResponse: headers = {"Authorization": f"Bearer {api_key}"} + component_dict = component_data.dict(exclude_unset=True) + # Parent is a UUID, but the store expects a string + if component_dict.get("parent"): + component_dict["parent"] = str(component_dict["parent"]) try: response = httpx.post( - self.components_url, headers=headers, json=component_data + self.components_url, headers=headers, json=component_dict ) response.raise_for_status() component = response.json()["data"]