연동가이드 >/wiki/spaces/KS4GFP/pages/533463104연동가이드 >https://kakaogames.atlassian.net/wiki/x/TA8GLw
목차 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
...
/message/send
Description
메시지 배송 서버로 다른 유저에게 메시지를 전달 요청합니다.
messageBoxId로 발송 대상 그룹을 지정하여 발송하게 됩니다. messageBox는 어드민 툴을 통해서 사전에 등록되어야합니다.
메시지 발송시에 아이템 목록을 첨부할 수 있습니다. 첨부할 아이템은 발송 전에 어드민 툴을 통해서 아이템 정보가 등록되어 있어야합니다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 | 플랫폼에서 발급한 사용자 ID (아이템 발신자User ID issued by the platform (Item sender) |
Request Body Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
senderAppId | String | N | 발신자 Sender App ID (빈 값인 경우 appId로 설정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.
| |
messageBoxId | String | N | 우편함 고유 아이디
| Unique mailbox ID.
|
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 | 메시지를 표현할때 필요한 데이터 값 제한 사항 1차원Data values required to display the message Limitations
| |
expiryTime | Long | N | 만료시각. 지정될 경우, 실제적으로 수령인이 처리할 시간이 필요하기 때문에 등록시점보다 최소 10초 이후의 시각이어야 합니다. expiry time 설정시 message box 설정값을 넘을 수 없습니다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파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류 | Unparsable request data, missing required parameters, or parameter type error |
401 | Unauthenticated인증 | 실패Authentication failed |
406 | Not Acceptable | 처리 불가Cannot process |
461 | Invalid Message Box | messageBoxId로 요청된 메시지 박스가 존재하지 않음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 | 전달되는 메시지의 messageIdThe messageId of the delivered message |
Example Request
|
Example Response
|
...
/message/getList
Description
메시지 배송 서버로 전달된 메시지 목록을 조회합니다.
조회된 목록은 시간 역순으로 가장 최신 메시지가 첫페이지로 조회 됩니다. 최대 100개 씩 페이징 처리되어 조회할 수 있습니다.
응답값에 nextPageKey 값이 -1이 아니면 해당 키를 이용해서 다음 페이지 조회가 가능합니다.
메시지에는 복수개의 첨부아이템 목록이 존재합니다.
첨부된 아이템은 /message/claim 후에 게임에 아이템 적용후 /message/finish 를 호출하여 처리합니다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우편함 | 아이디 |
count | Integer | Y | 조회할 메시지 개수 (최대 100씩Number of messages to retrieve (maximum 100) |
nextPageKey | Long | N | 조회할 페이지의 시작 offset null 입력시 첫페이지를 요청함 Long Max (9223372036854775807) 값을 입력해도 동일한 첫페이지를 요청함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미 입력시 unread, read 상태의 메시지목록이 반환됨. 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 | 파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류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 이면 더이상 데이터가 없음 Next page key to be used for the next page request.
|
messages | List<MessagePacket>메시지 | 목록Message list |
maxCount | Integer최대 보유 가능 메시지 개수 |
|
totalCount | Integer | 현재 메시지 개수 (전체 페이지Current number of messages (total pages) |
MessagePacket
Name | Type | Description |
---|---|---|
message | Message메시지 | 데이터Message data |
items | List<Item>첨부 아이템 목록 | List of attached items |
existUnconfirmedItems | Boolean미확인 아이템 존재 여부 | Whether there are unconfirmed items |
Message
Name | Type | Description |
---|---|---|
deliverySeq | Long메시지 고유번호 | Unique message number |
messageId | String | 메시지 Message ID |
messageBoxId | String | 우편함 Mailbox ID |
senderAppId | String | 발신자 Sender App ID |
senderId | String | 발신자 Sender ID |
receiverAppId | String | 수신자 Receiver App ID |
receiverId | String | 수신자 Receiver ID |
title | String | 제목Title |
body | String | 본문Body |
resourceMap | Map메시지를 표현할때 필요한 데이터 값 | Data values required to represent the message |
state | String메시지 상태 값 | Message state value unread, read, error, deleted, expired |
regTime | Long등록 | 시각Registration time |
modTime | Long최종 수정 시각 | Last modification time |
readTime | Long | 확인 처리 시각 (읽음 처리Confirmation processing time (read processing) |
expiredTime | Long만료시각 | Expiration time |
Item
Name | Type | Description |
---|---|---|
itemId | String | 아이템 고유 Unique item ID |
itemCode | String아이템 | 코드Item code |
itemName | String아이템 | 명Item name |
quantity | Long아이템 | 수량Item quantity |
state | String처리 상태값 | Processing state value registered, sent, confirmed, error, deleted, expired |
sentCount | Integer 아이템 클레임 처리 횟수 2회 이상 클레임 처리 시 이상 동작으로 간주합니다 | Number of times the item claim has been processed.
|
validityTime | Long아이템 유효시간 | Item validity time |
regTime | Long등록 | 시각Registration time |
modTime | Long최종 수정 시각 | Last modification time |
sentTime | Long | requestItem 요청 시각Time when the requestItem was sent |
confirmedTime | Long확인 처리 시각 | Confirmation processing time |
expiredTime | Long만료시각 | Expiration time |
Example Request
|
...
|
...
/message/claimItems
Description
메시지에 포함된 아이템들의 수령 요청을 플랫폼 서버에 알립니다.
위 API 호출시 지급할 아이템 목록을 반환하고 ‘지급중(발송처리중)’ 상태로 변경 되며 처리가 완료된 이후 /message/finish 를 호출해야 지급완료 상태가 되어 트랜잭션이 종료 됩니다.
만약 /message/finish를 호출하지 않으면 처리가 완료되지 않은 것으로 간주되어 동일한 요청이 들어오면 이전과 같은 목록을 반환합니다.
위 API로 동일한 messageId에 대해서 2회 이상 호출 시 에러 처리 되며 지급 처리 목록에서 제외됩니다.
이미 finish까지 처리된 messageId에 대해서는 해당 result의 status 값이 406으로 에러 처리됩니다.
finish 처리가 끝나기전에 동일한 messageId로 20초 이내에 다시 claimItems 를 호출시에도 406 에러처리가 됩니다. Notifies the platform server to request the receipt of items included in the message.
When this API is called, the list of items to be delivered is returned, and the status is changed to 'In Delivery (Processing Delivery)'. After the process is completed, you must call /message/finish to set the status to completed, thereby concluding the transaction.
If /message/finish is not called, the process is considered incomplete, and if the same request is received again, the same list as before will be returned.
If the same messageId is called more than once through this API, it will be handled as an error and excluded from the delivery processing list.
If the messageId has already been processed through finish, the status value of the result will be handled as an error with a status of 406.
If claimItems is called again within 20 seconds with the same messageId before finish processing is completed, it will also be handled as a 406 error.
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 목록 | List of message IDs for which to claim items |
Response Status Code
Status Code | Status Code 설명Description | Status Code 상세 설명Detailed Description |
---|---|---|
200정상 | 응답Normal Response | 정상Normal |
400 | Bad Request | 파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류Unparsable request data. Lack of required parameters or parameter type error. |
401 | Unauthenticated인증되지 | 않은 요청Unauthenticated request |
406 | Not Acceptable존재하지 않는 메시지 | Non-existent message |
500 | Internal Server Error서버 | 시스템 내부 오류Internal server system error |
503 | Service Unavailable | 서비스가 가능하지 않은 상태 (예, 내부 서버간 Service is unavailable (e.g., internal server timeout) |
Response Content
Name | Type | Description |
---|---|---|
results | List<Result>아이템 정보 목록 |
|
Result Content
Name | Type | Description |
---|---|---|
messageId | String | messageId |
status | Integer 아이템 클레임 처리 상태 코드 | 정상 처리 Item claim processing status code
|
receiverId | String | 수신자 Receiver ID |
senderId | String | 발신자 Sender ID |
resourceMap | Map<String, String>메시지 표현 시 필요한 값 | Values required to represent the message |
items | List<Item>아이템 정보 목록 | List of item information |
Item
Name | Type | Description |
---|---|---|
appId | String | App ID |
itemCode | String아이템 | 코드Item code |
quantity | Long아이템 | 수량Item quantity |
itemId | String | 아이템 고유 Unique item ID |
validityTime | Long 유효기한 | 메시지 전송 시점에 해당필드가 비어있으면 -1로 기록 (예: 프로모션 통해서 아이템 전송받은 경우) Validity period.
|
senderId | String | 발신자 Sender ID |
Example Request
|
...
|
...
/message
...
Description
/message/claim 이후에 게임서버에서 게임 지급이 정상적으로 처리된 후에 호출합니다.
...
/finish
Description
Called after the game server has successfully processed the item delivery following the /message/claim.
It finalizes the transaction for the delivery of items included in the message (item delivery completion) and deletes the message.
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 목록 | List of message IDs to be marked as completed |
Response Status Code
Status Code | Status Code 설명Description | Status Code 상세 설명Detailed Description |
---|---|---|
200정상 | 응답Normal Response | 정상Normal |
400 | Bad Request | 파싱되지 않는 요청 데이터. 필수 파라미터 부족 or 파라미터 타입 오류Unparsable request data. Lack of required parameters or parameter type error. |
401 | Unauthenticated인증되지 | 않은 요청Unauthenticated request |
406 | Not Acceptable존재하지 않는 메시지 | Non-existent message |
500 | Internal Server Error서버 | 시스템 내부 오류Internal server system error |
503 | Service Unavailable | 서비스가 가능하지 않은 상태 (예, 내부 서버간 Service is unavailable (e.g., internal server timeout) |
Response Content
Name | Type | Description |
---|---|---|
results | List<Result>아이템 정보 목록 | List of item information |
Result Content
Name | Type | Description |
---|---|---|
messageId | String | messageId |
status | Integer | 처리 결과 Processing result (200 성공 success) |
Example Request
|
...
코드 블럭 |
---|
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 { "results": [ { "messageId": "6fec1bc2-e3b2-4fd2-a31e-6c192154f61e", "status": 200 } ] } |
...
/message/markAsRead
Description
메시지를 읽음 처리합니다.
아이템 정보 및 상태는 유지되고 메시지만 ‘읽음' 상태로 변경됩니다Marks the message as read.
The item information and status are retained, but the message is changed to a 'read' state.
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 목록 | List of message IDs to be marked as read |
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 message | |
500 | Internal Server Error |
Internal server system error | |
503 | Service Unavailable |
Service is unavailable (e.g., internal server timeout) |
Example Request
|
Example Response
|
...
/message/confirmItems
Description
아이템 지급 완료 후 호출하여 메시지 상태를 변경합니다.
...
메시지 상태 → “읽음”
...
After the item delivery is completed, this call changes the message status.
Message Status → "Read"
Existence of Unconfirmed Items → "None"
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 목록 | List of message IDs to be processed for item delivery completion |
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 message | |
500 | Internal Server Error |
Internal server system error | |
503 | Service Unavailable |
Service is unavailable (e.g., internal server timeout) |
Example Request
|
Example Response
|
...
/message/deleteMessages
Description
메시지 상태를 ‘삭제완료’ 상태로 변경합니다Changes the message status to 'Deleted'.
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 목록 | Y | List of message IDs to be processed for deletion |
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 message | |
500 | Internal Server Error |
Internal server system error | |
503 | Service Unavailable |
Service is unavailable (e.g., internal server timeout) |
Example Request
|
Example Response
|