diff --git a/web/context/i18n.ts b/web/context/i18n.ts index a10d9af513..0a4a3aaefd 100644 --- a/web/context/i18n.ts +++ b/web/context/i18n.ts @@ -2,6 +2,7 @@ import type { Locale } from '@/i18n-config/language' import type { DocPathWithoutLang } from '@/types/doc-paths' import { useTranslation } from '#i18n' import { getDocLanguage, getLanguage, getPricingPageLanguage } from '@/i18n-config/language' +import { apiReferencePathTranslations } from '@/types/doc-paths' export const useLocale = () => { const { i18n } = useTranslation() @@ -30,6 +31,14 @@ export const useDocLink = (baseUrl?: string): ((path?: DocPathWithoutLang, pathM return (path?: DocPathWithoutLang, pathMap?: DocPathMap): string => { const pathUrl = path || '' let targetPath = (pathMap) ? pathMap[locale] || pathUrl : pathUrl + + // Translate API reference paths for non-English locales + if (targetPath.startsWith('api-reference/') && docLanguage !== 'en') { + const translatedPath = apiReferencePathTranslations[targetPath]?.[docLanguage as 'zh' | 'ja'] + if (translatedPath) + targetPath = translatedPath + } + targetPath = (targetPath.startsWith('/')) ? targetPath.slice(1) : targetPath return `${baseDocUrl}/${docLanguage}/${targetPath}` } diff --git a/web/eslint-rules/doc-redirects.js b/web/eslint-rules/doc-redirects.js index d33e2d3fde..ece2e63289 100644 --- a/web/eslint-rules/doc-redirects.js +++ b/web/eslint-rules/doc-redirects.js @@ -2,7 +2,7 @@ // DON NOT EDIT IT MANUALLY // // Generated from: https://raw.githubusercontent.com/langgenius/dify-docs/refs/heads/main/docs.json -// Generated at: 2026-01-12T07:59:44.777Z +// Generated at: 2026-01-12T08:33:31.591Z /** @type {Map} */ export const docRedirects = new Map([ diff --git a/web/hooks/use-api-access-url.ts b/web/hooks/use-api-access-url.ts index bf653185ce..5570443419 100644 --- a/web/hooks/use-api-access-url.ts +++ b/web/hooks/use-api-access-url.ts @@ -3,8 +3,5 @@ import { useDocLink } from '@/context/i18n' export const useDatasetApiAccessUrl = () => { const docLink = useDocLink() - return docLink('/api-reference/datasets', { - 'zh-Hans': '/api-reference/%E6%95%B0%E6%8D%AE%E9%9B%86', - 'ja-JP': '/api-reference/%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88', - }) + return docLink('api-reference/datasets/get-knowledge-base-list') } diff --git a/web/scripts/gen-doc-paths.ts b/web/scripts/gen-doc-paths.ts index 5babc31335..8cf28a38ec 100644 --- a/web/scripts/gen-doc-paths.ts +++ b/web/scripts/gen-doc-paths.ts @@ -23,6 +23,28 @@ type NavObject = { dropdowns?: NavItem[] languages?: NavItem[] versions?: NavItem[] + openapi?: string + [key: string]: unknown +} + +type OpenAPIOperation = { + summary?: string + operationId?: string + tags?: string[] + [key: string]: unknown +} + +type OpenAPIPathItem = { + get?: OpenAPIOperation + post?: OpenAPIOperation + put?: OpenAPIOperation + patch?: OpenAPIOperation + delete?: OpenAPIOperation + [key: string]: unknown +} + +type OpenAPISpec = { + paths?: Record [key: string]: unknown } @@ -37,6 +59,111 @@ type DocsJson = { [key: string]: unknown } +const OPENAPI_BASE_URL = 'https://raw.githubusercontent.com/langgenius/dify-docs/refs/heads/main/' + +/** + * Convert summary to URL slug + * e.g., "Get Knowledge Base List" -> "get-knowledge-base-list" + * e.g., "获取知识库列表" -> "获取知识库列表" + */ +function summaryToSlug(summary: string): string { + return summary + .toLowerCase() + .replace(/\s+/g, '-') + .replace(/-+/g, '-') + .replace(/^-|-$/g, '') +} + +/** + * Get the first path segment from an API path + * e.g., "/datasets/{dataset_id}/documents" -> "datasets" + */ +function getFirstPathSegment(apiPath: string): string { + const segments = apiPath.split('/').filter(Boolean) + return segments[0] || '' +} + +/** + * Recursively extract OpenAPI file paths from navigation structure + */ +function extractOpenAPIPaths(item: NavItem | undefined, paths: Set = new Set()): Set { + if (!item) + return paths + + if (Array.isArray(item)) { + for (const el of item) + extractOpenAPIPaths(el, paths) + + return paths + } + + if (typeof item === 'object') { + if (item.openapi && typeof item.openapi === 'string') + paths.add(item.openapi) + + if (item.pages) + extractOpenAPIPaths(item.pages, paths) + + if (item.groups) + extractOpenAPIPaths(item.groups, paths) + + if (item.dropdowns) + extractOpenAPIPaths(item.dropdowns, paths) + + if (item.languages) + extractOpenAPIPaths(item.languages, paths) + + if (item.versions) + extractOpenAPIPaths(item.versions, paths) + } + + return paths +} + +type EndpointPathMap = Map // key: `${apiPath}_${method}`, value: generated doc path + +/** + * Fetch and parse OpenAPI spec, extract API reference paths with endpoint keys + */ +async function fetchOpenAPIAndExtractPaths(openapiPath: string): Promise { + const url = `${OPENAPI_BASE_URL}${openapiPath}` + const response = await fetch(url) + if (!response.ok) { + console.warn(`Failed to fetch ${url}: ${response.status}`) + return new Map() + } + + const spec = await response.json() as OpenAPISpec + const pathMap: EndpointPathMap = new Map() + + if (!spec.paths) + return pathMap + + const httpMethods = ['get', 'post', 'put', 'patch', 'delete'] as const + + for (const [apiPath, pathItem] of Object.entries(spec.paths)) { + for (const method of httpMethods) { + const operation = pathItem[method] + if (operation?.summary) { + // Try to get tag from operation, fallback to path segment + const tag = operation.tags?.[0] + const segment = tag ? summaryToSlug(tag) : getFirstPathSegment(apiPath) + if (!segment) + continue + + const slug = summaryToSlug(operation.summary) + // Skip empty slugs + if (slug) { + const endpointKey = `${apiPath}_${method}` + pathMap.set(endpointKey, `api-reference/${segment}/${slug}`) + } + } + } + } + + return pathMap +} + /** * Recursively extract all page paths from navigation structure */ @@ -123,7 +250,11 @@ function sectionToTypeName(section: string): string { /** * Generate TypeScript type definitions */ -function generateTypeDefinitions(groups: Record>): string { +function generateTypeDefinitions( + groups: Record>, + apiReferencePaths: string[], + apiPathTranslations: Record, +): string { const lines: string[] = [ '// GENERATE BY script', '// DON NOT EDIT IT MANUALLY', @@ -154,16 +285,17 @@ function generateTypeDefinitions(groups: Record>): string { lines.push('') } - // Generate API reference type (for .json files) - lines.push('// API Reference paths') - lines.push('export type ApiReferencePath =') - lines.push(' | \'api-reference/openapi_chat.json\'') - lines.push(' | \'api-reference/openapi_chatflow.json\'') - lines.push(' | \'api-reference/openapi_workflow.json\'') - lines.push(' | \'api-reference/openapi_knowledge.json\'') - lines.push(' | \'api-reference/openapi_completion.json\'') - lines.push('') - typeNames.push('ApiReferencePath') + // Generate API reference type (English paths only) + if (apiReferencePaths.length > 0) { + const sortedPaths = [...apiReferencePaths].sort() + lines.push('// API Reference paths (English, use apiReferencePathTranslations for other languages)') + lines.push('export type ApiReferencePath =') + for (const p of sortedPaths) { + lines.push(` | '${p}'`) + } + lines.push('') + typeNames.push('ApiReferencePath') + } // Generate base combined type lines.push('// Base path without language prefix') @@ -187,6 +319,23 @@ function generateTypeDefinitions(groups: Record>): string { lines.push('export type DifyDocPath = `${DocLanguage}/${DocPathWithoutLang}`') lines.push('') + // Generate API reference path translations map + lines.push('// API Reference path translations (English -> other languages)') + lines.push('export const apiReferencePathTranslations: Record = {') + const sortedEnPaths = Object.keys(apiPathTranslations).sort() + for (const enPath of sortedEnPaths) { + const translations = apiPathTranslations[enPath] + const parts: string[] = [] + if (translations.zh) + parts.push(`zh: '${translations.zh}'`) + if (translations.ja) + parts.push(`ja: '${translations.ja}'`) + if (parts.length > 0) + lines.push(` '${enPath}': { ${parts.join(', ')} },`) + } + lines.push('}') + lines.push('') + return lines.join('\n') } @@ -252,13 +401,74 @@ async function main(): Promise { // eslint-disable-next-line no-console console.log(`Found ${allPaths.size} total paths`) + // Extract OpenAPI file paths from navigation for all languages + const openApiPaths = extractOpenAPIPaths(docsJson.navigation) + // eslint-disable-next-line no-console + console.log(`Found ${openApiPaths.size} OpenAPI specs to process`) + + // Fetch OpenAPI specs and extract API reference paths with endpoint keys + // Group by OpenAPI file name (without language prefix) to match endpoints across languages + const endpointMapsByLang: Record> = { + en: new Map(), + zh: new Map(), + ja: new Map(), + } + + for (const openapiPath of openApiPaths) { + // Determine language from path + const langMatch = openapiPath.match(/^(en|zh|ja)\//) + if (!langMatch) + continue + + const lang = langMatch[1] + // Get file name without language prefix (e.g., "api-reference/openapi_knowledge.json") + const fileKey = openapiPath.replace(/^(en|zh|ja)\//, '') + + // eslint-disable-next-line no-console + console.log(`Fetching OpenAPI spec: ${openapiPath}`) + const pathMap = await fetchOpenAPIAndExtractPaths(openapiPath) + endpointMapsByLang[lang].set(fileKey, pathMap) + } + + // Build English paths and mapping to other languages + const enApiPaths: string[] = [] + const apiPathTranslations: Record = {} + + // Iterate through English endpoint maps + for (const [fileKey, enPathMap] of endpointMapsByLang.en) { + const zhPathMap = endpointMapsByLang.zh.get(fileKey) + const jaPathMap = endpointMapsByLang.ja.get(fileKey) + + for (const [endpointKey, enPath] of enPathMap) { + enApiPaths.push(enPath) + + const zhPath = zhPathMap?.get(endpointKey) + const jaPath = jaPathMap?.get(endpointKey) + + if (zhPath || jaPath) { + apiPathTranslations[enPath] = {} + if (zhPath) + apiPathTranslations[enPath].zh = zhPath + if (jaPath) + apiPathTranslations[enPath].ja = jaPath + } + } + } + + // Deduplicate English API paths + const uniqueEnApiPaths = [...new Set(enApiPaths)] + // eslint-disable-next-line no-console + console.log(`Extracted ${uniqueEnApiPaths.length} unique English API reference paths`) + // eslint-disable-next-line no-console + console.log(`Generated ${Object.keys(apiPathTranslations).length} API path translations`) + // Group by section const groups = groupPathsBySection(allPaths) // eslint-disable-next-line no-console console.log(`Grouped into ${Object.keys(groups).length} sections:`, Object.keys(groups)) // Generate TypeScript - const tsContent = generateTypeDefinitions(groups) + const tsContent = generateTypeDefinitions(groups, uniqueEnApiPaths, apiPathTranslations) // Write to file await writeFile(OUTPUT_PATH, tsContent, 'utf-8') diff --git a/web/types/doc-paths.ts b/web/types/doc-paths.ts index 02d47f27a1..bf966cabbf 100644 --- a/web/types/doc-paths.ts +++ b/web/types/doc-paths.ts @@ -2,7 +2,7 @@ // DON NOT EDIT IT MANUALLY // // Generated from: https://raw.githubusercontent.com/langgenius/dify-docs/refs/heads/main/docs.json -// Generated at: 2026-01-12T07:59:44.775Z +// Generated at: 2026-01-12T08:33:31.589Z // Language prefixes export type DocLanguage = 'en' | 'zh' | 'ja' @@ -157,13 +157,74 @@ export type DevelopPluginPath = | 'develop-plugin/publishing/standards/privacy-protection-guidelines' | 'develop-plugin/publishing/standards/third-party-signature-verification' -// API Reference paths +// API Reference paths (English, use apiReferencePathTranslations for other languages) export type ApiReferencePath = - | 'api-reference/openapi_chat.json' - | 'api-reference/openapi_chatflow.json' - | 'api-reference/openapi_workflow.json' - | 'api-reference/openapi_knowledge.json' - | 'api-reference/openapi_completion.json' + | 'api-reference/annotations/create-annotation' + | 'api-reference/annotations/delete-annotation' + | 'api-reference/annotations/get-annotation-list' + | 'api-reference/annotations/initial-annotation-reply-settings' + | 'api-reference/annotations/query-initial-annotation-reply-settings-task-status' + | 'api-reference/annotations/update-annotation' + | 'api-reference/application/get-application-basic-information' + | 'api-reference/application/get-application-meta-information' + | 'api-reference/application/get-application-parameters-information' + | 'api-reference/application/get-application-webapp-settings' + | 'api-reference/chat/next-suggested-questions' + | 'api-reference/chat/send-chat-message' + | 'api-reference/chat/stop-chat-message-generation' + | 'api-reference/chatflow/next-suggested-questions' + | 'api-reference/chatflow/send-chat-message' + | 'api-reference/chatflow/stop-advanced-chat-message-generation' + | 'api-reference/chunks/add-chunks-to-a-document' + | 'api-reference/chunks/create-child-chunk' + | 'api-reference/chunks/delete-a-chunk-in-a-document' + | 'api-reference/chunks/delete-child-chunk' + | 'api-reference/chunks/get-a-chunk-details-in-a-document' + | 'api-reference/chunks/get-child-chunks' + | 'api-reference/chunks/get-chunks-from-a-document' + | 'api-reference/chunks/update-a-chunk-in-a-document' + | 'api-reference/chunks/update-child-chunk' + | 'api-reference/completion/create-completion-message' + | 'api-reference/completion/stop-generate' + | 'api-reference/conversations/conversation-rename' + | 'api-reference/conversations/delete-conversation' + | 'api-reference/conversations/get-conversation-history-messages' + | 'api-reference/conversations/get-conversation-variables' + | 'api-reference/conversations/get-conversations' + | 'api-reference/datasets/create-an-empty-knowledge-base' + | 'api-reference/datasets/delete-a-knowledge-base' + | 'api-reference/datasets/get-knowledge-base-details' + | 'api-reference/datasets/get-knowledge-base-list' + | 'api-reference/datasets/retrieve-chunks-from-a-knowledge-base-/-test-retrieval' + | 'api-reference/datasets/update-knowledge-base' + | 'api-reference/documents/create-a-document-from-a-file' + | 'api-reference/documents/create-a-document-from-text' + | 'api-reference/documents/delete-a-document' + | 'api-reference/documents/get-document-detail' + | 'api-reference/documents/get-document-embedding-status-(progress)' + | 'api-reference/documents/get-the-document-list-of-a-knowledge-base' + | 'api-reference/documents/update-a-document-with-a-file' + | 'api-reference/documents/update-a-document-with-text' + | 'api-reference/documents/update-document-status' + | 'api-reference/feedback/get-feedbacks-of-application' + | 'api-reference/feedback/message-feedback' + | 'api-reference/files/file-preview' + | 'api-reference/files/file-upload' + | 'api-reference/files/file-upload-for-workflow' + | 'api-reference/metadata-&-tags/bind-dataset-to-knowledge-base-type-tag' + | 'api-reference/metadata-&-tags/create-new-knowledge-base-type-tag' + | 'api-reference/metadata-&-tags/delete-knowledge-base-type-tag' + | 'api-reference/metadata-&-tags/get-knowledge-base-type-tags' + | 'api-reference/metadata-&-tags/modify-knowledge-base-type-tag-name' + | 'api-reference/metadata-&-tags/query-tags-bound-to-a-dataset' + | 'api-reference/metadata-&-tags/unbind-dataset-and-knowledge-base-type-tag' + | 'api-reference/models/get-available-embedding-models' + | 'api-reference/tts/speech-to-text' + | 'api-reference/tts/text-to-audio' + | 'api-reference/workflow-execution/execute-workflow' + | 'api-reference/workflow-execution/get-workflow-logs' + | 'api-reference/workflow-execution/get-workflow-run-detail' + | 'api-reference/workflow-execution/stop-workflow-task-generation' // Base path without language prefix export type DocPathWithoutLangBase = @@ -179,3 +240,73 @@ export type DocPathWithoutLang = // Full documentation path with language prefix export type DifyDocPath = `${DocLanguage}/${DocPathWithoutLang}` + +// API Reference path translations (English -> other languages) +export const apiReferencePathTranslations: Record = { + 'api-reference/annotations/create-annotation': { zh: 'api-reference/标注管理/创建标注' }, + 'api-reference/annotations/delete-annotation': { zh: 'api-reference/标注管理/删除标注' }, + 'api-reference/annotations/get-annotation-list': { zh: 'api-reference/标注管理/获取标注列表' }, + 'api-reference/annotations/initial-annotation-reply-settings': { zh: 'api-reference/标注管理/标注回复初始设置' }, + 'api-reference/annotations/query-initial-annotation-reply-settings-task-status': { zh: 'api-reference/标注管理/查询标注回复初始设置任务状态' }, + 'api-reference/annotations/update-annotation': { zh: 'api-reference/标注管理/更新标注' }, + 'api-reference/application/get-application-basic-information': { zh: 'api-reference/应用设置/获取应用基本信息', ja: 'api-reference/アプリケーション情報/アプリケーションの基本情報を取得' }, + 'api-reference/application/get-application-meta-information': { zh: 'api-reference/应用配置/获取应用meta信息', ja: 'api-reference/アプリケーション設定/アプリケーションのメタ情報を取得' }, + 'api-reference/application/get-application-parameters-information': { zh: 'api-reference/应用设置/获取应用参数', ja: 'api-reference/アプリケーション情報/アプリケーションのパラメータ情報を取得' }, + 'api-reference/application/get-application-webapp-settings': { zh: 'api-reference/应用设置/获取应用-webapp-设置', ja: 'api-reference/アプリケーション情報/アプリのwebapp設定を取得' }, + 'api-reference/chat/next-suggested-questions': { zh: 'api-reference/对话消息/获取下一轮建议问题列表', ja: 'api-reference/チャットメッセージ/次の推奨質問' }, + 'api-reference/chat/send-chat-message': { zh: 'api-reference/对话消息/发送对话消息', ja: 'api-reference/チャットメッセージ/チャットメッセージを送信' }, + 'api-reference/chat/stop-chat-message-generation': { zh: 'api-reference/对话消息/停止响应', ja: 'api-reference/チャットメッセージ/生成停止' }, + 'api-reference/chatflow/next-suggested-questions': { zh: 'api-reference/对话消息/获取下一轮建议问题列表', ja: 'api-reference/チャットメッセージ/次の推奨質問' }, + 'api-reference/chatflow/send-chat-message': { zh: 'api-reference/对话消息/发送对话消息', ja: 'api-reference/チャットメッセージ/チャットメッセージを送信' }, + 'api-reference/chatflow/stop-advanced-chat-message-generation': { zh: 'api-reference/对话消息/停止响应', ja: 'api-reference/チャットメッセージ/生成を停止' }, + 'api-reference/chunks/add-chunks-to-a-document': { zh: 'api-reference/文档块/向文档添加块', ja: 'api-reference/チャンク/ドキュメントにチャンクを追加' }, + 'api-reference/chunks/create-child-chunk': { zh: 'api-reference/文档块/创建子块', ja: 'api-reference/チャンク/子チャンクを作成' }, + 'api-reference/chunks/delete-a-chunk-in-a-document': { zh: 'api-reference/文档块/删除文档中的块', ja: 'api-reference/チャンク/ドキュメント内のチャンクを削除' }, + 'api-reference/chunks/delete-child-chunk': { zh: 'api-reference/文档块/删除子块', ja: 'api-reference/チャンク/子チャンクを削除' }, + 'api-reference/chunks/get-a-chunk-details-in-a-document': { zh: 'api-reference/文档块/获取文档中的块详情', ja: 'api-reference/チャンク/ドキュメント内のチャンク詳細を取得' }, + 'api-reference/chunks/get-child-chunks': { zh: 'api-reference/文档块/获取子块', ja: 'api-reference/チャンク/子チャンクを取得' }, + 'api-reference/chunks/get-chunks-from-a-document': { zh: 'api-reference/文档块/从文档获取块', ja: 'api-reference/チャンク/ドキュメントからチャンクを取得' }, + 'api-reference/chunks/update-a-chunk-in-a-document': { zh: 'api-reference/文档块/更新文档中的块', ja: 'api-reference/チャンク/ドキュメント内のチャンクを更新' }, + 'api-reference/chunks/update-child-chunk': { zh: 'api-reference/文档块/更新子块', ja: 'api-reference/チャンク/子チャンクを更新' }, + 'api-reference/completion/create-completion-message': { zh: 'api-reference/文本生成/发送消息', ja: 'api-reference/完了メッセージ/完了メッセージの作成' }, + 'api-reference/completion/stop-generate': { zh: 'api-reference/文本生成/停止响应', ja: 'api-reference/完了メッセージ/生成の停止' }, + 'api-reference/conversations/conversation-rename': { zh: 'api-reference/会话管理/会话重命名', ja: 'api-reference/会話管理/会話の名前を変更' }, + 'api-reference/conversations/delete-conversation': { zh: 'api-reference/会话管理/删除会话', ja: 'api-reference/会話管理/会話を削除' }, + 'api-reference/conversations/get-conversation-history-messages': { zh: 'api-reference/会话管理/获取会话历史消息', ja: 'api-reference/会話管理/会話履歴メッセージを取得' }, + 'api-reference/conversations/get-conversation-variables': { zh: 'api-reference/会话管理/获取对话变量', ja: 'api-reference/会話管理/会話変数の取得' }, + 'api-reference/conversations/get-conversations': { zh: 'api-reference/会话管理/获取会话列表', ja: 'api-reference/会話管理/会話を取得' }, + 'api-reference/datasets/create-an-empty-knowledge-base': { zh: 'api-reference/数据集/创建空知识库', ja: 'api-reference/データセット/空のナレッジベースを作成' }, + 'api-reference/datasets/delete-a-knowledge-base': { zh: 'api-reference/数据集/删除知识库', ja: 'api-reference/データセット/ナレッジベースを削除' }, + 'api-reference/datasets/get-knowledge-base-details': { zh: 'api-reference/数据集/获取知识库详情', ja: 'api-reference/データセット/ナレッジベース詳細を取得' }, + 'api-reference/datasets/get-knowledge-base-list': { zh: 'api-reference/数据集/获取知识库列表', ja: 'api-reference/データセット/ナレッジベースリストを取得' }, + 'api-reference/datasets/retrieve-chunks-from-a-knowledge-base-/-test-retrieval': { zh: 'api-reference/数据集/从知识库检索块-/-测试检索', ja: 'api-reference/データセット/ナレッジベースからチャンクを取得-/-テスト検索' }, + 'api-reference/datasets/update-knowledge-base': { zh: 'api-reference/数据集/更新知识库', ja: 'api-reference/データセット/ナレッジベースを更新' }, + 'api-reference/documents/create-a-document-from-a-file': { zh: 'api-reference/文档/从文件创建文档', ja: 'api-reference/ドキュメント/ファイルからドキュメントを作成' }, + 'api-reference/documents/create-a-document-from-text': { zh: 'api-reference/文档/从文本创建文档', ja: 'api-reference/ドキュメント/テキストからドキュメントを作成' }, + 'api-reference/documents/delete-a-document': { zh: 'api-reference/文档/删除文档', ja: 'api-reference/ドキュメント/ドキュメントを削除' }, + 'api-reference/documents/get-document-detail': { zh: 'api-reference/文档/获取文档详情', ja: 'api-reference/ドキュメント/ドキュメント詳細を取得' }, + 'api-reference/documents/get-document-embedding-status-(progress)': { zh: 'api-reference/文档/获取文档嵌入状态(进度)', ja: 'api-reference/ドキュメント/ドキュメント埋め込みステータス(進捗)を取得' }, + 'api-reference/documents/get-the-document-list-of-a-knowledge-base': { zh: 'api-reference/文档/获取知识库的文档列表', ja: 'api-reference/ドキュメント/ナレッジベースのドキュメントリストを取得' }, + 'api-reference/documents/update-a-document-with-a-file': { zh: 'api-reference/文档/用文件更新文档', ja: 'api-reference/ドキュメント/ファイルでドキュメントを更新' }, + 'api-reference/documents/update-a-document-with-text': { zh: 'api-reference/文档/用文本更新文档', ja: 'api-reference/ドキュメント/テキストでドキュメントを更新' }, + 'api-reference/documents/update-document-status': { zh: 'api-reference/文档/更新文档状态', ja: 'api-reference/ドキュメント/ドキュメントステータスを更新' }, + 'api-reference/feedback/get-feedbacks-of-application': { zh: 'api-reference/反馈/获取应用反馈列表', ja: 'api-reference/メッセージフィードバック/アプリのメッセージの「いいね」とフィードバックを取得' }, + 'api-reference/feedback/message-feedback': { zh: 'api-reference/反馈/消息反馈(点赞)', ja: 'api-reference/メッセージフィードバック/メッセージフィードバック' }, + 'api-reference/files/file-preview': { zh: 'api-reference/文件操作/文件预览', ja: 'api-reference/ファイル操作/ファイルプレビュー' }, + 'api-reference/files/file-upload': { zh: 'api-reference/文件管理/上传文件', ja: 'api-reference/ファイル操作/ファイルアップロード' }, + 'api-reference/files/file-upload-for-workflow': { zh: 'api-reference/文件操作-(workflow)/上传文件-(workflow)', ja: 'api-reference/ファイル操作-(ワークフロー)/ファイルアップロード-(ワークフロー用)' }, + 'api-reference/metadata-&-tags/bind-dataset-to-knowledge-base-type-tag': { zh: 'api-reference/元数据和标签/将数据集绑定到知识库类型标签', ja: 'api-reference/メタデータ・タグ/データセットをナレッジベースタイプタグにバインド' }, + 'api-reference/metadata-&-tags/create-new-knowledge-base-type-tag': { zh: 'api-reference/元数据和标签/创建新的知识库类型标签', ja: 'api-reference/メタデータ・タグ/新しいナレッジベースタイプタグを作成' }, + 'api-reference/metadata-&-tags/delete-knowledge-base-type-tag': { zh: 'api-reference/元数据和标签/删除知识库类型标签', ja: 'api-reference/メタデータ・タグ/ナレッジベースタイプタグを削除' }, + 'api-reference/metadata-&-tags/get-knowledge-base-type-tags': { zh: 'api-reference/元数据和标签/获取知识库类型标签', ja: 'api-reference/メタデータ・タグ/ナレッジベースタイプタグを取得' }, + 'api-reference/metadata-&-tags/modify-knowledge-base-type-tag-name': { zh: 'api-reference/元数据和标签/修改知识库类型标签名称', ja: 'api-reference/メタデータ・タグ/ナレッジベースタイプタグ名を変更' }, + 'api-reference/metadata-&-tags/query-tags-bound-to-a-dataset': { zh: 'api-reference/元数据和标签/查询绑定到数据集的标签', ja: 'api-reference/メタデータ・タグ/データセットにバインドされたタグをクエリ' }, + 'api-reference/metadata-&-tags/unbind-dataset-and-knowledge-base-type-tag': { zh: 'api-reference/元数据和标签/解绑数据集和知识库类型标签', ja: 'api-reference/メタデータ・タグ/データセットとナレッジベースタイプタグのバインドを解除' }, + 'api-reference/models/get-available-embedding-models': { zh: 'api-reference/模型/获取可用的嵌入模型', ja: 'api-reference/モデル/利用可能な埋め込みモデルを取得' }, + 'api-reference/tts/speech-to-text': { zh: 'api-reference/语音与文字转换/语音转文字', ja: 'api-reference/音声・テキスト変換/音声からテキストへ' }, + 'api-reference/tts/text-to-audio': { zh: 'api-reference/语音服务/文字转语音', ja: 'api-reference/音声変換/テキストから音声' }, + 'api-reference/workflow-execution/execute-workflow': { zh: 'api-reference/工作流执行/执行-workflow', ja: 'api-reference/ワークフロー実行/ワークフローを実行' }, + 'api-reference/workflow-execution/get-workflow-logs': { zh: 'api-reference/工作流执行/获取-workflow-日志', ja: 'api-reference/ワークフロー実行/ワークフローログを取得' }, + 'api-reference/workflow-execution/get-workflow-run-detail': { zh: 'api-reference/工作流执行/获取workflow执行情况', ja: 'api-reference/ワークフロー実行/ワークフロー実行詳細を取得' }, + 'api-reference/workflow-execution/stop-workflow-task-generation': { zh: 'api-reference/工作流执行/停止响应-(workflow-task)', ja: 'api-reference/ワークフロー実行/生成を停止-(ワークフロータスク)' }, +}