拡張API
 拡張APIは、標準(ERC-721)APIが提供しない機能を提供します。
 NFTロイヤリティ情報を取得
 トークンID(tokenId)とNFTの販売価格(salePrice)を介して、ロイヤリティとこのロイヤリティを受け取るアドレスを取得します。ロイヤリティは、ERC-2981/CW-2981インターフェースが実装された契約でNFTをミントする際に設定できます。
 リクエストURL
  パスパラメータ
    | フィールド名 | 説明 | タイプ | 必須 | 
    | contract | NFTコントラクトアドレス | 文字列 | Y | 
  | tokenId | NFT ID | 文字列 | Y | 
  
 ヘッダーパラメータ
    | フィールド名 | 説明 | タイプ | 必須 | 
    | Authorization | APIを呼び出すために必要な認証トークン | 文字列 | Y | 
  | x-network | ブロックチェーンネットワーク | 文字列 | Y | 
  
 クエリパラメータ
    | フィールド名 | 説明 | 型 | 必須 | 
    | salePrice | NFT販売の金額 | 文字列 | Y | 
  
 応答
    | フィールド名 | 説明 | タイプ | 
    | code | APIリクエスト結果コード、0: 成功 | 数字 | 
  | message | 結果メッセージ | 文字列 | 
  | data | APIレスポンスデータ | JSON | 
  | data.receiver | ロイヤリティを受け取るウォレットアドレス | 文字列 | 
  | data.amount | ロイヤリティの金額 | 文字列 | 
  
 リクエストサンプル
 curl -X 'GET' 
  'https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/0xA3F4308Ed655f962dD7CA180545c21718fAE49AD/royalty/1?salePrice=0.5' 
  -H 'accept: application/json' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb...' 
  -H 'x-network: polygon' 
応答サンプル
 {
  "code": 0,
  "message": "success",
  "data": {
    "receiver": "0xD6e69da7f1be111394dfef4C48eaC9b52ddf2Fd0",
    "amount": "0.0375"
  }
}
NFTをミントする
 特定のアドレス(to)にトークンをミントするトランザクションを作成します。このAPIを呼び出すには、必要なNFT情報(mintMsg.tokenId、mintMsg.metadataなど)を配列に読み込み、このAPIがNFT情報をIPFS(InterPlanetary File System)にアップロードし、NFTをミントします。このAPIはNFT APIの機能を拡張し、最大200トークンを同時にミントでき、ロイヤリティを設定することができます。fromはミントする権利を持つアカウントでなければなりません。
  Note
  - APIを介して作成されたデジタル資産とそのメタデータ(mintMsg.metadata)は、パブリックIPFS(InterPlanetary File System)に登録されます。
