메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

You are viewing an old version of this content. View the current version.

현재와 비교 View Version History

« 이전 버전 2 다음 »

연동가이드 > /wiki/spaces/KS4GFP/pages/533463104


/message/send

Description

This API allows the delivery of a message request to another user through the message delivery server.

The target group for delivery is specified by messageBoxId, and the message box must be pre-registered via the admin tool.

When sending a message, it is possible to attach a list of items. The items to be attached must also be pre-registered via the admin tool before sending.

Method

POST

Request Headers 

Name

Type

Mandatory

Description

Content-Type

String

Y

"application/json;charset=UTF-8"

appSecret

String

Y

App Secret

Authorization

String

Y

Authorization: KakaoAK {ADMIN_KEY}

kgAppId

String

Y

KG App Id

playerId

String

Y

User ID issued by the platform (Item sender)

Request Body Parameters

Name

Type

Mandatory

Description

senderAppId

String

N

Sender App ID (set to appId if left blank)

appId

String

Y

Receiver App ID

senderId

String

Y

Sender ID

receiverId

String

Y

Receiver ID

message

Message

Y

Message

items

List<Item>

N

Item list

checkPlayer

Boolean

N

Whether to check the user

receiverIdType

String

N

User type (default: playerId)

Message

Name

Type

Mandatory

Description

messageId

String

N

Unique message UUID.

  • If the same messageId is used in a request, it won't be processed twice.

  • It is recommended to generate a messageId.

    • Example: {kgAppId}_{playerId}_{timestamp}

    • If called with an empty value, the platform will automatically generate a UUID.

  • If a message registration request is made and a valid response is not received, the previously generated messageId can be used to resend the request.

  • The maximum length of messageId is limited to 64 characters.

messageBoxId

String

N

Unique mailbox ID.

  • If left blank, the mail will be sent to the default mailbox (inbox).

title

String

N

Title

body

String

N

Body

titleMap

Map<String, String>

N

Title (used for multilingual processing)

bodyMap

Map<String, String>

N

Body (used for multilingual processing)

resourceMap

Map<String, String>

N

Data values required to display the message

Limitations

  • 1-dimensional Key-Value

  • Maximum of 10 keys

  • Each value size is limited to 100 bytes

expiryTime

Long

N

Expiration time. If specified, it must be at least 10 seconds after the registration time.

Cannot exceed the message box's expiration time.

Item

Name

Type

Mandatory

Description

itemCode

String

Y

Item code

quantity

Long

Y

Item quantity

validityTime

Long

N

Validity period.

If not specified, set to -1 (unlimited).

Response Status Code

Status Code

Status Code Description

Status Code Detailed Description

200

Normal response

Normal

400

Bad Request

Unparsable request data, missing required parameters, or parameter type error

401

Unauthenticated

Authentication failed

406

Not Acceptable

Cannot process

461

Invalid Message Box

The requested message box with messageBoxId does not exist.

500

Internal Server Error

Internal server system error

503

Service Unavailable

Service is unavailable (e.g., internal server timeout)

Response Content

Name

Type

Description

messageId

String

The messageId of the delivered message

 

Example Request

POST /service/v5/message/send HTTP/1.1
Host: kr-openapi-zinny3.game.kakao.com:10443
kgAppId: 103815
appSecret: 951b75bf17fe0885ab5106ba2a9f9bc9
playerId: 1527701800
Content-Type: application/json;charset=UTF-8
Authorization: KakaoAK c0948035a320f789f585acae3dedcd70
  
{   
    "receiverId": "1527701800",
    "message": {
        "messageBoxId": "inbox",
        "title": "Title",
        "body": "Body"
    },
    "items": [
        {
            "itemCode": "TEST_ITEM_QA2",
            "quantity": 10,
            "validityTime": 25900000
        }
    ]
}

Example Response 

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
 
{
    "messageId": "c21c6dfe-c13b-46ff-9946-961d28beb914"
}

 


/message/getList

Description

Retrieve a list of messages delivered to the message delivery server.

The retrieved list is sorted in reverse chronological order, with the most recent message appearing on the first page. A maximum of 100 messages can be retrieved per page.

If the nextPageKey value in the response is not -1, you can use this key to retrieve the next page.

Messages can have multiple attached items.

