NFT API
NFT (Non-Fungible Token) API에 대한 소개 페이지입니다.
NFT API 소개
ChainZ API Service의 NFT API는 ERC721 토큰 기반의 Collection 및 NFT 를 발행하고 관리 할 수 있게 해줍니다.
Collection 의 생성, 조회, NFT 에 올릴 Contents 의 업로드 및 NFT 발행 기능을 제공 합니다.
NFT API 사용
NFT API 가 제공하는 "사용자 계정 신규 생성 API" 를 이용하여, 사용자의 Address 를 생성하고, 이 Address 에 NFT 를 발행 합니다. 각 NFT 는 Collection 별로 구분 될 수 있으며, 만약, Collection이 없다면, 먼저 Collection 을 생성해야합니다.
공통 설정
ChainZ Account API URL: https://nft-api.chainz.biz
공통 HTTP Request
API 를 접근하기 위한, 엑세스 토큰과 API 키를 항상 HTTP Header 에 넣어 주어야 합니다.
curl -X POST \
"https://{NFT API Url}" \
-H "accept: application/json" \
-H "Authorization: Bearer {엑세스 토큰}" \
-H "x-api-key: {API 키}" \
-H 'Content-Type: application/json' \
-d '{Json Body}'
1. Collection 생성
여러 Collection 을 생성할 수 있으며, 적어도 하나의 Collection 은 만들어야 합니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/collections
Request
{
"chainId": <테스트넷 chain id:2021>,
"name": <Collection 이름>,
"symbol": <Collection 심볼>,
"defaultMinteeAddr": <NFT 발행시 최초 소유 계정주소>
"description": <콜렉션 설명>,
"callbackUrl": <Callback 받을 주소>
}
Response
{
"taskId": <Callback 으로 전달하는 결과와 함께 전달되는 ID>
}
Callback
{
"result" : {
"state" : "SUCCESS" // 결과
},
"taskId" : <TASK ID>,
"collectionId" : <생성된 Collection ID>,
"contractAddr" : <생성된 Collection 의 SmartContract 주소>,
"adminAddr" : <Collection을 생성한 Admin Address>
}
2. 사용자 등록
사용자에게 NFT 를 발행하기 위해, 사용자를 등록합니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/accounts
Request
{
"extUserId": <사용자를 구분할 수 있는 ID>,
"chainId": <테스트넷 chain id:2021>
}
Response
{
"extUserId": <사용자를 구분할 수 있는 ID>,
"chainId": <테스트넷 chain id:2021>,
"address": <생성된 Address>
}
3. Digital Contents 업로드
NFT에 담고자 하는 Digital Contents 를 먼저 업로드 합니다. 해당 자료가 NFT화 되거나, 생성한지 오래 되면, 자동으로 삭제 됩니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/content
Content-Type : multipart/form-data;
Request Parameter
file : Digital Contents 파일
Response
{
"id": <Contents ID>,
"fileName": <File 이름>,
"contentType": <File 의 Type>,
"url": <임시 URL, NFT 화 되거나, 생성하고 일정 시간이 지나면, 삭제됨>,
"storageType": "S3"
}
4. NFT 생성
등록한 사용자에게, NFT 를 발행합니다. 앞 단계에서 생성한 Contents ID 를 사용합니다.
NFT 는 NFT API 내부에서 Asset 으로 명명하고 있습니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/collections/{collection ID}/assets
Request
{
"title": <NFT 이름>,
"author": <생성자 이름>,
"contentId": <앞단계에서 생성한 Contents ID>,
"descr": <NFT 설명>,
"minteeAddr": <발행하고자 하는 Address>,
"callbackUrl": <Callback 받을 주소>
}
Response
{
"taskId": <Callback 으로 전달하는 결과와 함께 전달되는 ID>
}
Callback
{
"result" : {
"state" : "SUCCESS" // 결과
},
"taskId" : <TASK ID>,
"collectionId" : <Collection ID>,
"assetId" : <Asset ID, 내부 ID>,
"tokenId" : <NFT Token ID>,
"contentUrl" : <Contents File Download Link>,
"tokenUrl" : <Token의 Meta 정보가 있는 Link>
}
5. NFT 소유권 이전
등록한 사용자에게, NFT 소유권을 이전 할 수 있습니다. Collection ID, Asset ID 를 기준으로 NFT 를 지정하며, 기존 소유자의 Address, 이전받을 사용자의 Address 가 필요합니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/collections/{collection Id}/assets/{asset Id}/transfers
Request
{
"senderAddr": <기존 소유자의 Address>,
"recipientAddr": <받을 사용자의 Address>,
"callbackUrl": <Callback 받을 주소>
}
Response
{
"taskId": <Callback 으로 전달하는 결과와 함께 전달되는 ID>
}
Callback
{
"result" : {
"state" : "SUCCESS" // 결과
},
"taskId" : <TASK ID>,
"assetId" : <Assect ID, 내부 ID>
}
6. Mirror Collection 등록
ChainZ 네트워크에 생성한 NFT를 이더리움 네트워크로 반출할 수 있습니다. 이를 위하여 먼저 이더리움 네트워크에 Collection을 등록해야 합니다. 기존에 ChainZ 네트워크에 생성한 Collection의 ID를 지정하면 해당 Collection이 이더리움 네트워크에도 생성됩니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/collections/{collectionId}/mirrors
Request
{
"callbackUrl": <Callback 받을 주소>
}
Response
{
"taskId": <Callback 으로 전달하는 결과와 함께 전달되는 ID>
}
Callback
{
"result" : {
"state" : "SUCCESS" // 결과
},
"taskId" : <TASK ID>,
"originCollectionChainId" : <Collection이 등록되어 있는 ChainZ 네트워크의 Chain ID>,
"originCollectionId" : <Collection ID, 내부 ChainZ ID>,
"mirrorCollectionChainId" : <Mirror Collection이 등록되어 있는 이더리움 네트워크의 Chain ID>,
"mirrorContractAddr" : <이더리움 네트워크에 배포되어 있는 Contract 주소>,
"mirrorContractAdminAddrs" : [ <이더리움 네트워크에 배포되어 있는 Contract의 관리자 주소 리스트> ]
}
7. NFT 반출
ChainZ 네트워크에 생성한 NFT를 이더리움 네트워크로 반출합니다. 반출 대상 네트워크의 Chain ID와 반출 시 NFT를 소유할 사용자의 Address가 필요합니다. 반출하려는 NFT의 Collection은 사전에 반출 대상 네트워크의 Chain ID에 Mirror Collection으로 등록되어 있어야 합니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/collections/{collection Id}/assets/{asset Id}/export
Request
{
"toChainId" : <반출 대상 네트워크 Chain ID>,
"toMinteeAddr" : <NFT 반출 시 소유 계정주소>,
"callbackUrl" : <Callback 받을 주소>
}
Response
{
"taskId": <Callback 으로 전달하는 결과와 함께 전달되는 ID>
}
Callback
{
"result" : {
"state" : "SUCCESS" // 결과
},
"taskId" : <TASK ID>,
"originCollectionId" : <Collection ID, 내부 ChainZ ID>,
"originAssetId" : <Assect ID, 내부 ChainZ ID>,
"originTokenId" : <Token ID, 내부 ChainZ ID>,
"mirrorContractAddr" : <이더리움 네트워크에 배포되어 있는 Contract 주소>,
"newTokenId" : <Token ID, 외부 이더리움 네트워크 ID>
}
8. Task 상태 조회
API Response로 받은 Task ID를 지정하여 해당 Task의 현재 상태를 조회할 수 있습니다.
HTTP Method : POST
URL : https://nft-api.chainz.biz/api/v1/tasks/{taskId}
Response
{
"taskId": <TASK ID>,
"type": <TASK 타입>,
"statusType": <TASK 현재 상태>,
"reason": [Optional] <TASK 상태가 FAIL인 경우, 실패 이유>
"callbackData": [Optional] <TASK 상태가 SUCCESS, SUCCESS_BUT_NOT_DELIVERY인 경우, Callback 데이터>,
"startedAt": <TASK 시작 일시>,
"finishedAt": [Optional] <TASK 상태가 PREPARING이 아닌 경우, TASK 종료 일시>
}
NFT API 목록
Last updated
Was this helpful?