fix: correct the audio-to-text spec and the api reference term - #903
Conversation
Drop app_unavailable, provider_quota_exceeded and model_currently_not_support from the /audio-to-text 400 list: no raise site reaches them on the path the endpoint takes. provider_not_support_speech_to_text stays, since audio_service raises it when the tenant has no default speech-to-text model. The endpoint uses the workspace default model, not the app's configured one, so correct that claim too. Separate the events in the 10 space-joined SSE examples with blank lines, matching the wire format the response descriptions already document. Also render triggered_from's plugin source as Integration Trigger.
Same rule as the rest of the docs: web app / Web 应用 / Web アプリ in prose, capitalized where a sentence starts. The operation title Get App WebApp Settings is left alone, because Mintlify derives the published slug /api-reference/applications/get-app-webapp-settings from it and 18 files link there, as are the getChatWebAppSettings operationId and the WebAppSettingsResponse schema.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
There was a problem hiding this comment.
Pull request overview
This PR updates the Service API reference and related guides to reflect the actual /audio-to-text behavior, correct SSE (Server-Sent Events) example formatting, and standardize the “web app” terminology across English/Chinese/Japanese documentation.
Changes:
- Correct
/audio-to-textdescription to use the workspace default speech-to-text model and remove unreachable 400 error codes from the spec. - Fix SSE multi-event examples to use blank-line separators (
\n\n) to match the SSE wire format. - Standardize “web app” wording across guides and OpenAPI descriptions while keeping operation titles/IDs stable to avoid breaking existing links/slugs.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| zh/api-reference/openapi_service.json | Updates SSE examples, /audio-to-text description/error list, and “Web 应用” terminology in the CN spec. |
| zh/api-reference/guides/workflow.mdx | Replaces “WebApp” wording with “Web 应用” in workflow guide references. |
| zh/api-reference/guides/human-input-flow.mdx | Updates delivery method wording to “Web 应用”. |
| zh/api-reference/guides/end-user-identity.mdx | Updates “WebApp” mentions to “Web 应用”. |
| zh/api-reference/guides/completion.mdx | Updates “WebApp” mentions to “Web 应用”. |
| zh/api-reference/guides/chatflow.mdx | Updates “WebApp” mentions to “Web 应用”. |
| zh/api-reference/guides/chat.mdx | Updates “WebApp” mentions to “Web 应用”. |
| zh/api-reference/guides/agent.mdx | Updates “WebApp” mentions to “Web 应用”. |
| ja/api-reference/openapi_service.json | Updates SSE examples, /audio-to-text description/error list, and “Web アプリ” terminology in the JA spec. |
| ja/api-reference/guides/workflow.mdx | Replaces “WebApp” wording with “Web アプリ” in workflow guide references. |
| ja/api-reference/guides/human-input-flow.mdx | Updates delivery method wording to “Web アプリ”. |
| ja/api-reference/guides/end-user-identity.mdx | Updates “WebApp” mentions to “Web アプリ”. |
| ja/api-reference/guides/completion.mdx | Updates “WebApp” mentions to “Web アプリ”. |
| ja/api-reference/guides/chatflow.mdx | Updates “WebApp” mentions to “Web アプリ”. |
| ja/api-reference/guides/chat.mdx | Updates “WebApp” mentions to “Web アプリ”. |
| ja/api-reference/guides/agent.mdx | Updates “WebApp” mentions to “Web アプリ”. |
| en/api-reference/openapi_service.json | Updates SSE examples, /audio-to-text description/error list, and “web app” terminology in the EN spec. |
| en/api-reference/guides/workflow.mdx | Replaces “WebApp” wording with “web app” in workflow guide references. |
| en/api-reference/guides/human-input-flow.mdx | Updates delivery method wording to “web app”. |
| en/api-reference/guides/end-user-identity.mdx | Updates “WebApp” mentions to “web app” in the EN guide (one heading capitalization nit noted). |
| en/api-reference/guides/completion.mdx | Updates “WebApp” mentions to “web app”. |
| en/api-reference/guides/chatflow.mdx | Updates “WebApp” mentions to “web app”. |
| en/api-reference/guides/chat.mdx | Updates “WebApp” mentions to “web app”. |
| en/api-reference/guides/agent.mdx | Updates “WebApp” mentions to “web app”. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
The heading is Title Case, so the term takes Web App there rather than the body-text lowercase. The anchor is unchanged, since both forms slug to api-users-and-web-app-users-stay-separate.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 24 out of 24 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (14)
en/api-reference/guides/end-user-identity.mdx:27
- The terminology here diverges from the project glossary:
writing-guides/glossary.md:28defines the product term as “WebApp”, but this guide now uses “Web App” / “web app”. Please align with the glossary (or update the glossary and apply the new term consistently across the spec and all languages).
## API Users and Web App Users Stay Separate
Traffic through the API and Dify's hosted web app keep separate identities: conversations your API users create never appear in the web app, and web app conversations never appear through the API.
en/api-reference/openapi_service.json:214
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. SSE events are terminated by a blank line; appending\n\nmakes the example self-contained and consistent with other examples in this spec.
"value": "data: {\"event\": \"agent_thought\", \"id\": \"agent_thought_id_1\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"position\": 1, \"thought\": \"Thinking about calling a tool...\", \"tool\": \"dalle3\", \"tool_input\": \"{\\\"dalle3\\\": {\\\"prompt\\\": \\\"a cute cat\\\"}}\", \"created_at\": 1705395332}\n\ndata: {\"event\": \"message_file\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"id\": \"file_id_1\", \"type\": \"image\", \"belongs_to\": \"assistant\", \"url\": \"https://example.com/cat.png\", \"created_at\": 1705395332}\n\ndata: {\"event\": \"agent_message\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"answer\": \"Here is the image: \", \"created_at\": 1705395333}\n\ndata: {\"event\": \"message_end\", \"task_id\":\"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"metadata\": {\"usage\": {\"total_tokens\": 50, \"latency\": 2.5}}}"
en/api-reference/openapi_service.json:218
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Appending\n\nkeeps the example aligned with SSE framing and with other examples in this file.
"value": "data: {\"event\": \"workflow_started\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395332, \"data\": {\"id\": \"wfr_abc123\", \"workflow_id\": \"wf_def456\", \"inputs\": {\"city\": \"San Francisco\"}, \"created_at\": 1705395332}}\n\ndata: {\"event\": \"node_started\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395332, \"data\": {\"id\": \"ne_001\", \"node_id\": \"node_llm_1\", \"node_type\": \"llm\", \"title\": \"LLM\", \"index\": 1, \"created_at\": 1705395332}}\n\ndata: {\"event\": \"reasoning_chunk\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395333, \"data\": {\"message_id\": \"msg123\", \"reasoning\": \"The user greeted me, so\", \"node_id\": \"node_llm_1\", \"is_final\": false}}\n\ndata: {\"event\": \"reasoning_chunk\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395333, \"data\": {\"message_id\": \"msg123\", \"reasoning\": \"\", \"node_id\": \"node_llm_1\", \"is_final\": true}}\n\ndata: {\"event\": \"message\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"answer\": \" I\", \"created_at\": 1705395333}\n\ndata: {\"event\": \"node_finished\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395334, \"data\": {\"id\": \"ne_001\", \"node_id\": \"node_llm_1\", \"node_type\": \"llm\", \"title\": \"LLM\", \"index\": 1, \"status\": \"succeeded\", \"elapsed_time\": 1.5, \"created_at\": 1705395332, \"finished_at\": 1705395334}}\n\ndata: {\"event\": \"message_end\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395334, \"metadata\": {\"usage\": {\"total_tokens\": 50, \"latency\": 2.5}}}\n\ndata: {\"event\": \"workflow_finished\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395335, \"data\": {\"id\": \"wfr_abc123\", \"workflow_id\": \"wf_def456\", \"status\": \"succeeded\", \"elapsed_time\": 2.5, \"total_tokens\": 50, \"total_steps\": 2, \"created_at\": 1705395332, \"finished_at\": 1705395335}}"
en/api-reference/openapi_service.json:222
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Adding a trailing\n\nwould better match SSE framing and keeps the example consistent with others in this spec.
"value": "data: {\"event\": \"workflow_started\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"workflow_id\": \"7c3e33d4-2a8b-4e5f-9b1a-d3c6e8f12345\", \"inputs\": {\"draft\": \"Hello\"}, \"created_at\": 1705407629, \"reason\": \"initial\"}}\n\ndata: {\"event\": \"human_input_required\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"form_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"form_token\": \"tok_abc123\", \"node_id\": \"approval_node\", \"node_title\": \"Approval\", \"form_content\": \"Please review the draft.\", \"inputs\": [{\"type\": \"paragraph\", \"output_variable_name\": \"comment\", \"default\": null}], \"actions\": [{\"id\": \"approve\", \"title\": \"Approve\", \"button_style\": \"primary\"}], \"display_in_ui\": false, \"resolved_default_values\": {\"comment\": \"\"}, \"expiration_time\": 1705494029}}\n\ndata: {\"event\": \"workflow_paused\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"paused_nodes\": [\"approval_node\"], \"outputs\": {}, \"reasons\": [{\"TYPE\": \"human_input_required\", \"form_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"form_content\": \"Please review the draft.\", \"inputs\": [{\"type\": \"paragraph\", \"output_variable_name\": \"comment\", \"default\": null}], \"actions\": [{\"id\": \"approve\", \"title\": \"Approve\", \"button_style\": \"primary\"}], \"node_id\": \"approval_node\", \"node_title\": \"Approval\", \"resolved_default_values\": {\"comment\": \"\"}, \"form_token\": \"tok_abc123\", \"expiration_time\": 1705494029}], \"status\": \"paused\", \"created_at\": 1705407629, \"elapsed_time\": 0.5, \"total_tokens\": 0, \"total_steps\": 1}}"
zh/api-reference/openapi_service.json:214
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Appending\n\nwould better match SSE event framing.
"value": "data: {\"event\": \"agent_thought\", \"id\": \"agent_thought_id_1\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"position\": 1, \"thought\": \"Thinking about calling a tool...\", \"tool\": \"dalle3\", \"tool_input\": \"{\\\"dalle3\\\": {\\\"prompt\\\": \\\"a cute cat\\\"}}\", \"created_at\": 1705395332}\n\ndata: {\"event\": \"message_file\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"id\": \"file_id_1\", \"type\": \"image\", \"belongs_to\": \"assistant\", \"url\": \"https://example.com/cat.png\", \"created_at\": 1705395332}\n\ndata: {\"event\": \"agent_message\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"answer\": \"Here is the image: \", \"created_at\": 1705395333}\n\ndata: {\"event\": \"message_end\", \"task_id\":\"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"metadata\": {\"usage\": {\"total_tokens\": 50, \"latency\": 2.5}}}"
zh/api-reference/openapi_service.json:218
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Consider adding a trailing\n\nso the last event is properly terminated.
"value": "data: {\"event\": \"workflow_started\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395332, \"data\": {\"id\": \"wfr_abc123\", \"workflow_id\": \"wf_def456\", \"inputs\": {\"city\": \"San Francisco\"}, \"created_at\": 1705395332}}\n\ndata: {\"event\": \"node_started\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395332, \"data\": {\"id\": \"ne_001\", \"node_id\": \"node_llm_1\", \"node_type\": \"llm\", \"title\": \"LLM\", \"index\": 1, \"created_at\": 1705395332}}\n\ndata: {\"event\": \"reasoning_chunk\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395333, \"data\": {\"message_id\": \"msg123\", \"reasoning\": \"The user greeted me, so\", \"node_id\": \"node_llm_1\", \"is_final\": false}}\n\ndata: {\"event\": \"reasoning_chunk\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395333, \"data\": {\"message_id\": \"msg123\", \"reasoning\": \"\", \"node_id\": \"node_llm_1\", \"is_final\": true}}\n\ndata: {\"event\": \"message\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"answer\": \" I\", \"created_at\": 1705395333}\n\ndata: {\"event\": \"node_finished\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395334, \"data\": {\"id\": \"ne_001\", \"node_id\": \"node_llm_1\", \"node_type\": \"llm\", \"title\": \"LLM\", \"index\": 1, \"status\": \"succeeded\", \"elapsed_time\": 1.5, \"created_at\": 1705395332, \"finished_at\": 1705395334}}\n\ndata: {\"event\": \"message_end\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395334, \"metadata\": {\"usage\": {\"total_tokens\": 50, \"latency\": 2.5}}}\n\ndata: {\"event\": \"workflow_finished\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395335, \"data\": {\"id\": \"wfr_abc123\", \"workflow_id\": \"wf_def456\", \"status\": \"succeeded\", \"elapsed_time\": 2.5, \"total_tokens\": 50, \"total_steps\": 2, \"created_at\": 1705395332, \"finished_at\": 1705395335}}"
zh/api-reference/openapi_service.json:222
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Adding\n\nat the end would match SSE event framing.
"value": "data: {\"event\": \"workflow_started\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"workflow_id\": \"7c3e33d4-2a8b-4e5f-9b1a-d3c6e8f12345\", \"inputs\": {\"draft\": \"Hello\"}, \"created_at\": 1705407629, \"reason\": \"initial\"}}\n\ndata: {\"event\": \"human_input_required\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"form_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"form_token\": \"tok_abc123\", \"node_id\": \"approval_node\", \"node_title\": \"Approval\", \"form_content\": \"请审阅草稿。\", \"inputs\": [{\"type\": \"paragraph\", \"output_variable_name\": \"comment\", \"default\": null}], \"actions\": [{\"id\": \"approve\", \"title\": \"批准\", \"button_style\": \"primary\"}], \"display_in_ui\": false, \"resolved_default_values\": {\"comment\": \"\"}, \"expiration_time\": 1705494029}}\n\ndata: {\"event\": \"workflow_paused\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"paused_nodes\": [\"approval_node\"], \"outputs\": {}, \"reasons\": [{\"TYPE\": \"human_input_required\", \"form_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"form_content\": \"请审阅草稿。\", \"inputs\": [{\"type\": \"paragraph\", \"output_variable_name\": \"comment\", \"default\": null}], \"actions\": [{\"id\": \"approve\", \"title\": \"批准\", \"button_style\": \"primary\"}], \"node_id\": \"approval_node\", \"node_title\": \"Approval\", \"resolved_default_values\": {\"comment\": \"\"}, \"form_token\": \"tok_abc123\", \"expiration_time\": 1705494029}], \"status\": \"paused\", \"created_at\": 1705407629, \"elapsed_time\": 0.5, \"total_tokens\": 0, \"total_steps\": 1}}"
ja/api-reference/openapi_service.json:214
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Appending\n\nmakes the framing consistent with SSE.
"value": "data: {\"event\": \"agent_thought\", \"id\": \"agent_thought_id_1\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"position\": 1, \"thought\": \"Thinking about calling a tool...\", \"tool\": \"dalle3\", \"tool_input\": \"{\\\"dalle3\\\": {\\\"prompt\\\": \\\"a cute cat\\\"}}\", \"created_at\": 1705395332}\n\ndata: {\"event\": \"message_file\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"id\": \"file_id_1\", \"type\": \"image\", \"belongs_to\": \"assistant\", \"url\": \"https://example.com/cat.png\", \"created_at\": 1705395332}\n\ndata: {\"event\": \"agent_message\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"answer\": \"Here is the image: \", \"created_at\": 1705395333}\n\ndata: {\"event\": \"message_end\", \"task_id\":\"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"metadata\": {\"usage\": {\"total_tokens\": 50, \"latency\": 2.5}}}"
ja/api-reference/openapi_service.json:218
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Consider adding a trailing\n\nso the last event is properly terminated.
"value": "data: {\"event\": \"workflow_started\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395332, \"data\": {\"id\": \"wfr_abc123\", \"workflow_id\": \"wf_def456\", \"inputs\": {\"city\": \"San Francisco\"}, \"created_at\": 1705395332}}\n\ndata: {\"event\": \"node_started\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395332, \"data\": {\"id\": \"ne_001\", \"node_id\": \"node_llm_1\", \"node_type\": \"llm\", \"title\": \"LLM\", \"index\": 1, \"created_at\": 1705395332}}\n\ndata: {\"event\": \"reasoning_chunk\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395333, \"data\": {\"message_id\": \"msg123\", \"reasoning\": \"The user greeted me, so\", \"node_id\": \"node_llm_1\", \"is_final\": false}}\n\ndata: {\"event\": \"reasoning_chunk\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395333, \"data\": {\"message_id\": \"msg123\", \"reasoning\": \"\", \"node_id\": \"node_llm_1\", \"is_final\": true}}\n\ndata: {\"event\": \"message\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"answer\": \" I\", \"created_at\": 1705395333}\n\ndata: {\"event\": \"node_finished\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395334, \"data\": {\"id\": \"ne_001\", \"node_id\": \"node_llm_1\", \"node_type\": \"llm\", \"title\": \"LLM\", \"index\": 1, \"status\": \"succeeded\", \"elapsed_time\": 1.5, \"created_at\": 1705395332, \"finished_at\": 1705395334}}\n\ndata: {\"event\": \"message_end\", \"task_id\": \"task123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395334, \"metadata\": {\"usage\": {\"total_tokens\": 50, \"latency\": 2.5}}}\n\ndata: {\"event\": \"workflow_finished\", \"task_id\": \"task123\", \"workflow_run_id\": \"wfr_abc123\", \"message_id\": \"msg123\", \"conversation_id\": \"conv123\", \"created_at\": 1705395335, \"data\": {\"id\": \"wfr_abc123\", \"workflow_id\": \"wf_def456\", \"status\": \"succeeded\", \"elapsed_time\": 2.5, \"total_tokens\": 50, \"total_steps\": 2, \"created_at\": 1705395332, \"finished_at\": 1705395335}}"
ja/api-reference/openapi_service.json:222
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Adding\n\nat the end would match SSE framing.
"value": "data: {\"event\": \"workflow_started\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"workflow_id\": \"7c3e33d4-2a8b-4e5f-9b1a-d3c6e8f12345\", \"inputs\": {\"draft\": \"Hello\"}, \"created_at\": 1705407629, \"reason\": \"initial\"}}\n\ndata: {\"event\": \"human_input_required\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"form_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"form_token\": \"tok_abc123\", \"node_id\": \"approval_node\", \"node_title\": \"Approval\", \"form_content\": \"ドラフトを確認してください。\", \"inputs\": [{\"type\": \"paragraph\", \"output_variable_name\": \"comment\", \"default\": null}], \"actions\": [{\"id\": \"approve\", \"title\": \"承認\", \"button_style\": \"primary\"}], \"display_in_ui\": false, \"resolved_default_values\": {\"comment\": \"\"}, \"expiration_time\": 1705494029}}\n\ndata: {\"event\": \"workflow_paused\", \"task_id\": \"c3800678-a077-43df-a102-53f23ed20b88\", \"message_id\": \"2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b\", \"conversation_id\": \"9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7\", \"created_at\": 1705407629, \"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"data\": {\"workflow_run_id\": \"fb47b2e6-5e43-4f90-be01-d5c5a088d156\", \"paused_nodes\": [\"approval_node\"], \"outputs\": {}, \"reasons\": [{\"TYPE\": \"human_input_required\", \"form_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\", \"form_content\": \"ドラフトを確認してください。\", \"inputs\": [{\"type\": \"paragraph\", \"output_variable_name\": \"comment\", \"default\": null}], \"actions\": [{\"id\": \"approve\", \"title\": \"承認\", \"button_style\": \"primary\"}], \"node_id\": \"approval_node\", \"node_title\": \"Approval\", \"resolved_default_values\": {\"comment\": \"\"}, \"form_token\": \"tok_abc123\", \"expiration_time\": 1705494029}], \"status\": \"paused\", \"created_at\": 1705407629, \"elapsed_time\": 0.5, \"total_tokens\": 0, \"total_steps\": 1}}"
en/api-reference/openapi_service.json:210
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. SSE events are terminated by a blank line, and other examples in this spec include a trailing\n\n(e.g. around line 4422). Consider appending\n\nso the example matches the documented wire format.
This issue also appears in the following locations of the same file:
- line 214
- line 218
- line 222
"value": "data: {\"event\": \"message\", \"task_id\": \"mock_task_id\", \"message_id\": \"5ad4cb98-f0c7-4085-b384-88c403be6290\", \"conversation_id\": \"45701982-8118-4bc5-8e9b-64562b4555f2\", \"answer\": \" I\", \"created_at\": 1679586595}\n\ndata: {\"event\": \"message_end\", \"task_id\": \"mock_task_id\", \"message_id\": \"5ad4cb98-f0c7-4085-b384-88c403be6290\", \"conversation_id\": \"45701982-8118-4bc5-8e9b-64562b4555f2\", \"created_at\": 1679586595, \"metadata\": {\"usage\": {\"total_tokens\": 10, \"latency\": 1.0}}}"
zh/api-reference/openapi_service.json:210
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. SSE events are terminated by a blank line; appending\n\nkeeps the example consistent with the SSE framing used elsewhere in the spec.
This issue also appears in the following locations of the same file:
- line 214
- line 218
- line 222
"value": "data: {\"event\": \"message\", \"task_id\": \"mock_task_id\", \"message_id\": \"5ad4cb98-f0c7-4085-b384-88c403be6290\", \"conversation_id\": \"45701982-8118-4bc5-8e9b-64562b4555f2\", \"answer\": \" I\", \"created_at\": 1679586595}\n\ndata: {\"event\": \"message_end\", \"task_id\": \"mock_task_id\", \"message_id\": \"5ad4cb98-f0c7-4085-b384-88c403be6290\", \"conversation_id\": \"45701982-8118-4bc5-8e9b-64562b4555f2\", \"created_at\": 1679586595, \"metadata\": {\"usage\": {\"total_tokens\": 10, \"latency\": 1.0}}}"
ja/api-reference/openapi_service.json:210
- This SSE example doesn’t end with a blank line (
\n\n) after the final event. Adding a trailing\n\nwould better match SSE event framing.
This issue also appears in the following locations of the same file:
- line 214
- line 218
- line 222
"value": "data: {\"event\": \"message\", \"task_id\": \"mock_task_id\", \"message_id\": \"5ad4cb98-f0c7-4085-b384-88c403be6290\", \"conversation_id\": \"45701982-8118-4bc5-8e9b-64562b4555f2\", \"answer\": \" I\", \"created_at\": 1679586595}\n\ndata: {\"event\": \"message_end\", \"task_id\": \"mock_task_id\", \"message_id\": \"5ad4cb98-f0c7-4085-b384-88c403be6290\", \"conversation_id\": \"45701982-8118-4bc5-8e9b-64562b4555f2\", \"created_at\": 1679586595, \"metadata\": {\"usage\": {\"total_tokens\": 10, \"latency\": 1.0}}}"
ja/api-reference/openapi_service.json:14546
- In Japanese, “Web アプリタイトル” reads a bit unnatural as a noun compound. Consider using “Web アプリのタイトル” for clarity.
"description": "Web アプリタイトル。"
💔 Some backports could not be created
Manual backportTo create the backport manually run: Questions ?Please refer to the Backport tool documentation and see the Github Action logs for details |
…#905) * fix: correct the audio-to-text errors and SSE example separators Drop app_unavailable, provider_quota_exceeded and model_currently_not_support from the /audio-to-text 400 list: no raise site reaches them on the path the endpoint takes. provider_not_support_speech_to_text stays, since audio_service raises it when the tenant has no default speech-to-text model. The endpoint uses the workspace default model, not the app's configured one, so correct that claim too. Separate the events in the 10 space-joined SSE examples with blank lines, matching the wire format the response descriptions already document. Also render triggered_from's plugin source as Integration Trigger. * docs: standardize the web app term in the api reference Same rule as the rest of the docs: web app / Web 应用 / Web アプリ in prose, capitalized where a sentence starts. The operation title Get App WebApp Settings is left alone, because Mintlify derives the published slug /api-reference/applications/get-app-webapp-settings from it and 18 files link there, as are the getChatWebAppSettings operationId and the WebAppSettingsResponse schema. * fix: title-case the web app heading in the end-user identity guide The heading is Title Case, so the term takes Web App there rather than the body-text lowercase. The anchor is unchanged, since both forms slug to api-users-and-web-app-users-stay-separate. (cherry picked from commit 791f002)
…#907) * fix: correct the audio-to-text errors and SSE example separators Drop app_unavailable, provider_quota_exceeded and model_currently_not_support from the /audio-to-text 400 list: no raise site reaches them on the path the endpoint takes. provider_not_support_speech_to_text stays, since audio_service raises it when the tenant has no default speech-to-text model. The endpoint uses the workspace default model, not the app's configured one, so correct that claim too. Separate the events in the 10 space-joined SSE examples with blank lines, matching the wire format the response descriptions already document. Also render triggered_from's plugin source as Integration Trigger. * docs: standardize the web app term in the api reference Same rule as the rest of the docs: web app / Web 应用 / Web アプリ in prose, capitalized where a sentence starts. The operation title Get App WebApp Settings is left alone, because Mintlify derives the published slug /api-reference/applications/get-app-webapp-settings from it and 18 files link there, as are the getChatWebAppSettings operationId and the WebAppSettingsResponse schema. * fix: title-case the web app heading in the end-user identity guide The heading is Title Case, so the term takes Web App there rather than the body-text lowercase. The anchor is unchanged, since both forms slug to api-users-and-web-app-users-stay-separate. (cherry picked from commit 791f002) # Conflicts: # en/api-reference/openapi_service.json # ja/api-reference/openapi_service.json # zh/api-reference/openapi_service.json
💚 All backports created successfully
Questions ?Please refer to the Backport tool documentation |
…#908) * fix: correct the audio-to-text errors and SSE example separators Drop app_unavailable, provider_quota_exceeded and model_currently_not_support from the /audio-to-text 400 list: no raise site reaches them on the path the endpoint takes. provider_not_support_speech_to_text stays, since audio_service raises it when the tenant has no default speech-to-text model. The endpoint uses the workspace default model, not the app's configured one, so correct that claim too. Separate the events in the 10 space-joined SSE examples with blank lines, matching the wire format the response descriptions already document. Also render triggered_from's plugin source as Integration Trigger. * docs: standardize the web app term in the api reference Same rule as the rest of the docs: web app / Web 应用 / Web アプリ in prose, capitalized where a sentence starts. The operation title Get App WebApp Settings is left alone, because Mintlify derives the published slug /api-reference/applications/get-app-webapp-settings from it and 18 files link there, as are the getChatWebAppSettings operationId and the WebAppSettingsResponse schema. * fix: title-case the web app heading in the end-user identity guide The heading is Title Case, so the term takes Web App there rather than the body-text lowercase. The anchor is unchanged, since both forms slug to api-users-and-web-app-users-stay-separate. (cherry picked from commit 791f002) # Conflicts: # en/api-reference/openapi_service.json # ja/api-reference/openapi_service.json # zh/api-reference/openapi_service.json
Audio-to-text error list. Dropped
app_unavailable,provider_quota_exceededandmodel_currently_not_supportfrom the 400 responses: no raise site reaches them on the path the endpoint takes.AppModelConfigBrokenErroris raised only inmessage_based_app_generator, andQuotaExceededError/ModelCurrentlyNotSupportErroronly in the easy-UI model-config converter andllm/quota.provider_not_support_speech_to_textstays, becauseaudio_service.py:149raises it when the tenant has no default speech-to-text model. The endpoint description also claimed the app's configured model;_invoke_speech_to_textcallsget_default_model_instance, so it is the workspace default.SSE examples. The 10 space-joined multi-event examples now separate events with blank lines, matching the wire format the response descriptions already document. Rendering was checked on the published
/completion-messagespage, where the one pre-existing\n\nexample displays as real line breaks.web app term standardized in the guides and the spec descriptions. The operation title
Get App WebApp Settingsis deliberately unchanged, because Mintlify derives the published slug/api-reference/applications/get-app-webapp-settingsfrom it and 18 files link there; thegetChatWebAppSettingsoperationId andWebAppSettingsResponseschema are likewise untouched.Separate from the main cleanup PR because the consolidated spec and these guides do not exist on release/1.15.0.
Backport: add
backport-to-release/1.16.0-rc1,backport-to-release/1.16.0andbackport-to-release/1.16.1.Closes DC-101. Advances DC-131 — the stale format list and 15 MB cap in the in-product API template, and the same unreachable codes in dify's own controller docstring, still need upstream issues.