NFT APIs#

Non-Fungible Token(NFT, 대체불가토큰) 을 위한 API 를 제공합니다.

※ NFT Token API 를 사용하기 위해서는, 별도의 NFT ContractID 를 발급받아야 합니다.


NFT Token 발행 요청 (Type1.TokenID 지정발급)#

요청한 TokenID 로 NFT 토큰을 발행요청한 후 해당 txHash 값을 리턴합니다.

Request

  • HOST:

    testnet-api.boraecosystem.com

  • URI:

    /v1/chain/erc721/{contractId}/mint

  • METHOD:

    POST

Request Parameters

Parameter Required Values Description Parameter type Data Type
Authorization * Bearer {Client's AccessToken} Client Access Token header string
contractId * NFT Contract ID url integer
toAddr * 지급받을 사용자 지갑주소 formData string, length(42)
tokenId * 발급할 Token의 ID formData integer
tokenURI * 발급할 Token의 metaData URI formData string
metaData 발급할 Token의 불변 metaData (JSON) formData string, json, length(1000)
extraData 발급할 Token의 가변 extraData (JSON) formData string, json, length(500)

Response

{
   "status": integer,
   "data": {
    "tx_hash": string, length(66),      // 블록체인 내 TransactionHash
  }
}

Error

문서 하단 Error Code 참조

Sample:

Sample Request:

curl -X POST "https://testnet-api.boraecosystem.com/v1/chain/erc721/5/mint" -H "accept: application/json" -H "Authorization: Bearer {Client's AccessToken}" -H "Content-Type: application/x-www-form-urlencoded" -d "toAddr=0x9961064b96c71ce47f3a14a1c7456de7fb5ec644&tokenId=12&tokenURI=QmPWhXwwC1gDzcXFoiMEmyeYdYeT4LWNuBUb6ozQ7ajsNU&metaData=%7B%22key%22%3A100%2C%22value%22%3A%22example%20metaData%22%7D&extraData=%7B%22key%22%3A200%2C%22value%22%3A%22example%20extraData%22%7D"

Sample Response:

{
   "status": 200,
   "data": {
    "tx_hash": "0x8da32434d08be077c7995b7cb4b89ab4b8a65ade57004793da20bed19674e1bc"
  }
}

NFT Token 발행 요청 (Type2.TokenID 자동발급)#

토큰 발행요청한 후 발행된 TokenID 와 txHash 값을 리턴합니다.

Request

  • HOST:

    testnet-api.boraecosystem.com

  • URI:

    /v1/chain/erc721/{contractId}/mint-sequential

  • METHOD:

    POST

Request Parameters

Parameter Required Values Description Parameter type Data Type
Authorization * Bearer {Client's AccessToken} Client Access Token header string
contractId * NFT Contract ID url integer
toAddr * 발급할 Token의 소유자 지갑주소 formData string, length(42)
tokenURI * 발급할 Token의 metaData URI formData string
metaData 발급할 Token의 불변 metaData (JSON) formData string, json, length(1000)
extraData 발급할 Token의 가변 extraData (JSON) formData string, json, length(500)

Response

{
  "status": integer,
  "data": {
    "tx_hash": string, length(66),      // 블록체인 내 TransactionHash
    "tokenId": integer                  // 자동발급된 tokenID
  }
}

Error

문서 하단 Error Code 참조

Sample:

Sample Request:

curl -X POST "https://testnet-api.boraecosystem.com/v1/chain/erc721/5/mint-sequential" -H "accept: application/json" -H "Authorization: Bearer {Client's AccessToken}" -H "Content-Type: application/x-www-form-urlencoded" -d "toAddr=0x9961064b96c71ce47f3a14a1c7456de7fb5ec644&tokenURI=QmPWhXwwC1gDzcXFoiMEmyeYdYeT4LWNuBUb6ozQ7ajsNU&metaData=%7B%22key%22%3A100%2C%22value%22%3A%22example%20metaData%22%7D&extraData=%7B%22key%22%3A200%2C%22value%22%3A%22example%20extraData%22%7D"

Sample Response:

{
   "status": 200,
   "data": {
    "tx_hash": "0x8da32434d08be077c7995b7cb4b89ab4b8a65ade57004793da20bed19674e1bc",
    "tokenId": 12
  }
}

NFT Token 삭제 요청#

TokenID 에 해당하는 NFT 토큰을 삭제한 후 해당 txHash 값을 리턴합니다.

Request

  • HOST:

    testnet-api.boraecosystem.com

  • URI:

    /v1/chain/erc721/{contractId}/burn

  • METHOD:

    POST

Request Parameters

Parameter Required Values Description Parameter type Data Type
Authorization * Bearer {Client's AccessToken} Client Access Token header string
contractId * NFT Contract ID url integer
tokenId * 삭제할 Token의 ID formData integer

Response

{
  "status": integer,
  "data": {
    "tx_hash": string, length(66)       // 블록체인 내 TransactionHash
  }
}

Error

문서 하단 Error Code 참조

Sample:

Sample Request:

curl -X POST "https://testnet-api.boraecosystem.com/v1/chain/erc721/5/burn" -H "accept: application/json" -H "Authorization: Bearer {Client's AccessToken}" -H "Content-Type: application/x-www-form-urlencoded" -d "tokenId=12"

Sample Response:

{
   "status": 200,
   "data": {
    "tx_hash": "0x8da32434d08be077c7995b7cb4b89ab4b8a65ade57004793da20bed19674e1bc"
  }
}

NFT Token 의 가변데이터값(extraData) 변경#

TokenID 에 해당하는 NFT 토큰의 가변데이터값(extraData)을 변경한 후 해당 txHash 값을 리턴합니다.

Request

  • HOST:

    testnet-api.boraecosystem.com

  • URI:

    /v1/chain/erc721/{contractId}/tokens/{tokenId}/set-extra-data

  • METHOD:

    PUT

Request Parameters

Parameter Required Values Description Parameter type Data Type
Authorization * Bearer {User's AccessToken} User Access Token header string
contractId * NFT Contract ID url integer
tokenId * 변경할 Token의 ID url integer
extraData 변경할 Token의 가변 extraData (JSON) formData string, json, length(500)

Response

{
  "status": integer,
  "data": {
    "tx_hash": string, length(66)       // 블록체인 내 TransactionHash
  }
}

Error

문서 하단 Error Code 참조

Sample:

Sample Request:

curl -X PUT "https://testnet-api.boraecosystem.com/v1/chain/erc721/5/tokens/12/set-extra-data" -H "accept: application/json" -H "Authorization: Bearer {User's AccessToken}" -H "Content-Type: application/x-www-form-urlencoded" -d "extraData=%7B%22key%22%3A200%2C%22value%22%3A%22new%20extraData%22%7D"

Sample Response:

{
   "status": 200,
   "data": {
    "tx_hash": "0x8da32434d08be077c7995b7cb4b89ab4b8a65ade57004793da20bed19674e1bc"
  }
}

NFT Token 의 소유자 변경 요청#

TokenID 에 해당하는 NFT 토큰의 소유자를 변경하고 해당 txHash 값을 리턴합니다.

Request

  • HOST:

    testnet-api.boraecosystem.com

  • URI:

    /v1/chain/erc721/{contractId}/transfer-from

  • METHOD:

    POST

Request Parameters

Parameter Required Values Description Parameter type Data Type
Authorization * Bearer {User's AccessToken} User Access Token header string
contractId * NFT Contract ID url integer
fromAddr * 현재 소유자 지갑주소 formData string, length(42)
toAddr * 신규 소유자 지갑주소 formData string, length(42)
tokenId * 변경할 Token의 ID formData integer

Response

{
   "status": integer,
   "data": {
    "tx_hash": string, length(66)       // 블록체인 내 TransactionHash
  }
}

Error

문서 하단 Error Code 참조

Sample:

Sample Request:

curl -X POST "https://testnet-api.boraecosystem.com/v1/chain/erc721/5/transfer-from" -H "accept: application/json" -H "Authorization: Bearer {User's AccessToken}" -H "Content-Type: application/x-www-form-urlencoded" -d "fromAddr=0x9961064b96c71ce47f3a14a1c7456de7fb5ec644&toAddr=0xd35aa28e97fd1cf40bf8b4ebe56fb2670ea1fee3&tokenId=12"

Sample Response:

{
   "status": 200,
   "data": {
    "tx_hash": "0x8da32434d08be077c7995b7cb4b89ab4b8a65ade57004793da20bed19674e1bc"
  }
}

NFT Contract 내 Token 목록 조회#

발행된 NFT 토큰의 목록을 리턴합니다.

Request

  • HOST:

    testnet-api.boraecosystem.com

  • URI:

    /v1/chain/erc721/{contractId}/tokens

  • METHOD:

    GET

Request Parameters

Parameter Required Values Description Parameter type Data Type
Authorization * Bearer {Client's AccessToken} Client Access Token header string
contractId * NFT Contract ID url integer
ownerAddr 검색할 Token의 소유자 지갑주소 query string, length(42)
creatorAddr 검색할 Token의 생성자 지갑주소 query string, length(42)
isLocked 검색조건 Lock 여부 query boolean
valid 검색조건 process중이 아닌 것 query boolean
page Pagination (page) query integer
perPage Pagination (perPage) query integer

Response

{
  "status": integer,
  "data": {
    "total": integer,                         // 조회된 Token의 개수 (Pagination)
    "perPage": integer,                       // page당 보여줄 Token의 개수 (Pagination)
    "page": integer,                          // 조회하는 현재 page (Pagination)
    "lastPage": integer,                      // 조회할 수 있는 마지막 page (Pagination)
    "data": [
      {
        "contract_id": integer,               // NFT Contract ID
        "token_id": integer,                  // Token의 ID
        "token_owner": string, length(42),    // Token의 소유자 지갑주소
        "token_uri": string,                  // Token의 metaData URI
        "token_metadata": string,             // Token의 불변 metaData (JSON)
        "token_extradata": string,            // Token의 가변 extraData (JSON)
        "token_creator": string, length(42),  // Token의 생성자 지갑주소
        "token_created_at": string,           // Token의 생성시각
        "token_owned_at": string,             // Token의 소유자 변경시각
        "token_is_locked": integer,           // Lock 여부 (1: Locked, 0: Unlocked). Market에 등록될 때 Lock이 되어 소유자가 Token 정보를 변경할 수 없음
        "status": integer,                    // Token 상태 (0: Pending, 1: Complete, 2: Progress, 3: Fail)
        "last_tx_hash": string, length(66)    // 토큰과 관련된 가장 최근의 블록체인 내 TransactionHash
      },
      ...
    ]
  }
}

Error

문서 하단 Error Code 참조

Sample:

Sample Request:

curl -X GET "https://testnet-api.boraecosystem.com/v1/chain/erc721/5/tokens?valid=true&page=1&perPage=10" -H "accept: application/json" -H "Authorization: Bearer {Client's AccessToken}"

Sample Response:

{
  "status": 200,
  "data": {
    "total": 13,
    "perPage": 10,
    "page": 1,
    "lastPage": 2,
    "data": [
      {
        "contract_id": 5,
        "token_id": 12,
        "token_owner": "0xd35aa28e97fd1cf40bf8b4ebe56fb2670ea1fee3",
        "token_uri": "QmPWhXwwC1gDzcXFoiMEmyeYdYeT4LWNuBUb6ozQ7ajsNU",
        "token_metadata": "{\"key\":100,\"value\":\"example metaData\"}",
        "token_extradata": "{\"key\":200,\"value\":\"new extraData\"}",
        "token_creator": "0x99bb72ce32e42a28854aaf1c68c14df1b82f0e9f",
        "token_created_at": "2019-04-03 02:35:40",
        "token_owned_at": "2019-04-03 02:45:38",
        "token_is_locked": 0,
        "status": 1,
        "last_tx_hash": "0x424dd91ceb366b57ee0498dc4bc53425031a1ed397cbbc3e073a67cd5ef104e7"
      },
      {
        "contract_id": 5,
        "token_id": 21,
        "token_owner": "0x7115b86aac87150f147beaff56dcc986806e5a80",
        "token_uri": "QmYTrEFgZtWcApfX9KMTJBgFkzUdESrfihYwBbRwt1ASsW",
        "token_metadata": "",
        "token_extradata": "",
        "token_creator": "0x99bb72ce32e42a28854aaf1c68c14df1b82f0e9f",
        "token_created_at": "2019-04-19 05:33:10",
        "token_owned_at": "2019-04-29 07:47:35",
        "token_is_locked": 0,
        "status": 1,
        "last_tx_hash": "0x0d917c60d652b2b7dad082dbbded23fc22393ee1466acb7a6fc108b6abe82e76"
      },
      ...
    ]
  }
}

NFT Contract 내 Token 정보 조회#

TokenID 에 해당하는 NFT 토큰의 정보를 리턴합니다.

Request

  • HOST:

    testnet-api.boraecosystem.com

  • URI:

    /v1/chain/erc721/{contractId}/tokens/{tokenId}

  • METHOD:

    GET

Request Parameters

Parameter Required Values Description Parameter type Data Type
Authorization * Bearer {Client's AccessToken} Client Access Token header string
contractId * NFT Contract ID url integer
tokenId 조회할 Token의 ID url integer

Response

{
  "status": integer,
  "data": {
    "contract_id": integer,               // NFT Contract ID
    "token_id": integer,                  // Token의 ID
    "token_owner": string, length(42),    // Token의 소유자 지갑주소
    "token_uri": string,                  // Token의 metaData URI
    "token_metadata": string,             // Token의 불변 metaData (JSON)
    "token_extradata": string,            // Token의 가변 extraData (JSON)
    "token_creator": string, length(42),  // Token의 생성자 지갑주소
    "token_created_at": string,           // Token의 생성시각
    "token_owned_at": string,             // Token의 소유자 변경시각
    "token_is_locked": integer,           // Lock 여부 (1: Locked, 0: Unlocked). Market에 등록될 때 Lock이 되어 소유자가 Token 정보를 변경할 수 없음
    "status": integer,                    // Token 상태 (0: Pending, 1: Complete, 2: Progress, 3: Fail)
    "last_tx_hash": string, length(66)    // 토큰과 관련된 가장 최근의 블록체인 내 TransactionHash
  }
}

Error

문서 하단 Error Code 참조

Sample:

Sample Request:

curl -X GET "https://testnet-api.boraecosystem.com/v1/chain/erc721/5/tokens/12" -H "accept: application/json" -H "Authorization: Bearer {Client's AccessToken}"

Sample Response:

{
  "status": 200,
  "data": {
    "contract_id": 5,
    "token_id": 12,
    "token_owner": "0xd35aa28e97fd1cf40bf8b4ebe56fb2670ea1fee3",
    "token_uri": "QmPWhXwwC1gDzcXFoiMEmyeYdYeT4LWNuBUb6ozQ7ajsNU",
    "token_metadata": "{\"key\":100,\"value\":\"example metaData\"}",
    "token_extradata": "{\"key\":200,\"value\":\"new extraData\"}",
    "token_creator": "0x99bb72ce32e42a28854aaf1c68c14df1b82f0e9f",
    "token_created_at": "2019-04-03 02:35:40",
    "token_owned_at": "2019-04-03 02:45:38",
    "token_is_locked": 0,
    "status": 1,
    "last_tx_hash": "0x424dd91ceb366b57ee0498dc4bc53425031a1ed397cbbc3e073a67cd5ef104e7"
  }
}

Error Code#

Response Format

{
  "status": 400,
  "error": [
    {
      "message": "string",
      "field": "string",
      "validation": "string"
    }
  ]
}

Error Code

HTTP CodeStatusDescExample
200400Validation Error:
파라미터가 잘못 되었습니다.
{
  "status": 400,
  "error": [
    {
      "message": "integer validation failed on index",
      "field": "index",
      "validation": "integer"
    }
  ]
}
200401Unauthorized: 권한이 없습니다.
{
  "status": 401,
  "error": [
    {
      "message": "E_FORBIDDEN: Access Token is not right",
    }
  ]
}
200404Not Found: 없는 URL 입니다.
{
  "status": 404,
  "error": [
    {
      "message": "E_ROUTE_NOT_FOUND: Route not found GET /erc721",
    }
  ]
}
200422Unprocessable Entity: 요청을 처리할 수 없습니다.
{
  "status": 422,
  "error": [
    {
      "message": "E_CONTRACT_NOT_FOUND: appNo or contractId not found",
    }
  ]
}
200500Internal Server Error: 서버 내부 오류입니다.
{
  "status": 500,
  "error": [
    {
      "message": "E_DATABASE_ERROR: Internal database error",
    }
  ]
}
4xx
5xx
기타 오류 HTTP Code: 503
Body: Response: 503, Under Maintenance