KAS Project 생성, 수정, 관리
이 페이지는 Project 생성, Action & Filter 추가, Credential 재발급 방법을 안내합니다. 또한 본 튜토리얼의 대상은 KAS에 가입을 완료한 회원입니다. 아직 KAS에 가입하지 않으셨다면, KAS 가입, 인증, 권한, SDK 설치를 참고하여 가입을 진행해주시기 바랍니다.

Project

개요

Project란 KAS 리소스에 대한 액세스 권한을 안전하게 제어할 수 있는 서비스입니다. Project 생성을 통해 KAS 리소스 접근 및 API 사용을 제어할 수 있습니다.

KAS Credential과의 차이

KAS 계정을 통해 발급받은 API 인증 키는 루트 사용자 자격 증명으로, KAS 서비스 및 리소스에 대한 완전한 접근이 가능합니다. 하지만 Project 서비스를 통해 생성된 Project ID와 Project Key를 사용하면 API의 사용을 제한하고, 구체적인 가용 액션(API) 및 하위 액션을 정의할 수 있습니다.

Project 서비스의 기능

Project 서비스는 다음 기능을 제공합니다.

KAS 계정의 리소스 공유

    루트 사용자의 API 인증 키를 공유하지 않고, KAS 계정의 리소스를 관리하고 사용할 수 있습니다.

가용 액션(API) 및 하위 액션 접근 제어: 필터링

    가용 액션(API) 및 하위 액션 정의(필터링)란 API 호출 접근 제어에 대한 명세를 의미합니다.
    Project를 통해 다음과 같이 가용 액션(API)과 접근 제어를 정의할 수 있습니다.
    1) Origin
      Request Header의 Origin과 Project 생성시 지정한 Origin이 일치하는 경우에만 API 호출 허용
      origin 예: https://www.example.com
    2) User-Agent
      Request Header의 User-Agent와 Project 생성시 지정한 User-Agent가 일치하는 경우에만 API 호출 허용
      지정한 User-Agent 문자열로 시작되는 경우(prefix match)에만 호출 허용
      User-Agent 예: Chrome : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
    3) IP Whitelist
      Client의 IP와 Project 생성시 지정한 IP 값이 일치하는 경우에만 API 호출 허용
    4) KAS Action
      Action : Project 생성시 지정한 API 액션에 대해서만 호출 허용
      SubAction : Project 생성시 지정한 subaction에 대해서만 호출 허용 (Node RPC 메소드와 같이 subaction이 필요한 액션 사용시 작성)
      Filters
        body : Request Body의 내용과 Project 생성시 지정한 Body의 내용이 일치하는 경우에만 API 호출 허용
        query : Request Query의 내용과 Project 생성시 지정한 Query의 내용이 일치하는 경우에만 API 호출 허용
        rlp : Request Body에 적힌 RLP의 내용과 Project 생성시 지정한 RLP의 패턴이 일치하는 경우에만 API 호출 허용

Project 생성하기

Project를 생성하려면 KAS 콘솔에 로그인 후 My Page > Project 메뉴를 클릭합니다.
프로젝트 생성
Project 생성 버튼을 클릭하면 프로젝트 생성시 필요한 기본 정보인 Name, Description, Origins, IP Whitelist, User Agent를 입력하고 생성을 눌러 Project를 생성합니다.
프로젝트 생성-2
프로젝트 생성을 완료하면 Project ID와 Project Key가 생성됩니다. 다운로드 버튼을 눌러 {Project-ID}.json이라는 파일명으로 생성된 인증키를 다운받습니다.
프로젝트 생성후 인증키 다운로드
발급된 Project ID와 Project Key은 최초 생성 시 한 번만 확인할 수 있습니다. 따라서, 최초 생성 시 반드시 Project ID와 Project Key를 안전한 곳에 복사 또는 다운로드해 관리해야 합니다. Project ID와 Project Key는 AccessKey ID와 Secret AccessKey를 인코딩하여 API 호출 시 Basic 인증 방식의 호출 헤더에 사용합니다.
Project를 생성하고 나면 콘솔의 My Page - Project를 선택시 Project 목록에서 생성한 Project ID와 해당 프로젝트에 대한 간략한 정보가 목록에 나타난 것을 확인할 수 있습니다. 추후 프로젝트의 내용을 수정하고 싶을 경우 해당 ID를 클릭하여 Project 상세정보메뉴에서 수정할 수 있습니다.
프로젝트 수정
Project ID와 Projecy Key가 있으면 Project 생성시 지정한 요구 명세를 충족하는 KAS 서비스를 사용할 수 있습니다. KAS/Klaytn 계정 보안을 위해 Project Key를 타인과 함부로 공유하지 말고 주의해 관리하십시오.

Project Action & Filter 추가하기

처음 Project를 생성하고 나면 Action & Filter 정보가 없습니다.
Action & Filter가 설정되지 않은 Project ID와 Key로는 어떠한 KAS의 리소스에도 접근할 수 없습니다. 따라서 클라이언트가 희망하는 Action과 Filter를 추가해야 합니다.
Project 상세정보-Actions & Filters 메뉴에서 Action & Filter 추가 버튼을 클릭합니다.
액션,필터 추가
Action Bar를 클릭하여 추가하고자 하는 KAS Action을 선택합니다.
Sub Action을 추가해야 하는 KAS Action의 경우 동일한 방식으로 추가합니다.
Action 선택
해당 Action의 Body, Query, RLP에 대한 필터가 필요한 경우 Filter의 이름과 Filter의 패턴을 입력후 오른쪽의 추가 버튼을 클릭합니다.
Action Filter 추가
위 예시와 같이 kip17::GetContract의 Query Parameter 중 Size필드를 5로 설정할 경우 해당 Project ID와 Key를 통해 kip17::GetContrac를 호출시 query parameter인 size를 5로 설정한 경우에만 호출이 허용됩니다.
위와 동일한 방식으로, Body의 필드와 패턴, RLP의 필드와 패턴을 설정할 경우, 설정된 요구 명세를 충족한 API 호출에 대해서만 접근을 허용할 수 있습니다.
원하는 Action과 Filter를 모두 입력 후 저장하고 싶다면, 입력을 마친 후 Action & Filter 추가 버튼을 누릅니다.
Action Filter 저장

