Webhook 即將推出

變更發生的當下就知道。

核准與部署事件會在發生的當下投遞到你的端點。具簽章、可重試、有序。本頁記載的是已確定的設計,而非已推出的功能。

尚未建置。 untactit 目前沒有 Webhook 投遞功能。我們公開這份設計,是因為評估我們的團隊會問整合會長什麼樣子,而明確的答案比含糊的答案有用。以下規格已經定案:七種事件、HMAC 簽章、至少一次投遞。若你需要這項功能才能導入 untactit,請告訴我們 — 這正是它被排入優先順序的方式。

目前的替代方案

你現在就能做的事。

稽核紀錄已經記下每一次狀態變更,並可依操作者、動作與時間區間查詢。依排程輪詢它,能取得相同的資訊,只是延遲較高,且你這一端要多寫幾行程式碼。

對多數工作流程而言 — 每晚一次的合規同步、儀表板更新 — 這確實已經足夠。只有在你需要以秒為單位反應時,Webhook 才會變得重要。

稽核紀錄與匯出

已確定的事件 — 7 種

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 小時後停用

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

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

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

免費開始 與我們談談

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