nips/88.md

3.3 KiB

NIP-88

Products classification

draft optional

This NIP defines the use of some tags in metadata (kind:0) events to offer the possibility to have profile for products. Products have their own key-pair and the private key is typically controlled by the manufacturer.

Use cases

There are several uses case for product events:

  • Manufacturers would own the identity of their products, for free, without be locked in the proprietary GTIN (UPC/EAN/JAN/ISBN/etc) market;

  • It would be possible for buyers follow products they own and be alerted about production problems, updates, news and suggestions;

  • Nostr e-commerce/reviews apps would have a better integration for products, with a news live feed from the manufacturers;

  • Manufacturers could offer specialized customer support via DM using the product profile;

  • Manufacturers could promote resellers, and possibily onboard them on Nostr;

  • Manufacturers or sellers could cryptographically certify the purchase of a product to issue a warranty;

Identity attestation is easy: the public key is stamped as qrcode on the product or its packaging.

Metadata tags

If a metadata event wants to refers to a product it MUST self-reports with the following NIP-32 labeling:

{
  "tags": [
    ["L", "#t"],
    ["l", "products", "#t"],
  ],
}

The event SHOULD include a p tag that refers to the product manufacturer, having the 4th position marked as manufacturer

{
  "tags": [
    ["p", "<id>", "<relay>", "<producer-name>", "manufacturer"],
  ],
}

The event SHOULD include one or more p tag that refer to the resellers, having the 4th position marked as reseller:

{
  "tags": [
    ["p", "<id>", "<relay>", "<reseller-name>", "reseller"],
    ["p", "<id>", "<relay>", "<reseller-name>", "reseller"],
  ],
}

If the producer is also a (or the only) reseller, it can be used duplicated with both markers.

If the product has a GTIN (EAN/UPC/JAN/ISBN/etc) code the event SHOULD refers to it using the NIP-32 labeling with ISO/IEC-6523 namespace:

{
  "tags": [
    ["L", "ISO/IEC-6523"],
    ["l", "<code>", "ISO/IEC-6523"]
  ],
}

Metadata content

The content is set to a stringified JSON object that support the following fields:

Kind Type Description
name <string> The name of the the product, including the brand
about <string> A description of the product
picture <url> Main image of the product
gallery <url,url,...> List of urls for a product gallery
website <url> An url pointing to the product web page
started_at <YYYY-MM-DD> The date when the production started
ended_at <YYYY-MM-DD> The date when the production ended

Sharable nproduct entity

This NIP also define a new nproduct bech32 shareable identifiers analogue to nprofile. The nproduct can be shared as qrcode and added to the products or their packaging, attesting the identity, and it is useful to distinguish a product without fetching the metadata event. However, products are backward compatible to the nprofile, as is the whole profile.