- Extension APIのMint NFT APIは、複数のアカウントに同時にNFTをミントできます。1アカウントに1NFTをミントする場合、XPLAでは最大200アカウント、Polygonでは50アカウントにNFTをミントできます。50アカウントにNFTをミントする場合、XPLAではアカウントごとに4NFT、Polygonではアカウントごとに1NFTをミントできます。
  リクエストURL
  パスパラメータ
    | フィールド名 | 説明 | タイプ | 必須 | 
    | contract | NFTコントラクトアドレス | 文字列 | Y | 
  
 ヘッダーパラメータ
    | フィールド名 | 説明 | タイプ | 必須 | 
    | Authorization | APIを呼び出すために必要な認証トークン | 文字列 | Y | 
  | x-network | ブロックチェーンネットワーク | 文字列 | Y | 
  
 リクエストボディ
    | フィールド名 | 説明 | タイプ | 必須 | 
    | from | NFTをミントするアカウントアドレス | string | Y | 
  | mintMsg | これはミントに必要な情報です。JSON配列形式で、複数のアカウントにNFTをミントできます。 | array | Y | 
  | mintMsg.to | NFTを受け取るウォレットアドレス | string | Y | 
  | mintMsg.tokenId | これはNFT IDです。NFT IDは一意である必要があり、NFTミンターによって定義されます。 
  Polygon: 文字列と整数(0~2256-1)のみが許可されています。 
 XPLA: 文字列のみが許可されています。
 | string | Y | 
  | mintMsg.royaltyPercentage | これはロイヤリティのパーセンテージです。NFTが販売または再販売されるたびに、NFTのクリエイターまたは請求者に支払われる金額です。ロイヤリティ率は販売の合計金額に適用されます。この機能は、アーティストやNFTクリエイターを継続的に支援する意欲のあるNFTマーケットプレイスでサポートされています。マーケットプレイスはNFTロイヤリティを確認し、受取人に支払います。NFTが販売(譲渡)されたときにロイヤリティは直接受取人に支払われません。この機能はOpenSeaで採用されています。 
  Polygon: 小数点以下2桁まで許可されています。 
 XPLA: 整数のみが許可されています。 
 | number | N | 
  | mintMsg.metadata | メタデータ 
  型とurl(animationUrl、youtubeUrl、externalUrl)の形式を確認する必要があります。このデータが不正確な場合、APIリクエストが失敗する可能性があります。
 メタデータは、IPFSに保存されるときにスネークケースで保存されます(例: animationUrl→animation_url)
 | json | Y | 
  | mintMsg.metadata.name | NFT名 | string | Y | 
  | mintMsg.metadata.description | NFTの説明 | string | N | 
  | mintMsg.metadata.image | これはNFT画像のアドレスです。これは、画像をIPFSにアップロードするための公開ウェブサイトアドレスまたは公開IPFSアドレスです。 | string | Y | 
  | mintMsg.metadata.animationUrl | NFTアニメーションのアドレス | string | N | 
  | mintMsg.metadata.youtubeUrl | Youtubeアドレス | string | N | 
  | mintMsg.metadata.imageData | NFT画像情報 | string | N | 
  | mintMsg.metadata.externalUrl | 外部url | string | N | 
  | mintMsg.metadata.backgroundColor | トークンの背景色情報(OpenSea) | string | N | 
  | mintMsg.metadata.attributes | これらはメタデータ属性の情報です。これには、メタデータに記載されていない追加情報が含まれます。 | json | N | 
  | mintMsg.metadata.attributes.traitType | 属性を構成するアイテムの名前 | string | N | 
  | mintMsg.metadata.attributes.maxValue | 特性の最大値 | number | N | 
  | mintMsg.metadata.attributes.value | これは特性の値です。 mintMsg.metadata.attributes.maxValueより小さい必要があります。mintMsg.metadata.attributes.displayTypeが日付の場合、この値はUnixタイムスタンプ(秒)形式に従って設定します。 | string or number | N | 
  | mintMsg.metadata.attributes.displayType | これは特性の表示タイプです。デフォルト値は文字列です。 
  number: 数値タイプ 
 boost_percentage: パーセンテージ(OpenSea Boosts) 
 boost_number: 数値(OpenSea Boosts) 
 date: 日付タイプ(例: 2019年1月1日火曜日)
 | string | N | 
  | encoded | 戻されるトランザクションがエンコードされているかどうか 
  true: エンコードされた生トランザクション文字列(data.rawTx)を受け取ります。
 false: デコードされたdata.rawTx(JSON)を受け取ります。
 | boolean | N | 
  
 応答
    | フィールド名 | 説明 | タイプ | 
    | code | APIリクエスト結果コード、0: 成功 | 数字 | 
  | message | 結果メッセージ | 文字列 | 
  | data | APIレスポンスデータ | json | 
  | data.rawTx | トランザクションデータ | 文字列またはjson | 
  | data.hashedTx | これはハッシュ化された data.rawTxです。この値は、APIヘッダーx-networkが「polygon」で、リクエストボディfromがマルチシグウォレットアドレスのときのみ返されます。 | 文字列 | 
  | data.requestId | 各APIリクエストを識別できるユニークな値 | 文字列 | 
  
 リクエストサンプル
 curl -X 'POST' 
  'https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/0xA3F4308Ed655f962dD7CA180545c21718fAE49AD/mint' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb...' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'Content-Type: application/json' 
  -d '{
  "from": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765",
  "mintMsg": [
    {
      "to": "0xFBd488D1b00604d3b05124d80E35FeA9A39C3296",
      "tokenId": "101",
      "metadata": {
        "name": "Arbiter'''s Robe",
        "description": "desc",
        "image": "https://image01.c2x.world/equip_92053030.gif",
        "animationUrl": "https://image01.c2x.world/equip_92053030.gif",
        "externalUrl": "https://dex.c2xnft.com/market?key=4423",
        "attributes": [
          {
            "traitType": "Category",
            "value": "Game",
          }
        ]
      },
      "royaltyPercentage": 12
    }
  ],
  "encoded": true
}'
応答サンプル
 {
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
NFTコントラクトをデプロイ
 NFTコントラクトをデプロイするトランザクションを作成します。デプロイされたコントラクトはERC-721/CW-721標準と拡張機能をサポートしています。
  - バルクミンティング
- ロイヤリティ (ERC-2981/CW-2981)
リクエストURL
  ヘッダーパラメータ
    | フィールド名 | 説明 | タイプ | 必須 | 
    | Authorization | APIを呼び出すために必要な認証トークン | 文字列 | Y | 
  | x-network | ブロックチェーンネットワーク | 文字列 | Y | 
  
 リクエストボディ
    | フィールド名 | 説明 | タイプ | 必須 | 
    | from | コントラクトをデプロイするウォレットアドレス | 文字列 | Y | 
  | name | NFTコントラクト名 | 文字列 | Y | 
  | symbol | NFTコントラクトシンボル | 文字列 | Y | 
  | minter | このNFTコントラクトでNFTをミントできるアカウントのウォレットアドレス | 文字列 | Y | 
  | encoded | 返されたトランザクションがエンコードされているかどうか 
  true: エンコードされた生トランザクション文字列を受け取る (data.rawTx)。
false: デコードされたdata.rawTx(JSON)を受け取る。
 | ブール値 | N | 
  
 応答
    | フィールド名 | 説明 | タイプ | 
    | code | APIリクエスト結果コード、0: 成功 | 数字 | 
  | message | 結果メッセージ | 文字列 | 
  | data | APIレスポンスデータ | json | 
  | data.rawTx | トランザクションデータ | 文字列またはjson | 
  | data.hashedTx | これはハッシュ化された data.rawTxです。この値は、APIヘッダーx-networkが「polygon」で、リクエストボディfromがマルチシグウォレットアドレスのときのみ返されます。 | 文字列 | 
  | data.requestId | 各APIリクエストを識別できるユニークな値 | 文字列 | 
  
 リクエストサンプル
 curl -X 'POST' 
  'https://sandbox-bc-api.qpyou.cn/core/v1/nft/extension/contract' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb...' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'Content-Type: application/json' 
  -d '{
  "encoded": true,
  "from": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765",
  "name": "Extension NFT",
  "symbol": "ENFT",
  "minter": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765"
}'
レスポンスサンプル
 {
  "code": 0,
  "message": "success",
  "data": {
    rawTx: "02f8f3830138810b8459682f008459682f108302...",
    "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
    "requestId": "6fu656d0-t52q-2bdc-ba93-dd063815s7e1"
  }
}