Project Key 재발급

기존에 생성된 프로젝트의 Key를 재발급 하고 싶을 경우 MyPage > Project 메뉴에서 해당 프로젝트를 선택 후 Project 상세정보에서 "Key 재발급" 버튼을 클릭합니다.
ID&KEY 재발급

필터링 예제

참고 : Project 생성시 필터 이름은 GJSON Path Syntax를 지원합니다.

UserAgent 필터링

User-Agent를 지정하여 프로젝트를 생성할 수 있습니다. User-Agent는 prefix로 검증하며, 조건을 충족한 User-Agent가 헤더에 추가된 API 호출만 허용됩니다.
예: User-Agent를 PostmanRuntime로 설정할 경우:
    PostmanRuntime/7.280 (PASS)
    PostmanRuntim/7.280 (FAIL)
    Postman/7.280 (FAIL)
필요한 경우 프로젝트 상세정보에서 수정할 수 있습니다.
UserAgent 필터링
cURL 예:
1
curl --location --request GET '{{path}}' \
2
--header 'x-chain-id: {{chain-id}}' \
3
--header 'Authorization: Basic = {{your basic authorization}}' \
4
--header 'User-Agent: PostmanRuntime/7.28.0' \
5
...
Copied!

Origin 필터링

Origin을 지정하여 프로젝트를 생성할 수 있습니다. 이후 해당 Origin이 헤더에 추가된 API 호출만 허용됩니다. 입력된 문자열이 정확이 일치해야 하는점 주의하시기 바랍니다.
예: Origin를 https://www.example.com로 설정할 경우:
    https://www.example.com (PASS)
    http://www.example.com (FAIL)
    https://foo.example (FAIL)
필요한 경우 프로젝트 상세정보에서 수정할 수 있습니다.
Origin 필터링
cURL 예:
1
curl --location --request GET '{{path}}' \
2
--header 'x-chain-id: {{chain-id}}' \
3
--header 'Authorization: Basic = {{your basic authorization}}' \
4
--header 'Origin: https://www.example.com' \
5
...
Copied!

IP 필터링

IP를 지정하여 프로젝트를 생성할 수 있습니다. 이후 해당 IP로터 호출된 API 만 허용됩니다. 필요한 경우 프로젝트 상세정보에서 수정할 수 있습니다.
IP 필터링

Body Filtering 1: Node API - CallRPC : 특정 계정에 대한 klay_getBalance 호출만 허용

Node API를 통해 klay_getBalance를 호출할 때는 아래의 매개변수가 필요합니다.
    잔액을 확인할 계정 주소
    Quantity Tag (예: ["latest", "earliest"])
위를 전달하기 위해 params필드 명에 매개변수를 담아 아래와 같은 Body를 준비합니다.
1
{
2
"id": 1,
3
"jsonrpc": "2.0",
4
"method": "klay_getBalance",
5
"params": ["0x60d0902c428D0E197F97a756011Fd4893C1E57B0", "latest"]
6
}
Copied!
특정 계정에 대해 klay_getBalance 호출을 허용하기 위해 우선 프로젝트 목록에서 프로젝트를 선택 후 Actions & Filters 메뉴를 선택합니다.
사진에 보여지는 것처럼 Action에는 node::CallRPC, Sub Action으로 klay_getBalance를 선택 후, Action Filter로 Body type을 선택합니다. 필터 이름은 계정 주소를 params 배열의 0번째 index에 입력하기 때문에 0번째 index를 의미하는 params.0, 패턴으로는 특정 계정 주소를 입력합니다.
Node API 필터링
입력을 마친 후 Action & Filter 추가 버튼을 누릅니다.
이후 해당 Project ID/Key로 API 호출시, 해당 계정 주소에 대한 호출만 허용됩니다.
cURL 예:
1
curl --location --request POST 'https://node-api.klaytnapi.com/v1/klaytn' \
2
--header 'x-chain-id: {{chain-id}}' \
3
--header 'Authorization: Basic {{your authorization}}' \
4
--header 'Content-Type: application/json' \
5
--data-raw '{
6
"id": 1,
7
"jsonrpc": "2.0",
8
"method": "klay_getBalance",
9
"params": ["0x60d0902c428D0E197F97a756011Fd4893C1E57B0", "latest"]
10
}'
Copied!
호출 성공 (params.0에 설정한 주소(0x60d0902c428D0E197F97a756011Fd4893C1E57B0)를 넣은 케이스)
1
//200 response
2
{
3
"jsonrpc": "2.0",
4
"id": 1,
5
"result": "0x4"
6
}
Copied!
호출 실패 (params.00x60d0902c428D0E197F97a756011Fd4893C1E57B0가 아닌 다른 주소를 넣은 케이스)
1
//401 response
2
{
3
"code": 1010040,
4
"message": "your request does not satisfy rules set to the project"
5
}
Copied!

Body Filtering 2: KIP17 API - 특정 어카운트에 대해서만 토큰 발행 허용

KIP17 API를 통해 KIP-17 컨트랙트 토큰 발행를 호출할 때는 아래의 매개변수가 필요합니다.
    Recipient (to): 토큰을 받는 사람의 클레이튼 계정 주소
    Token ID (id): 토큰의 고유번호
    Token URI (uri): 토큰 정보를 담은 JSON 파일의 위치를 URI로 표현한 값
위를 전달하기 위해 아래와 같은 Body를 준비합니다.
1
{
2
"to": "0x837Bbfa5dBCfD781c8EE45970d53F1F1198Bb6Bb",
3
"id": "0x1",
4
"uri": "https://kas-kip17-metadata.klaytnapi.com/e8546c71-2623-170e-fb5c-99c.json"
5
}
Copied!
특정 계정에 대해 토큰 발행을 허용하기 위해 프로젝트 목록에서 프로젝트를 선택 후 Action & Filters 메뉴를 선택합니다.
사진에 보여지는 것처럼 Action으로 kip17::MintToken을 선택합니다. Sub Action이 없는 액션이기 때문에 스킵하고, Action Filter로 Body type을 선택, 필터 이름은 to, 패턴은 희망하는 특정 계정 주소를 입력합니다.
KIP17 토큰 발행 필터링
입력을 마친 후 Action & Filter 추가 버튼을 누릅니다.
이후 해당 Project ID/Key로 API 호출시, 해당 계정 주소에 대한 호출만 허용됩니다.
cURL 예 :
1
curl --location --request POST 'https://kip17-api.klaytnapi.com/v1/contract/{{your contract alias}}/token' \
2
--header 'x-chain-id: {{chain-id}}' \
3
--header 'Authorization: Basic {{your authorization}}' \
4
--header 'Content-Type: application/json' \
5
--data-raw '{
6
"to": "0x837Bbfa5dBCfD781c8EE45970d53F1F1198Bb6Bb",
7
"id": "0x3",
8
"uri": "https://www.example.com"
9
}'
Copied!
호출 성공 (to에 설정한 주소(0x837Bbfa5dBCfD781c8EE45970d53F1F1198Bb6Bb)를 넣은 케이스)
1
//200 response
2
{
3
"status": "Submitted",
4
"transactionHash": "0xd6c256493b89698363f80f080a3d5038d0be7261628175dfd61e056b45a2657b"
5
}
Copied!
호출 실패 (to0x837Bbfa5dBCfD781c8EE45970d53F1F1198Bb6Bb가 아닌 다른 주소를 넣은 케이스)
1
//401 response
2
{
3
"code": 1010040,
4
"message": "your request does not satisfy rules set to the project"
5
}
Copied!

Query Filtering 1: 특정 chain-id 호출만 허용

프로젝트 목록에서 프로젝트를 선택 후 Actions & Filters 메뉴를 선택합니다.
사진에 보여지는 것처럼 Action으로 원하는 액션을 선택합니다 (예: kip17::MintToken)을 선택합니다. Sub Action이 없는 액션이기 때문에 스킵하고, Action Filter로 Query type을 선택, 필터 이름은 chain-id, 패턴은 희망하는 chain-id를 입력합니다. 사용할 수 있는 query type은 해당하는 API Reference를 참고 부탁드립니다.
chain-id 필터링
입력을 마친 후 Action & Filter 추가 버튼을 누릅니다.
이후 해당 Project ID/Key로 API 호출시, 해당 Query Parameter로 해당 chain-id가 입력된 호출만 허용됩니다.
cURL 예 : (KIP17:ListContractsInDeployerPool)
1
curl --location --request GET 'https://kip17-api.klaytnapi.com/v1/contract?chain-id=1001' \
2
--header 'x-chain-id: 1001' \
3
--header 'Authorization: Basic {{your authorization}}'
Copied!
호출 성공 (chain-id가 1001인 케이스)
1
//200 response
2
{
3
"cursor": "",
4
"items": [
5
{
6
"address": "0x8c467e64972627809080646cd6e99e65e97a4b34",
7
"alias": "katelin-ottilie",
8
"chainId": "1001",
9
"name": "ProjectAPIToken2",
10
"symbol": "Jessyca"
11
},
12
{
13
"address": "0x7ebb8374affe6abfd0cff4f1e79a6d2f36d57d9b",
14
"alias": "eldred-william",
15
"chainId": "1001",
16
"name": "ProjectAPIToken2",
17
"symbol": "Logan"
18
}
19
]
20
}
Copied!
호출 실패 (chain-id가 1001이 아닌 케이스)
1
//401 response
2
{
3
"code": 1010040,
4
"message": "your request does not satisfy rules set to the project"
5
}
Copied!

Query Filtering 2: KIP-17 토큰 히스토리 조회시 size=5만 허용

프로젝트 목록에서 프로젝트를 선택 후 Actions & Filters 메뉴를 선택합니다.
사진에 보여지는 것처럼 Action으로 kip17::GetTokenHistory를 선택합니다. Sub Action이 없는 액션이기 때문에 스킵하고, Action Filter로 Query type을 선택, 필터 이름은 size, 패턴은 희망하는 5를 입력합니다.
조회 size 필터링
입력을 마친 후 Action & Filter 추가 버튼을 누릅니다.
이후 해당 Project ID/Key로 API 호출시, 해당 Query Parameter로 size=5로 입력된 호출만 허용됩니다.
cURL 예 :
1
curl --location --request GET 'http://kip17-api.klaytnapi.com/v1/contract/{{your contract alias}}/token/{{your token-id}}/history?size=5' \
2
--header 'x-chain-id: {{x-chain-id}}' \
3
--header 'Authorization: Basic {{your authorization}}'
Copied!
호출 성공 (size가 5인 케이스)
1
//200 response
2
{
3
"cursor": "",
4
"items": [
5
{
6
"from": "0x0000000000000000000000000000000000000000",
7
"timestamp": 1621833241,
8
"to": "0x8abe38707b1ea6cd6a2fda8d710e733a819bcd8d"
9
},
10
{
11
"from": "0x8abe38707b1ea6cd6a2fda8d710e733a819bcd8d",
12
"timestamp": 162183332,
13
"to": "0x3vcdew707b1ea6cd6a2fda8d710e733a819bcd8d"
14
},
15
{
16
"from": "0x3vcdew707b1ea6cd6a2fda8d710e733a819bcd8d",
17
"timestamp": 1621833321,
18
"to": "0x8abe38707b1ea6cd6a2fda8d710e733a819bcd8d"
19
},
20
{
21
"from": "0x3vcdew707b1ea6cd6a2fda8d710e733a819bcd8d",
22
"timestamp": 1621833651,
23
"to": "0x8abe38707b1ea6cd6a2fda8d710e733a819bcd8d"
24
},
25
{
26
"from": "0x3vcdew707b1ea6cd6a2fda8d710e733a819bcd8d",
27
"timestamp": 1621833931,
28
"to": "0x8abe38707b1ea6cd6a2fda8d710e733a819bcd8d"
29
}
30
]
31
}
Copied!
호출 실패 (size가 5가 아닌 다른 값을 넣은 케이스)
1
//401 response
2
{
3
"code": 1010040,
4
"message": "your request does not satisfy rules set to the project"
5
}
Copied!

RLP Filtering: Wallet API 클레이 전송 트랜잭션 from 계정 필터링

프로젝트 목록에서 프로젝트를 선택 후 Actions & Filters 메뉴를 선택합니다.
사진에 보여지는 것처럼 Action으로 wallet:tx:basic-RLPTx를 선택합니다. Sub Action이 없는 액션이기 때문에 스킵하고, Action Filter로 rlp type을 선택, 필터 이름은 {Body에서 rlp 필드 위치(gjson지원)}#rlp#{rlp 인코딩된 body에서의 필드(gjson 지원)}, 패턴으로는 희망하는 계정 주소를 입력합니다.
아래는 from 필드의 계정 주소가 0x59733a0943465fc4f5540b368d92a9d08472e959인 경우만 허용하는 예시입니다.
1
{
2
"from": "0x59733a0943465fc4f5540b368d92a9d08472e959",
3
"gas": 1000000,
4
"gasPrice": "0x5d21dba00",
5
"input": "0x3078313233",
6
"nonce": 2,
7
"signatures": [
8
{
9
"R": "0x76d842c247cc55e3a4becff0f11fc99b14d8730bf24620c33d77819a504166f6",
10
"S": "0x4e1359142cbf87965648d813505d211bd3e6b0b5618f93e1a4e6ed6e8b1af17d",
11
"V": "0x7f5"
12
}
13
],
14
"to": "0x60d0902c428d0e197f97a756011fd4893c1e57b0",
15
"typeInt": 16,
16
"value": "0x121111111111111111"
17
}
Copied!
위의 JSON object를 RLP 인코딩하면 아래의 rlp값을 얻을 수 있습니다.
1
{
2
0x10f88e028505d21dba00830f42409460d0902c428d0e197f97a756011fd4893c1e57b0891211111111111111119459733a0943465fc4f5540b368d92a9d08472e959853078313233f847f8458207f5a076d842c247cc55e3a4becff0f11fc99b14d8730bf24620c33d77819a504166f6a04e1359142cbf87965648d813505d211bd3e6b0b5618f93e1a4e6ed6e8b1af17d
3
}
Copied!
따라서 아래와 같은 Body를 입력해 wallet:tx:basic-RLPTx를 요청할 수 있습니다.
1
{
2
"rlp": "0x10f88e028505d21dba00830f42409460d0902c428d0e197f97a756011fd4893c1e57b0891211111111111111119459733a0943465fc4f5540b368d92a9d08472e959853078313233f847f8458207f5a076d842c247cc55e3a4becff0f11fc99b14d8730bf24620c33d77819a504166f6a04e1359142cbf87965648d813505d211bd3e6b0b5618f93e1a4e6ed6e8b1af17d",
3
"submit": true
4
}
Copied!
아래 사진처럼 Filter 이름은 rlp#rlp#from, 패턴은 0x59733a0943465fc4f5540b368d92a9d08472e959를 입력합니다.
RLP 필터링
입력을 마친 후 Action & Filter 추가 버튼을 누릅니다.
이후 해당 Project ID/Key로 API 호출시, 해당 계정 주소에 대한 호출만 허용됩니다.
cURL 예 :
1
curl --location --request POST 'https://wallet-api.klaytnapi.com/v2/tx/rlp' \
2
--header 'x-chain-id: 1001' \
3
--header 'Authorization: Basic {your authorization}' \
4
--header 'Content-Type: application/json' \
5
--data-raw '{
6
"rlp": "0x10f88e028505d21dba00830f42409460d0902c428d0e197f97a756011fd4893c1e57b0891211111111111111119459733a0943465fc4f5540b368d92a9d08472e959853078313233f847f8458207f5a076d842c247cc55e3a4becff0f11fc99b14d8730bf24620c33d77819a504166f6a04e1359142cbf87965648d813505d211bd3e6b0b5618f93e1a4e6ed6e8b1af17d",
7
"submit": true
8
}'
9
...
Copied!
호출 성공 (from에 설정한 주소(0x59733a0943465fc4f5540b368d92a9d08472e959)를 넣은 케이스)
1
//200 response
2
{
3
"from": "0x59733a0943465fc4f5540b368d92a9d08472e959",
4
"gas": 1000000,
5
"gasPrice": "0x5d21dba00",
6
"input": "0x3078313233",
7
"nonce": 2,
8
"rlp": "0x10f88e028505d21dba00830f42409460d0902c428d0e197f97a756011fd4893c1e57b0891211111111111111119459733a0943465fc4f5540b368d92a9d08472e959853078313233f847f8458207f5a076d842c247cc55e3a4becff0f11fc99b14d8730bf24620c33d77819a504166f6a04e1359142cbf87965648d813505d211bd3e6b0b5618f93e1a4e6ed6e8b1af17d",
9
"signatures": [
10
{
11
"R": "0x76d842c247cc55e3a4becff0f11fc99b14d8730bf24620c33d77819a504166f6",
12
"S": "0x4e1359142cbf87965648d813505d211bd3e6b0b5618f93e1a4e6ed6e8b1af17d",
13
"V": "0x7f5"
14
}
15
],
16
"status": "Submitted",
17
"to": "0x60d0902c428d0e197f97a756011fd4893c1e57b0",
18
"transactionHash": "0x9a36190fa34c2433687db9e3fc9a699cd9c7b3d195a1867ef77c242351789893",
19
"typeInt": 16,
20
"value": "0x121111111111111111"
21
}
Copied!
호출 실패 (from0x59733a0943465fc4f5540b368d92a9d08472e959가 아닌 다른 주소를 넣은 케이스)
1
//401 response
2
{
3
"code": 1010040,
4
"message": "your request does not satisfy rules set to the project"
5
}
Copied!

특정 액션에 대한 호출 모두 허용

필터 없이 특정 액션의 모든 호출을 허용하려면 Sub Action과 Action Filter 칸을 비워두고 등록합니다.
아래 두 가지 케이스를 예로 설명하겠습니다.

특정 액션만 허용

1. Node API의 모든 메서드 호출 허용

발급받은 Project ID/Key를 통해 node::CallRPC액션에 대한 모든 호출을 허용할 수 있습니다.
프로젝트 목록에서 프로젝트를 선택 후 Actions & Filters 메뉴를 선택합니다.
아래 사진에 보이는 것처럼 Action으로는 node::CallRPC를 선택하고, Sub Action과 Action Filter는 비워둡니다.
Node API 필터링 - 1
입력을 마친 후 Action & Filter 추가 버튼을 클릭합니다.
이후 해당 Project ID/Key로 node::CallRPC액션 호출시 모든 요청이 허용됩니다.

2. KIP-17 토큰 발행 모두 허용

발급받은 Project ID/Key를 통해 kip17::MintToken액션에 대한 모든 호출을 허용할 수 있습니다. 우선 프로젝트 목록에서 프로젝트를 선택한 후 Actions & Filters 메뉴를 선택합니다.
아래 사진에 보이는 것처럼 Action으로 kip17::MintToken을 선택합니다. Sub Action이 없는 액션이기 때문에 생략하고, Action Filter도 비워둡니다.
KIP17 토큰 발행 필터링 - 1
입력을 마친 후 Action & Filter 추가 버튼을 클릭합니다.
이후 해당 Project ID/Key로 API 호출 시 모든 요청이 허용됩니다.

특정 액션에 대해 여러 필터 허용

KIP-17 토큰 히스토리 조회 시 특정 개수만 허용

프로젝트는 특정 액션에 대해 복수의 필터를 허용할 수 있습니다. 예를 들어 KIP-17 토큰 히스토리 조회시 size=3size=5두 개의 필터를 적용할 수 있습니다. 프로젝트 목록에서 프로젝트를 선택 후 Actions & Filters 메뉴를 선택합니다.
size=3 허용
아래 사진에 보이는 것처럼 Action으로 kip17::GetTokenHistory를 선택합니다. 해당 액션에는 Sub Action이 없기 때문에 생략하고, Action Filter로 Query type을 선택하여 Filter 이름에는 size, 패턴에는 3을 입력한 후 추가 버튼을 클릭합니다. 입력을 마치면 Action & Filter 추가 버튼을 클릭합니다.
KIP17 토큰 조회 필터링 - 1
size=5 허용
아래 사진에 보여지는 것처럼 kip17:GetTokenHistory에 size=3으로 설정된 액션이 추가된 것을 확인합니다. 추가로 Action으로 kip17::GetTokenHistory를 선택합니다. Action Filter로 Query type을 선택, Filter 이름에는 size, 패턴에는 5를 입력한 후 추가 버튼을 클릭합니다. 입력을 마치면 Action & Filter 추가 버튼을 클릭합니다.
KIP17 토큰 조회 필터링 - 2
주의사항: 한 액션에 동일한 필드명을 가진 필터를 복수 적용하지 마십시오.
아래 사진에 보이는 것처럼 한 개의 kip17::GetTokenHistory 액션에 대해 복수의 size 필터를 추가할 경우, kip17::GetTokenHistory 액션에 대한 모든 호출이 허용되지 않습니다.
KIP17 토큰 조회 필터링 - 3

KAS 액션 정의

Anchor API

도메인 : https://anchor-api.klaytnapi.com
Anchor API에 대한 자세한 설명은 Anchor API Reference를 참고합니다.
액션 ID
API
PATH
설명
anchor:operator:RetrieveOperators
GET
/v1/operator
모든 오퍼레이터 목록 조회
anchor:operator:RetrieveOperator
GET
/v1/operator/:operator-id
특정 오퍼레이터 조회
anchor:block:AnchorBlock
POST
/v1/anchor
앵커링 트랜잭션 생성
anchor:block:RetrieveTxs
GET
/v1/operator/:operator-id/tx
오퍼레이터로 앵커링 트랜잭션 목록 조회
anchor:block:RetrieveTxByHash
GET
/v1/operator/:operator-id/tx/:transaction-hash
트랜잭션 해시로 앵커링 트랜잭션 조회
anchor:block:RetrieveTxByPayload
GET
/v1/operator/:operator-id/payload/:payload-id
페이로드로 앵커링 트랜잭션 조회

Node API

도메인 : https://node-api.klaytnapi.com
Node API에 대한 자세한 설명은 Node API Reference를 참고합니다.
액션 ID
API
PATH
설명
node::CallRPC
POST
/v1/klaytn
JSON RPC 호출
node::GetFtContractMetadata
GET
/v1/metadata/ft/:address
FT 컨트랙트 조회
node::GetNftContractMetadata
GET
/v1/metadata/nft/:address
NFT 컨트랙트 조회
node::GetNftMetadata
GET
/v1/metadata/nft/:address/:id
NFT 조회

Token Hisotry API

도메인 : https://th-api.klaytnapi.com
Token History API에 대한 자세한 설명은 Token History API Reference를 참고합니다.
액션 ID
API
PATH
설명
th:preset-pool:GetTransfersByPresetPools
GET
/v2/transfer
토큰 송/수신 기록 조회
th::GetTransfersByTxHash
GET
/v2/transfer/tx/:txHash
트랜잭션 해시로 토큰 송/수신 기록 조회
th::GetTransfersByAddress
GET
/v2/transfer/account/:address
EOA로 토큰 송/수신 기록 조회
th::GetContractFts
GET
/v2/contract/ft
모든 FT 컨트랙트 정보 목록 조회
th::GetContractFt
GET
/v2/contract/ft/:ftAddress
특정 FT 컨트랙트 정보 조회
th::GetContractNfts
GET
/v2/contract/nft
모든 NFT 컨트랙트 정보 목록 조회
th::GetContractNft
GET
/v2/contract/nft/:nftAddress
특정 NFT 컨트랙트 정보 조회
th::GetContractMts
GET
/v2/contract/mt
모든 MT 컨트랙트 정보 목록 조회
th::GetContractMt
GET
/v2/contract/mt/:mtAddress
특정 MT 컨트랙트 정보 조회
th::GetContractNftTokens
GET
/v2/contract/nft/:nftAddress/token
특정 NFT 컨트랙트의 모든 토큰 정보 조회
th::GetContractNftTokensByOwner
GET
/v2/contract/nft/:nftAddress/owner/:ownerAddress
특정 EOA가 가진 모든 NFT 토큰 정보 조회
th::GetContractNftToken
GET
/v2/contract/nft/:nftAddress/token/:tokenId
특정 NFT 토큰 정보 조회
th::GetContractMtTokens
GET
/v2/contract/mt/:mtAddress/token
특정 MT 컨트랙트의 모든 토큰 정보 조회
th::GetContractMtTokensById
GET
/v2/contract/mt/:mtAddress/token/:tokenId
특정 MT의 모든 소유자 기록 조회
th::GetContractMtTokensByOwner
GET
/v2/contract/mt/:mtAddress/owner/:ownerAddress
특정 EOA가 가진 모든 MT 토큰 정보 조회
th::GetContractMtTokenByOwner
GET
/v2/contract/mt/:mtAddress/owner/:ownerAddress/token/:tokenId
특정 EOA가 가진 MT 토큰 정보 조회 조회
th::GetContractNftTokenHistory
GET
/v2/contract/nft/:nftAddress/token/:tokenId/history
특정 NFT 소유권 변경 기록 조회
th::GetAccountContracts
GET
/v2/account/:address/contract
특정 EOA가 가진 컨트랙트 정보 조회
th::GetAccountTokens
GET
/v2/account/:address/token
특정 EOA가 가진 토큰 정보 조회

Wallet API

