From bd1fcd3525d4fdddd1f240414d80f2ee0a5368bf Mon Sep 17 00:00:00 2001 From: Harry Date: Tue, 16 Sep 2025 17:03:52 +0800 Subject: [PATCH] feat(trigger): add TriggerProviderInfoApi and enhance trigger provider service - Introduced `TriggerProviderInfoApi` to retrieve information for a specific trigger provider, improving API capabilities. - Added `get_trigger_provider` method in `TriggerProviderService` to fetch trigger provider details, enhancing data retrieval. - Updated route configurations to include the new API endpoint for trigger provider information. These changes enhance the functionality and usability of trigger provider interactions within the application. --- .../console/workspace/trigger_providers.py | 15 +++++++++++++++ api/services/trigger/trigger_provider_service.py | 7 ++++++- .../trigger_subscription_builder_service.py | 4 ++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/api/controllers/console/workspace/trigger_providers.py b/api/controllers/console/workspace/trigger_providers.py index 95828bc32b..3e6654cfc1 100644 --- a/api/controllers/console/workspace/trigger_providers.py +++ b/api/controllers/console/workspace/trigger_providers.py @@ -37,6 +37,20 @@ class TriggerProviderListApi(Resource): return jsonable_encoder(TriggerProviderService.list_trigger_providers(user.current_tenant_id)) +class TriggerProviderInfoApi(Resource): + @setup_required + @login_required + @account_initialization_required + def get(self, provider): + """Get info for a trigger provider""" + user = current_user + assert isinstance(user, Account) + assert user.current_tenant_id is not None + return jsonable_encoder( + TriggerProviderService.get_trigger_provider(user.current_tenant_id, TriggerProviderID(provider)) + ) + + class TriggerSubscriptionListApi(Resource): @setup_required @login_required @@ -533,6 +547,7 @@ class TriggerOAuthClientManageApi(Resource): # Trigger Subscription api.add_resource(TriggerProviderListApi, "/workspaces/current/triggers") +api.add_resource(TriggerProviderInfoApi, "/workspaces/current/trigger-provider//info") api.add_resource(TriggerSubscriptionListApi, "/workspaces/current/trigger-provider//subscriptions/list") api.add_resource( TriggerSubscriptionDeleteApi, diff --git a/api/services/trigger/trigger_provider_service.py b/api/services/trigger/trigger_provider_service.py index 92733b1274..4a24db0db7 100644 --- a/api/services/trigger/trigger_provider_service.py +++ b/api/services/trigger/trigger_provider_service.py @@ -43,6 +43,11 @@ class TriggerProviderService: ########################## __MAX_TRIGGER_PROVIDER_COUNT__ = 10 + @classmethod + def get_trigger_provider(cls, tenant_id: str, provider: TriggerProviderID) -> TriggerProviderApiEntity: + """Get info for a trigger provider""" + return TriggerManager.get_trigger_provider(tenant_id, provider).to_api_entity() + @classmethod def list_trigger_providers(cls, tenant_id: str) -> list[TriggerProviderApiEntity]: """List all trigger providers for the current tenant""" @@ -94,7 +99,7 @@ class TriggerProviderService: return subscriptions @classmethod - def add_trigger_provider( + def add_trigger_subscription( cls, tenant_id: str, user_id: str, diff --git a/api/services/trigger/trigger_subscription_builder_service.py b/api/services/trigger/trigger_subscription_builder_service.py index ccde48a71d..2717fa14cc 100644 --- a/api/services/trigger/trigger_subscription_builder_service.py +++ b/api/services/trigger/trigger_subscription_builder_service.py @@ -93,7 +93,7 @@ class TriggerSubscriptionBuilderService: credential_type = CredentialType.of(subscription_builder.credential_type or CredentialType.UNAUTHORIZED.value) if credential_type == CredentialType.UNAUTHORIZED: # manually create - TriggerProviderService.add_trigger_provider( + TriggerProviderService.add_trigger_subscription( subscription_id=subscription_builder.id, tenant_id=tenant_id, user_id=user_id, @@ -118,7 +118,7 @@ class TriggerSubscriptionBuilderService: credentials=subscription_builder.credentials, ) - TriggerProviderService.add_trigger_provider( + TriggerProviderService.add_trigger_subscription( subscription_id=subscription_builder.id, tenant_id=tenant_id, user_id=user_id,