웹훅 예정
승인·배포 이벤트를 발생 즉시 여러분의 엔드포인트로 전달합니다. 서명되고, 재시도되고, 순서가 보장됩니다. 이 페이지는 확정된 설계를 문서화한 것이며, 아직 출시된 기능이 아닙니다.
지금 쓸 수 있는 대안
감사 로그는 이미 모든 상태 변경을 기록하고 있으며, 행위자·작업·시간 범위로 조회할 수 있습니다. 이를 주기적으로 폴링하면 같은 정보를 얻습니다. 지연이 조금 더 있고, 여러분 쪽 코드가 약간 더 필요할 뿐입니다.
야간 컴플라이언스 동기화, 대시보드 갱신 같은 대부분의 워크플로에는 그것으로 충분합니다. 웹훅이 중요해지는 순간은 몇 초 안에 반응해야 할 때입니다.
확정된 이벤트 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이 도착했다면 늦게 온 재시도이므로 버려도 됩니다.
이틀 동안 계속 실패하는 엔드포인트는 비활성화되고, 워크스페이스 admin에게 메일이 발송됩니다. 시도당 타임아웃은 10초입니다.