Pair Digital Passport with Product

Overview

To pair digital passports with physical products, you must establish two objects:

  • Digital Passport Template: Templates are used in The Forge app to generate each digital passport manually. It is now automatically created from the parent digital passport previously created. When the template is modified, all associated digital passports pointing to it will also be updated.
  • Digital Passports: These are linked to unique physical products through serial numbers through The Forge app.

Step 1. Create a Digital Passport Template

URL

Required rights: admin or certCreate

To create and import your template on your NFT Management Platform, use api/smartAssetTemplate.

POST - https://{url}/smartAssetTemplate
Body

To create your template, you must build:

  • Header: metadata and content of the digital passport.
  • Attributes: form fields.

1. Create the template header

ParameterTypeMandatoryDefinition
blockchainPropertiesObjectโœ…Transfer settings:

- isTransferable: Set true if the digital passport is claimable.
- showTransferableOption: Set true to display the Transferable option on the app.
metadataObjectโœ…Metadata of the template:

- name: Name of the product.
- icon: The product's icon displayed in the app.
contentStringโŒJson Schema with the template content.
โš ๏ธ Stringify your JSON schema content.
[
	{
    "deleted": false,
    "blockchainProperties": {
      "isTransferable": true,
      "showTransferableOption": true
    },
    "metadata": {
	     "name": "Product name",
	     "icon": "https://www.arianee.com/content/dam/ap/com/products/watches/importer"
		},
    "content": "{\n  \"$schema\": \"https://cert.arianee.org/version2/ArianeeProductCertificate-i18n.json\",\n  \"name\": \"Mon NFT TEST\",\n  \"serialNumber\": [{\n    \"type\": \"serialNumber\",\n    \"value\": \"%serialNumber%\"\n    }],\n  \"description\": \"this is the NFT %description%. With Size = %size% and a %color% color\"\n}",
	}
]
{
  "$schema": "https://cert.arianee.org/version2/ArianeeProductCertificate-i18n.json",
  "name": "Mon NFT TEST",
  "serialNumber": [{
    "type": "serialNumber",
    "value": "%serialNumber%"
    }],
	"diameter": [{
    "type": "diameter",
    "value": "%diameter%"
    }],
  "description": "Technical Details : Diameter: %diameter%, Case Material: %caseMaterial%, Dial Color: %dialColor%, Bracelet Material: %braceletMaterial%, Caliber: %caliber%"
}
"{\n  \"$schema\": \"https://cert.arianee.org/version2/ArianeeProductCertificate-i18n.json\",\n  \"name\": \"Mon NFT TEST\",\n  \"serialNumber\": [{\n    \"type\": \"serialNumber\",\n    \"value\": \"%serialNumber%\"\n    }],\n  \"description\": \"Technical Details : Diameter: %diameter%, Case Material: %caseMaterial%, Dial Color: %dialColor%, Bracelet Material: %braceletMaterial%, Caliber: %caliber%\"\n}"

๐Ÿ’ก

%value%: values which will be entered in the app.

2. Create template attributes

FieldTypeMandatoryDefinition
field%value%โŒField replaced by the digital passport content.
labelStringโŒLabel displayed in the app.
freeEntryBooleanโŒThe user can manually add values in the app.

๐Ÿ’ก freeEntry are temporarily saved for the duration of the current form. The value will no longer be available in the template.
requiredBooleanโŒSet to true so the user cannot pass the step.
searchableBooleanโŒSet to true to integrate a search bar to search options available.
typeโ€œselectโ€ / โ€œtextโ€โŒIdentifies the type of component to be displayed.
options[ {โ€labelโ€: string, โ€œvalueโ€: string}, {โ€labelโ€: string, โ€œvalueโ€: string}, โ€ฆ ]โŒFor inputs with the "select" type concerns the set of values that will be proposed.
"attributes": [
      {
        "field": "%size%",
        "label": "Diameter",
        "freeEntry": true,
        "required": true,
        "searchable": true,
        "type": "select",
        "options": [
          {
            "label": "40mm",
            "value": "40mm"
          },
          {
            "label": "40mm",
            "value": "40mm"
          }
        ]
      },
      {
        "field": "%serialNumber%",
        "label": "Serial number",
        "freeEntry": false,
        "required": true,
        "type": "text",
        "options": []
      }
    ]

3. Complete Body

