From c78bd492af2ef87a990db9e8777f57366e61c7a7 Mon Sep 17 00:00:00 2001 From: Harry Date: Mon, 15 Sep 2025 17:01:29 +0800 Subject: [PATCH] feat(trigger): add supported creation methods to TriggerProviderApiEntity - Introduced a new field `supported_creation_methods` in `TriggerProviderApiEntity` to specify the available methods for creating triggers, including OAUTH, APIKEY, and MANUAL. - Updated the `PluginTriggerProviderController` to populate this field based on the entity's schemas, enhancing the API's clarity and usability. These changes improve the flexibility and configurability of trigger providers within the application. --- api/core/trigger/entities/api_entities.py | 6 ++++++ api/core/trigger/entities/entities.py | 5 +++++ api/core/trigger/provider.py | 9 +++++++++ 3 files changed, 20 insertions(+) diff --git a/api/core/trigger/entities/api_entities.py b/api/core/trigger/entities/api_entities.py index 9ade683dc1..799f548612 100644 --- a/api/core/trigger/entities/api_entities.py +++ b/api/core/trigger/entities/api_entities.py @@ -8,6 +8,7 @@ from core.plugin.entities.plugin_daemon import CredentialType from core.tools.entities.common_entities import I18nObject from core.trigger.entities.entities import ( SubscriptionSchema, + TriggerCreationMethod, TriggerDescription, TriggerIdentity, TriggerParameter, @@ -46,6 +47,11 @@ class TriggerProviderApiEntity(BaseModel): plugin_id: Optional[str] = Field(default="", description="The plugin id of the tool") plugin_unique_identifier: Optional[str] = Field(default="", description="The unique identifier of the tool") + supported_creation_methods: list[TriggerCreationMethod] = Field( + default_factory=list, + description="Supported creation methods for the trigger provider. Possible values: 'OAUTH', 'APIKEY', 'MANUAL'." + ) + credentials_schema: list[ProviderConfig] = Field(description="The credentials schema of the trigger provider") oauth_client_schema: list[ProviderConfig] = Field( default_factory=list, description="The schema of the OAuth client" diff --git a/api/core/trigger/entities/entities.py b/api/core/trigger/entities/entities.py index 1e8cbae240..0d23b3bc6e 100644 --- a/api/core/trigger/entities/entities.py +++ b/api/core/trigger/entities/entities.py @@ -282,6 +282,10 @@ class TriggerInputs(BaseModel): """Convert to dict (alias for model_dump).""" return self.model_dump() +class TriggerCreationMethod(StrEnum): + OAUTH = "OAUTH" + APIKEY = "APIKEY" + MANUAL = "MANUAL" # Export all entities __all__ = [ @@ -289,6 +293,7 @@ __all__ = [ "RequestLog", "Subscription", "SubscriptionBuilder", + "TriggerCreationMethod", "TriggerDescription", "TriggerEntity", "TriggerEventData", diff --git a/api/core/trigger/provider.py b/api/core/trigger/provider.py index dfbe456565..bcba5868fc 100644 --- a/api/core/trigger/provider.py +++ b/api/core/trigger/provider.py @@ -21,6 +21,7 @@ from core.trigger.entities.entities import ( ProviderConfig, Subscription, SubscriptionSchema, + TriggerCreationMethod, TriggerEntity, TriggerProviderEntity, TriggerProviderIdentity, @@ -80,6 +81,13 @@ class PluginTriggerProviderController: if self.entity.identity.icon_dark else None ) + supported_creation_methods = [] + if self.entity.oauth_schema: + supported_creation_methods.append(TriggerCreationMethod.OAUTH) + if self.entity.credentials_schema: + supported_creation_methods.append(TriggerCreationMethod.APIKEY) + if self.entity.subscription_schema: + supported_creation_methods.append(TriggerCreationMethod.MANUAL) return TriggerProviderApiEntity( author=self.entity.identity.author, name=self.entity.identity.name, @@ -93,6 +101,7 @@ class PluginTriggerProviderController: credentials_schema=self.entity.credentials_schema, oauth_client_schema=self.entity.oauth_schema.client_schema if self.entity.oauth_schema else [], subscription_schema=self.entity.subscription_schema, + supported_creation_methods=supported_creation_methods, triggers=[ TriggerApiEntity( name=trigger.identity.name,