Webhook
审批和部署一发生,事件就送到你的端点。带签名、会重试、有顺序 —— 七种事件,现在就能用。
推还是拉
需要按秒反应时,webhook 才是对的工具 —— 撤回一次部署、呼叫值班的人、发现漂移的那一刻开工单。
如果只是夜间合规同步或者刷新看板,定时拉审计日志完全够用。它支持按操作者、动作和时间段查询,和 webhook 一起用也没什么代价。
七种事件
asset.proposedasset.approvedasset.rejecteddeployment.completeddeployment.faileddrift.detectedmember.role_changed既定设计
每个请求都会携带 X-Untactit-Signature ——对原始请求体计算的 HMAC-SHA256——外加一个时间戳。两者都要校验:签名证明请求来自我们,时间戳防止旧请求被重放到你这里。
==import hmac, hashlib, time
def verify(body: bytes, sig: str, ts: str, secret: str) -> bool:
if abs(time.time() - int(ts)) > 300: # 5 min
return False
expected = hmac.new(
secret.encode(), ts.encode() + b"." + body,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, sig)
我们会持续重试,直到你返回 2xx,因此同一事件可能送达两次。请做好去重,去重键为
id。重试按指数退避,最长持续 24 小时。
A sequence 字段单调递增。先收到 48215 再收到 48213,说明后者是迟到的重试,丢弃即可。
连续失败两天的端点会被停用,并邮件通知工作区管理员。单次尝试超时为 10 秒。