OpenProject by @altf1be
通过 API v3 管理 OpenProject 工作包、项目、群组、新闻、用户、关注者、关联关系、通知、工时记录、评论、附件、Wiki 页面和工作流转换。支持云实例和自托管实例。
设置
- 1. 登录您的 OpenProject 实例
- 前往 我的账户 → 访问令牌 → + 添加
- 创建 API 令牌并复制
- 设置环境变量(或在 {baseDir} 中创建 .env):
OP_HOST=https://projects.xflowdata.com
OPAPITOKEN=your-api-token
OPDEFAULTPROJECT=my-project
- 5. 安装依赖:cd {baseDir} && npm install
命令
工作包
bash
列出工作包(可带筛选条件)
node {baseDir}/scripts/openproject.mjs wp-list --project my-project --status open --assignee me
创建工作包
node {baseDir}/scripts/openproject.mjs wp-create --project my-project --type Task --subject 修复登录错误 --description 用户无法登录
读取工作包详情
node {baseDir}/scripts/openproject.mjs wp-read --id 42
更新工作包
node {baseDir}/scripts/openproject.mjs wp-update --id 42 --subject 新标题 --priority High
删除工作包(需要 --confirm)
node {baseDir}/scripts/openproject.mjs wp-delete --id 42 --confirm
项目
bash
列出所有项目
node {baseDir}/scripts/openproject.mjs project-list
读取项目详情
node {baseDir}/scripts/openproject.mjs project-read --id my-project
创建项目
node {baseDir}/scripts/openproject.mjs project-create --name 我的项目 --identifier my-project
评论(活动)
bash
列出工作包上的评论
node {baseDir}/scripts/openproject.mjs comment-list --wp-id 42
添加评论
node {baseDir}/scripts/openproject.mjs comment-add --wp-id 42 --body 准备审核
附件
bash
列出工作包上的附件
node {baseDir}/scripts/openproject.mjs attachment-list --wp-id 42
上传附件
node {baseDir}/scripts/openproject.mjs attachment-add --wp-id 42 --file ./screenshot.png
删除附件(需要 --confirm)
node {baseDir}/scripts/openproject.mjs attachment-delete --id 10 --confirm
工时记录
bash
列出工时记录
node {baseDir}/scripts/openproject.mjs time-list --project my-project
记录工时
node {baseDir}/scripts/openproject.mjs time-create --wp-id 42 --hours 2.5 --comment 代码审查 --activity-id 1
更新工时记录
node {baseDir}/scripts/openproject.mjs time-update --id 5 --hours 3 --comment 已更新
删除工时记录(需要 --confirm)
node {baseDir}/scripts/openproject.mjs time-delete --id 5 --confirm
状态与转换
bash
列出所有状态
node {baseDir}/scripts/openproject.mjs status-list
更新工作包状态
node {baseDir}/scripts/openproject.mjs wp-update --id 42 --status 进行中
用户
bash
列出所有用户(可带筛选条件)
node {baseDir}/scripts/openproject.mjs user-list
node {baseDir}/scripts/openproject.mjs user-list --status active --name 张三
读取用户详情
node {baseDir}/scripts/openproject.mjs user-read --id 5
显示当前认证用户
node {baseDir}/scripts/openproject.mjs user-me
通知
bash
列出通知(全部或仅未读)
node {baseDir}/scripts/openproject.mjs notification-list
node {baseDir}/scripts/openproject.mjs notification-list --unread
node {baseDir}/scripts/openproject.mjs notification-list --reason mentioned --project 5
读取通知详情
node {baseDir}/scripts/openproject.mjs notification-read --id 100
标记为已读(单个或全部)
node {baseDir}/scripts/openproject.mjs notification-mark-read --id 100
node {baseDir}/scripts/openproject.mjs notification-mark-read --all
node {baseDir}/scripts/openproject.mjs notification-mark-read --all --project 5
标记为未读
node {baseDir}/scripts/openproject.mjs notification-mark-unread --id 100
node {baseDir}/scripts/openproject.mjs notification-mark-unread --all
文档
bash
node {baseDir}/scripts/openproject.mjs document-list
node {baseDir}/scripts/openproject.mjs document-read --id 5
node {baseDir}/scripts/openproject.mjs document-update --id 5 --title 更新后的标题
修订版本
bash
node {baseDir}/scripts/openproject.mjs revision-read --id 10
node {baseDir}/scripts/openproject.mjs revision-list-by-wp --wp-id 42
能力与操作
bash
node {baseDir}/scripts/openproject.mjs capability-list --principal me
node {baseDir}/scripts/openproject.mjs capability-global
node {baseDir}/scripts/openproject.mjs action-list
node {baseDir}/scripts/openproject.mjs action-read --id work_packages/create
我的偏好
bash
node {baseDir}/scripts/openproject.mjs my-preferences-read
node {baseDir}/scripts/openproject.mjs my-preferences-update --time-zone Europe/Brussels --comment-order desc
渲染
bash
node {baseDir}/scripts/openproject.mjs render-markdown --text 粗体 和 斜体
node {baseDir}/scripts/openproject.mjs render-plain --text 纯文本
帖子(论坛)
bash
node {baseDir}/scripts/openproject.mjs post-read --id 5
node {baseDir}/scripts/openproject.mjs post-attachment-list --id 5
提醒
bash
node {baseDir}/scripts/openproject.mjs reminder-list
node {baseDir}/scripts/openproject.mjs reminder-create --wp-id 42 --remind-at 2026-03-20T09:00:00Z --note 检查状态
node {baseDir}/scripts/openproject.mjs reminder-update --id 3 --remind-at 2026-03-21T09:00:00Z
node {baseDir}/scripts/openproject.mjs reminder-delete --id 3 --confirm
项目状态
bash
node {baseDir}/scripts/openproject.mjs project-status-read --id on_track
项目阶段(企业版)
bash
列出项目阶段定义
node {baseDir}/scripts/openproject.mjs project-phase-definition-list
读取阶段定义
node {baseDir}/scripts/openproject.mjs project-phase-definition-read --id 1
读取项目阶段
node {baseDir}/scripts/openproject.mjs project-phase-read --id 5
项目组合(企业版)
bash
列出项目组合
node {baseDir}/scripts/openproject.mjs portfolio-list
读取项目组合
node {baseDir}/scripts/openproject.mjs portfolio-read --id 1
更新项目组合
node {baseDir}/scripts/openproject.mjs portfolio-update --id 1 --name 第一季度项目组合
删除项目组合(需要 --confirm)
node {baseDir}/scripts/openproject.mjs portfolio-delete --id 1 --confirm
项目群(企业版)
bash
列出项目群
node {baseDir}/scripts/openproject.mjs program-list
读取项目群
node {baseDir}/scripts/openproject.mjs program-read --id 1
更新项目群
node {baseDir}/scripts/openproject.mjs program-update --id 1 --name 平台项目群
删除项目群(需要 --confirm)
node {baseDir}/scripts/openproject.mjs program-delete --id 1 --confirm
占位用户(企业版)
bash
列出占位用户
node {baseDir}/scripts/openproject.mjs placeholder-user-list
读取占位用户
node {baseDir}/scripts/openproject.mjs placeholder-user-read --id 10
创建占位用户
node {baseDir}/scripts/openproject.mjs placeholder-user-create --name 未来开发者
更新占位用户
node {baseDir}/scripts/openproject.mjs placeholder-user-update --id 10 --name 高级开发者
删除占位用户(需要 --confirm)
node {baseDir}/scripts/openproject.mjs placeholder-user-delete --id