Skip to main content
웹훅은 곧 출시 예정입니다. 이 페이지는 계획된 기능을 설명합니다.

개요

웹훅을 통해 사주 API 통합에서 이벤트가 발생할 때 실시간 HTTP 콜백을 받을 수 있습니다.

계획된 이벤트

이벤트설명사용 사례
fortune.generated새 운세 생성됨사용자 대시보드 업데이트
daily.reset자정에 일일 운세 초기화사용자에게 새 운세 알림
cache.warmed캐시 워밍 완료시스템 상태 확인
rate_limit.warning요청 제한 도달 임박운영팀 알림

웹훅 페이로드 형식

{
  "id": "evt_abc123",
  "type": "fortune.generated",
  "created": "2025-01-15T09:00:00Z",
  "data": {
    "dayMaster": "병화",
    "date": "2025-01-15",
    "score": 78,
    "model": "haiku"
  }
}

웹훅 보안

모든 웹훅에는 검증용 서명 헤더가 포함됩니다:
import crypto from 'crypto';

function verifyWebhook(
  payload: string,
  signature: string,
  secret: string
): boolean {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

// Express 미들웨어
app.post('/webhooks/saju', (req, res) => {
  const signature = req.headers['x-saju-signature'];
  const isValid = verifyWebhook(
    JSON.stringify(req.body),
    signature,
    process.env.WEBHOOK_SECRET
  );

  if (!isValid) {
    return res.status(401).send('Invalid signature');
  }

  // 웹훅 처리
  handleWebhook(req.body);
  res.status(200).send('OK');
});

재시도 정책

실패한 웹훅 전송은 지수 백오프로 재시도됩니다:
시도지연
1즉시
21분
35분
430분
52시간
5번 실패 후 웹훅은 실패로 표시되며 이메일 알림을 받게 됩니다.

웹훅 관리

웹훅 등록 (예정)

curl -X POST https://api.sajuapi.dev/webhooks \
  -H "X-API-Key: bs_live_xxx" \
  -d '{
    "url": "https://your-app.com/webhooks/saju",
    "events": ["fortune.generated", "daily.reset"]
  }'

웹훅 목록 조회 (예정)

curl https://api.sajuapi.dev/webhooks \
  -H "X-API-Key: bs_live_xxx"

웹훅 삭제 (예정)

curl -X DELETE https://api.sajuapi.dev/webhooks/wh_abc123 \
  -H "X-API-Key: bs_live_xxx"

대안: 폴링

웹훅이 출시되기 전까지 폴링으로 업데이트를 확인할 수 있습니다:
// 매시간 새 운세 데이터 폴링
setInterval(async () => {
  const response = await fetch('/api/daily-fortune', {
    method: 'POST',
    headers: { 'X-API-Key': API_KEY },
    body: JSON.stringify({ saju, userName, date: today })
  });

  const { data, meta } = await response.json();

  if (!meta.cached) {
    // 새 운세 생성됨
    notifyUser(data);
  }
}, 60 * 60 * 1000);

알림 받기

웹훅 출시 알림을 받고 싶으신가요?

대기 목록 등록

웹훅 베타 대기 목록에 등록하려면 이메일을 보내주세요.