Attached items should be processed by calling /message/claim after applying them in the game, and then /message/finish should be called to complete the process.

Method

POST

Request Headers 

Name

Type

Mandatory

Description

Content-Type

String

Y

"application/json;charset=UTF-8"

appSecret

String

Y

App Secret

Authorization

String

Y

Authorization: KakaoAK {ADMIN_KEY}

kgAppId

String

Y

KG App Id

playerId

String

Y

User ID issued by the platform (Item sender)

Request Body Parameters

Name

Type

 Mandatory

Description

messageBoxId

String

N

Mailbox Id
- Used to query only a specific message box (Default mailbox if not entered)

count

Integer

Y

Number of messages to retrieve (maximum 100)

nextPageKey

Long

N

Offset to query the starting offset of the page.

If null, the first page is requested.

Even if you enter the Long Max value (9223372036854775807), the first page is requested.

states

List<String>

N

List of message state values to query:

unread, read, error, deleted, expired.

If not entered, a list of messages in unread and read states is returned.

Response Status Code

Status Code

Status Code Description

Status Code Detailed Description

200

Normal Response

Normal

400

Bad Request

Unparsable request data. Lack of required parameters or parameter type error

401

Unauthenticated

Unauthenticated request

406

Not Acceptable

Non-existent user

461

Restricted

Restricted User

463

Removed

Unregistered User (The user has applied to unregister, and the process is ongoing. The actual user data still exists.)

500

Internal Server Error

Internal server system error

503

Service Unavailable

Service is unavailable (e.g., internal server timeout)

 

Response Content

Name

Type

Description

nextPageKey

Long

다음 페이지 요청시 사용될

nextPageKey

  • -1 이면 더이상 데이터가 없음

messages

List<MessagePacket>

메시지 목록

maxCount

Integer

최대 보유 가능 메시지 개수

totalCount

Integer

현재 메시지 개수 (전체 페이지)

MessagePacket  

Name

Type

Description

message

Message

메시지 데이터

items

List<Item>

첨부 아이템 목록 

existUnconfirmedItems

Boolean

미확인 아이템 존재 여부

Message

Name

Type

Description

deliverySeq

Long

메시지 고유번호

messageId

String

메시지 ID

messageBoxId

String

우편함 ID

senderAppId

String

발신자 App ID

senderId

String

발신자 ID

receiverAppId

String

수신자 App ID

receiverId

String

수신자 ID

title

String

제목

body

String

본문

resourceMap

Map

메시지를 표현할때 필요한 데이터 값

state

String

메시지 상태 값

unread, read, error, deleted, expired

regTime

Long

등록 시각

modTime

Long

최종 수정 시각

readTime

Long

확인 처리 시각 (읽음 처리)

expiredTime

Long

만료시각

Item

Name

Type

Description

itemId

String

아이템 고유 ID

itemCode

String

아이템 코드

itemName

String

아이템 명

quantity

Long

아이템 수량

state

String

처리 상태값

registered, sent, confirmed, error, deleted, expired

sentCount

Integer

아이템 클레임 처리 횟수

  • 2회 이상 클레임 처리 시 이상 동작으로 간주합니다

validityTime

Long

아이템 유효시간

regTime

Long

등록 시각

modTime

Long

최종 수정 시각

sentTime

Long

requestItem 요청 시각

confirmedTime

Long

확인 처리 시각

expiredTime

Long

만료시각

 Example Request 

POST /service/v5/message/getList HTTP/1.1
Host: kr-openapi-zinny3.game.kakao.com:10443
Content-Type: application/json;charset=UTF-8
kgAppId: 103815
appSecret: 951b75bf17fe0885ab5106ba2a9f9bc9
playerId: 23423432453
Authorization: KakaoAK c0948035a320f789f585acae3dedcd70
   
{
        "count": 50
}

Example Response 

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
   
