用途:处理 Vast.ai 通知 Webhook(签名、至少一次投递),在 JSON 解析前校验原始请求体,拒绝过期时间戳,按稳定事件 ID 去重,持久入队后返回成功。
主要能力:发现并订阅通知类型(完整 client/host 键,如 client:low_credit、client:outbid),遵守每用户四个 Webhook 限制;创建或轮换时保存一次性签名密钥(列表与更新响应不返回密钥);用整数 X-Vast-Timestamp、句点和原始请求体拼接,与 X-Vast-Signature-256 做常数时间 HMAC-SHA256 比较;拒绝缺失/畸形头及超过 300 秒的时间戳;用 X-Vast-Event-Id 或 payload event_id 去重;持久化后快速返回 2xx,异步幂等处理副作用(投递超时 10 秒);使用提供方测试投递、验证轮换,区分永久失败(3xx/多数 4xx)与可重试失败(408、429、5xx、超时、连接错误)。
使用方式:POST 读取精确字节做签名校验;Webhook 配置用有作用域的 Vast.ai API 密钥,投递校验用独立的 Webhook 密钥;需公网 HTTPS 端点、无重定向、无私有地址解析。输出包括订阅键、Webhook ID、密钥轮换归属、签名/重放/去重/入队/幂等测试、投递健康与重试或永久失败记录。
限制:签名或时间戳无效返回永久客户端错误且不入队、不披露校验细节;重复事件确认原记录后返回成功且不重复副作用;队列不可用返回 503 等可重试失败;端点重定向属永久失败需修正最终 HTTPS URL。变更 Vast.ai 资源需操作员明确批准,不得记录任何密钥。