Webhook

變更發生的當下就知道。

審核和部署一發生,事件就送到你的端點。帶簽章、會重試、有順序 —— 七種事件,現在就能用。

投遞已經在跑了。 註冊一個端點,從七種事件裡挑,untactit 會把時間戳和內文一起用 HMAC-SHA256 簽章。至少投遞一次,失敗就按指數退避重試,最長 24 小時;連續失敗 48 小時自動停用。端點必須是 https,私有和回環位址在註冊時和送出前各攔一次。

推還是拉

挑合適的那種就行。

需要按秒反應時,webhook 才是對的工具 —— 撤回一次部署、呼叫值班的人、發現飄移的那一刻開工單。

如果只是夜間合規同步或者更新儀表板,定時拉稽核日誌完全夠用。它支援按操作者、動作和時間範圍查詢,和 webhook 一起用也沒什麼代價。

稽核紀錄與匯出

七種事件

asset.proposed
編輯者送出審核
asset.approved
核准者同意,資產隨即上線
asset.rejected
附上說明退回
deployment.completed
所有目標皆已確認
deployment.failed
一個或多個目標拒絕了它
drift.detected
本機副本與已核准版本產生偏移
member.role_changed
管理員授予或撤銷角色

已確定的設計

具簽章,且可安全重放。

每個請求都會帶有 X-Untactit-Signature — 原始內容的 HMAC-SHA256 — 以及一組時間戳記。請兩者都驗證:簽章證明它來自我們,時間戳記則防止舊請求被重放到你這裡。

  • ✓早於 5 分鐘的時間戳記會被拒絕
  • ✓以固定時間比對簽章,切勿使用 ==
  • ✓每個工作區最多 5 個端點
verify.py
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,代表那是延遲的重試,可以捨棄。

48 小時後停用

連續兩天投遞失敗的端點會被停用,並以電子郵件通知工作區管理員。每次嘗試的逾時為十秒。

你的代理在跑什麼,不必再用猜的。

連接一個工作區,大約十分鐘,團隊實際在用的每一項技能、規則與記憶就全部看得到。

免費開始→ 與我們談談

免信用卡,直接搭配你現有的工具。