mirror of
https://github.com/langgenius/dify.git
synced 2026-04-22 07:46:31 +08:00
based on gemini's advice
This commit is contained in:
parent
c00d835d7f
commit
60921d2587
@ -128,7 +128,7 @@ class WorkflowToolBasePayload(BaseModel):
|
|||||||
label: str
|
label: str
|
||||||
description: str
|
description: str
|
||||||
icon: dict[str, Any]
|
icon: dict[str, Any]
|
||||||
parameters: list[WorkflowToolParameterConfiguration]
|
parameters: list[WorkflowToolParameterConfiguration] = Field(default_factory=list)
|
||||||
privacy_policy: str | None = ""
|
privacy_policy: str | None = ""
|
||||||
labels: list[str] | None = None
|
labels: list[str] | None = None
|
||||||
|
|
||||||
|
|||||||
@ -95,7 +95,12 @@ class AppMeta(WebApiResource):
|
|||||||
class AppAccessMode(Resource):
|
class AppAccessMode(Resource):
|
||||||
@web_ns.doc("Get App Access Mode")
|
@web_ns.doc("Get App Access Mode")
|
||||||
@web_ns.doc(description="Retrieve the access mode for a web application (public or restricted).")
|
@web_ns.doc(description="Retrieve the access mode for a web application (public or restricted).")
|
||||||
@web_ns.expect(web_ns.models[AppAccessModeQuery.__name__])
|
@web_ns.doc(
|
||||||
|
params={
|
||||||
|
"appId": {"description": "Application ID", "type": "string", "required": False},
|
||||||
|
"appCode": {"description": "Application code", "type": "string", "required": False},
|
||||||
|
}
|
||||||
|
)
|
||||||
@web_ns.doc(
|
@web_ns.doc(
|
||||||
responses={
|
responses={
|
||||||
200: "Success",
|
200: "Success",
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from pydantic import BaseModel, Field, field_validator
|
|||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import NotChatAppError
|
from controllers.web.error import NotChatAppError
|
||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
@ -38,6 +39,9 @@ class ConversationRenamePayload(BaseModel):
|
|||||||
auto_generate: bool = False
|
auto_generate: bool = False
|
||||||
|
|
||||||
|
|
||||||
|
register_schema_models(web_ns, ConversationListQuery, ConversationRenamePayload)
|
||||||
|
|
||||||
|
|
||||||
@web_ns.route("/conversations")
|
@web_ns.route("/conversations")
|
||||||
class ConversationListApi(WebApiResource):
|
class ConversationListApi(WebApiResource):
|
||||||
@web_ns.doc("Get Conversation List")
|
@web_ns.doc("Get Conversation List")
|
||||||
@ -171,7 +175,9 @@ class ConversationRenameApi(WebApiResource):
|
|||||||
payload = ConversationRenamePayload.model_validate(web_ns.payload or {})
|
payload = ConversationRenamePayload.model_validate(web_ns.payload or {})
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return ConversationService.rename(app_model, conversation_id, end_user, payload.name, payload.auto_generate) # type: ignore
|
return ConversationService.rename(
|
||||||
|
app_model, conversation_id, end_user, payload.name or "", payload.auto_generate
|
||||||
|
)
|
||||||
except ConversationNotExistsError:
|
except ConversationNotExistsError:
|
||||||
raise NotFound("Conversation Not Exists.")
|
raise NotFound("Conversation Not Exists.")
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ from pydantic import BaseModel, Field, field_validator
|
|||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console.auth.error import (
|
from controllers.console.auth.error import (
|
||||||
AuthenticationFailedError,
|
AuthenticationFailedError,
|
||||||
EmailCodeError,
|
EmailCodeError,
|
||||||
@ -47,6 +48,9 @@ class ForgotPasswordResetPayload(BaseModel):
|
|||||||
return valid_password(value)
|
return valid_password(value)
|
||||||
|
|
||||||
|
|
||||||
|
register_schema_models(web_ns, ForgotPasswordSendPayload, ForgotPasswordCheckPayload, ForgotPasswordResetPayload)
|
||||||
|
|
||||||
|
|
||||||
@web_ns.route("/forgot-password")
|
@web_ns.route("/forgot-password")
|
||||||
class ForgotPasswordSendEmailApi(Resource):
|
class ForgotPasswordSendEmailApi(Resource):
|
||||||
@only_edition_enterprise
|
@only_edition_enterprise
|
||||||
|
|||||||
@ -5,6 +5,7 @@ from pydantic import BaseModel, Field, field_validator
|
|||||||
|
|
||||||
import services
|
import services
|
||||||
from configs import dify_config
|
from configs import dify_config
|
||||||
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console.auth.error import (
|
from controllers.console.auth.error import (
|
||||||
AuthenticationFailedError,
|
AuthenticationFailedError,
|
||||||
EmailCodeError,
|
EmailCodeError,
|
||||||
@ -47,6 +48,9 @@ class EmailCodeLoginVerifyPayload(BaseModel):
|
|||||||
token: str = Field(min_length=1)
|
token: str = Field(min_length=1)
|
||||||
|
|
||||||
|
|
||||||
|
register_schema_models(web_ns, LoginPayload, EmailCodeLoginSendPayload, EmailCodeLoginVerifyPayload)
|
||||||
|
|
||||||
|
|
||||||
@web_ns.route("/login")
|
@web_ns.route("/login")
|
||||||
class LoginApi(Resource):
|
class LoginApi(Resource):
|
||||||
"""Resource for web app email/password login."""
|
"""Resource for web app email/password login."""
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from flask_restx import fields, marshal_with
|
|||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import (
|
from controllers.web.error import (
|
||||||
AppMoreLikeThisDisabledError,
|
AppMoreLikeThisDisabledError,
|
||||||
@ -64,6 +65,9 @@ class MessageMoreLikeThisQuery(BaseModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
register_schema_models(web_ns, MessageListQuery, MessageFeedbackPayload, MessageMoreLikeThisQuery)
|
||||||
|
|
||||||
|
|
||||||
@web_ns.route("/messages")
|
@web_ns.route("/messages")
|
||||||
class MessageListApi(WebApiResource):
|
class MessageListApi(WebApiResource):
|
||||||
message_fields = {
|
message_fields = {
|
||||||
@ -91,7 +95,22 @@ class MessageListApi(WebApiResource):
|
|||||||
|
|
||||||
@web_ns.doc("Get Message List")
|
@web_ns.doc("Get Message List")
|
||||||
@web_ns.doc(description="Retrieve paginated list of messages from a conversation in a chat application.")
|
@web_ns.doc(description="Retrieve paginated list of messages from a conversation in a chat application.")
|
||||||
@web_ns.expect(web_ns.models[MessageListQuery.__name__])
|
@web_ns.doc(
|
||||||
|
params={
|
||||||
|
"conversation_id": {"description": "Conversation UUID", "type": "string", "required": True},
|
||||||
|
"first_id": {
|
||||||
|
"description": "First message ID for pagination",
|
||||||
|
"type": "string",
|
||||||
|
"required": False,
|
||||||
|
},
|
||||||
|
"limit": {
|
||||||
|
"description": "Number of messages to return (1-100)",
|
||||||
|
"type": "integer",
|
||||||
|
"required": False,
|
||||||
|
"default": 20,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
@web_ns.doc(
|
@web_ns.doc(
|
||||||
responses={
|
responses={
|
||||||
200: "Success",
|
200: "Success",
|
||||||
@ -130,7 +149,17 @@ class MessageFeedbackApi(WebApiResource):
|
|||||||
@web_ns.doc("Create Message Feedback")
|
@web_ns.doc("Create Message Feedback")
|
||||||
@web_ns.doc(description="Submit feedback (like/dislike) for a specific message.")
|
@web_ns.doc(description="Submit feedback (like/dislike) for a specific message.")
|
||||||
@web_ns.doc(params={"message_id": {"description": "Message UUID", "type": "string", "required": True}})
|
@web_ns.doc(params={"message_id": {"description": "Message UUID", "type": "string", "required": True}})
|
||||||
@web_ns.expect(web_ns.models[MessageFeedbackPayload.__name__])
|
@web_ns.doc(
|
||||||
|
params={
|
||||||
|
"rating": {
|
||||||
|
"description": "Feedback rating",
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["like", "dislike"],
|
||||||
|
"required": False,
|
||||||
|
},
|
||||||
|
"content": {"description": "Feedback content", "type": "string", "required": False},
|
||||||
|
}
|
||||||
|
)
|
||||||
@web_ns.doc(
|
@web_ns.doc(
|
||||||
responses={
|
responses={
|
||||||
200: "Feedback submitted successfully",
|
200: "Feedback submitted successfully",
|
||||||
|
|||||||
@ -11,19 +11,24 @@ from controllers.common.errors import (
|
|||||||
RemoteFileUploadError,
|
RemoteFileUploadError,
|
||||||
UnsupportedFileTypeError,
|
UnsupportedFileTypeError,
|
||||||
)
|
)
|
||||||
from controllers.web import web_ns
|
|
||||||
from controllers.web.wraps import WebApiResource
|
|
||||||
from core.file import helpers as file_helpers
|
from core.file import helpers as file_helpers
|
||||||
from core.helper import ssrf_proxy
|
from core.helper import ssrf_proxy
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.file_fields import build_file_with_signed_url_model, build_remote_file_info_model
|
from fields.file_fields import build_file_with_signed_url_model, build_remote_file_info_model
|
||||||
from services.file_service import FileService
|
from services.file_service import FileService
|
||||||
|
|
||||||
|
from ..common.schema import register_schema_models
|
||||||
|
from . import web_ns
|
||||||
|
from .wraps import WebApiResource
|
||||||
|
|
||||||
|
|
||||||
class RemoteFileUploadPayload(BaseModel):
|
class RemoteFileUploadPayload(BaseModel):
|
||||||
url: HttpUrl = Field(description="Remote file URL")
|
url: HttpUrl = Field(description="Remote file URL")
|
||||||
|
|
||||||
|
|
||||||
|
register_schema_models(web_ns, RemoteFileUploadPayload)
|
||||||
|
|
||||||
|
|
||||||
@web_ns.route("/remote-files/<path:url>")
|
@web_ns.route("/remote-files/<path:url>")
|
||||||
class RemoteFileInfoApi(WebApiResource):
|
class RemoteFileInfoApi(WebApiResource):
|
||||||
@web_ns.doc("get_remote_file_info")
|
@web_ns.doc("get_remote_file_info")
|
||||||
|
|||||||
@ -3,6 +3,7 @@ from flask_restx import fields, marshal_with
|
|||||||
from pydantic import BaseModel, Field, field_validator
|
from pydantic import BaseModel, Field, field_validator
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import NotCompletionAppError
|
from controllers.web.error import NotCompletionAppError
|
||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
@ -45,6 +46,9 @@ class SavedMessageCreatePayload(BaseModel):
|
|||||||
return uuid_value(value)
|
return uuid_value(value)
|
||||||
|
|
||||||
|
|
||||||
|
register_schema_models(web_ns, SavedMessageListQuery, SavedMessageCreatePayload)
|
||||||
|
|
||||||
|
|
||||||
@web_ns.route("/saved-messages")
|
@web_ns.route("/saved-messages")
|
||||||
class SavedMessageListApi(WebApiResource):
|
class SavedMessageListApi(WebApiResource):
|
||||||
saved_message_infinite_scroll_pagination_fields = {
|
saved_message_infinite_scroll_pagination_fields = {
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from typing import Any
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import (
|
from controllers.web.error import (
|
||||||
CompletionRequestError,
|
CompletionRequestError,
|
||||||
@ -36,6 +37,8 @@ class WorkflowRunPayload(BaseModel):
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
register_schema_models(web_ns, WorkflowRunPayload)
|
||||||
|
|
||||||
|
|
||||||
@web_ns.route("/workflows/run")
|
@web_ns.route("/workflows/run")
|
||||||
class WorkflowRunApi(WebApiResource):
|
class WorkflowRunApi(WebApiResource):
|
||||||
|
|||||||
@ -254,7 +254,7 @@ class ApiToolManageService:
|
|||||||
"""
|
"""
|
||||||
update api tool provider
|
update api tool provider
|
||||||
"""
|
"""
|
||||||
if schema_type not in list(ApiProviderSchemaType):
|
if schema_type not in ApiProviderSchemaType:
|
||||||
raise ValueError(f"invalid schema type {schema}")
|
raise ValueError(f"invalid schema type {schema}")
|
||||||
|
|
||||||
provider_name = provider_name.strip()
|
provider_name = provider_name.strip()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user