콘텐츠로 이동

타게팅 데이터 등록

타게팅 푸시 발송에 사용할 대상 목록을 등록합니다.

'타게팅 데이터 등록' API는 앱 서버에서 Hive 노티피케이션 서버로 직접 호출하는 Server-to-Server 통신 방식으로 동작하며, 대상 목록을 담을 타게팅 데이터를 먼저 등록한 후 반환된 타게팅 ID로 대상 항목을 등록하는 순서로 사용합니다. 등록한 타게팅 ID는 캠페인 등록 및 수정 API의 targeting_id로 전달합니다.

Note

이 API를 연동하려면 OAuth 2.0 Access Token을 발급받아야 합니다. 토큰을 이미 발급받았다면 추가 권한만 요청합니다. OAuth Token 발급하기를 참고하세요.

'타게팅 데이터 등록' 기능으로 제공되는 API는 아래와 같습니다.

API Endpoint 설명
POST /v2/push/targets 타게팅 데이터 등록
POST /v2/push/targets/{id}/direct/{action} 타게팅 대상 항목 등록


타게팅 데이터 등록

대상 항목을 담을 타게팅 데이터를 등록하거나 이미 등록된 타게팅 데이터를 수정합니다. id1 이상으로 전달하면 기존 타게팅 데이터를 수정하고, 생략하면 타게팅 데이터를 새로 등록합니다.

Request URL

상용 URL https://notification.withhive.com/v2/push/targets
https://notification.qpyou.cn/v2/push/targets
Sandbox URL https://sandbox-notification.withhive.com/v2/push/targets
https://sandbox-notification.qpyou.cn/v2/push/targets
HTTP Method POST
Content-Type application/json
Data Format JSON

Request header

필드명 설명 타입 필수 여부
X-Access-Token 앱 서버 인증을 위한 OAuth 2.0 Access Token
(OAuth Token 발급하기 참고)
String Y
Note

JWT의 project_id가 요청 본문의 game.gameid와 일치해야 합니다. project 유형의 토큰을 사용할 때 적용됩니다. 타게팅 데이터를 수정할 때는 저장된 데이터의 앱을 먼저 확인한 후 요청 값과 대조합니다.

Request body

필드명 설명 타입 필수 여부
id 타게팅 데이터 ID. 1 이상이면 기존 데이터 수정, 생략하면 신규 등록 Long N
description 타게팅 데이터 제목 또는 설명 String Y
game 타게팅 대상 게임 정보 Object Y
game.gameid 게임 ID String Y
Note

이미 available 또는 locked 상태인 타게팅 데이터는 수정할 수 없습니다. 상태에 대한 자세한 내용은 타게팅 데이터 상태를 참고하세요.

Request example

신규 등록

{
  "description": "8월 복귀 유저 목록",
  "game": {
    "gameid": "com.com2us.mygame"
  }
}

기존 데이터 수정

{
  "id": 1024,
  "description": "8월 복귀 유저 목록 (수정)",
  "game": {
    "gameid": "com.com2us.mygame"
  }
}

Response body

필드명 설명 타입
result_code 응답 코드 자세히 Integer
result_msg 결과 메시지 String
token_validation JWT 검증 결과 (JWT 검증 에러) Object
token_validation.result_code JWT 검증 결과 코드 Integer
token_validation.result_msg JWT 검증 결과 메시지 String
data.id 타게팅 데이터 ID. 신규 등록이면 서버에서 생성한 값 Long
data.game.gameid 게임 ID String
data.game.game_index 서버가 조회하여 채운 게임 인덱스 Integer
data.description 타게팅 데이터 제목 또는 설명 String
data.registrant 등록자. 이 API로 등록한 데이터는 항상 SYSTEM Object
data.timestamp 저장 시각. date는 문자열, time은 epoch milliseconds Object
data.available 발송에 사용할 수 있는 상태 여부. 타게팅 데이터 상태 참고 Boolean
data.locked 대상 항목을 저장하는 중인지 여부. 타게팅 데이터 상태 참고 Boolean

응답 코드

코드값 설명
0 성공
1400 유효하지 않은 요청
  • 필수 필드가 누락된 경우
  • 요청한 gameid가 존재하지 않는 경우
  • 이미 available 또는 locked 상태여서 수정할 수 없는 경우
1401 요청한 게임에 대한 권한이 없음
1500 서버 내부 오류
2499 JWT 검증 실패 (token_validation 참고)

Response example

성공

{
  "result_code": 0,
  "result_msg": "success",
  "token_validation": {
    "result_code": 0,
    "result_msg": "success"
  },
  "data": {
    "id": 1024,
    "game": {
      "gameid": "com.com2us.mygame",
      "game_index": 1234
    },
    "description": "8월 복귀 유저 목록",
    "registrant": {
      "id": "SYSTEM",
      "name": "SYSTEM"
    },
    "timestamp": {
      "date": "2026-07-31 15:04:05.123",
      "time": 1785484045123
    },
    "available": false,
    "locked": false
  }
}

