refactor(api): use HTTPStatus throughout Explore controllers (#42891)

This commit is contained in:
非法操作 authored and GitHub committed 2026-09-28 02:07:12 +00:00
1 parent 090f7d923c
commit 1c535791cb
12 files changed
+89 -72

No files matched your search

+3 -2
View File
@@ -3,6 +3,7 @@
import logging
from collections.abc import Callable
from functools import wraps
from http import HTTPStatus
from flask import Response, request
from flask_restx import Resource
@@ -97,7 +98,7 @@ def _audio_errors[**P, R](view: Callable[P, R]) -> Callable[P, R]:
endpoint="installed_app_audio",
)
class ChatAudioApi(Resource):
@console_ns.response(200, "Success", console_ns.models[AudioTranscriptResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[AudioTranscriptResponse.__name__])
@console_account_admission()
@get_installed_app
@_audio_errors
@@ -121,7 +122,7 @@ class ChatAudioApi(Resource):
)
class ChatTextApi(Resource):
@console_ns.expect(console_ns.models[TextToAudioPayload.__name__])
@console_ns.response(200, "Success", console_ns.models[AudioBinaryResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[AudioBinaryResponse.__name__])
@console_account_admission()
@get_installed_app
@model_validate(TextToAudioPayload)
+2 -1
View File
@@ -1,4 +1,5 @@
from datetime import datetime
from http import HTTPStatus
from typing import cast
from flask_restx import Namespace, Resource
@@ -60,7 +61,7 @@ class BannerApi(Resource):
"""Resource for banner list."""
@api.doc(params=query_params_from_model(BannerListQuery))
@api.response(200, "Success", api.models[BannerListResponse.__name__])
@api.response(HTTPStatus.OK, "Success", api.models[BannerListResponse.__name__])
@model_validate(BannerListQuery)
def get(self, req_data: BannerListQuery):
"""Get banner list."""
@@ -1,4 +1,5 @@
import logging
from http import HTTPStatus
from typing import Any, Literal
from uuid import UUID
@@ -87,7 +88,7 @@ register_response_schema_models(console_ns, SimpleResultResponse)
)
class CompletionApi(Resource):
@console_ns.expect(console_ns.models[CompletionMessageExplorePayload.__name__])
@console_ns.response(200, "Success")
@console_ns.response(HTTPStatus.OK, "Success")
@console_account_admission()
@get_installed_app
@model_validate(CompletionMessageExplorePayload)
@@ -141,7 +142,7 @@ class CompletionApi(Resource):
endpoint="installed_app_stop_completion",
)
class CompletionStopApi(Resource):
@console_ns.response(200, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_account_admission()
@get_installed_app
def post(
@@ -158,7 +159,7 @@ class CompletionStopApi(Resource):
app_mode=AppMode.value_of(app_mode),
)
return SimpleResultResponse(result="success").model_dump(mode="json"), 200
return SimpleResultResponse(result="success").model_dump(mode="json"), HTTPStatus.OK
@console_ns.route(
@@ -167,7 +168,7 @@ class CompletionStopApi(Resource):
)
class ChatApi(Resource):
@console_ns.expect(console_ns.models[ChatMessagePayload.__name__])
@console_ns.response(200, "Success")
@console_ns.response(HTTPStatus.OK, "Success")
@console_account_admission()
@get_installed_app
@model_validate(ChatMessagePayload)
@@ -223,7 +224,7 @@ class ChatApi(Resource):
endpoint="installed_app_stop_chat_completion",
)
class ChatStopApi(Resource):
@console_ns.response(200, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_account_admission()
@get_installed_app
def post(
@@ -240,4 +241,4 @@ class ChatStopApi(Resource):
app_mode=app_mode,
)
return SimpleResultResponse(result="success").model_dump(mode="json"), 200
return SimpleResultResponse(result="success").model_dump(mode="json"), HTTPStatus.OK
@@ -2,6 +2,7 @@
from collections.abc import Callable
from functools import wraps
from http import HTTPStatus
from uuid import UUID
from flask_restx import Resource
@@ -84,7 +85,7 @@ def _conversation_errors[**P, R](view: Callable[P, R]) -> Callable[P, R]:
@console_ns.route("/installed-apps/<uuid:installed_app_id>/conversations", endpoint="installed_app_conversations")
class ConversationListApi(Resource):
@console_ns.doc(params=query_params_from_model(ConversationListQuery))
@console_ns.response(200, "Success", console_ns.models[ConversationInfiniteScrollPagination.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[ConversationInfiniteScrollPagination.__name__])
@console_account_admission()
@get_installed_app
@model_validate(ConversationListQuery)
@@ -106,7 +107,7 @@ class ConversationListApi(Resource):
"/installed-apps/<uuid:installed_app_id>/conversations/<uuid:c_id>", endpoint="installed_app_conversation"
)
class ConversationApi(Resource):
@console_ns.response(204, "Conversation deleted successfully")
@console_ns.response(HTTPStatus.NO_CONTENT, "Conversation deleted successfully")
@console_account_admission()
@get_installed_app
@_conversation_errors
@@ -114,7 +115,7 @@ class ConversationApi(Resource):
application_services().installed_apps.conversations.delete(
installed_app=installed_app, account_id=request_context.account_id, conversation_id=str(c_id)
)
return "", 204
return "", HTTPStatus.NO_CONTENT
@console_ns.route(
@@ -123,7 +124,9 @@ class ConversationApi(Resource):
)
class ConversationRenameApi(Resource):
@console_ns.expect(console_ns.models[ConversationRenamePayload.__name__])
@console_ns.response(200, "Conversation renamed successfully", console_ns.models[SimpleConversation.__name__])
@console_ns.response(
HTTPStatus.OK, "Conversation renamed successfully", console_ns.models[SimpleConversation.__name__]
)
@console_account_admission()
@get_installed_app
@model_validate(ConversationRenamePayload)
@@ -149,7 +152,7 @@ class ConversationRenameApi(Resource):
"/installed-apps/<uuid:installed_app_id>/conversations/<uuid:c_id>/pin", endpoint="installed_app_conversation_pin"
)
class ConversationPinApi(Resource):
@console_ns.response(200, "Success", console_ns.models[ResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[ResultResponse.__name__])
@console_account_admission()
@get_installed_app
@_conversation_errors
@@ -168,7 +171,7 @@ class ConversationPinApi(Resource):
endpoint="installed_app_conversation_unpin",
)
class ConversationUnPinApi(Resource):
@console_ns.response(200, "Success", console_ns.models[ResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[ResultResponse.__name__])
@console_account_admission()
@get_installed_app
@_conversation_errors
+24 -22
View File
@@ -1,3 +1,5 @@
from http import HTTPStatus
from core.logging.context import get_request_id
from libs.exception import BaseHTTPException
@@ -14,115 +16,115 @@ class InstalledAppHTTPError(BaseHTTPException):
class InstalledAppNotFoundHTTPError(InstalledAppHTTPError):
error_code = "installed_app_not_found"
description = "The app was not found in this workspace."
code = 404
code = HTTPStatus.NOT_FOUND
class InstalledAppUnavailableHTTPError(InstalledAppHTTPError):
error_code = "installed_app_unavailable"
description = "The app is not available in this app library."
code = 404
code = HTTPStatus.NOT_FOUND
class InstalledAppInvalidCursorError(InstalledAppHTTPError):
error_code = "invalid_cursor"
description = "The app list cursor is invalid. Refresh the list and try again."
code = 400
code = HTTPStatus.BAD_REQUEST
class WebAppAccessUnavailableHTTPError(InstalledAppHTTPError):
error_code = "web_app_access_unavailable"
description = "The app access service is unavailable. Try again later."
code = 503
code = HTTPStatus.SERVICE_UNAVAILABLE
class ConversationNotFoundHTTPError(InstalledAppHTTPError):
error_code = "conversation_not_found"
description = "The conversation was not found for this account and app."
code = 404
code = HTTPStatus.NOT_FOUND
class ConversationCursorNotFoundHTTPError(InstalledAppHTTPError):
error_code = "conversation_cursor_not_found"
description = "The conversation cursor is not in the current list. Refresh the list and try again."
code = 404
code = HTTPStatus.NOT_FOUND
class ConversationFirstMessageNotFoundHTTPError(InstalledAppHTTPError):
error_code = "conversation_first_message_not_found"
description = "The conversation has no message from which to generate a name."
code = 404
code = HTTPStatus.NOT_FOUND
class ConversationNameRequiredHTTPError(InstalledAppHTTPError):
error_code = "conversation_name_required"
description = "A name is required when automatic naming is disabled."
code = 400
code = HTTPStatus.BAD_REQUEST
class MessageNotFoundHTTPError(InstalledAppHTTPError):
error_code = "message_not_found"
description = "The message was not found for this account and app."
code = 404
code = HTTPStatus.NOT_FOUND
class MessageCursorNotFoundHTTPError(InstalledAppHTTPError):
error_code = "message_cursor_not_found"
description = "The message cursor is not in this conversation. Refresh the list and try again."
code = 404
code = HTTPStatus.NOT_FOUND
class MessageFeedbackRatingRequiredHTTPError(InstalledAppHTTPError):
error_code = "message_feedback_rating_required"
description = "A rating is required when there is no existing feedback to remove."
code = 400
code = HTTPStatus.BAD_REQUEST
class NotCompletionAppError(BaseHTTPException):
error_code = "not_completion_app"
description = "Not Completion App"
code = 400
code = HTTPStatus.BAD_REQUEST
class NotChatAppError(BaseHTTPException):
error_code = "not_chat_app"
description = "App mode is invalid."
code = 400
code = HTTPStatus.BAD_REQUEST
class NotWorkflowAppError(BaseHTTPException):
error_code = "not_workflow_app"
description = "Only support workflow app."
code = 400
code = HTTPStatus.BAD_REQUEST
class AppSuggestedQuestionsAfterAnswerDisabledError(BaseHTTPException):
error_code = "app_suggested_questions_after_answer_disabled"
description = "Function Suggested questions after answer disabled."
code = 403
code = HTTPStatus.FORBIDDEN
class AppAccessDeniedError(BaseHTTPException):
error_code = "access_denied"
description = "App access denied."
code = 403
code = HTTPStatus.FORBIDDEN
class RecommendedAppNotFoundError(BaseHTTPException):
error_code = "recommended_app_not_found"
description = "Recommended app not found."
code = 404
code = HTTPStatus.NOT_FOUND
class AppPreviewSiteUnavailableError(BaseHTTPException):
error_code = "app_site_unavailable"
description = "The app preview site is unavailable."
code = 403
code = HTTPStatus.FORBIDDEN
class AppPreviewOwnerUnavailableError(BaseHTTPException):
error_code = "app_owner_unavailable"
description = "The app preview owner is unavailable."
code = 403
code = HTTPStatus.FORBIDDEN
class TrialAppNotAllowed(BaseHTTPException):
@@ -132,7 +134,7 @@ class TrialAppNotAllowed(BaseHTTPException):
"""
error_code = "trial_app_not_allowed"
code = 403
code = HTTPStatus.FORBIDDEN
description = "the app is not allowed to be trial."
@@ -143,11 +145,11 @@ class TrialAppLimitExceeded(BaseHTTPException):
"""
error_code = "trial_app_limit_exceeded"
code = 403
code = HTTPStatus.FORBIDDEN
description = "The user has exceeded the trial app limit."
class TrialAppFeatureDisabledError(BaseHTTPException):
error_code = "trial_app_feature_disabled"
code = 403
code = HTTPStatus.FORBIDDEN
description = "Trial app feature is not enabled."
@@ -1,6 +1,7 @@
import base64
import binascii
import logging
from http import HTTPStatus
from flask_restx import Resource
from pydantic import BaseModel, Field, computed_field
@@ -139,7 +140,7 @@ register_response_schema_models(
@console_ns.route("/installed-apps")
class InstalledAppsListApi(Resource):
@console_ns.doc(params=query_params_from_model(InstalledAppsListQuery))
@console_ns.response(200, "Success", console_ns.models[InstalledAppListResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[InstalledAppListResponse.__name__])
@console_account_admission()
@model_validate(InstalledAppsListQuery)
def get(self, query: InstalledAppsListQuery, request_context: RequestContext) -> dict[str, object]:
@@ -184,7 +185,7 @@ class InstalledAppsListApi(Resource):
class InstalledAppApi(Resource):
"""Read or update an admitted workspace installation."""
@console_ns.response(200, "Success", console_ns.models[InstalledAppResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[InstalledAppResponse.__name__])
@console_account_admission()
@get_installed_app
def get(
@@ -208,7 +209,7 @@ class InstalledAppApi(Resource):
),
)
@console_ns.response(200, "Success", console_ns.models[SimpleResultMessageResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SimpleResultMessageResponse.__name__])
@console_ns.expect(console_ns.models[InstalledAppUpdatePayload.__name__])
@console_account_admission()
@get_installed_app
+5 -4
View File
@@ -3,6 +3,7 @@
import logging
from collections.abc import Callable
from functools import wraps
from http import HTTPStatus
from typing import Literal
from uuid import UUID
@@ -122,7 +123,7 @@ def _message_errors[**P, R](view: Callable[P, R]) -> Callable[P, R]:
)
class MessageListApi(Resource):
@console_ns.doc(params=query_params_from_model(MessageListQuery))
@console_ns.response(200, "Success", console_ns.models[ExploreMessageInfiniteScrollPagination.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[ExploreMessageInfiniteScrollPagination.__name__])
@console_account_admission()
@get_installed_app
@model_validate(MessageListQuery)
@@ -146,7 +147,7 @@ class MessageListApi(Resource):
)
class MessageFeedbackApi(Resource):
@console_ns.expect(console_ns.models[MessageFeedbackPayload.__name__])
@console_ns.response(200, "Feedback submitted successfully", console_ns.models[ResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Feedback submitted successfully", console_ns.models[ResultResponse.__name__])
@console_account_admission()
@get_installed_app
@model_validate(MessageFeedbackPayload)
@@ -174,7 +175,7 @@ class MessageFeedbackApi(Resource):
)
class MessageMoreLikeThisApi(Resource):
@console_ns.doc(params=query_params_from_model(MoreLikeThisQuery))
@console_ns.response(200, "Success")
@console_ns.response(HTTPStatus.OK, "Success")
@console_account_admission()
@get_installed_app
@model_validate(MoreLikeThisQuery)
@@ -201,7 +202,7 @@ class MessageMoreLikeThisApi(Resource):
endpoint="installed_app_suggested_question",
)
class MessageSuggestedQuestionApi(Resource):
@console_ns.response(200, "Success", console_ns.models[SuggestedQuestionsResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SuggestedQuestionsResponse.__name__])
@console_account_admission()
@get_installed_app
@_message_errors
+3 -2
View File
@@ -1,3 +1,4 @@
from http import HTTPStatus
from typing import Any
from flask_restx import Resource
@@ -32,7 +33,7 @@ register_response_schema_models(console_ns, Parameters, ExploreAppMetaResponse)
class AppParameterApi(Resource):
"""Resource for app variables."""
@console_ns.response(200, "Success", console_ns.models[Parameters.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[Parameters.__name__])
@console_account_admission()
@get_installed_app
def get(self, request_context: RequestContext, installed_app: InstalledAppRef) -> dict[str, object]:
@@ -47,7 +48,7 @@ class AppParameterApi(Resource):
@console_ns.route("/installed-apps/<uuid:installed_app_id>/meta", endpoint="installed_app_meta")
class ExploreAppMetaApi(Resource):
@console_ns.response(200, "Success", console_ns.models[ExploreAppMetaResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[ExploreAppMetaResponse.__name__])
@console_account_admission()
@get_installed_app
def get(self, request_context: RequestContext, installed_app: InstalledAppRef) -> dict[str, object]:
@@ -1,3 +1,4 @@
from http import HTTPStatus
from typing import Any
from uuid import UUID
@@ -96,7 +97,7 @@ register_response_schema_models(
@console_ns.route("/explore/apps")
class RecommendedAppListApi(Resource):
@console_ns.doc(params=query_params_from_model(RecommendedAppsQuery))
@console_ns.response(200, "Success", console_ns.models[RecommendedAppListResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[RecommendedAppListResponse.__name__])
@console_account_admission()
@model_validate(RecommendedAppsQuery)
def get(self, req_data: RecommendedAppsQuery, _request_context: RequestContext):
@@ -111,7 +112,7 @@ class RecommendedAppListApi(Resource):
@console_ns.route("/explore/apps/learn-dify")
class LearnDifyAppListApi(Resource):
@console_ns.doc(params=query_params_from_model(RecommendedAppsQuery))
@console_ns.response(200, "Success", console_ns.models[LearnDifyAppListResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[LearnDifyAppListResponse.__name__])
@console_account_admission()
@model_validate(RecommendedAppsQuery)
def get(self, req_data: RecommendedAppsQuery, _request_context: RequestContext):
@@ -125,8 +126,8 @@ class LearnDifyAppListApi(Resource):
@console_ns.route("/explore/apps/<uuid:app_id>")
class RecommendedAppApi(Resource):
@console_ns.response(200, "Success", console_ns.models[RecommendedAppDetailResponse.__name__])
@console_ns.response(404, "Recommended app not found")
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[RecommendedAppDetailResponse.__name__])
@console_ns.response(HTTPStatus.NOT_FOUND, "Recommended app not found")
@console_account_admission()
def get(self, _request_context: RequestContext, app_id: UUID):
try:
@@ -1,3 +1,4 @@
from http import HTTPStatus
from uuid import UUID
from flask_restx import Resource
@@ -32,7 +33,7 @@ def _require_completion_app(installed_app: InstalledAppRef) -> str:
@console_ns.route("/installed-apps/<uuid:installed_app_id>/saved-messages", endpoint="installed_app_saved_messages")
class SavedMessageListApi(Resource):
@console_ns.doc(params=query_params_from_model(SavedMessageListQuery))
@console_ns.response(200, "Success", console_ns.models[SavedMessageInfiniteScrollPagination.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SavedMessageInfiniteScrollPagination.__name__])
@console_account_admission()
@get_installed_app
@model_validate(SavedMessageListQuery)
@@ -52,7 +53,7 @@ class SavedMessageListApi(Resource):
return dump_response(SavedMessageInfiniteScrollPagination, pagination)
@console_ns.expect(console_ns.models[SavedMessageCreatePayload.__name__])
@console_ns.response(200, "Success", console_ns.models[ResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[ResultResponse.__name__])
@console_account_admission()
@get_installed_app
@model_validate(SavedMessageCreatePayload)
@@ -80,7 +81,7 @@ class SavedMessageListApi(Resource):
"/installed-apps/<uuid:installed_app_id>/saved-messages/<uuid:message_id>", endpoint="installed_app_saved_message"
)
class SavedMessageApi(Resource):
@console_ns.response(204, "Saved message deleted successfully")
@console_ns.response(HTTPStatus.NO_CONTENT, "Saved message deleted successfully")
@console_account_admission()
@get_installed_app
def delete(
@@ -96,4 +97,4 @@ class SavedMessageApi(Resource):
message_id=str(message_id),
)
return "", 204
return "", HTTPStatus.NO_CONTENT
+19 -16
View File
@@ -3,6 +3,7 @@ from collections.abc import Callable, Mapping
from dataclasses import asdict
from datetime import datetime
from functools import wraps
from http import HTTPStatus
from typing import Any, Literal
from uuid import UUID
@@ -460,7 +461,7 @@ simple_account_model = console_ns.models[TrialSimpleAccount.__name__]
)
class TrialAppFileUploadApi(Resource):
@console_ns.doc(consumes=["multipart/form-data"], params=FILE_UPLOAD_PARAMS)
@console_ns.response(201, "File uploaded successfully", console_ns.models[FileResponse.__name__])
@console_ns.response(HTTPStatus.CREATED, "File uploaded successfully", console_ns.models[FileResponse.__name__])
@console_account_admission()
@get_trial_app
@cloud_edition_billing_resource_check("documents")
@@ -470,7 +471,7 @@ class TrialAppFileUploadApi(Resource):
request_context=request_context,
resource_tenant_id=trial_app.tenant_id,
)
return dump_response(FileResponse, upload_file), 201
return dump_response(FileResponse, upload_file), HTTPStatus.CREATED
@console_ns.route(
@@ -479,7 +480,9 @@ class TrialAppFileUploadApi(Resource):
)
class TrialAppRemoteFileUploadApi(Resource):
@console_ns.expect(console_ns.models[RemoteFileUploadPayload.__name__])
@console_ns.response(201, "File uploaded successfully", console_ns.models[FileWithSignedUrl.__name__])
@console_ns.response(
HTTPStatus.CREATED, "File uploaded successfully", console_ns.models[FileWithSignedUrl.__name__]
)
@console_account_admission()
@get_trial_app
@cloud_edition_billing_resource_check("documents")
@@ -493,7 +496,7 @@ class TrialAppRemoteFileUploadApi(Resource):
current_user=FileUploadActor(id=request_context.account_id, creator_role=CreatorUserRole.ACCOUNT),
resource_tenant_id=trial_app.tenant_id,
)
return dump_response(FileWithSignedUrl, remote_file), 201
return dump_response(FileWithSignedUrl, remote_file), HTTPStatus.CREATED
@console_ns.route(
@@ -502,7 +505,7 @@ class TrialAppRemoteFileUploadApi(Resource):
)
class TrialAppWorkflowRunApi(Resource):
@console_ns.expect(console_ns.models[WorkflowRunRequest.__name__])
@console_ns.response(200, "Success")
@console_ns.response(HTTPStatus.OK, "Success")
@console_account_admission()
@get_trial_app
@model_validate(WorkflowRunRequest)
@@ -545,7 +548,7 @@ class TrialAppWorkflowRunApi(Resource):
@console_ns.route("/trial-apps/<uuid:app_id>/workflows/tasks/<string:task_id>/stop")
class TrialAppWorkflowTaskStopApi(Resource):
@console_ns.response(200, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_account_admission()
@get_trial_app
def post(self, request_context: RequestContext, trial_app: TrialAppRef, task_id: str) -> dict[str, object]:
@@ -566,7 +569,7 @@ class TrialAppWorkflowTaskStopApi(Resource):
)
class TrialChatApi(Resource):
@console_ns.expect(console_ns.models[ChatRequest.__name__])
@console_ns.response(200, "Success")
@console_ns.response(HTTPStatus.OK, "Success")
@console_account_admission()
@get_trial_app
@model_validate(ChatRequest)
@@ -622,7 +625,7 @@ class TrialChatApi(Resource):
endpoint="trial_app_suggested_question",
)
class TrialMessageSuggestedQuestionApi(Resource):
@console_ns.response(200, "Success", console_ns.models[SuggestedQuestionsResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SuggestedQuestionsResponse.__name__])
@console_account_admission()
@get_trial_app
def get(self, request_context: RequestContext, trial_app: TrialAppRef, message_id: UUID) -> dict[str, object]:
@@ -701,7 +704,7 @@ def _trial_audio_errors[**P, R](view: Callable[P, R]) -> Callable[P, R]:
endpoint="trial_app_audio",
)
class TrialChatAudioApi(Resource):
@console_ns.response(200, "Success", console_ns.models[AudioTranscriptResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[AudioTranscriptResponse.__name__])
@console_account_admission()
@get_trial_app
@_trial_audio_errors
@@ -722,7 +725,7 @@ class TrialChatAudioApi(Resource):
)
class TrialChatTextApi(Resource):
@console_ns.expect(console_ns.models[TextToSpeechRequest.__name__])
@console_ns.response(200, "Success", console_ns.models[AudioBinaryResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[AudioBinaryResponse.__name__])
@console_account_admission()
@get_trial_app
@model_validate(TextToSpeechRequest)
@@ -758,7 +761,7 @@ class TrialChatTextApi(Resource):
)
class TrialCompletionApi(Resource):
@console_ns.expect(console_ns.models[CompletionRequest.__name__])
@console_ns.response(200, "Success")
@console_ns.response(HTTPStatus.OK, "Success")
@console_account_admission()
@get_trial_app
@model_validate(CompletionRequest)
@@ -805,7 +808,7 @@ class TrialCompletionApi(Resource):
class TrialSitApi(Resource):
"""Resource for trial app sites."""
@console_ns.response(200, "Success", console_ns.models[SiteResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SiteResponse.__name__])
@get_preview_app
def get(self, app: AppPreviewRef) -> dict[str, object]:
"""Retrieve app site info.
@@ -828,7 +831,7 @@ class TrialSitApi(Resource):
class TrialAppParameterApi(Resource):
"""Resource for app variables."""
@console_ns.response(200, "Success", console_ns.models[ParametersResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[ParametersResponse.__name__])
@get_preview_app
def get(self, app: AppPreviewRef) -> dict[str, object]:
"""Retrieve app parameters."""
@@ -843,7 +846,7 @@ class TrialAppParameterApi(Resource):
@console_ns.route("/trial-apps/<uuid:app_id>", endpoint="trial_app")
class AppApi(Resource):
@console_ns.response(200, "Success", console_ns.models[TrialAppDetailResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[TrialAppDetailResponse.__name__])
@console_account_admission()
@get_preview_app
def get(self, app: AppPreviewRef, request_context: RequestContext) -> dict[str, object]:
@@ -877,7 +880,7 @@ class AppApi(Resource):
endpoint="trial_app_workflow",
)
class AppWorkflowApi(Resource):
@console_ns.response(200, "Success", console_ns.models[TrialWorkflowResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[TrialWorkflowResponse.__name__])
@get_preview_app
def get(self, app: AppPreviewRef) -> dict[str, object]:
"""Get a detached workflow definition after catalog preview admission."""
@@ -896,7 +899,7 @@ class AppWorkflowApi(Resource):
)
class DatasetListApi(Resource):
@console_ns.doc(params=query_params_from_model(TrialDatasetListQuery))
@console_ns.response(200, "Success", console_ns.models[TrialDatasetListResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[TrialDatasetListResponse.__name__])
@get_preview_app
def get(self, app: AppPreviewRef) -> dict[str, object]:
# These legacy fields are response metadata: the query returns all
+3 -2
View File
@@ -1,4 +1,5 @@
import logging
from http import HTTPStatus
from flask import Response
from flask_restx import Resource
@@ -44,7 +45,7 @@ register_response_schema_models(console_ns, SimpleResultResponse)
@console_ns.route("/installed-apps/<uuid:installed_app_id>/workflows/run")
class InstalledAppWorkflowRunApi(Resource):
@console_ns.expect(console_ns.models[WorkflowRunPayload.__name__])
@console_ns.response(200, "Success")
@console_ns.response(HTTPStatus.OK, "Success")
@console_account_admission()
@get_installed_app
@model_validate(WorkflowRunPayload)
@@ -89,7 +90,7 @@ class InstalledAppWorkflowRunApi(Resource):
@console_ns.route("/installed-apps/<uuid:installed_app_id>/workflows/tasks/<string:task_id>/stop")
class InstalledAppWorkflowTaskStopApi(Resource):
@console_ns.response(200, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_ns.response(HTTPStatus.OK, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_account_admission()
@get_installed_app
def post(self, request_context: RequestContext, installed_app: InstalledAppRef, task_id: str) -> dict[str, object]: