Basics
이 페이지에서는 Klip Partners API와 App2App API의 사용자 인증, 페이지네이션, 리턴 코드, 약어 등을 설명합니다.
Klip Partners API
Authentication
Klip Partners API를 사용하기 위해서는 JWT 기반 액세스 토큰 발급이 필요합니다. Klip Partners 회원 가입 시 등록한 로그인 ID와 비밀번호를 통해서 토큰을 발급 받을 수 있습니다. 발급된 토큰은 24시간 동안 유효하며 보통 만료 전에 재발급이 필요합니다. 발급된 토큰은 API 요청 헤더의 Authorization 필드에 토큰을 포함하는 방식으로 사용합니다.
Pagination
보유 카드 내역을 조회할 때 카드의 양의 많은 경우 한 번에 받으면 양이 많기 때문에 여러번 요청해야할 수 있습니다. 이를 위해서 조회 API에서는 결과값에 next_cursor를 함께 제공합니다. 일반적으로 카드 개수가 100개를 초과한다면 1번 호출 시 100개의 결과와 next_cursor 값을 받습니다. 나머지 카드를 조회하려면 next_cursor 값을 query 파라미터 cursor에 전달하여 API를 다시 호출해야합니다.
예들 들어 보유하고 있는 카드를 조회하면,
아래와 같은 형태의 응답을 받습니다.
남은 카드 목록을 조회하려면 next_cursor을 이용하여 아래와 같이 다시 호출합니다. next_cursor가 비어있을 때까지 계속 호출하여 보유한 전체 카드 목록을 얻을 수 있습니다.
Success Codes/Error Codes
요청이 성공하면 HTTP code 200을 받습니다. 만약 요청이 정상 처리되지 않으면 400, 401, 500의 HTTP code가 전달됩니다. 400은 요청이 잘못된 경우, 401은 유효하지 않은 액세스 토큰을 사용했을 때 리턴됩니다. 500은 서버에 알 수 없는 장애가 발생했을 때 리턴됩니다. 400 또는 401 에러는 구체적인 에러 코드와 메시지가 함께 전달됩니다.
에러 메시지는 JSON 포맷으로 전달되며 필드는 아래와 같습니다.
에러 메시지 종류는 아래와 같습니다.
Status Code | Error Code | Error Message |
---|---|---|
400 | 400 | bad request |
400 | 410 | invalid birth for account creation |
400 | 411 | teenagers under the age of 19 are not allowed to sign up |
400 | 412 | already existing account (wallet) |
400 | 413 | already existing email |
400 | 414 | already existing account without wallet |
400 | 4111 | receiver is already an user of klip |
400 | 4112 | sender daily limit exceeded |
400 | 4113 | sender already sent invite message to receiver |
400 | 4114 | receiver daily limit exceeded |
400 | 4115 | receiver monthly limit exceeded |
400 | 4070 | send token count daily limit exceeded |
400 | 4071 | send token amount onetime limit exceeded |
400 | 4072 | send token amount decimal places exceeded |
400 | 4080 | mint count monthly limit exceeded |
401 | 420 | inactive accounts require new pin code settings |
401 | 421 | suspended accounts cannot login |
401 | 422 | the account requesting the suspension |
401 | 423 | the account has been unsubscribed |
401 | 424 | undefined status |
401 | 425 | not yet approved |
401 | 440 | content is not active |
401 | 402 | invalid session |
400 | 403 | exceed pin code error count |
404 | 404 | not Found |
401 | 405 | attempted access from non-kakako app |
401 | 406 | not found user info in db |
401 | 4001 | invalid access token |
401 | 4002 | the expired token |
401 | 4003 | fail to get authorization in header |
401 | 4004 | invalid password |
401 | 4005 | account does not have a contract address |
401 | 4006 | invalid pin code |
400 | 4007 | not allow the same code as before |
400 | 430 | duplicated ci for account creation |
400 | 431 | inconsistency with previous ci |
400 | 432 | fail to check Kakao ci |
400 | 433 | fail to check Kakao legal name |
400 | 434 | fail to check Kakao phone number |
400 | 435 | kakao ci is empty |
500 | 500 | internal server error |
500 | 501 | fail to send kakao message |
500 | 5002 | fail to call kakao unlink |
401 | 4044 | access token does not exist |
500 | 5003 | kakao server error |
Glossary
용어 | 설명 |
---|---|
Klaytn | |
스마트 컨트랙트 | Klaytn 블록체인의 특정 주소(Contract Address)에 있는 코드(functions)와 데이터 (state)의 모음 |
KLAY | Klaytn 내부에서 통용되는 가상 자산이며 Klaytn에 트랜잭션을 전송할 때 필요한 트랜잭션 수수료를 지불하는데 사용 |
FT | 대체 가능 표준 토큰(Fungible Token) 또는 토큰, KIP-7 참조 |
NFT | 대체 불가 표준 토큰(Non-fungible Token) 또는 카드, KIP-17 참조 |
카드 | Klip에서 사용되는 디지털 자산으로 NFT를 의미 |
계정 | Klaytn에서 가상 자산을 보유하는 주체인 동시에 다양한 종류의 트랜잭션을 Klaytn에 전송하는 주체(Account). |
트랜잭션 전송 | 블록체인의 상태를 "변화"시키는 행위이며 주로 블록체인에 데이터를 업로드, 수정, 삭제하거나 블록체인에 스마트 컨트랙트를 배포, 실행하는 행위를 의미 |
EOA | Klaytn의 외부 소유 계정(Externally Owned Account)이며 Klaytn 상에서 KLAY, NFT, FT을 소유하고 트랜잭션을 전송하는 주체. Klaytn의 Account 참조 |
서명 | Klaytn에서 실행되는 트랜잭션이 전송자 본인에 의해 생성되었다는 것을 증명하기 위한 정보를 생성하는 행위 |
계정 키 | 서명에 사용하는 계정의 키(AccountKey). 계정 키로 트랜잭션에 서명해야 서명이 정상적으로 완료됨. |
App2App API
Authentication
App2App API는 기본적으로 인증을 필요로 하지 않습니다. 하지만 BApp 별로 요청을 구분하기 위해서 request key를 발급하여 API 요청 시 사용합니다. 해당 key를 통해서 Klip 서버에서 요청 내용을 구분하여 컨텍스트를 유지하여 처리합니다. 일반적으로 request key를 발급받고 사용하는 절차는 아래와 같습니다.
prepare API를 통해 인증 또는 서명할 내용을 전달하고 응답으로 request key를 전달 받습니다.
전달받은 request key를 이용하여 Deep Link(지정된 앱을 자동으로 실행하고 홈페이지가 아닌 특정 페이지로 가기 위한 URI)를 호출하고, 모바일 카카오톡 더보기탭에 있는 Klip을 실행합니다.
처리 결과는 result API를 통해서 polling하고 이 때 Query 파라미터 request_key에 어떤 요청에 대한 처리 결과를 얻고자 하는지를 전달합니다.
Pagination
보유 카드 내역을 조회할 때 카드의 양의 많은 경우 한 번에 받으면 양이 많기 때문에 여러번 요청해야할 수 있습니다. 이를 위해서 조회 API에서는 결과값에 next_cursor를 함께 제공합니다. 일반적으로 카드 개수가 100개를 초과한다면 1번 호출 시 100개의 결과와 next_cursor 값을 받습니다. 나머지 카드를 조회하려면 next_cursor 값을 query 파라미터 cursor에 전달하여 API를 다시 호출해야합니다.
예들 들어 보유하고 있는 카드를 조회하면,
아래와 같은 형태의 응답을 받습니다.
남은 카드 목록을 조회하려면 next_cursor을 이용하여 아래와 같이 다시 호출합니다. next_cursor가 비어있을 때까지 계속 호출하여 보유한 전체 카드 목록을 얻을 수 있습니다.
SDK
App2App API 기본적으로 REST API를 제공하지만, 각 BApp 개발환경에 맞게 사용할 수 있는 SDK를 제공합니다. 현재 지원하는 SDK 종류는 Android, iOS, 모바일 웹용 JavaScript입니다. 구체적인 내용은 SDK 페이지를 참조하십시오.
Success Codes/Error Codes
요청이 성공하면 HTTP code 200을 받습니다. 만약 요청이 정상 처리되지 않으면 400, 500의 HTTP code가 전달됩니다. 400은 요청 데이터가 잘못됐거나 유효하지 않은 request_key를 사용했을 때 리턴됩니다. 500은 서버에 알 수 없는 장애가 발생했을 때 리턴됩니다. 400 에러는 구체적인 에러 코드와 메시지가 함께 전달됩니다. 자세한 내용은 각 API를 참조하십시오.
에러 메시지는 JSON 포맷으로 전달되며 필드는 아래와 같습니다.
이와 별개로 카드 조회 API (/v2/a2a/cards)는 request key과 관련이 없기 때문에 아래와 같은 형태로 에러가 전달됩니다.
에러 메시지 종류는 아래와 같습니다.
Status Code | Error Code | Error Message |
---|---|---|
400 | 400 | bad request |
400 | 6000 | request key does not exist |
400 | 6001 | request key is expired |
400 | 6010 | invalid request type |
400 | 6011 | invalid request status |
400 | 6200 | execute contract count daily limit exceeded |
400 | 6401 | bapp name is required |
400 | 6402 | invalid transaction |
400 | 6403 | invalid to address |
400 | 6404 | invalid amount |
400 | 6405 | invalid contract |
400 | 6406 | invalid card id |
400 | 6407 | invalid abi |
400 | 6408 | invalid params |
400 | 6409 | invalid value |
400 | 6410 | unknown request type |
400 | 6411 | invalid from address |
400 | 6412 | insufficient funds |
400 | 6414 | { tx revert reason } |
400 | 6416 | kas_authorization_key cannot be used with this request |
400 | 6417 | the request is not supported with this chain |
400 | 6418 | invalid kas_authorization_key |
400 | 6500 | address is on the blacklist |
400 | 6501 | invalid user status |
500 | 500 | internal server error |
Glossary
Term | Description |
---|---|
Deep link | 웹이나 앱에서 홈페이지가 아닌 특정 페이지로 가기위한 URI (Query 파라미터를 통해 요청할 작업을 구분하기 위한 용도로 사용) |
Request key | App2App API 요청을 구분하기 위한 랜덤하게 생성된 |
이 문서 혹은 Klip에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.
Last updated