api -> console_ns (#28246)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Asuka Minato
2025-11-24 11:04:11 +09:00
committed by GitHub
parent c75a4e6309
commit e0824c2d93
57 changed files with 1354 additions and 1306 deletions

View File

@@ -8,7 +8,7 @@ from sqlalchemy.orm import Session
from configs import dify_config
from constants.languages import supported_language
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.auth.error import (
EmailAlreadyInUseError,
EmailChangeLimitError,
@@ -55,7 +55,7 @@ def _init_parser():
@console_ns.route("/account/init")
class AccountInitApi(Resource):
@api.expect(_init_parser())
@console_ns.expect(_init_parser())
@setup_required
@login_required
def post(self):
@@ -115,7 +115,7 @@ parser_name = reqparse.RequestParser().add_argument("name", type=str, required=T
@console_ns.route("/account/name")
class AccountNameApi(Resource):
@api.expect(parser_name)
@console_ns.expect(parser_name)
@setup_required
@login_required
@account_initialization_required
@@ -138,7 +138,7 @@ parser_avatar = reqparse.RequestParser().add_argument("avatar", type=str, requir
@console_ns.route("/account/avatar")
class AccountAvatarApi(Resource):
@api.expect(parser_avatar)
@console_ns.expect(parser_avatar)
@setup_required
@login_required
@account_initialization_required
@@ -159,7 +159,7 @@ parser_interface = reqparse.RequestParser().add_argument(
@console_ns.route("/account/interface-language")
class AccountInterfaceLanguageApi(Resource):
@api.expect(parser_interface)
@console_ns.expect(parser_interface)
@setup_required
@login_required
@account_initialization_required
@@ -180,7 +180,7 @@ parser_theme = reqparse.RequestParser().add_argument(
@console_ns.route("/account/interface-theme")
class AccountInterfaceThemeApi(Resource):
@api.expect(parser_theme)
@console_ns.expect(parser_theme)
@setup_required
@login_required
@account_initialization_required
@@ -199,7 +199,7 @@ parser_timezone = reqparse.RequestParser().add_argument("timezone", type=str, re
@console_ns.route("/account/timezone")
class AccountTimezoneApi(Resource):
@api.expect(parser_timezone)
@console_ns.expect(parser_timezone)
@setup_required
@login_required
@account_initialization_required
@@ -227,7 +227,7 @@ parser_pw = (
@console_ns.route("/account/password")
class AccountPasswordApi(Resource):
@api.expect(parser_pw)
@console_ns.expect(parser_pw)
@setup_required
@login_required
@account_initialization_required
@@ -325,7 +325,7 @@ parser_delete = (
@console_ns.route("/account/delete")
class AccountDeleteApi(Resource):
@api.expect(parser_delete)
@console_ns.expect(parser_delete)
@setup_required
@login_required
@account_initialization_required
@@ -351,7 +351,7 @@ parser_feedback = (
@console_ns.route("/account/delete/feedback")
class AccountDeleteUpdateFeedbackApi(Resource):
@api.expect(parser_feedback)
@console_ns.expect(parser_feedback)
@setup_required
def post(self):
args = parser_feedback.parse_args()
@@ -396,7 +396,7 @@ class EducationApi(Resource):
"allow_refresh": fields.Boolean,
}
@api.expect(parser_edu)
@console_ns.expect(parser_edu)
@setup_required
@login_required
@account_initialization_required
@@ -441,7 +441,7 @@ class EducationAutoCompleteApi(Resource):
"has_next": fields.Boolean,
}
@api.expect(parser_autocomplete)
@console_ns.expect(parser_autocomplete)
@setup_required
@login_required
@account_initialization_required
@@ -465,7 +465,7 @@ parser_change_email = (
@console_ns.route("/account/change-email")
class ChangeEmailSendEmailApi(Resource):
@api.expect(parser_change_email)
@console_ns.expect(parser_change_email)
@enable_change_email
@setup_required
@login_required
@@ -517,7 +517,7 @@ parser_validity = (
@console_ns.route("/account/change-email/validity")
class ChangeEmailCheckApi(Resource):
@api.expect(parser_validity)
@console_ns.expect(parser_validity)
@enable_change_email
@setup_required
@login_required
@@ -563,7 +563,7 @@ parser_reset = (
@console_ns.route("/account/change-email/reset")
class ChangeEmailResetApi(Resource):
@api.expect(parser_reset)
@console_ns.expect(parser_reset)
@enable_change_email
@setup_required
@login_required
@@ -603,7 +603,7 @@ parser_check = reqparse.RequestParser().add_argument("email", type=email, requir
@console_ns.route("/account/change-email/check-email-unique")
class CheckEmailUnique(Resource):
@api.expect(parser_check)
@console_ns.expect(parser_check)
@setup_required
def post(self):
args = parser_check.parse_args()

View File

@@ -1,6 +1,6 @@
from flask_restx import Resource, fields
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.wraps import account_initialization_required, setup_required
from core.model_runtime.utils.encoders import jsonable_encoder
from libs.login import current_account_with_tenant, login_required
@@ -9,9 +9,9 @@ from services.agent_service import AgentService
@console_ns.route("/workspaces/current/agent-providers")
class AgentProviderListApi(Resource):
@api.doc("list_agent_providers")
@api.doc(description="Get list of available agent providers")
@api.response(
@console_ns.doc("list_agent_providers")
@console_ns.doc(description="Get list of available agent providers")
@console_ns.response(
200,
"Success",
fields.List(fields.Raw(description="Agent provider information")),
@@ -31,10 +31,10 @@ class AgentProviderListApi(Resource):
@console_ns.route("/workspaces/current/agent-provider/<path:provider_name>")
class AgentProviderApi(Resource):
@api.doc("get_agent_provider")
@api.doc(description="Get specific agent provider details")
@api.doc(params={"provider_name": "Agent provider name"})
@api.response(
@console_ns.doc("get_agent_provider")
@console_ns.doc(description="Get specific agent provider details")
@console_ns.doc(params={"provider_name": "Agent provider name"})
@console_ns.response(
200,
"Success",
fields.Raw(description="Agent provider details"),

View File

@@ -1,6 +1,6 @@
from flask_restx import Resource, fields, reqparse
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
from core.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.impl.exc import PluginPermissionDeniedError
@@ -10,10 +10,10 @@ from services.plugin.endpoint_service import EndpointService
@console_ns.route("/workspaces/current/endpoints/create")
class EndpointCreateApi(Resource):
@api.doc("create_endpoint")
@api.doc(description="Create a new plugin endpoint")
@api.expect(
api.model(
@console_ns.doc("create_endpoint")
@console_ns.doc(description="Create a new plugin endpoint")
@console_ns.expect(
console_ns.model(
"EndpointCreateRequest",
{
"plugin_unique_identifier": fields.String(required=True, description="Plugin unique identifier"),
@@ -22,12 +22,12 @@ class EndpointCreateApi(Resource):
},
)
)
@api.response(
@console_ns.response(
200,
"Endpoint created successfully",
api.model("EndpointCreateResponse", {"success": fields.Boolean(description="Operation success")}),
console_ns.model("EndpointCreateResponse", {"success": fields.Boolean(description="Operation success")}),
)
@api.response(403, "Admin privileges required")
@console_ns.response(403, "Admin privileges required")
@setup_required
@login_required
@is_admin_or_owner_required
@@ -63,17 +63,19 @@ class EndpointCreateApi(Resource):
@console_ns.route("/workspaces/current/endpoints/list")
class EndpointListApi(Resource):
@api.doc("list_endpoints")
@api.doc(description="List plugin endpoints with pagination")
@api.expect(
api.parser()
@console_ns.doc("list_endpoints")
@console_ns.doc(description="List plugin endpoints with pagination")
@console_ns.expect(
console_ns.parser()
.add_argument("page", type=int, required=True, location="args", help="Page number")
.add_argument("page_size", type=int, required=True, location="args", help="Page size")
)
@api.response(
@console_ns.response(
200,
"Success",
api.model("EndpointListResponse", {"endpoints": fields.List(fields.Raw(description="Endpoint information"))}),
console_ns.model(
"EndpointListResponse", {"endpoints": fields.List(fields.Raw(description="Endpoint information"))}
),
)
@setup_required
@login_required
@@ -105,18 +107,18 @@ class EndpointListApi(Resource):
@console_ns.route("/workspaces/current/endpoints/list/plugin")
class EndpointListForSinglePluginApi(Resource):
@api.doc("list_plugin_endpoints")
@api.doc(description="List endpoints for a specific plugin")
@api.expect(
api.parser()
@console_ns.doc("list_plugin_endpoints")
@console_ns.doc(description="List endpoints for a specific plugin")
@console_ns.expect(
console_ns.parser()
.add_argument("page", type=int, required=True, location="args", help="Page number")
.add_argument("page_size", type=int, required=True, location="args", help="Page size")
.add_argument("plugin_id", type=str, required=True, location="args", help="Plugin ID")
)
@api.response(
@console_ns.response(
200,
"Success",
api.model(
console_ns.model(
"PluginEndpointListResponse", {"endpoints": fields.List(fields.Raw(description="Endpoint information"))}
),
)
@@ -153,17 +155,19 @@ class EndpointListForSinglePluginApi(Resource):
@console_ns.route("/workspaces/current/endpoints/delete")
class EndpointDeleteApi(Resource):
@api.doc("delete_endpoint")
@api.doc(description="Delete a plugin endpoint")
@api.expect(
api.model("EndpointDeleteRequest", {"endpoint_id": fields.String(required=True, description="Endpoint ID")})
@console_ns.doc("delete_endpoint")
@console_ns.doc(description="Delete a plugin endpoint")
@console_ns.expect(
console_ns.model(
"EndpointDeleteRequest", {"endpoint_id": fields.String(required=True, description="Endpoint ID")}
)
)
@api.response(
@console_ns.response(
200,
"Endpoint deleted successfully",
api.model("EndpointDeleteResponse", {"success": fields.Boolean(description="Operation success")}),
console_ns.model("EndpointDeleteResponse", {"success": fields.Boolean(description="Operation success")}),
)
@api.response(403, "Admin privileges required")
@console_ns.response(403, "Admin privileges required")
@setup_required
@login_required
@is_admin_or_owner_required
@@ -183,10 +187,10 @@ class EndpointDeleteApi(Resource):
@console_ns.route("/workspaces/current/endpoints/update")
class EndpointUpdateApi(Resource):
@api.doc("update_endpoint")
@api.doc(description="Update a plugin endpoint")
@api.expect(
api.model(
@console_ns.doc("update_endpoint")
@console_ns.doc(description="Update a plugin endpoint")
@console_ns.expect(
console_ns.model(
"EndpointUpdateRequest",
{
"endpoint_id": fields.String(required=True, description="Endpoint ID"),
@@ -195,12 +199,12 @@ class EndpointUpdateApi(Resource):
},
)
)
@api.response(
@console_ns.response(
200,
"Endpoint updated successfully",
api.model("EndpointUpdateResponse", {"success": fields.Boolean(description="Operation success")}),
console_ns.model("EndpointUpdateResponse", {"success": fields.Boolean(description="Operation success")}),
)
@api.response(403, "Admin privileges required")
@console_ns.response(403, "Admin privileges required")
@setup_required
@login_required
@is_admin_or_owner_required
@@ -233,17 +237,19 @@ class EndpointUpdateApi(Resource):
@console_ns.route("/workspaces/current/endpoints/enable")
class EndpointEnableApi(Resource):
@api.doc("enable_endpoint")
@api.doc(description="Enable a plugin endpoint")
@api.expect(
api.model("EndpointEnableRequest", {"endpoint_id": fields.String(required=True, description="Endpoint ID")})
@console_ns.doc("enable_endpoint")
@console_ns.doc(description="Enable a plugin endpoint")
@console_ns.expect(
console_ns.model(
"EndpointEnableRequest", {"endpoint_id": fields.String(required=True, description="Endpoint ID")}
)
)
@api.response(
@console_ns.response(
200,
"Endpoint enabled successfully",
api.model("EndpointEnableResponse", {"success": fields.Boolean(description="Operation success")}),
console_ns.model("EndpointEnableResponse", {"success": fields.Boolean(description="Operation success")}),
)
@api.response(403, "Admin privileges required")
@console_ns.response(403, "Admin privileges required")
@setup_required
@login_required
@is_admin_or_owner_required
@@ -263,17 +269,19 @@ class EndpointEnableApi(Resource):
@console_ns.route("/workspaces/current/endpoints/disable")
class EndpointDisableApi(Resource):
@api.doc("disable_endpoint")
@api.doc(description="Disable a plugin endpoint")
@api.expect(
api.model("EndpointDisableRequest", {"endpoint_id": fields.String(required=True, description="Endpoint ID")})
@console_ns.doc("disable_endpoint")
@console_ns.doc(description="Disable a plugin endpoint")
@console_ns.expect(
console_ns.model(
"EndpointDisableRequest", {"endpoint_id": fields.String(required=True, description="Endpoint ID")}
)
)
@api.response(
@console_ns.response(
200,
"Endpoint disabled successfully",
api.model("EndpointDisableResponse", {"success": fields.Boolean(description="Operation success")}),
console_ns.model("EndpointDisableResponse", {"success": fields.Boolean(description="Operation success")}),
)
@api.response(403, "Admin privileges required")
@console_ns.response(403, "Admin privileges required")
@setup_required
@login_required
@is_admin_or_owner_required

View File

@@ -5,7 +5,7 @@ from flask_restx import Resource, marshal_with, reqparse
import services
from configs import dify_config
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.auth.error import (
CannotTransferOwnerToSelfError,
EmailCodeError,
@@ -60,7 +60,7 @@ parser_invite = (
class MemberInviteEmailApi(Resource):
"""Invite a new member by email."""
@api.expect(parser_invite)
@console_ns.expect(parser_invite)
@setup_required
@login_required
@account_initialization_required
@@ -153,7 +153,7 @@ parser_update = reqparse.RequestParser().add_argument("role", type=str, required
class MemberUpdateRoleApi(Resource):
"""Update member role."""
@api.expect(parser_update)
@console_ns.expect(parser_update)
@setup_required
@login_required
@account_initialization_required
@@ -204,7 +204,7 @@ parser_send = reqparse.RequestParser().add_argument("language", type=str, requir
class SendOwnerTransferEmailApi(Resource):
"""Send owner transfer email."""
@api.expect(parser_send)
@console_ns.expect(parser_send)
@setup_required
@login_required
@account_initialization_required
@@ -247,7 +247,7 @@ parser_owner = (
@console_ns.route("/workspaces/current/members/owner-transfer-check")
class OwnerTransferCheckApi(Resource):
@api.expect(parser_owner)
@console_ns.expect(parser_owner)
@setup_required
@login_required
@account_initialization_required
@@ -295,7 +295,7 @@ parser_owner_transfer = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/members/<uuid:member_id>/owner-transfer")
class OwnerTransfer(Resource):
@api.expect(parser_owner_transfer)
@console_ns.expect(parser_owner_transfer)
@setup_required
@login_required
@account_initialization_required

View File

@@ -3,7 +3,7 @@ import io
from flask import send_file
from flask_restx import Resource, reqparse
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
from core.model_runtime.entities.model_entities import ModelType
from core.model_runtime.errors.validate import CredentialsValidateFailedError
@@ -25,7 +25,7 @@ parser_model = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/model-providers")
class ModelProviderListApi(Resource):
@api.expect(parser_model)
@console_ns.expect(parser_model)
@setup_required
@login_required
@account_initialization_required
@@ -64,7 +64,7 @@ parser_delete_cred = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/model-providers/<path:provider>/credentials")
class ModelProviderCredentialApi(Resource):
@api.expect(parser_cred)
@console_ns.expect(parser_cred)
@setup_required
@login_required
@account_initialization_required
@@ -81,7 +81,7 @@ class ModelProviderCredentialApi(Resource):
return {"credentials": credentials}
@api.expect(parser_post_cred)
@console_ns.expect(parser_post_cred)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -104,7 +104,7 @@ class ModelProviderCredentialApi(Resource):
return {"result": "success"}, 201
@api.expect(parser_put_cred)
@console_ns.expect(parser_put_cred)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -129,7 +129,7 @@ class ModelProviderCredentialApi(Resource):
return {"result": "success"}
@api.expect(parser_delete_cred)
@console_ns.expect(parser_delete_cred)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -153,7 +153,7 @@ parser_switch = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/model-providers/<path:provider>/credentials/switch")
class ModelProviderCredentialSwitchApi(Resource):
@api.expect(parser_switch)
@console_ns.expect(parser_switch)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -178,7 +178,7 @@ parser_validate = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/model-providers/<path:provider>/credentials/validate")
class ModelProviderValidateApi(Resource):
@api.expect(parser_validate)
@console_ns.expect(parser_validate)
@setup_required
@login_required
@account_initialization_required
@@ -240,7 +240,7 @@ parser_preferred = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/model-providers/<path:provider>/preferred-provider-type")
class PreferredProviderTypeUpdateApi(Resource):
@api.expect(parser_preferred)
@console_ns.expect(parser_preferred)
@setup_required
@login_required
@is_admin_or_owner_required

View File

@@ -2,7 +2,7 @@ import logging
from flask_restx import Resource, reqparse
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
from core.model_runtime.entities.model_entities import ModelType
from core.model_runtime.errors.validate import CredentialsValidateFailedError
@@ -30,7 +30,7 @@ parser_post_default = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/default-model")
class DefaultModelApi(Resource):
@api.expect(parser_get_default)
@console_ns.expect(parser_get_default)
@setup_required
@login_required
@account_initialization_required
@@ -46,7 +46,7 @@ class DefaultModelApi(Resource):
return jsonable_encoder({"data": default_model_entity})
@api.expect(parser_post_default)
@console_ns.expect(parser_post_default)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -127,7 +127,7 @@ class ModelProviderModelApi(Resource):
return jsonable_encoder({"data": models})
@api.expect(parser_post_models)
@console_ns.expect(parser_post_models)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -173,7 +173,7 @@ class ModelProviderModelApi(Resource):
return {"result": "success"}, 200
@api.expect(parser_delete_models)
@console_ns.expect(parser_delete_models)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -253,7 +253,7 @@ parser_delete_cred = (
@console_ns.route("/workspaces/current/model-providers/<path:provider>/models/credentials")
class ModelProviderModelCredentialApi(Resource):
@api.expect(parser_get_credentials)
@console_ns.expect(parser_get_credentials)
@setup_required
@login_required
@account_initialization_required
@@ -304,7 +304,7 @@ class ModelProviderModelCredentialApi(Resource):
}
)
@api.expect(parser_post_cred)
@console_ns.expect(parser_post_cred)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -336,7 +336,7 @@ class ModelProviderModelCredentialApi(Resource):
return {"result": "success"}, 201
@api.expect(parser_put_cred)
@console_ns.expect(parser_put_cred)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -362,7 +362,7 @@ class ModelProviderModelCredentialApi(Resource):
return {"result": "success"}
@api.expect(parser_delete_cred)
@console_ns.expect(parser_delete_cred)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -400,7 +400,7 @@ parser_switch = (
@console_ns.route("/workspaces/current/model-providers/<path:provider>/models/credentials/switch")
class ModelProviderModelCredentialSwitchApi(Resource):
@api.expect(parser_switch)
@console_ns.expect(parser_switch)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -439,7 +439,7 @@ parser_model_enable_disable = (
"/workspaces/current/model-providers/<path:provider>/models/enable", endpoint="model-provider-model-enable"
)
class ModelProviderModelEnableApi(Resource):
@api.expect(parser_model_enable_disable)
@console_ns.expect(parser_model_enable_disable)
@setup_required
@login_required
@account_initialization_required
@@ -460,7 +460,7 @@ class ModelProviderModelEnableApi(Resource):
"/workspaces/current/model-providers/<path:provider>/models/disable", endpoint="model-provider-model-disable"
)
class ModelProviderModelDisableApi(Resource):
@api.expect(parser_model_enable_disable)
@console_ns.expect(parser_model_enable_disable)
@setup_required
@login_required
@account_initialization_required
@@ -494,7 +494,7 @@ parser_validate = (
@console_ns.route("/workspaces/current/model-providers/<path:provider>/models/credentials/validate")
class ModelProviderModelValidateApi(Resource):
@api.expect(parser_validate)
@console_ns.expect(parser_validate)
@setup_required
@login_required
@account_initialization_required
@@ -535,7 +535,7 @@ parser_parameter = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/model-providers/<path:provider>/models/parameter-rules")
class ModelProviderModelParameterRuleApi(Resource):
@api.expect(parser_parameter)
@console_ns.expect(parser_parameter)
@setup_required
@login_required
@account_initialization_required

View File

@@ -5,7 +5,7 @@ from flask_restx import Resource, reqparse
from werkzeug.exceptions import Forbidden
from configs import dify_config
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.workspace import plugin_permission_required
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
from core.model_runtime.utils.encoders import jsonable_encoder
@@ -46,7 +46,7 @@ parser_list = (
@console_ns.route("/workspaces/current/plugin/list")
class PluginListApi(Resource):
@api.expect(parser_list)
@console_ns.expect(parser_list)
@setup_required
@login_required
@account_initialization_required
@@ -66,7 +66,7 @@ parser_latest = reqparse.RequestParser().add_argument("plugin_ids", type=list, r
@console_ns.route("/workspaces/current/plugin/list/latest-versions")
class PluginListLatestVersionsApi(Resource):
@api.expect(parser_latest)
@console_ns.expect(parser_latest)
@setup_required
@login_required
@account_initialization_required
@@ -86,7 +86,7 @@ parser_ids = reqparse.RequestParser().add_argument("plugin_ids", type=list, requ
@console_ns.route("/workspaces/current/plugin/list/installations/ids")
class PluginListInstallationsFromIdsApi(Resource):
@api.expect(parser_ids)
@console_ns.expect(parser_ids)
@setup_required
@login_required
@account_initialization_required
@@ -112,7 +112,7 @@ parser_icon = (
@console_ns.route("/workspaces/current/plugin/icon")
class PluginIconApi(Resource):
@api.expect(parser_icon)
@console_ns.expect(parser_icon)
@setup_required
def get(self):
args = parser_icon.parse_args()
@@ -181,7 +181,7 @@ parser_github = (
@console_ns.route("/workspaces/current/plugin/upload/github")
class PluginUploadFromGithubApi(Resource):
@api.expect(parser_github)
@console_ns.expect(parser_github)
@setup_required
@login_required
@account_initialization_required
@@ -230,7 +230,7 @@ parser_pkg = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/plugin/install/pkg")
class PluginInstallFromPkgApi(Resource):
@api.expect(parser_pkg)
@console_ns.expect(parser_pkg)
@setup_required
@login_required
@account_initialization_required
@@ -263,7 +263,7 @@ parser_githubapi = (
@console_ns.route("/workspaces/current/plugin/install/github")
class PluginInstallFromGithubApi(Resource):
@api.expect(parser_githubapi)
@console_ns.expect(parser_githubapi)
@setup_required
@login_required
@account_initialization_required
@@ -294,7 +294,7 @@ parser_marketplace = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/plugin/install/marketplace")
class PluginInstallFromMarketplaceApi(Resource):
@api.expect(parser_marketplace)
@console_ns.expect(parser_marketplace)
@setup_required
@login_required
@account_initialization_required
@@ -324,7 +324,7 @@ parser_pkgapi = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/plugin/marketplace/pkg")
class PluginFetchMarketplacePkgApi(Resource):
@api.expect(parser_pkgapi)
@console_ns.expect(parser_pkgapi)
@setup_required
@login_required
@account_initialization_required
@@ -353,7 +353,7 @@ parser_fetch = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/plugin/fetch-manifest")
class PluginFetchManifestApi(Resource):
@api.expect(parser_fetch)
@console_ns.expect(parser_fetch)
@setup_required
@login_required
@account_initialization_required
@@ -384,7 +384,7 @@ parser_tasks = (
@console_ns.route("/workspaces/current/plugin/tasks")
class PluginFetchInstallTasksApi(Resource):
@api.expect(parser_tasks)
@console_ns.expect(parser_tasks)
@setup_required
@login_required
@account_initialization_required
@@ -471,7 +471,7 @@ parser_marketplace_api = (
@console_ns.route("/workspaces/current/plugin/upgrade/marketplace")
class PluginUpgradeFromMarketplaceApi(Resource):
@api.expect(parser_marketplace_api)
@console_ns.expect(parser_marketplace_api)
@setup_required
@login_required
@account_initialization_required
@@ -503,7 +503,7 @@ parser_github_post = (
@console_ns.route("/workspaces/current/plugin/upgrade/github")
class PluginUpgradeFromGithubApi(Resource):
@api.expect(parser_github_post)
@console_ns.expect(parser_github_post)
@setup_required
@login_required
@account_initialization_required
@@ -535,7 +535,7 @@ parser_uninstall = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/plugin/uninstall")
class PluginUninstallApi(Resource):
@api.expect(parser_uninstall)
@console_ns.expect(parser_uninstall)
@setup_required
@login_required
@account_initialization_required
@@ -560,7 +560,7 @@ parser_change_post = (
@console_ns.route("/workspaces/current/plugin/permission/change")
class PluginChangePermissionApi(Resource):
@api.expect(parser_change_post)
@console_ns.expect(parser_change_post)
@setup_required
@login_required
@account_initialization_required
@@ -618,7 +618,7 @@ parser_dynamic = (
@console_ns.route("/workspaces/current/plugin/parameters/dynamic-options")
class PluginFetchDynamicSelectOptionsApi(Resource):
@api.expect(parser_dynamic)
@console_ns.expect(parser_dynamic)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -655,7 +655,7 @@ parser_change = (
@console_ns.route("/workspaces/current/plugin/preferences/change")
class PluginChangePreferencesApi(Resource):
@api.expect(parser_change)
@console_ns.expect(parser_change)
@setup_required
@login_required
@account_initialization_required
@@ -749,7 +749,7 @@ parser_exclude = reqparse.RequestParser().add_argument("plugin_id", type=str, re
@console_ns.route("/workspaces/current/plugin/preferences/autoupgrade/exclude")
class PluginAutoUpgradeExcludePluginApi(Resource):
@api.expect(parser_exclude)
@console_ns.expect(parser_exclude)
@setup_required
@login_required
@account_initialization_required

View File

@@ -10,7 +10,7 @@ from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden
from configs import dify_config
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.wraps import (
account_initialization_required,
enterprise_license_required,
@@ -65,7 +65,7 @@ parser_tool = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-providers")
class ToolProviderListApi(Resource):
@api.expect(parser_tool)
@console_ns.expect(parser_tool)
@setup_required
@login_required
@account_initialization_required
@@ -113,7 +113,7 @@ parser_delete = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/builtin/<path:provider>/delete")
class ToolBuiltinProviderDeleteApi(Resource):
@api.expect(parser_delete)
@console_ns.expect(parser_delete)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -140,7 +140,7 @@ parser_add = (
@console_ns.route("/workspaces/current/tool-provider/builtin/<path:provider>/add")
class ToolBuiltinProviderAddApi(Resource):
@api.expect(parser_add)
@console_ns.expect(parser_add)
@setup_required
@login_required
@account_initialization_required
@@ -174,7 +174,7 @@ parser_update = (
@console_ns.route("/workspaces/current/tool-provider/builtin/<path:provider>/update")
class ToolBuiltinProviderUpdateApi(Resource):
@api.expect(parser_update)
@console_ns.expect(parser_update)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -236,7 +236,7 @@ parser_api_add = (
@console_ns.route("/workspaces/current/tool-provider/api/add")
class ToolApiProviderAddApi(Resource):
@api.expect(parser_api_add)
@console_ns.expect(parser_api_add)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -267,7 +267,7 @@ parser_remote = reqparse.RequestParser().add_argument("url", type=str, required=
@console_ns.route("/workspaces/current/tool-provider/api/remote")
class ToolApiProviderGetRemoteSchemaApi(Resource):
@api.expect(parser_remote)
@console_ns.expect(parser_remote)
@setup_required
@login_required
@account_initialization_required
@@ -292,7 +292,7 @@ parser_tools = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/api/tools")
class ToolApiProviderListToolsApi(Resource):
@api.expect(parser_tools)
@console_ns.expect(parser_tools)
@setup_required
@login_required
@account_initialization_required
@@ -328,7 +328,7 @@ parser_api_update = (
@console_ns.route("/workspaces/current/tool-provider/api/update")
class ToolApiProviderUpdateApi(Resource):
@api.expect(parser_api_update)
@console_ns.expect(parser_api_update)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -362,7 +362,7 @@ parser_api_delete = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/api/delete")
class ToolApiProviderDeleteApi(Resource):
@api.expect(parser_api_delete)
@console_ns.expect(parser_api_delete)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -386,7 +386,7 @@ parser_get = reqparse.RequestParser().add_argument("provider", type=str, require
@console_ns.route("/workspaces/current/tool-provider/api/get")
class ToolApiProviderGetApi(Resource):
@api.expect(parser_get)
@console_ns.expect(parser_get)
@setup_required
@login_required
@account_initialization_required
@@ -426,7 +426,7 @@ parser_schema = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/api/schema")
class ToolApiProviderSchemaApi(Resource):
@api.expect(parser_schema)
@console_ns.expect(parser_schema)
@setup_required
@login_required
@account_initialization_required
@@ -451,7 +451,7 @@ parser_pre = (
@console_ns.route("/workspaces/current/tool-provider/api/test/pre")
class ToolApiProviderPreviousTestApi(Resource):
@api.expect(parser_pre)
@console_ns.expect(parser_pre)
@setup_required
@login_required
@account_initialization_required
@@ -484,7 +484,7 @@ parser_create = (
@console_ns.route("/workspaces/current/tool-provider/workflow/create")
class ToolWorkflowProviderCreateApi(Resource):
@api.expect(parser_create)
@console_ns.expect(parser_create)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -525,7 +525,7 @@ parser_workflow_update = (
@console_ns.route("/workspaces/current/tool-provider/workflow/update")
class ToolWorkflowProviderUpdateApi(Resource):
@api.expect(parser_workflow_update)
@console_ns.expect(parser_workflow_update)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -560,7 +560,7 @@ parser_workflow_delete = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/workflow/delete")
class ToolWorkflowProviderDeleteApi(Resource):
@api.expect(parser_workflow_delete)
@console_ns.expect(parser_workflow_delete)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -588,7 +588,7 @@ parser_wf_get = (
@console_ns.route("/workspaces/current/tool-provider/workflow/get")
class ToolWorkflowProviderGetApi(Resource):
@api.expect(parser_wf_get)
@console_ns.expect(parser_wf_get)
@setup_required
@login_required
@account_initialization_required
@@ -624,7 +624,7 @@ parser_wf_tools = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/workflow/tools")
class ToolWorkflowProviderListToolApi(Resource):
@api.expect(parser_wf_tools)
@console_ns.expect(parser_wf_tools)
@setup_required
@login_required
@account_initialization_required
@@ -813,7 +813,7 @@ parser_default_cred = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/builtin/<path:provider>/default-credential")
class ToolBuiltinProviderSetDefaultApi(Resource):
@api.expect(parser_default_cred)
@console_ns.expect(parser_default_cred)
@setup_required
@login_required
@account_initialization_required
@@ -834,7 +834,7 @@ parser_custom = (
@console_ns.route("/workspaces/current/tool-provider/builtin/<path:provider>/oauth/custom-client")
class ToolOAuthCustomClient(Resource):
@api.expect(parser_custom)
@console_ns.expect(parser_custom)
@setup_required
@login_required
@is_admin_or_owner_required
@@ -932,7 +932,7 @@ parser_mcp_delete = reqparse.RequestParser().add_argument(
@console_ns.route("/workspaces/current/tool-provider/mcp")
class ToolProviderMCPApi(Resource):
@api.expect(parser_mcp)
@console_ns.expect(parser_mcp)
@setup_required
@login_required
@account_initialization_required
@@ -962,7 +962,7 @@ class ToolProviderMCPApi(Resource):
)
return jsonable_encoder(result)
@api.expect(parser_mcp_put)
@console_ns.expect(parser_mcp_put)
@setup_required
@login_required
@account_initialization_required
@@ -1001,7 +1001,7 @@ class ToolProviderMCPApi(Resource):
)
return {"result": "success"}
@api.expect(parser_mcp_delete)
@console_ns.expect(parser_mcp_delete)
@setup_required
@login_required
@account_initialization_required
@@ -1024,7 +1024,7 @@ parser_auth = (
@console_ns.route("/workspaces/current/tool-provider/mcp/auth")
class ToolMCPAuthApi(Resource):
@api.expect(parser_auth)
@console_ns.expect(parser_auth)
@setup_required
@login_required
@account_initialization_required
@@ -1142,7 +1142,7 @@ parser_cb = (
@console_ns.route("/mcp/oauth/callback")
class ToolMCPCallbackApi(Resource):
@api.expect(parser_cb)
@console_ns.expect(parser_cb)
def get(self):
args = parser_cb.parse_args()
state_key = args["state"]

View File

@@ -6,7 +6,7 @@ from sqlalchemy.orm import Session
from werkzeug.exceptions import BadRequest, Forbidden
from configs import dify_config
from controllers.console import api
from controllers.console import console_ns
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
from controllers.web.error import NotFoundError
from core.model_runtime.utils.encoders import jsonable_encoder
@@ -539,45 +539,49 @@ class TriggerOAuthClientManageApi(Resource):
# Trigger Subscription
api.add_resource(TriggerProviderIconApi, "/workspaces/current/trigger-provider/<path:provider>/icon")
api.add_resource(TriggerProviderListApi, "/workspaces/current/triggers")
api.add_resource(TriggerProviderInfoApi, "/workspaces/current/trigger-provider/<path:provider>/info")
api.add_resource(TriggerSubscriptionListApi, "/workspaces/current/trigger-provider/<path:provider>/subscriptions/list")
api.add_resource(
console_ns.add_resource(TriggerProviderIconApi, "/workspaces/current/trigger-provider/<path:provider>/icon")
console_ns.add_resource(TriggerProviderListApi, "/workspaces/current/triggers")
console_ns.add_resource(TriggerProviderInfoApi, "/workspaces/current/trigger-provider/<path:provider>/info")
console_ns.add_resource(
TriggerSubscriptionListApi, "/workspaces/current/trigger-provider/<path:provider>/subscriptions/list"
)
console_ns.add_resource(
TriggerSubscriptionDeleteApi,
"/workspaces/current/trigger-provider/<path:subscription_id>/subscriptions/delete",
)
# Trigger Subscription Builder
api.add_resource(
console_ns.add_resource(
TriggerSubscriptionBuilderCreateApi,
"/workspaces/current/trigger-provider/<path:provider>/subscriptions/builder/create",
)
api.add_resource(
console_ns.add_resource(
TriggerSubscriptionBuilderGetApi,
"/workspaces/current/trigger-provider/<path:provider>/subscriptions/builder/<path:subscription_builder_id>",
)
api.add_resource(
console_ns.add_resource(
TriggerSubscriptionBuilderUpdateApi,
"/workspaces/current/trigger-provider/<path:provider>/subscriptions/builder/update/<path:subscription_builder_id>",
)
api.add_resource(
console_ns.add_resource(
TriggerSubscriptionBuilderVerifyApi,
"/workspaces/current/trigger-provider/<path:provider>/subscriptions/builder/verify/<path:subscription_builder_id>",
)
api.add_resource(
console_ns.add_resource(
TriggerSubscriptionBuilderBuildApi,
"/workspaces/current/trigger-provider/<path:provider>/subscriptions/builder/build/<path:subscription_builder_id>",
)
api.add_resource(
console_ns.add_resource(
TriggerSubscriptionBuilderLogsApi,
"/workspaces/current/trigger-provider/<path:provider>/subscriptions/builder/logs/<path:subscription_builder_id>",
)
# OAuth
api.add_resource(
console_ns.add_resource(
TriggerOAuthAuthorizeApi, "/workspaces/current/trigger-provider/<path:provider>/subscriptions/oauth/authorize"
)
api.add_resource(TriggerOAuthCallbackApi, "/oauth/plugin/<path:provider>/trigger/callback")
api.add_resource(TriggerOAuthClientManageApi, "/workspaces/current/trigger-provider/<path:provider>/oauth/client")
console_ns.add_resource(TriggerOAuthCallbackApi, "/oauth/plugin/<path:provider>/trigger/callback")
console_ns.add_resource(
TriggerOAuthClientManageApi, "/workspaces/current/trigger-provider/<path:provider>/oauth/client"
)

View File

@@ -13,7 +13,7 @@ from controllers.common.errors import (
TooManyFilesError,
UnsupportedFileTypeError,
)
from controllers.console import api, console_ns
from controllers.console import console_ns
from controllers.console.admin import admin_required
from controllers.console.error import AccountNotLinkTenantError
from controllers.console.wraps import (
@@ -155,7 +155,7 @@ parser_switch = reqparse.RequestParser().add_argument("tenant_id", type=str, req
@console_ns.route("/workspaces/switch")
class SwitchWorkspaceApi(Resource):
@api.expect(parser_switch)
@console_ns.expect(parser_switch)
@setup_required
@login_required
@account_initialization_required
@@ -250,7 +250,7 @@ parser_info = reqparse.RequestParser().add_argument("name", type=str, required=T
@console_ns.route("/workspaces/info")
class WorkspaceInfoApi(Resource):
@api.expect(parser_info)
@console_ns.expect(parser_info)
@setup_required
@login_required
@account_initialization_required