API Reference · 룰렛·티켓
연동 개요
관리자가 설정한 룰렛을 매체사·콘텐츠사가 조회하고, 콘텐츠 웹에서 티켓으로 추첨하는 흐름입니다.
역할과 인증
- 관리자 — 룰렛 관리 화면에서 매체 공통·매체 콘텐츠 전용 룰렛, 허용 티켓 유형, 지급 경로를 설정합니다.
- 매체사 서버 —
sk_pub_*Bearer 키로 자기 매체의 게시된 룰렛과 콘텐츠별 지급 경로를 조회합니다. - 콘텐츠사 서버 —
sk_prov_*Bearer 키로 자기 콘텐츠에 활성 지급 경로가 있는 룰렛을 조회합니다. 이 키를 웹 페이지에 넣지 마세요. - 콘텐츠 웹 — 게이트웨이가 전달한
session_id의 세션 토큰(sess_*)으로 룰렛 목록·상세·티켓함을 조회하고 추첨합니다. 경로의content_id는 토큰의 콘텐츠와 같아야 합니다.
콘텐츠 웹의 호출 순서
- 세션 토큰을 준비하고 콘텐츠 룰렛 목록을 조회합니다.
- 선택한 룰렛의 활성 칸 구성과 티켓함을 조회합니다.
- 룰렛이 사용 가능하고 허용된 유형의 티켓이 있으면 추첨 API를 한 번 호출합니다. 네트워크 오류에는 같은
idempotency_key로 재시도합니다. - 응답의
reward.slot_id와roulette_id를 기준으로 결과를 표시하고 티켓 수량을 갱신합니다.delivery가 있으면 지급 상태도 별도로 표시합니다. - 추첨을
claim: "deferred"로 했다면 포인트 당첨은 아직 지급되지 않은 상태(claim_status: "unclaimed")입니다. 당첨 팝업의 '보상 받기'에서 당첨 보상 받기를 호출해 지급합니다. - 다음 진입 때 미수령 당첨 조회로 받지 않은 당첨을 확인해 팝업을 다시 띄웁니다.
포인트 지급
관리자가 룰렛의 각 매체 콘텐츠에 campaign_id·event_id 지급 경로를 연결합니다. 서버가 티켓 소비, 추첨, 이벤트 기록과 지급을 처리합니다. 매체사 설정에 따라 포인트 포스트백 또는 내부 적립을 사용하며, 0포인트 칸은 포스트백을 보내지 않습니다. 콘텐츠 웹이 별도의 이벤트 API로 당첨을 보고하면 중복 지급 위험이 있으므로 추첨 결과만 사용하세요. 포스트백 수신 측은 postback_id로 중복 적립을 방지하세요.
지급 시점
추첨 요청의 claim으로 포인트 지급 시점을 고릅니다. 생략하거나 "auto"면 추첨 응답 전에 지급합니다(기존 방식). "deferred"면 추첨은 당첨 칸 결정·티켓 차감·결과 반환까지만 하고, 포스트백 또는 내부 적립은 사용자가 당첨 팝업에서 '보상 받기'를 눌러 보상 받기 API를 호출할 때 일어납니다. 예산·한도 판정과 당첨 기록은 두 방식 모두 추첨 시점에 합니다. 꽝은 받을 것이 없어 늘 즉시 완료됩니다. 받지 않은 당첨은 기간 제한 없이 남으며 미수령 당첨 조회로 다시 안내합니다.
확률과 연출
상세 API는 내부 가중치와 재고 총량을 공개하지 않습니다. 같은 크기의 칸을 회전시키는 화면은 실제 당첨 확률과 다르게 보일 수 있습니다. 확률을 표현하는 휠에는 별도의 승인된 확률 표시 계약이 필요합니다. 서버의
slot_id가 유일한 추첨 결과이며, 클라이언트에서 임의로 당첨 칸을 정하지 마세요.API 목록
GET
/api/v1/roulettes매체사·콘텐츠사 서버가 게시된 룰렛과 지급 경로 조회.
GET
/api/v1/contents/{content_id}/roulettes콘텐츠 웹의 룰렛 목록.
GET
/api/v1/contents/{content_id}/roulettes/{group_id}콘텐츠 웹의 활성 칸 구성.
GET
/api/v1/contents/{content_id}/tickets사용자의 매체 공통 티켓함.
POST
/api/v1/contents/{content_id}/roulettes/{group_id}/spin티켓 한 장으로 추첨하고 지급.
POST
/api/v1/contents/{content_id}/roulettes/draws/{draw_id}/claim지연 지급 당첨의 보상 받기.
GET
/api/v1/contents/{content_id}/roulettes/draws/unclaimed세션 회원의 미수령 당첨 목록.