[{
    "deleted":false,
    "blockchainProperties": {
      "isTransferable": true,
      "showTransferableOption":true
    },
    "metadata": {
      "name": "Product name",
      "icon": "https://www.arianee.com/content/dam/ap/com/products/watches/importer"
    },
    "content": "{\n  \"$schema\": \"https://cert.arianee.org/version2/ArianeeProductCertificate-i18n.json\",\n  \"language\": \"fr-FR\",\n  \"name\": \"ROYAL OAK GRANDE COMPLICATION SQUELETTE\",\n  \"category\": \"accessory\",\n  \"subCategory\": \"watch\",\n  \"serialnumber\": [\n    {\n      \"type\": \"serialnumber\",\n      \"value\": \"%serialnumber%\"\n    },\n    {\n      \"type\": \"casenumber\",\n      \"value\": \"%casenumber%\"\n    }\n  ],\n  \"model\": \"Royal Oak\",\n  \"description\": \"\\nCombinant les 3 catรฉgories de complications horlogรจres (mesure des temps courts, mรฉcanismes de sonnerie et indications astronomiques), ce modรจle entraรฎnรฉ par le calibre %calibre% a รฉtรฉ entiรจrement fabriquรฉ ร  la main par un seul et mรชme maรฎtre-horloger de lโ€™atelier Grandes Complications Audemars Piguet.\\n\\nBoรฎte de %diameter% en %caseMaterial% avec lunette acier, glace et fond saphir, couronne vissรฉe\\n\\nCadran saphir, compteurs fumรฉs, aiguilles Royal Oak en %aiguilleMaterial% avec dรฉpรดt luminescent, aiguilles compteurs/seconde/rattrapante blanches, rรฉhaut noir avec minuterie blanche, mouvement couleur ardoise.\",\n  \"externalContents\": [\n    {\n      \"type\": \"website\",\n      \"title\": \"Audemars Piguet Website\",\n      \"url\": \"https://www.audemarspiguet.com/com/fr/home.html\"\n    }\n  ],\n  \"medias\": [\n    {\n      \"mediaType\": \"picture\",\n      \"type\": \"product\",\n      \"url\": \"https://www.audemarspiguet.com/content/dam/ap/com/products/watches/MTR003700.00/importer/watch.png.transform.appdpmain.png\"\n    },\n    {\n      \"mediaType\": \"picture\",\n      \"type\": \"brandItemBackgroundPicture\",\n      \"url\": \"https://www.audemarspiguet.com/content/dam/ap/com/products/watches/MTR003700.00/importer/watch.png.transform.appdpfeaturedcase.png\"\n    },\n    {\n      \"mediaType\": \"picture\",\n      \"type\": \"product\",\n      \"url\": \"https://www.audemarspiguet.com/content/dam/ap/com/products/watches/MTR003700.00/importer/watch.png.transform.appdpfeatureddial.png\"\n    }\n  ]\n}",
    "attributes": [
      {
        "field": "%serialnumber%",
        "label": "Serial number",
        "freeEntry": false,
        "required": true,
        "type": "text",
        "options": []
      },
	{
        "field": "%casenumber%",
        "label": "Case number",
        "freeEntry": false,
        "required": true,
        "type": "text",
        "options": []
      },
      {
        "field": "%diameter%",
        "label": "Diameter",
        "freeEntry": false,
        "required": true,
        "type": "select",
        "options": [{
          "label": "42mm",
          "value": "42mm"
        }, {
          "label": "44mm",
          "value": "44mm"
        }
        ]
      },
      {
        "field": "%caseMaterial%",
        "label": "Case material",
        "freeEntry": false,
        "required": true,
        "type": "select",
        "options": [{
          "label": "Or rose 18k",
          "value": "Or rose 18k"
        },{
          "label": "Or jaune 18k",
          "value": "Or jaune 18k"
        }
        ]
      },
      {
        "field": "%aiguilleMaterial%",
        "label": "Needle material",
        "freeEntry": false,
        "required": true,
        "type": "select",
        "options": [{
          "label": "Or rose 24k",
          "value": "Or rose 24k"
        },{
          "label": "Or jaune 24k",
          "value": "Or jaune 24k"
        }
        ]
      }
    ]
  }]
