用途:搭建 SharePoint 列表或文档库的 Webhook 处理器,完成订阅校验握手,校验 clientState,并据此触发后续变更处理。
主要能力:1) 处理 validationtoken 握手——创建订阅或变更 notificationUrl 时,SharePoint 会带 validationtoken 查询参数发起 POST,端点须在约 5 秒内以 HTTP 200 text/plain 原样回显该 token,且此步骤应在任何请求体解析之前执行,否则订阅创建失败;2) 用时间安全比较(crypto.timingSafeEqual)校验每条通知的 clientState 是否等于订阅时设置的共享密钥,这是唯一的逐消息身份信号,SharePoint Webhook 无 HMAC 签名;3) 解析精简、批量化的通知载荷(value 数组),其中不含变更细节。
使用方式:环境变量 SHAREPOINT_CLIENT_STATE 保存订阅时设置的不透明密钥。收到通知后需对该列表调用 GetChanges API,基于保存的 change token 判断实际变更类型:Add→ItemAdded、Update→ItemUpdated、DeleteObject→ItemDeleted、Rename→ItemRenamed、Restore→ItemRestored、MoveAway→ItemMovedOut、MoveInto→ItemMovedInto。本地开发可用命令:npx hookdeck-cli listen 3000 microsoft-sharepoint --path /webhooks/microsoft-sharepoint。示例代码位于 examples/express/、examples/nextjs/、examples/fastapi/。建议配合 webhook-handler-patterns 技能处理处理顺序、幂等、错误处理与重试。
限制:无请求签名,仅靠握手与 clientState 校验;通知不含变更内容;SharePoint 在非 2xx 时以 5 分钟间隔重试 5 次,故须幂等处理。未提供收费、价格与具体部署平台信息。