실패

{
  "result_code": 1400,
  "result_msg": "description field is required.",
  "token_validation": {
    "result_code": 0,
    "result_msg": "success"
  }
}

JWT 검증 실패

{
  "result_code": 2499,
  "result_msg": "JWT validation failed.",
  "token_validation": {
    "result_code": 2408,
    "result_msg": "The access token is expired. Please refresh your token."
  }
}


타게팅 대상 항목 등록

등록된 타게팅 데이터에 발송 대상 항목을 넣습니다. 요청 검증 후 저장은 비동기로 처리되므로, 응답 코드 0은 등록 요청이 정상 접수되었다는 의미이며 저장 완료를 보장하지 않습니다.

Request URL

상용 URL https://notification.withhive.com/v2/push/targets/{id}/direct/{action}
https://notification.qpyou.cn/v2/push/targets/{id}/direct/{action}
Sandbox URL https://sandbox-notification.withhive.com/v2/push/targets/{id}/direct/{action}
https://sandbox-notification.qpyou.cn/v2/push/targets/{id}/direct/{action}
HTTP Method POST
Content-Type application/json
Data Format JSON

Request header

필드명 설명 타입 필수 여부
X-Access-Token 앱 서버 인증을 위한 OAuth 2.0 Access Token
(OAuth Token 발급하기 참고)
String Y
Note

저장된 타게팅 데이터의 게임을 먼저 확인한 후 요청 본문의 gameid와 대조합니다. 다른 게임의 타게팅 ID로 접근하는 것을 막기 위한 순서입니다.

Request path

필드명 설명 타입 필수 여부
id 타게팅 데이터 ID. 1 이상의 정수 Long Y
action 대상 항목 처리 방식. 대소문자를 구분하지 않음
  • new: 기존 항목을 모두 지우고 새로 등록
  • add: 기존 항목에 추가
String Y

Request body

필드명 설명 타입 필수 여부
gameid 게임 ID. 저장된 타게팅 데이터의 값과 일치해야 함 String Y
items 대상 항목 목록(최소 1개) Array Y
items[].identifier.player_id Player ID Long 조건부
items[].identifier.did 기기 ID Long 조건부
items[].app.appid App ID String Y
Note

player_iddid 중 최소 하나는 0보다 큰 값이어야 합니다. 두 값을 모두 전달하면 player_id가 우선 적용됩니다.

Request example

{
  "gameid": "com.com2us.mygame",
  "items": [
    {
      "identifier": { "player_id": 20000044768 },
      "app": { "appid": "com.com2us.mygame.normal.freefull.google.global.android.common" }
    },
    {
      "identifier": { "did": 40000098765 },
      "app": { "appid": "com.com2us.mygame.normal.freefull.apple.global.ios.universal" }
    }
  ]
}

Response body

이 API는 항목 등록 요청을 접수만 하므로 data 필드를 반환하지 않습니다.

필드명 설명 타입
result_code 응답 코드 자세히 Integer
result_msg 결과 메시지 String
token_validation JWT 검증 결과 (JWT 검증 에러) Object
token_validation.result_code JWT 검증 결과 코드 Integer
token_validation.result_msg JWT 검증 결과 메시지 String

응답 코드

코드값 설명
0 성공. 존재하지 않는 타게팅 ID이거나 대상이 이미 available 상태인 경우에도 반환
1400 유효하지 않은 요청
  • 경로의 id가 정수가 아니거나 1 미만인 경우
  • 경로의 actionnew 또는 add가 아닌 경우
  • items가 비어 있거나 app.appid가 유효하지 않은 경우
  • 대상이 locked 상태인 경우
1401 요청한 게임에 대한 권한이 없음
1500 서버 내부 오류
2499 JWT 검증 실패 (token_validation 참고)

Response example

성공

{
  "result_code": 0,
  "result_msg": "success",
  "token_validation": {
    "result_code": 0,
    "result_msg": "success"
  }
}

JWT 검증 실패

{
  "result_code": 2499,
  "result_msg": "JWT validation failed.",
  "token_validation": {
    "result_code": 2408,
    "result_msg": "The access token is expired. Please refresh your token."
  }
}


타게팅 데이터 상태

타게팅 데이터는 availablelocked 두 필드로 상태를 나타냅니다.

available locked 설명
false false 등록 직후 상태. 데이터를 수정하거나 대상 항목을 등록할 수 있음
false true 대상 항목을 저장하는 중. 데이터를 수정할 수 없음
true false 대상 항목 저장 완료. 발송에 사용할 수 있으며 데이터를 수정할 수 없음
Note

JWT 검증 실패 시, token_validation 필드로 자세한 오류 정보를 확인할 수 있습니다. 자세한 내용은 JWT 검증 에러 코드를 참고하세요.