{
        "status": 200,
        "desc": "OK",
        "content": {
            "nextPageKey": -1,
            "messages": [
                {
                    "appId": "103815",
                    "senderId": "admin",
                    "receiverId": "990566329112884",
                    "message": {
                        "deliverySeq": 21519071,
                        "messageId": "6fec1bc2-e3b2-4fd2-a31e-6c192154f61e",
                        "messageBoxId": "inbox",
                        "senderAppId": "103815",
                        "senderId": "admin",
                        "receiverAppId": "103815",
                        "receiverId": "990566329112884",
                        "title": "0802보상",
                        "body": "0802보상",
                        "titleMap": {},
                        "bodyMap": {},
                        "resourceMap": {},
                        "state": "unread",
                        "regTime": 1690939713000,
                        "modTime": 1690939713000,
                        "readTime": null,
                        "expiredTime": 1691544513000,
                        "expiryTime": 1691544513000
                    },
                    "items": [
                        {
                            "itemId": "f0d1aea9-2c9c-43fd-b227-cd315799b216",
                            "itemCode": "worldcon",
                            "itemName": "월드콘",
                            "quantity": 5,
                            "state": "registered",
                            "sentCount": 0,
                            "regTime": 1690939713000,
                            "modTime": 1690939713000,
                            "sentTime": null,
                            "confirmedTime": null,
                            "expiredTime": 1691544513000,
                            "expiryTime": 1691544513000,
                            "validityTime": 604800000
                        }
                    ],
                    "existUnconfirmedItems": true
                }
            ],
            "totalCount": 1,
            "maxCount": 1000000
        }
}

 


/message/claimItems

Description

메시지에 포함된 아이템들의 수령 요청을 플랫폼 서버에 알립니다. 

위 API 호출시 지급할 아이템 목록을 반환하고 ‘지급중(발송처리중)’ 상태로 변경 되며 처리가 완료된 이후 /message/finish 를 호출해야 지급완료 상태가 되어 트랜잭션이 종료 됩니다.

만약 /message/finish를 호출하지 않으면 처리가 완료되지 않은 것으로 간주되어 동일한 요청이 들어오면 이전과 같은 목록을 반환합니다.

위 API로 동일한 messageId에 대해서 2회 이상 호출 시 에러 처리 되며 지급 처리 목록에서 제외됩니다.

이미 finish까지 처리된 messageId에 대해서는 해당 result의 status 값이 406으로 에러 처리됩니다.  

finish 처리가 끝나기전에 동일한 messageId로 20초 이내에 다시 claimItems 를 호출시에도 406 에러처리가 됩니다. 

Request Headers 

Name

Type

Mandatory

Description

Content-Type

String

Y

"application/json;charset=UTF-8"

appSecret

String

Y

App Secret

Authorization

String

Y

Authorization: KakaoAK {ADMIN_KEY}

kgAppId

String

Y

KG App Id

playerId

String

Y

User ID issued by the platform (Item sender)

Request Body Parameters

Name

Type

Mandatory

Description

messageIds

List<String>

Y

아이템을 수령할 메시지 ID 목록

Response Status Code

Status Code

Status Code 설명

Status Code 상세 설명

200

정상 응답

정상

400

Bad Request

파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류

401

Unauthenticated

인증되지 않은 요청

406

Not Acceptable

존재하지 않는 메시지

500

Internal Server Error

서버 시스템 내부 오류

503

Service Unavailable

서비스가 가능하지 않은 상태 (예, 내부 서버간 timeout)


Response Content 

Name

Type

Description

results

List<Result>

아이템 정보 목록

Result Content 

Name

Type

Description

messageId

String

messageId

status

Integer

아이템 클레임 처리 상태 코드

  • 정상 처리 : 200

  • 에러 발생 : 406

    • 아이템이 ‘등록된’ 상태가 아닌 경우

    • 이미 ‘클레임’ 처리된 경우

    • 20초 이내로 중복 클레임 처리 요청이 들어온 경우

    • 클레임 횟수가 2번 이상인 경우

receiverId

String

수신자 ID

senderId

String

발신자 ID

resourceMap

Map<String, String>

메시지 표현 시 필요한 값

items

List<Item>

아이템 정보 목록

Item 

Name

Type

Description

appId

String

App ID

itemCode

String

아이템 코드

quantity

Long

아이템 수량

itemId

String

아이템 고유 ID

validityTime

Long

유효기한

  • 메시지 전송 시점에 해당필드가 비어있으면 -1로 기록 (예: 프로모션 통해서 아이템 전송받은 경우)

senderId

String

발신자 ID

Example Request

