api-reference link

This commit is contained in:
Stephen Zhou
2026-01-12 16:39:39 +08:00
parent 10f10f4785
commit d9a2ba2617
5 changed files with 371 additions and 24 deletions

View File

@ -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}`
}

View File

@ -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<string, string>} */
export const docRedirects = new Map([

View File

@ -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')
}

View File

@ -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<string, OpenAPIPathItem>
[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<string> = new Set()): Set<string> {
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<string, string> // 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<EndpointPathMap> {
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, Set<string>>): string {
function generateTypeDefinitions(
groups: Record<string, Set<string>>,
apiReferencePaths: string[],
apiPathTranslations: Record<string, { zh?: string, ja?: string }>,
): string {
const lines: string[] = [
'// GENERATE BY script',
'// DON NOT EDIT IT MANUALLY',
@ -154,16 +285,17 @@ function generateTypeDefinitions(groups: Record<string, Set<string>>): 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, Set<string>>): 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<string, { zh?: string; ja?: string }> = {')
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<void> {
// 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<string, Map<string, EndpointPathMap>> = {
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<string, { zh?: string, ja?: string }> = {}
// 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')

View File

@ -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<string, { zh?: string; ja?: string }> = {
'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/ワークフロー実行/生成を停止-(ワークフロータスク)' },
}