도메인 : https://wallet-api.klaytnapi.com
Wallet API에 대한 자세한 설명은 Wallet API Reference를 참고합니다.
액션 ID
API
PATH
설명
wallet::CreateAccount
POST
/v2/account
기본 계정 생성
wallet:account:GetAccounts
GET
/v2/account
계정 목록 조회
wallet:account:GetAccount
GET
/v2/account/:address
계정 조회
wallet:account:DeleteAccount
DELETE
/v2/account/:address
계정 삭제
wallet:account:DisableAccount
PUT
/v2/account/:address/disable
계정 비활성화
wallet:account:EnableAccount
PUT
/v2/account/:address/enable
계정 활성화
wallet:account:SignTx
POST
/v2/account/:address/tx/:tx_id/sign
트랜잭션 사인
wallet:account:UpdateToMultisigAccount
PUT
/v2/account/:address/multisig
Multisig 계정 업데이트
wallet:account:GetAssociatedAccountsWithPubKey
GET
/v2/pubkey/:public_key/account
공개키 연관 계정 조회
wallet:account:CreateFeePayerAccount
POST
/v2/feepayer
대납 계정 생성
wallet:account:GetFeePayerAccounts
GET
/v2/feepayer
대납 계정 목록 조회
wallet:account:GetFeePayerAccount
GET
/v2/feepayer/:address
대납 계정 조회
wallet:account:DeleteFeePayerAccount
DELETE
/v2/feepayer/:address
대납 계정 삭제
wallet:tx:basic-LegacyTx
POST
/v2/tx/legacy
레거시 트랜잭션 발생
wallet:tx:basic-ValueTransferTx
POST
/v2/tx/value
클레이 전송 트랜잭션
wallet:tx:basic-ContractDeployTx
POST
/v2/tx/contract/deploy
컨트랙트 배포 트랜잭션
wallet:tx:basic-ContractExecuteTx
POST
/v2/tx/contract/execute
컨트랙트 배포 트랜잭션
wallet:tx:basic-CancelTx
DELETE
/v2/tx
트랜잭션 취소
wallet:tx:basic-AnchorTx
POST
/v2/tx/anchor
앵커링 트랜잭션
wallet:tx:basic-RLPTx
POST
/v2/tx/rlp
RLP를 이용한 트랜잭션
wallet:tx:basic-UpdateAccountTx
PUT
/v2/tx/account
계정 업데이트 트랜잭션
wallet:tx:GetTxInfo
GET
/v2/tx/:tx_hash
트랜잭션 조회
wallet:tx:ContractCall
POST
/v2/tx/contract/call
컨트랙트 호출
wallet:tx:fd-FDValueTransferTx
POST
/v2/tx/fd/value
글로벌 대납 클레이 전송 트랜잭션
wallet:tx:fd-FDContractDeployTx
POST
/v2/tx/fd/contract/deploy
글로벌 대납 컨트랙트 배포 트랜잭션
wallet:tx:fd-FDContractExecuteTx
POST
/v2/tx/fd/contract/execute
글로벌 대납 컨트랙트 실행 트랜잭션
wallet:tx:fd-FDCancelTx
DELETE
/v2/tx/fd
글로벌 대납 취소 트랜잭션
wallet:tx:fd-FDAnchorTx
POST
/v2/tx/fd/anchor
글로벌 대납 앵커링 트랜잭션
wallet:tx:fd-FDRLPTx
POST
/v2/tx/fd/rlp
글로벌 대납 RLP를 이용한 트랜잭션
wallet:tx:fd-FDUpdateAccountTx
PUT
/v2/tx/fd/account
글로벌 대납 계정 업데이트 트랜잭션
wallet:tx:fduser-UserFDValueTransferTx
POST
/v2/tx/fd-user/value
유저 대납 클레이 전송 트랜잭션
wallet:tx:fduser-UserFDContractDeployTx
POST
/v2/tx/fd-user/contract/deploy
유저 대납 컨트랙트 배포 트랜잭션
wallet:tx:fduser-UserFDContractExecuteTx
POST
/v2/tx/fd-user/contract/execute
유저 대납 컨트랙트 실행 트랜잭션
wallet:tx:fduser-UserFDCancelTx
DELETE
/v2/tx/fd-user
유저 대납 취소 트랜잭션
wallet:tx:fduser-UserFDAnchorTx
POST
/v2/tx/fd-user/anchor
유저 대납 앵커링 트랜잭션
wallet:tx:fduser-UserFDRLPTx
POST
/v2/tx/fd-user/rlp
유저 대납 RLP를 이용한 트랜잭션
wallet:tx:fduser-UserFDUpdateAccountTx
PUT
/v2/tx/fd-user/account
유저 대납 계정 업데이트 트랜잭션
wallet:tx:GetMultisigTxInfo
GET
/v2/multisig/account/:address/tx
보류중인 트랜잭션 조회
wallet:tx:SignMultisigTx
POST
/v2/multisig/account/:address/tx/:tx_id/sign
보류중인 트랙잭션에 서명
wallet:tx:SignMultisigTxBySig
POST
/v2/multisig/tx/:tx_id/sign
준비된 서명 값으로 트랙잭션 서명
wallet:stat:GetAccountCount
GET
/v2/stat/count
사용자의 클레이튼 계정 및 키 보유 개수
wallet:stat:GetAccountCountByKRN
GET
/v2/stat/count/krn
사용자의 특정 계정 저장소 내에 클레이튼 계정 보유 개수
wallet:key:CreateKey
POST
/v2/key
키 생성
wallet:key:GetKey
GET
/v2/key/:key_id
키 조회
wallet:key:DeleteKey
DELETE
/v2/key/:key_id
키 삭제
wallet:key:SignData
POST
/v2/key/:key_id/sign
키를 이용한 데이터 서명
wallet:account:RegisterAccounts
POST
/v2/registration/account
계정 등록

KIP-17 API

도메인 : https://kip17-api.klaytnapi.com
KIP-17 API에 대한 자세한 설명은 KIP-17 API Reference를 참고합니다.
액션 ID
API
PATH
설명
kip17::DeployContract
POST
/v1/contract
KIP-17 컨트랙트 배포
kip17::ListContractsInDeployerPool
GET
/v1/contract
KIP-17 컨트랙트 목록 조회
kip17::GetContract
GET
/v1/contract/:caoa
KIP-17 컨트랙트 정보 조회
kip17::MintToken
POST
/v1/contract/:caoa/token
KIP-17 컨트랙트 토큰 발행
kip17::ListTokensInContract
GET
/v1/contract/:caoa/token
KIP-17 컨트랙트의 토큰 발행 목록 조회
kip17::GetToken
GET
/v1/contract/:caoa/token/:token-id
KIP-17 컨트랙트의 특정 토큰 정보 조회
kip17::TransferToken
POST
/v1/contract/:caoa/token/:token-id
KIP-17 토큰 전송
kip17::BurnToken
DELETE
/v1/contract/:caoa/token/:token-id
KIP-17 토큰 소각
kip17::ApproveToken
POST
/v1/contract/:caoa/approve/:token-id
토큰 전송 승인
kip17::ApproveAll
POST
/v1/contract/:caoa/approveall
모든 토큰 전송 승인
kip17::GetOwnerTokens
GET
/v1/contract/:caoa/owner/:owner
특정 토큰 소유자가 소유한 토큰 목록 조회
kip17::GetTokenHistory
GET
/v1/contract/:caoa/token/:token-id/history
토큰 소유권 변경 기록 조회