POST /service/v5/message/claimItems HTTP/1.1
Host: kr-openapi-zinny3.game.kakao.com:10443
Content-Type: application/json;charset=UTF-8
kgAppId: 103815
appSecret: 951b75bf17fe0885ab5106ba2a9f9bc9
playerId: 21792586
Authorization: KakaoAK c0948035a320f789f585acae3dedcd70
  
{
   "messageIds": [
      "6fec1bc2-e3b2-4fd2-a31e-6c192154f61e"
   ]
}

 

Example Response 

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
  
{
            "results": [
                {
                    "messageId": "6fec1bc2-e3b2-4fd2-a31e-6c192154f61e",
                    "status": 200,
                    "receiverId": "990566329112884",
                    "senderId": "admin",
                    "resourceMap": {},
                    "items": [
                      {
                            "appId": "103815",
                            "itemCode": "worldcon",
                            "quantity": 5,
                            "itemId": "f0d1aea9-2c9c-43fd-b227-cd315799b216",
                            "validityTime": 604800000,
                            "senderId": "admin"
                      }
                  ]
              }
          ]
  }

 


/message/finish

Description

 /message/claim 이후에 게임서버에서 게임 지급이 정상적으로 처리된 후에 호출합니다.

메시지에 포함된 아이템의 배송 트랜잭션을 종료 처리(아이템 지급완료)하고 메시지를 삭제합니다.

Method

POST

Request Headers  

Name

Type

Mandatory

Description

Content-Type

String

Y

"application/json;charset=UTF-8"

appSecret

String

Y

App Secret

Authorization

String

Y

Authorization: KakaoAK {ADMIN_KEY}

kgAppId

String

Y

KG App Id

playerId

String

Y

User ID issued by the platform (Item sender)

Request Body Parameters 

Name

Type

Mandatory

Description

messageIds

List<String>

Y

완료 처리할 메시지 ID 목록

 

Response Status Code 

Status Code

Status Code 설명

Status Code 상세 설명

200

정상 응답

정상

400

Bad Request

파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류

401

Unauthenticated

인증되지 않은 요청

406

Not Acceptable

존재하지 않는 메시지

500

Internal Server Error

서버 시스템 내부 오류

503

Service Unavailable

서비스가 가능하지 않은 상태 (예, 내부 서버간 timeout)

 

Response Content 

Name

Type

Description

results

List<Result>

아이템 정보 목록

 

Result Content 

Name

Type

Description

messageId

String

messageId

status

Integer

처리 결과 ( 200 성공 )

 

Example Request 

POST /service/v5/message/finish HTTP/1.1
Host: kr-openapi-zinny3.game.kakao.com:10443
Content-Type: application/json;charset=UTF-8
kgAppId: 103815
appSecret: 951b75bf17fe0885ab5106ba2a9f9bc9
playerId: 21792586
Authorization: KakaoAK c0948035a320f789f585acae3dedcd70
   
{
   "messageIds": [
      "6fec1bc2-e3b2-4fd2-a31e-6c192154f61e"
   ]
}

 

Example Response 

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
  
{
            "results": [
                {
                    "messageId": "6fec1bc2-e3b2-4fd2-a31e-6c192154f61e",
                    "status": 200
                }
            ]
}

 


/message/markAsRead

Description 

메시지를 읽음 처리합니다.

아이템 정보 및 상태는 유지되고 메시지만 ‘읽음' 상태로 변경됩니다.

Method

POST

Request Headers 

Name

Type

Mandatory

Description

Content-Type

String

Y

"application/json;charset=UTF-8"

appSecret

String

Y

App Secret

Authorization

String

Y

Authorization: KakaoAK {ADMIN_KEY}

kgAppId

String

Y

KG App Id

playerId

String

Y

User ID issued by the platform (Item sender)

Request Body Parameters

Name

Type

Mandatory

Description

messageIds

List<String>

Y

읽음 처리할 메시지 ID 목록

Response Status Code 

Status Code

Status Code 설명

Status Code 상세 설명

200

정상 응답

정상

400

Bad Request

파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류

401

Unauthenticated

인증되지 않은 요청

406

Not Acceptable

존재하지 않는 메시지

500

Internal Server Error

서버 시스템 내부 오류

503

Service Unavailable

서비스가 가능하지 않은 상태 (예, 내부 서버간 timeout)

 

Example Request