Return Payload
Status CodeDescription
200The template data are returned.
[
    {
        "attributes": [
            {
                "field": "%serialnumber%",
                "label": "Serial number",
                "freeEntry": false,
                "required": true,
                "type": "text",
                "options": []
            },
            {
                "field": "%casenumber%",
                "label": "Case number",
                "freeEntry": false,
                "required": true,
                "type": "text",
                "options": []
            },
            {
                "field": "%diameter%",
                "label": "Diameter",
                "freeEntry": false,
                "required": true,
                "type": "select",
                "options": [
                    {
                        "label": "42mm",
                        "value": "42mm"
                    },
                    {
                        "label": "44mm",
                        "value": "44mm"
                    }
                ]
            },
            {
                "field": "%caseMaterial%",
                "label": "Case material",
                "freeEntry": false,
                "required": true,
                "type": "select",
                "options": [
                    {
                        "label": "Or rose 18k",
                        "value": "Or rose 18k"
                    },
                    {
                        "label": "Or jaune 18k",
                        "value": "Or jaune 18k"
                    }
                ]
            },
            {
                "field": "%aiguilleMaterial%",
                "label": "Needle material",
                "freeEntry": false,
                "required": true,
                "type": "select",
                "options": [
                    {
                        "label": "Or rose 24k",
                        "value": "Or rose 24k"
                    },
                    {
                        "label": "Or jaune 24k",
                        "value": "Or jaune 24k"
                    }
                ]
            }
        ],
        "_id": "63a5cfee94ea7835457d5800",
        "deleted": false,
        "blockchainProperties": {
            "isTransferable": true,
            "showTransferableOption": true
        },
        "metadata": {
            "name": "ROYAL OAK GRANDE COMPLICATION SQUELETTE",
            "icon": "https://www.audemarspiguet.com/content/dam/ap/com/products/watches/MTR003700.00/importer/watch.png.transform.appdpmain.png"
        },
        "content": "{\n  \"$schema\": \"https://cert.arianee.org/version2/ArianeeProductCertificate-i18n.json\",\n  \"language\": \"fr-FR\",\n  \"name\": \"ROYAL OAK GRANDE COMPLICATION SQUELETTE\",\n  \"category\": \"accessory\",\n  \"subCategory\": \"watch\",\n  \"serialnumber\": [\n    {\n      \"type\": \"serialnumber\",\n      \"value\": \"%serialnumber%\"\n    },\n    {\n      \"type\": \"casenumber\",\n      \"value\": \"%casenumber%\"\n    }\n  ],\n  \"model\": \"Royal Oak\",\n  \"description\": \"\\nCombinant les 3 catรฉgories de complications horlogรจres (mesure des temps courts, mรฉcanismes de sonnerie et indications astronomiques), ce modรจle entraรฎnรฉ par le calibre %calibre% a รฉtรฉ entiรจrement fabriquรฉ ร  la main par un seul et mรชme maรฎtre-horloger de lโ€™atelier Grandes Complications Audemars Piguet.\\n\\nBoรฎte de %diameter% en %caseMaterial% avec lunette acier, glace et fond saphir, couronne vissรฉe\\n\\nCadran saphir, compteurs fumรฉs, aiguilles Royal Oak en %aiguilleMaterial% avec dรฉpรดt luminescent, aiguilles compteurs/seconde/rattrapante blanches, rรฉhaut noir avec minuterie blanche, mouvement couleur ardoise.\",\n  \"externalContents\": [\n    {\n      \"type\": \"website\",\n      \"title\": \"Audemars Piguet Website\",\n      \"url\": \"https://www.audemarspiguet.com/com/fr/home.html\"\n    }\n  ],\n  \"medias\": [\n    {\n      \"mediaType\": \"picture\",\n      \"type\": \"product\",\n      \"url\": \"https://www.audemarspiguet.com/content/dam/ap/com/products/watches/MTR003700.00/importer/watch.png.transform.appdpmain.png\"\n    },\n    {\n      \"mediaType\": \"picture\",\n      \"type\": \"brandItemBackgroundPicture\",\n      \"url\": \"https://www.audemarspiguet.com/content/dam/ap/com/products/watches/MTR003700.00/importer/watch.png.transform.appdpfeaturedcase.png\"\n    },\n    {\n      \"mediaType\": \"picture\",\n      \"type\": \"product\",\n      \"url\": \"https://www.audemarspiguet.com/content/dam/ap/com/products/watches/MTR003700.00/importer/watch.png.transform.appdpfeatureddial.png\"\n    }\n  ]\n}",
        "__v": 0,
        "id": "63a5cfee94ea7835457d5800"
    }
]


Step 2. Pair a Digital Passport with Product's QR Code

  1. From the Forge app, connect your API key QR code to log into your NFT Management Platform.

๐Ÿ”

Authentication

To log in to the Forge App, go to your NFT Management platform, click on Users & Profiles, and generate your API key QR code. You can log in to the app using this QR code as much as needed, so keep it preciously.

  1. Scan a printed QR code that has not been paired yet.
  2. Select the target digital passport template. Enter the SKU or Parent Title to fetch the right template.
  3. Enter the information associated with the product (e.g. serial number).

๐Ÿ”—

Pairing Completed

Once confirmed, a digital passport is minted and associated with the product you just paired.