Webhook 即將推出
核准與部署事件會在發生的當下投遞到你的端點。具簽章、可重試、有序。本頁記載的是已確定的設計,而非已推出的功能。
目前的替代方案
稽核紀錄已經記下每一次狀態變更,並可依操作者、動作與時間區間查詢。依排程輪詢它,能取得相同的資訊,只是延遲較高,且你這一端要多寫幾行程式碼。
對多數工作流程而言 — 每晚一次的合規同步、儀表板更新 — 這確實已經足夠。只有在你需要以秒為單位反應時,Webhook 才會變得重要。
已確定的事件 — 7 種
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,代表那是延遲的重試,可以捨棄。
連續兩天投遞失敗的端點會被停用,並以電子郵件通知工作區管理員。每次嘗試的逾時為十秒。