Basics
이 페이지에서는 Klip Partners API와 App2App API의 사용자 인증, 페이지네이션, 리턴 코드, 약어 등을 설명합니다.
Klip Partners API
Klip Partners 웹사이트는 허가된 사용자만 접근 가능하나, Klip Partners 서비스가 2024년 7월 31일자로 종료되어 현재는 신규 가입 신청을 받지 않고 있습니다. 아울러 기존 사용자 역시 2024년 8월 1일부터 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 포맷으로 전달되며 필드는 아래와 같습니다.
에러 메시지 종류는 아래와 같습니다.
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
banned accounts cannot login
401
422
suspended accounts cannot login
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
Kaia
스마트 컨트랙트
블록체인의 특정 주소(Contract Address)에 있는 코드(functions)와 데이터(state)의 모음
KAIA
Kaia 내부에서 통용되는 기본 가상 자산으로 Kaia에 트랜잭션을 전송할 때 필요한 트랜잭션 수수료를 지불하는데 사용. 기존에는 KLAY 명칭으로 사용됨
FT
NFT
카드
Klip에서 사용되는 디지털 자산으로 NFT를 의미
계정
블록체인에서 가상 자산을 보유하는 주체인 동시에 다양한 종류의 트랜잭션을 블록체인 네트워크에 전송하는 주체 (Account)
트랜잭션 전송
블록체인의 상태를 "변화"시키는 행위이며 주로 블록체인에 데이터를 업로드, 수정, 삭제하거나 블록체인에 스마트 컨트랙트를 배포, 실행하는 행위를 의미
EOA
서명
Kaia에서 실행되는 트랜잭션이 전송자 본인에 의해 생성되었다는 것을 증명하기 위한 정보를 생성하는 행위
계정 키
서명에 사용하는 계정의 키(AccountKey). 계정 키로 트랜잭션에 서명해야 서명이 정상적으로 완료됨.
App2App API
Authentication
App2App API는 기본적으로 인증을 필요로 하지 않습니다. 하지만 BApp 별로 요청을 구분하기 위해서 request key를 발급하여 API 요청 시 사용합니다. 해당 key를 통해서 Klip 서버에서 요청 내용을 구분하여 컨텍스트를 유지하여 처리합니다. 일반적으로 request key를 발급받고 사용하는 절차는 아래와 같습니다.
prepare API를 통해 인증 또는 서명할 내용을 전달하고 응답으로 request key를 전달 받습니다.
전달받은 request key를 이용하여 Deep Link(지정된 앱을 자동으로 실행하고 홈페이지가 아닌 특정 페이지로 가기 위한 URI)를 호출합니다. Klip 앱이 설치된 경우에는 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와 관련이 없기 때문에 아래와 같은 형태로 에러가 전달됩니다.
에러 메시지 종류는 아래와 같습니다.
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 or
{ ivalid params detail info }
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
Deep link
웹이나 앱에서 홈페이지가 아닌 특정 페이지로 가기위한 URI (Query 파라미터를 통해 요청할 작업을 구분하기 위한 용도로 사용)
Request key
App2App API 요청을 구분하기 위한 랜덤하게 생성된 a0fee72d-3b1b-43a3-ae0d-e277a1001bef
형태의 문자열
이 문서 혹은 Klip에 관한 문의는 개발자 포럼을 방문해 도움을 받으십시오.
Last updated