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
blockchainPropertiesObjectTransfer settings:

- isTransferable: Set true if the digital passport is claimable.
- showTransferableOption: Set true to display the Transferable option on the app.
metadataObjectMetadata of the template:

- name: Name of the product.
- icon: The product's icon displayed in the app.
contentStringJson 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.
labelStringLabel displayed in the app.
freeEntryBooleanThe 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.
requiredBooleanSet to true so the user cannot pass the step.
searchableBooleanSet to true to integrate a search bar to search options available.
type`“select” / “text” / “file”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": []
      },
   		{
        "field": "%media%",
        "label": "Media",
        "required": true,
        "type": "file"
      }
    ]

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"
        }
        ]
      },
      {
        "field": "%media%",
        "label": "Media",
        "required": true,
        "type": "file"
      }
    ]
  }]
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"
                    }
                ]
            },
            {
              "field": "%media%",
              "label": "Media",
              "required": true,
              "type": "file"
            }
        ],
        "_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.