Webhook 처리
R2 업로드 이벤트와 Stream 트랜스코딩 완료 이벤트를 서버가 처리하는 과정
문서 정보
- 작성일: 2026-03-02
- 최종 업데이트: 2026-03-02
- 버전: v1.0.0
- 관련 코드:
src/modules/cloudflare/raw-video-webhook/
개요
체육관 R2에 영상이 업로드되면 두 가지 webhook이 Spoclip 서버로 전달됩니다.
| Webhook | 엔드포인트 | 트리거 |
|---|---|---|
| R2 Webhook | POST /cloudflare/raw-video-webhooks/:gymCode/r2 | R2 객체 생성/삭제 |
| Stream Webhook | POST /cloudflare/raw-video-webhooks/:gymCode/stream | Stream 트랜스코딩 완료/실패 |
두 엔드포인트 모두 @Public() (JWT 불필요)이며, HMAC-SHA256 서명으로 요청의 진위를 검증합니다.
R2 Webhook
요청 페이로드
{
"idempotencyKey": "uuid-v4",
"eventType": "object-create",
"object": {
"key": "COURT-A/2026-03-01/14/3/CAM-FRONT.mp4",
"size": 524288000,
"passthrough": {
"source": "R2",
"type": "RAW_VIDEO",
"gymCode": "GYM-001",
"courtCode": "COURT-A",
"cameraCode": "CAM-FRONT",
"date": "2026-03-01",
"hour": 14,
"timeSlot": 3
}
}
}