KIP-7 API

도메인 : https://kip7-api.klaytnapi.com
KIP-7 API에 대한 자세한 설명은 KIP-7 API Reference를 참고합니다.
액션 ID
API
PATH
설명
kip7::ListContractsInDeployerPool
GET
/v1/contract
KIP-7 컨트랙트 목록 조회
kip7::DeployContract
POST
/v1/contract
KIP-7 컨트랙트 배포
kip7::GetContract
GET
/v1/contract/:caoa
KIP-7 컨트랙트 정보 조회
kip7::PauseContract
POST
/v1/contract/:caoa/pause
KIP-7 컨트랙트 정지
kip7::UnpauseContract
POST
/v1/contract/:caoa/unpause
KIP-7 컨트랙트 재개
kip7::MintToken
POST
/v1/contract/:caoa/mint
KIP-7 토큰 생성
kip7::TransferToken
POST
/v1/contract/:caoa/transfer
KIP-7 토큰 전송
kip7::TransferFromToken
POST
/v1/contract/:caoa/transfer-from
KIP-7 토큰 대리 전송
kip7::GetTokenBalance
GET
/v1/contract/:caoa/account/:owner/balance
KIP-7 토큰 잔액 조회
kip7::ApproveToken
POST
/v1/contract/:caoa/approve
토큰 전송 승인
kip7::GetAllowanceToken
GET
/v1/contract/:caoa/account/:owner/allowance/:spender
KIP-7 승인된 토큰 수량 조회
kip7::BurnToken
DELETE
/v1/contract/:caoa/burn
KIP-7 토큰 소각
kip7::BurnFromToken
DELETE
/v1/contract/:caoa/burn-from
KIP-7 승인된 토큰 소각
kip7::GetDefaultDeployer
GET
/v1/deployer/default
컨트랙트 배포 기본 계정 조회

KIP-37 API

도메인: https://kip37-api.klaytnapi.com
KIP-37 API에 대한 자세한 설명은 KIP-37 API Reference를 참고하세요.
액션 ID
API
PATH
설명
kip37:externalApi:HandleGetContracts
GET
/v1/contract
KIP-37 컨트랙트 목록 조회
kip37:externalApi:HandleDeployContract
POST
/v1/contract
KIP-37 컨트랙트 배포
kip37:externalApi:HandleImportContract
POST
/v1/contract/import
KIP-37 컨트랙트 Import
kip37:externalApi:HandleGetContract
GET
/v1/contract/:caoa
KIP-37 컨트랙트 정보 조회
kip37:externalApi:HandleUpdateContract
PUT
/v1/contract/:caoa
KIP-37 컨트랙트 정보 수정
kip37:externalApi:HandleApproveAll
POST
/v1/contract/:contract-address-or-alias/approveall
KIP-37 컨트랙트 모든 토큰 전송 승인
kip37:externalApi:HandlePauseContract
POST
/v1/contract/:contract-address-or-alias/pause
KIP-37 컨트랙트 정지
kip37:externalApi:HandleUnpauseContract
POST
/v1/contract/:contract-address-or-alias/unpause
KIP-37 컨트랙트 재개
kip37:externalApi:HandleCreateToken
POST
/v1/contract/:contract-address-or-alias/token
KIP-37 토큰 생성
kip37:externalApi:HandleGetTokens
GET
/v1/contract/:contract-address-or-alias/token
KIP-37 토큰 목록 조회
kip37:externalApi:HandleMintTokens
POST
/v1/contract/:contract-address-or-alias/token/mint
KIP-37 토큰 추가 발행
kip37:externalApi:HandleTransferTokens
POST
/v1/contract/:contract-address-or-alias/token/transfer
KIP-37 토큰 전송
kip37:externalApi:HandleBurnTokens
DELETE
/v1/contract/:contract-address-or-alias/token
KIP-37 토큰 소각
kip37:externalApi:HandlePauseToken
POST
/v1/contract/:contract-address-or-alias/token/pause/:token-id
KIP-37 토큰 정지
kip37:externalApi:HandleUnpauseToken
POST
/v1/contract/:contract-address-or-alias/token/unpause/:token-id
KIP-37 토큰 재개
kip37:externalApi:HandleGetTokenOwnershipsByOwner
GET
/v1/contract/:contract-address-or-alias/owner/:owner-address/token
KIP-37 특정 계정이 소유한 토큰 목록 조회
kip37:externalApi:HandleGetDefaultDeployer
GET
/v1/deployer/default
컨트랙트 배포 기본 계정 조회

Metadata API

도메인: https://metadata-api.klaytnapi.com
Metadata API에 대한 자세한 설명은 Metadata API Reference를 참고하세요.
액션 ID
API
PATH
설명
metadata:externalApi:UploadMetadata
POST
/v1/metadata
메타데이터 업로드
metadata:externalApi:UploadAsset
POST
/v1/metadata/asset
에셋 업로드
Last modified 2mo ago