如何使用占位符通过 API POST Json 元数据

How to POST Json metadata through API using placeholders

你好吗?预先感谢您的帮助!

有一个用于 NFT 铸币的平台 (https://pro.nft-maker.io/),它允许我为我稍后要使用它们 API 上传的文件设置元数据结构。我的看起来像这样:

{
    "721": {
        "<policy_id>": {
            "<asset_name>": {
                "one": "<place_holder1>",
                "two": "<place_holder2>",
                "three": "<place_holder3>",
                "four": "<place_holder4>",
                "five": "<place_holder5>",
                "six": "<place_holder6>",
                "seven": "<place_holder7>",
                "eight": "<place_holder8>",
                "nine": "<place_holder9>",
                "files": [
                    {
                        "name": "<asset_name>",
                        "mediaType": "<mime_type>",
                        "src": "<ipfs_link>"
                    }
                ]
            }
        }
    }
}

<brackets>中的是我的占位符。当我上传图片时,我需要在 JSON 中使用 POST 请求将数据传递给他们。

这是他们的 API 文档: https://api.nft-maker.io/swagger/index.html

我需要使用 UploadNft 端点 POST 并上传我的图像及其元数据。这是文档中的示例代码:

{
  "assetName": "string",
  "previewImageNft": {
    "mimetype": "string",
    "fileFromIPFS": "string",
    "metadataPlaceholder": [
      {
        "name": "string",
        "value": "string"
      }
    ]
  },
  "metadata": "string"
}

结构来自卡尔达诺区块链CIP25:https://cips.cardano.org/cips/cip25/

根据 API 文档,我可以使用 metadata:"" 完全覆盖我在项目创建中设置的项目元数据(问题的第一个代码),或者我可以使用 metadataPlaceholder: [{}] 为我在项目元数据中创建的占位符赋值。

在我看来,我只需要执行此操作即可上传新图像和元数据:

{
    "assetName": "Testing1",
    "previewImageNft": {
        "mimetype": "image/png",
        "fileFromIPFS": "QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr",
        "metadataPlaceholder": [
            {
                "place_holder1": "The info I need goes here",
                "place_holder2": "The info I need goes here",
                "place_holder3": "The info I need goes here",
                "place_holder4": "The info I need goes here"
            }
        ]
    }
}

问题是,当我 post 上面的代码(可以使用他们的 API 文档“试用”系统完成)时,我能够看到上传的新图像在仪表板上,但元数据根本没有改变:

应该接收我 POST returns 作为空白字符串的数据的占位符 "".

这是我的 POST 的样子:

curl -X 'POST' \
 'https://api.nft-maker.io/UploadNft/****/****' \
  -H 'accept: text/plain' \
  -H 'Content-Type: application/json' \
  -d '{
    "assetName": "Testing01",
    "previewImageNft": {
        "mimetype": "image/png",
        "fileFromIPFS": "QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr",
        "metadataPlaceholder": [
            {
                "place_holder1": "The info I need goes here",
                "place_holder2": "The info I need goes here",
                "place_holder3": "The info I need goes here",
                "place_holder4": "The info I need goes here"
            }
        ]
    }
}'

这是我在 POST:

之后得到的响应主体
{
  "nftId": 614865,
  "ipfsHashMainnft": "QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr",
  "ipfsHashSubfiles": [],
  "metadata": "{\r\n  \"721\": {\r\n    \"<policy_id>"\": {\r\n      \"Testing01\": {\r\n        \"one\": \"\",\r\n        \"two\": \"\",\r\n        \"three\": \"\",\r\n        \"four\": \"\",\r\n        \"five\": \"\",\r\n        \"six\": \"\",\r\n        \"seven\": \"\",\r\n        \"eight\": \"\",\r\n        \"nine\": \"\",\r\n        \"files\": [\r\n          {\r\n            \"name\": \"Testing01\",\r\n            \"mediaType\": \"image/png\",\r\n            \"src\": \"ipfs://QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr\"\r\n          }\r\n        ]\r\n      }\r\n    }\r\n  }\r\n}"
}

我可以选择使用他们的仪表板手动覆盖整个图像元数据:

或者,我也可以手动替换我的占位符:

手动替换数据后,我可以在仪表板上看到正确的元数据:

如果我为该图像使用他们的 GetNftDetails API 端点,我会得到:

{
  "id": 614865,
  "ipfshash": "QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr",
  "state": "free",
  "name": "Testing01",
  "minted": false,
  "receiveraddress": null,
  "selldate": null,
  "soldby": null,
  "reserveduntil": null,
  "policyid": null,
  "assetid": null,
  "assetname": null,
  "fingerprint": null,
  "initialminttxhash": null,
  "title": null,
  "series": null,
  "ipfsGatewayAddress": "https://gw2.easy-ipfs.com/ipfs/QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr",
  "metadata": "{\r\n  \"721\": {\r\n    \"<policy_id>\": {\r\n      \"Testing01\": {\r\n        \"one\": \"Manually Editing the FIRST\",\r\n        \"two\": \"Manually Editing the SECOND\",\r\n        \"three\": \"Manually Editing the THIRD\",\r\n        \"files\": [\r\n          {\r\n            \"name\": \"Testing01\",\r\n            \"mediaType\": \"image/png\",\r\n            \"src\": \"ipfs://QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr\"\r\n          }\r\n        ]\r\n      }\r\n    }\r\n  }\r\n}"
}

我也试过 POST 使用 "metadata": "" 而不是 "metadataPlaceholder":[{}],像这样:

{
    "assetName": "Testing01",
    "previewImageNft": {
        "mimetype": "image/png",
        "fileFromIPFS": "QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr"
    },
    "metadata": "{\r\n  \"721\": {\r\n    \"<policy_id>\": {\r\n      \"Testing01\": {\r\n        \"one\": \"FIRST\",\r\n        \"two\": \"SECOND\",\r\n        \"three\": \"THIRD\",\r\n        \"files\": [\r\n          {\r\n            \"name\": \"Testing01\",\r\n            \"mediaType\": \"image/png\",\r\n            \"src\": \"ipfs://QmUp9ZnFbHegzdwtg8ToXJK7kjrJrkZcKuCuXGAREeXNDr\"\r\n          }\r\n        ]\r\n      }\r\n    }\r\n  }\r\n}"
}

它 POST 很好,我可以在那里看到图像,但我有同样的问题,我有占位符的空白 "" 元数据。

目前有一些 NFT 项目正在使用这个平台,他们生成这个元数据似乎没有问题...

说了那么多……我有那么傻吗?我做错了什么我看不到?

你们知道我应该如何在 API UploadNft 端点构建这个元数据,这样我就可以 POST 它没有问题吗?

*我已经给他们发了邮件,但是还没有得到回复。

您必须 post 将占位符作为包含字段“名称”和“值”的数组。

所以它应该是这样的:

"metadataPlaceholder": [
  {
    "name": "color",
    "value": "red"
  },
  {
    "name": "size",
    "value": "big"
  },
  {
    "name": "placerholder3",
    "value": "value3"
  }
]