快速开始API 参考MCP 集成OpenClaw Skill变更日志

Webhook

EasyPM 在关键事件发生时通过 HTTP POST 推送到你的端点。HMAC-SHA256 签名 + 1m/5m/30m/2h/12h 重试。

Endpoints

注册 Webhook

POST /openapi/v1/apps/:clientId/webhooks

Body:

{
  "url": "https://your-endpoint.example.com/easypm",
  "events": [
    "note.created",
    "task.status_changed",
    "risk.opened",
    "risk.resolved"
  ]
}

成功响应(仅此一次包含 Secret):

{
  "success": true,
  "data": {
    "id": "wh_abc123",
    "url": "https://...",
    "events": ["..."],
    "secret": "whsec_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
    "status": "ACTIVE",
    "createdAt": "2026-08-07T15:00:00.000Z"
  }
}

列出 Webhook

GET /openapi/v1/apps/:clientId/webhooks

返回的列表不包含 Secret(它只显示一次)。

测试 Webhook

POST /openapi/v1/apps/:clientId/webhooks/:subId/test

触发一次 webhook.test ping 事件。响应:

{
  "success": true,
  "data": {
    "delivered": true,
    "status": 200
  }
}

停用

DELETE /openapi/v1/apps/:clientId/webhooks/:subId

立即停止投递,但保留订阅行(不物理删除)。

事件类型

完整列表见 /openapi/v1/openapi.json。常用:

事件触发时机
note.created创建笔记
note.updated编辑笔记
note.deleted删除笔记
action-item.created创建行动项
action-item.updated编辑
action-item.deleted删除
task.created创建任务
task.status_changed任务状态变化
task.assigned重新指派
task.deleted删除
risk.created登记风险
risk.openedOPEN
risk.resolvedRESOLVED
risk.deleted删除
project.created新建项目
project.member_added添加成员
project.member_removed移除成员
webhook.test你手动点「测试」

投递细节

每次 EasyPM 推送:

POST <your-url>
Content-Type: application/json
User-Agent: EasyPM-Webhooks/1.0
X-EasyPM-Event: task.status_changed
X-EasyPM-Delivery-Id: evt_abc123
X-EasyPM-Signature: t=1765432100,v1=7c0b2a1c...

{
  "id": "evt_abc123",
  "type": "task.status_changed",
  "data": {
    "taskId": "...",
    "from": "TODO",
    "to": "IN_PROGRESS"
  },
  "sentAt": "2026-08-07T15:00:00.000Z"
}

签名验证

v1 = HMAC-SHA256( secret, `${t}.${raw_body}` )

校验步骤:

  1. tv1X-EasyPM-Signature: t=...,v1=...
  2. |now - t| < 300s 否则拒绝(防 replay)
  3. 在你的服务上:v1 == HMAC(secret, t + "." + raw_body)
  4. crypto.timingSafeEqual 比较

重试

每次尝试:

任何 2xx 响应(200 / 201 / 202 / 204)视为成功。

安全

下一步