본문으로 건너뛰기

API 명세

공통 Base URL (Host)

  • Preview (테스트): https://app-api-reward.unifi.me
  • Production (라이브): https://api-reward.unifi.me

사용자 매핑 상태 확인

특정 사용자가 현재 Unifi 계정에 연결되어 있는지 확인합니다.

GET /v1/mission-users

SectionNameTypeReqDescription
HeaderX-Partner-IdStringY발급된 Partner ID
HeaderX-Api-KeyStringY발급된 API Key
QuerypartnerUidStringY서비스 내 고유 사용자 ID
ResponseresultBooleanY매핑 상태(true: 연결됨, false: 연결 안 됨)

Unifi Login용 Auth URL (Auth)

사용자를 Unifi 로그인 화면으로 리다이렉트하고 일회성 매핑 토큰 발급을 트리거하는 프론트엔드 전용 API입니다. (브라우저 직접 이동 방식이므로 헤더 인증 키를 포함하지 않습니다.)

GET /v1/mission-users/auth

SectionNameTypeReqDescription
QuerypartnerIdStringY발급된 Partner ID
QueryredirectUrlStringY로그인 후 복귀할 서비스 Mini App URL (*URL 인코딩 필요)
QuerybrowserTypeStringN접속 환경 지정(MINI: LINE MINI, LIFF: LINE LIFF, WEB: 그 외. 비어 있으면 WEB으로 동작)
Response302 Found--구성된 LINE LIFF 로그인 URL로 브라우저를 즉시 리다이렉트합니다

사용자 매핑 등록 (Connect)

일회성 매핑 토큰을 사용하여 Unifi 계정과 서비스 계정 간의 연결을 최종 확정합니다.

POST /v1/mission-users/connect

SectionNameTypeReqDescription
HeaderX-Partner-IdStringY발급된 Partner ID
HeaderX-Api-KeyStringY발급된 API Key
Body (JSON)tokenStringYURL 파라미터로 수신한 일회성 매핑 토큰
Body (JSON)partnerUidStringY서비스 내 고유 사용자 ID
Body (JSON)regionStringY사용자의 국가 코드(예: KR, JP, TW 등)
Response200 OK--빈 본문, 매핑 성공

미션 달성 (Achieve Mission)

사용자의 미션 진행 상황과 최종 완료 상태를 Unifi 서버에 실시간으로 upsert합니다. (보안 및 IP 제한: 사전에 합의된 서비스 서버의 Outbound IP(Whitelist)에서만 호출할 수 있습니다.)

이 API가 호출되면 Unifi는 요청에 담긴 missionKey로 어떤 미션인지 찾은 다음, 유효한 달성인지 확인하고 보상을 지급합니다.

POST /v1/achieve

SectionNameTypeReqDescription
HeaderX-Partner-IdStringY발급된 Partner ID
HeaderX-Api-KeyStringY발급된 API Key
Body (JSON)partnerUidStringY서비스 내 고유 사용자 ID
Body (JSON)missionKeyStringYUnifi가 전달한 Mission Key
Body (JSON)completedBooleanY미션 완료 상태(true로 저장되면 되돌릴 수 없습니다)
Body (JSON)metadata.targetIntN미션의 최대 목표 값(진행률 게이지 UI용)
Body (JSON)metadata.currentIntN미션의 현재 진행 값
Response200 OK--빈 본문, 저장 성공

데이터 전송 예시 (JSON Payload)

{
  "partnerUid": "user_77799",
  "missionKey": "SAMPLE_MISSION_KEY_001",
  "completed": false,
  "metadata": {
    "target": 30,
    "current": 5
  }
}

에러 코드

CodeNameCategory
901ADMIN_PERMISSION_DENIEDAdmin
1101NOT_FOUND_MISSION_GROUPMissionGroup
1201NOT_FOUND_MISSIONMission
1401NOT_FOUND_REWARD_ASSETRewardAsset
1402NOT_SET_REWARD_ASSET_DECIMALSRewardAsset
1902NOT_FOUND_REWARD_BUDGETBudget
2101NOT_FOUND_PROMOTIONPromotion
2102IMMUTABLE_PROMOTION_FIELDPromotion

Enum 정의

Enum NameValuesDescription
PromotionTypeCOMPOSITE, DAILY_CHECK프로모션 유형
PromotionStatusACTIVE, INACTIVE프로모션 활성/비활성 상태
RecurrenceTypeONE_TIME, DAILY, WEEKLY, MONTHLY반복 주기
RewardTypeFIXED, LUCKY_DRAW고정 리워드 / 럭키 드로우
BudgetTypeFIXED, LUCKY_DRAW예산 유형
AssetTypeFT에셋 유형
ClaimStatusRESERVED, REQUESTED, REJECTED, SUCCEEDED, FAILED리워드 클레임 상태
TicketFilterNOT_RECEIVED, RECEIVED, DRAWN티켓 필터