工作区

每个服务器都有一个工作区 — 用来存储文件和文件夹的虚拟文件系统。应用可以从工作区内容中发布。

获取工作区

GET /api/servers/:serverId/workspace
const workspace = await client.getWorkspace('server-id')
workspace = client.get_workspace("server-id")

更新工作区

PATCH /api/servers/:serverId/workspace
await client.updateWorkspace('server-id', { name: 'Updated' })
client.update_workspace("server-id", name="Updated")

获取文件树

GET /api/servers/:serverId/workspace/tree

返回完整的工作区树结构。

const tree = await client.getWorkspaceTree('server-id')
tree = client.get_workspace_tree("server-id")

获取工作区统计

GET /api/servers/:serverId/workspace/stats
const stats = await client.getWorkspaceStats('server-id')
stats = client.get_workspace_stats("server-id")

列出子节点

GET /api/servers/:serverId/workspace/children?parentId=folder-id
const children = await client.listWorkspaceChildren('server-id', 'parent-folder-id')
children = client.list_workspace_children("server-id", parent_id="parent-folder-id")

批量列出子节点

POST /api/servers/:serverId/workspace/children/batch
const result = await client.batchListChildren('server-id', ['folder-1', 'folder-2'])
result = client.batch_list_children("server-id", parent_ids=["folder-1", "folder-2"])

下载工作区

GET /api/servers/:serverId/workspace/download

将整个工作区下载为 ZIP 文件。

const blob = await client.downloadWorkspace('server-id')
data = client.download_workspace("server-id")

文件夹

创建文件夹

POST /api/servers/:serverId/workspace/folders
const folder = await client.createWorkspaceFolder('server-id', {
  name: 'docs',
  parentId: null,
})
folder = client.create_workspace_folder("server-id", name="docs")

更新文件夹

PATCH /api/servers/:serverId/workspace/folders/:folderId
await client.updateWorkspaceFolder('server-id', 'folder-id', { name: 'renamed' })
client.update_workspace_folder("server-id", "folder-id", name="renamed")

删除文件夹

DELETE /api/servers/:serverId/workspace/folders/:folderId
await client.deleteWorkspaceFolder('server-id', 'folder-id')
client.delete_workspace_folder("server-id", "folder-id")

搜索文件夹

GET /api/servers/:serverId/workspace/folders/search
const folders = await client.searchWorkspaceFolders('server-id', { query: 'docs' })
folders = client.search_workspace_folders("server-id", query="docs")

下载文件夹

GET /api/servers/:serverId/workspace/folders/:folderId/download

将特定文件夹下载为 ZIP 文件。

const blob = await client.downloadWorkspaceFolder('server-id', 'folder-id')
data = client.download_workspace_folder("server-id", "folder-id")

文件

创建文件

POST /api/servers/:serverId/workspace/files
const file = await client.createWorkspaceFile('server-id', {
  name: 'index.html',
  content: '<h1>Hello</h1>',
  parentId: 'folder-id',
})
file = client.create_workspace_file("server-id",
    name="index.html",
    content="<h1>Hello</h1>",
    parentId="folder-id",
)

获取文件

GET /api/servers/:serverId/workspace/files/:fileId
const file = await client.getWorkspaceFile('server-id', 'file-id')
file = client.get_workspace_file("server-id", "file-id")

更新文件

PATCH /api/servers/:serverId/workspace/files/:fileId
await client.updateWorkspaceFile('server-id', 'file-id', {
  content: '<h1>Updated</h1>',
})
client.update_workspace_file("server-id", "file-id", content="<h1>Updated</h1>")

删除文件

DELETE /api/servers/:serverId/workspace/files/:fileId
await client.deleteWorkspaceFile('server-id', 'file-id')
client.delete_workspace_file("server-id", "file-id")

搜索文件

GET /api/servers/:serverId/workspace/files/search
const files = await client.searchWorkspaceFiles('server-id', { query: 'index' })
files = client.search_workspace_files("server-id", query="index")

克隆文件

POST /api/servers/:serverId/workspace/files/:fileId/clone
const clone = await client.cloneWorkspaceFile('server-id', 'file-id')
clone = client.clone_workspace_file("server-id", "file-id")

批量操作

粘贴节点

POST /api/servers/:serverId/workspace/nodes/paste
await client.pasteWorkspaceNodes('server-id', {
  nodeIds: ['file-1', 'folder-1'],
  targetParentId: 'destination-folder',
  mode: 'copy',
})
client.paste_workspace_nodes("server-id",
    nodeIds=["file-1", "folder-1"],
    targetParentId="destination-folder",
    mode="copy",
)

执行命令

POST /api/servers/:serverId/workspace/commands
await client.runWorkspaceCommands('server-id', {
  commands: [
    { type: 'rename', nodeId: 'file-id', name: 'new-name.txt' },
  ],
})
client.run_workspace_commands("server-id", commands=[
    {"type": "rename", "nodeId": "file-id", "name": "new-name.txt"},
])

上传文件

POST /api/servers/:serverId/workspace/upload

多部分上传。字段:file(二进制)、parentId(可选字符串)。

const formData = new FormData()
formData.append('file', fileBlob, 'photo.png')
await client.uploadWorkspaceFile('server-id', formData)
client.upload_workspace_file("server-id", file=open("photo.png", "rb"), parent_id="folder-id")