名称: openkm-rest
描述: 通过 REST API 访问 OpenKM 文档管理系统(文件夹、文档、元数据、版本控制、搜索、工作流)
元数据:
openclaw:
emoji: "📁"
requires:
bins: ["python"]
env:
- OPENKM_BASE_URL
- OPENKM_USERNAME
- OPENKM_PASSWORD
primaryEnv: OPENKM_BASE_URL
user-invocable: true
disable-model-invocation: false
此技能提供了一个本地 CLI 工具,仅通过 REST API 访问 OpenKM(不使用 SOAP 或 CMIS)。
代理通过调用 shell 命令 openkm_cli.py 来执行操作。
OPENKM_BASE_URL=https://openkm.example.com # 不要包含 /OpenKM
OPENKM_USERNAME=okm_admin
OPENKM_PASSWORD=secret
python3 openkm_cli.py list --folder-path /okm:root
如果父文件夹不存在,会自动创建:
python3 openkm_cli.py ensure-structure --parts Folder1 Subfolder
python3 openkm_cli.py upload --okm-path /okm:root/Folder/file.pdf --local-path /path/file.pdf
python3 openkm_cli.py download --doc-id <uuid> --local-path /path/file.pdf
将文档移动到另一个文件夹(使用文件夹 UUID 作为目标):
python3 openkm_cli.py move --doc-id <doc-uuid> --target-path <folder-uuid>
python3 openkm_cli.py rename --doc-id <uuid> --new-name new_filename.pdf
python3 openkm_cli.py delete --doc-id <uuid>
显示标题、描述、关键词、分类及其他元数据:
python3 openkm_cli.py properties --doc-id <uuid>
python3 openkm_cli.py set-properties --doc-id <uuid> --title "我的标题" --description "我的描述"
python3 openkm_cli.py add-keyword --doc-id <uuid> --keyword "发票"
python3 openkm_cli.py remove-keyword --doc-id <uuid> --keyword "发票"
分类 ID 可以是 UUID 或路径(例如 /okm:categories/Finance):
python3 openkm_cli.py add-category --doc-id <uuid> --category-id <category-uuid-or-path>
python3 openkm_cli.py remove-category --doc-id <uuid> --category-id <category-uuid-or-path>
python3 openkm_cli.py versions --doc-id <uuid>
python3 openkm_cli.py download-version --doc-id <uuid> --version 1.0 --local-path /path/file_v1.pdf
将文档恢复到指定历史版本:
python3 openkm_cli.py restore-version --doc-id <uuid> --version 1.0
python3 openkm_cli.py search-content --content "发票 托管"
python3 openkm_cli.py search-name --name "hetzner"
python3 openkm_cli.py search-keywords --keywords "发票,托管"
python3 openkm_cli.py search --content "服务器" --author "john.doe" --path "/okm:root"
注意: 工作流功能要求 OpenKM 中已配置相应工作流。
如果未启用工作流,相关命令将返回 404 错误。
python3 openkm_cli.py workflows
python3 openkm_cli.py workflows --name "approval"
python3 openkm_cli.py start-workflow --workflow-uuid <workflow-uuid> --doc-id <doc-uuid>
# 获取文档相关任务
python3 openkm_cli.py tasks --doc-id <uuid>
# 获取指定执行人相关任务
python3 openkm_cli.py tasks --actor-id john.doe
python3 openkm_cli.py complete-task --task-id <task-id> --transition "approve"
python3 openkm_cli.py comment-task --task-id <task-id> --message "审核完成"
python3 openkm_cli.py assign-task --task-id <task-id> --actor-id john.doe
Content-Type: application/xmlfldId、docId、dstId、nodeId、catId 等参数接受 UUID 或路径(例如 /okm:root/Folder)target-path 应为目标文件夹的 UUID1.0、1.1、2.0 等本技能使用 OpenKM 6.3 REST API 端点:
文件夹:
- GET /folder/getChildren - 列出文件夹内容
- POST /folder/createSimple - 创建文件夹
文档:
- POST /document/createSimple - 上传文档
- GET /document/getContent - 下载文档
- GET /document/getProperties - 获取文档元数据
- PUT /document/setProperties - 更新标题/描述
- PUT /document/move - 移动文档
- PUT /document/rename - 重命名文档
- DELETE /document/delete - 删除文档
版本控制:
- GET /document/getVersionHistory - 获取版本历史
- PUT /document/restoreVersion - 恢复到指定版本
- GET /document/getContentByVersion - 下载特定版本
属性/元数据:
- POST /property/addKeyword - 添加关键词
- DELETE /property/removeKeyword - 移除关键词
- POST /property/addCategory - 添加分类
- DELETE /property/removeCategory - 移除分类
搜索:
- GET /search/find - 带筛选条件的通用搜索
- GET /search/findByContent - 全文搜索
- GET /search/findByName - 按文件名搜索
- GET /search/findByKeywords - 按关键词搜索
工作流:
- GET /workflow/getAllProcessDefinitions - 列出所有工作流
- GET /workflow/getAllProcessDefinitionsByName - 按名称查找工作流
- POST /workflow/runProcessDefinition - 启动工作流
- GET /workflow/findTaskInstances - 按文档获取任务
- GET /workflow/findTaskInstancesByActor - 按执行人获取任务
- POST /workflow/setTaskInstanceValues - 完成任务
- POST /workflow/addTaskInstanceComment - 添加任务评论
- POST /workflow/setTaskInstanceActor - 分配任务