POST /service/v5/message/markAsRead HTTP/1.1
Host: kr-openapi-zinny3.game.kakao.com:10443
Content-Type: application/json;charset=UTF-8
kgAppId: 103815
appSecret: 951b75bf17fe0885ab5106ba2a9f9bc9
playerId: 21792586
Authorization: KakaoAK c0948035a320f789f585acae3dedcd70
  
{
   "messageIds": [
      "3729694e-913b-4b29-94ef-36fd66f44ce8",
      "4234554e-783b-b4g4-3f43-nfc34987fn38"
   ]
}


Example Response 

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
  
{
}


/message/confirmItems

Description 

아이템 지급 완료 후 호출하여 메시지 상태를 변경합니다.

  • 메시지 상태 → “읽음”

  • 미확인 아이템 존재여부 → “없음”

Method

POST

Request Headers 

Name

Type

Mandatory

Description

Content-Type

String

Y

"application/json;charset=UTF-8"

appSecret

String

Y

App Secret

Authorization

String

Y

Authorization: KakaoAK {ADMIN_KEY}

kgAppId

String

Y

KG App Id

playerId

String

Y

User ID issued by the platform (Item sender)

Request Body Parameters

Name

Type

Mandatory

Description

messageIds

List<String>

Y

아이템 지급 완료 처리할 메시지 ID 목록

Response Status Code 

Status Code

Status Code 설명

Status Code 상세 설명

200

정상 응답

정상

400

Bad Request

파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류

401

Unauthenticated

인증되지 않은 요청

406

Not Acceptable

존재하지 않는 메시지

500

Internal Server Error

서버 시스템 내부 오류

503

Service Unavailable

서비스가 가능하지 않은 상태 (예, 내부 서버간 timeout)

 

Example Request

POST /service/v5/message/confirmItems HTTP/1.1
Host: kr-openapi-zinny3.game.kakao.com:10443
Content-Type: application/json;charset=UTF-8
kgAppId: 103815
appSecret: 951b75bf17fe0885ab5106ba2a9f9bc9
playerId: 21792586
Authorization: KakaoAK c0948035a320f789f585acae3dedcd70
  
{
   "messageIds": [
      "3729694e-913b-4b29-94ef-36fd66f44ce8",
      "4234554e-783b-b4g4-3f43-nfc34987fn38"
   ]
}


Example Response 

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
  
{
  "results" : [
    {
      "messageId" : "3729694e-913b-4b29-94ef-36fd66f44ce8",
      "status" : 200
    },
    {
      "messageId" : "4234554e-783b-b4g4-3f43-nfc34987fn38",
      "status" : 200
    }
  ]
}


/message/deleteMessages

Description 

메시지 상태를 ‘삭제완료’ 상태로 변경합니다.

Method

POST

Request Headers 

Name

Type

Mandatory

Description

Content-Type

String

Y

"application/json;charset=UTF-8"

appSecret

String

Y

App Secret

Authorization

String

Y

Authorization: KakaoAK {ADMIN_KEY}

kgAppId

String

Y

KG App Id

playerId

String

Y

User ID issued by the platform (Item sender)

Request Body Parameters

Name

Type

Mandatory

Description

messageIds

List<String>

Y

삭제 처리할 메시지 ID 목록

Response Status Code 

Status Code

Status Code 설명

Status Code 상세 설명

200

정상 응답

정상

400

Bad Request

파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류

401

Unauthenticated

인증되지 않은 요청

406

Not Acceptable

존재하지 않는 메시지

500

Internal Server Error

서버 시스템 내부 오류

503

Service Unavailable

서비스가 가능하지 않은 상태 (예, 내부 서버간 timeout)

 

Example Request

POST /service/v5/message/deleteMessages HTTP/1.1
Host: kr-openapi-zinny3.game.kakao.com:10443
Content-Type: application/json;charset=UTF-8
kgAppId: 103815
appSecret: 951b75bf17fe0885ab5106ba2a9f9bc9
playerId: 21792586
Authorization: KakaoAK c0948035a320f789f585acae3dedcd70
  
{
   "messageIds": [
      "3729694e-913b-4b29-94ef-36fd66f44ce8",
      "4234554e-783b-b4g4-3f43-nfc34987fn38"
   ]
}


Example Response 

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
  
{
}
  • 레이블 없음