diff --git a/api/core/plugin/entities/endpoint.py b/api/core/plugin/entities/endpoint.py index 976ef6de96..69c00d798a 100644 --- a/api/core/plugin/entities/endpoint.py +++ b/api/core/plugin/entities/endpoint.py @@ -1,4 +1,5 @@ from datetime import datetime +from typing import Optional from pydantic import BaseModel, Field, model_validator @@ -12,7 +13,17 @@ class EndpointDeclaration(BaseModel): declaration of an endpoint """ + path: str + method: str + + +class EndpointProviderDeclaration(BaseModel): + """ + declaration of an endpoint group + """ + settings: list[ProviderConfig] = Field(default_factory=list) + endpoints: Optional[list[EndpointDeclaration]] = Field(default_factory=list) class EndpointEntity(BasePluginEntity): @@ -21,14 +32,17 @@ class EndpointEntity(BasePluginEntity): """ settings: dict + tenant_id: str + plugin_id: str + expired_at: datetime + declaration: EndpointProviderDeclaration = Field(default_factory=EndpointProviderDeclaration) + + +class EndpointEntityWithInstance(EndpointEntity): name: str enabled: bool url: str hook_id: str - tenant_id: str - plugin_id: str - expired_at: datetime - declaration: EndpointDeclaration = Field(default_factory=EndpointDeclaration) @model_validator(mode="before") @classmethod diff --git a/api/core/plugin/entities/plugin.py b/api/core/plugin/entities/plugin.py index 6d8468732f..72ecd5ba23 100644 --- a/api/core/plugin/entities/plugin.py +++ b/api/core/plugin/entities/plugin.py @@ -5,7 +5,7 @@ from pydantic import BaseModel, Field from core.model_runtime.entities.provider_entities import ProviderEntity from core.plugin.entities.base import BasePluginEntity -from core.plugin.entities.endpoint import EndpointEntity +from core.plugin.entities.endpoint import EndpointProviderDeclaration from core.tools.entities.common_entities import I18nObject from core.tools.entities.tool_entities import ToolProviderEntity @@ -61,7 +61,7 @@ class PluginDeclaration(BaseModel): plugins: Plugins tool: Optional[ToolProviderEntity] = None model: Optional[ProviderEntity] = None - endpoint: Optional[EndpointEntity] = None + endpoint: Optional[EndpointProviderDeclaration] = None class PluginEntity(BasePluginEntity): diff --git a/api/core/plugin/manager/endpoint.py b/api/core/plugin/manager/endpoint.py index d52b0b77fe..415b981ffb 100644 --- a/api/core/plugin/manager/endpoint.py +++ b/api/core/plugin/manager/endpoint.py @@ -1,4 +1,4 @@ -from core.plugin.entities.endpoint import EndpointEntity +from core.plugin.entities.endpoint import EndpointEntityWithInstance from core.plugin.manager.base import BasePluginManager @@ -33,7 +33,7 @@ class PluginEndpointManager(BasePluginManager): return self._request_with_plugin_daemon_response( "GET", f"plugin/{tenant_id}/endpoint/list", - list[EndpointEntity], + list[EndpointEntityWithInstance], params={"page": page, "page_size": page_size}, ) @@ -44,26 +44,10 @@ class PluginEndpointManager(BasePluginManager): return self._request_with_plugin_daemon_response( "GET", f"plugin/{tenant_id}/endpoint/list/plugin", - list[EndpointEntity], + list[EndpointEntityWithInstance], params={"plugin_id": plugin_id, "page": page, "page_size": page_size}, ) - def list_plugin_endpoints(self, tenant_id: str, user_id: str, plugin_unique_identifier: str): - """ - List all endpoints for the given tenant, user and plugin. - """ - return self._request_with_plugin_daemon_response( - "GET", - f"plugin/{tenant_id}/endpoint/list/plugin", - list[EndpointEntity], - headers={ - "Content-Type": "application/json", - }, - data={ - "plugin_unique_identifier": plugin_unique_identifier, - }, - ) - def update_endpoint(self, tenant_id: str, user_id: str, endpoint_id: str, name: str, settings: dict): """ Update the settings of the given endpoint.