Un code-barres n’est pas un produit. prodid, si.
Un identifiant ouvert et permanent pour chaque produit physique. Chaque code-barres et chaque référence fabricant s’y résolvent, et chaque information indique la source qui l’a donnée.
La spécification est publiée en anglais uniquement, et c’est le texte anglais qui fait foi.
Item · Acme
Trail Jacket
marine · M · vendu en TR, DE
- material100% recycled polyester✓ acme.example
- weight480 g✓ acme.example
- nameAcme Trail Jacket, navy, Mlapsed · shop.example
Le problème
Quatre codes, une veste, et rien pour les relier.
Un produit reçoit un nouveau code-barres pour chaque marché, chaque format et chaque changement d’emballage, et ses données vivent dans un système différent pour chacun. Quand deux d’entre eux se contredisent, l’un est écrasé sans bruit.
prodid donne au produit lui-même un identifiant qui ne change pas quand le code-barres change.
09506000134352
unité de vente pour DE et TR
un autre GTIN
la même veste en lot de deux
un autre GTIN
l’emballage de l’an prochain
TJ-2041-NVY-M
référence fabricant
Une variante
9p2d4kv7mq3nbhxf
Jamais réutilisé, jamais supprimé. Tout code qui a un jour pointé ici continue de fonctionner.
Le modèle
Famille, variante, item. Les codes pointent vers eux ; ils ne sont pas eux.
Chaque niveau a son propre opid : 16 caractères qui n’encodent rien, si bien que rien dans le produit ne peut les rendre faux.
family · 3n7k2q9vdfhb4mta
Acme Trail Jacket
Le produit tel qu’on en parle.
variant · 9p2d4kv7mq3nbhxf
marine · taille M
Une combinaison de couleur, de taille et autres.
item · kq7m3v9dn2hb4t5x
Unité de vente pour DE et TR
L’objet qui porte un code-barres.
- gtin09506000134352
- mpnTJ-2041-NVY-M
- skuTJ-2041-NVY-M
Un nouvel emballage ajoute un nouvel item avec un nouveau code-barres, sous la même variante et la même famille. Rien de ce qui pointait vers l’ancien ne casse.
Comment ça marche
Publiez sur votre domaine. prodid l’indexe. Tout le monde le résout.
01 · Publier
Trois éléments sur votre domaine
- /.well-known/prodid.json
- /prodid/items.ndjson
- _prodid TXT "v=prodid0; host=…"
Un document de découverte, un flux avec un produit par ligne, et un enregistrement DNS qui prouve que le domaine est à vous.
Comment publier →02 · Indexer
Vérifié, rapproché, attribué
- chaque ligne validée par le schéma
- rapprochée d’un opid existant, ou d’un nouveau
- chaque champ enregistré comme une assertion de votre domaine
Distributeurs, registres et jeux de données ouverts sont des sources de la même façon : à côté du fabricant, jamais au-dessus.
Comment fonctionnent les assertions →03 · Résoudre
Une URL, imprimée sur le produit
prodid.org/01/09506000134352
Navigateur → une page
API → l’enregistrement JSON
Le chemin suit la syntaxe GS1 Digital Link : il peut donc être le QR code de l’étiquette lui-même.
Comment fonctionne la résolution →
Assertions
Chaque information nomme sa source. Les désaccords restent visibles.
Rien n’est fusionné en une seule « vérité ». Quand une source cesse de publier, ses assertions sont conservées et marquées lapsed, pas supprimées.
| Propriété | Valeur | Source | Confiance | Vu |
|---|---|---|---|---|
| name | Trail Jacket | acme.example | verified | 2026-09-14 |
| brand | Acme | acme.example | verified | 2026-09-14 |
| material | 100% recycled polyester | acme.example | verified | 2026-09-14 |
| weight | 480 g | acme.example | verified | 2026-09-14 |
| media | image · CC-BY-4.0 | acme.example | verified | 2026-09-14 |
| markets | TR, DE | acme.example | verified | 2026-09-14 |
| name | Acme Trail Jacket, navy, M | shop.example | unverified · lapsed | 2026-08-02 |
- authoritative
- Contrôle le domaine et est confirmé comme titulaire de la marque.
- verified
- A prouvé le contrôle d’un domaine par DNS ou par son propre site.
- unverified
- Un nom hébergé sans domaine, un jeu de données ou une contribution.
GET /01/09506000134352 HTTP/1.1
Host: prodid.org
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Location: /id/kq7m3v9dn2hb4t5x{
"$type": "org.prodid.entity",
"version": 1,
"opid": "kq7m3v9dn2hb4t5x",
"kind": "item",
"parents": {
"family": "3n7k2q9vdfhb4mta",
"variant": "9p2d4kv7mq3nbhxf"
},
"identifiers": [
{
"scheme": "gtin",
"value": "09506000134352"
},
{
"scheme": "mpn",
"value": "TJ-2041-NVY-M",
"scope": "acme"
},
{
"scheme": "sku",
"value": "TJ-2041-NVY-M",
"scope": "acme.example"
}
],
"claims": [
{
"property": "name",
"value": "Trail Jacket",
"lang": "en",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "brand",
"value": "Acme",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "properties.material",
"value": "100% recycled polyester",
"lang": "en",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "properties.weight",
"value": {
"value": 480,
"unit": "g"
},
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "markets",
"value": "TR",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "markets",
"value": "DE",
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
},
{
"property": "name",
"value": "Acme Trail Jacket, navy, M",
"lang": "en",
"source": {
"name": "shop.example",
"trust": "unverified",
"lapsed": true
},
"seen_at": "2026-08-02T17:41:55Z"
},
{
"property": "media",
"value": {
"sha256": "e3943ea26ce08ae81809e62936dc4f934fa04da6cd57bd9ab2a90b79da751c09",
"url": "https://acme.example/img/tj2041-navy.webp",
"media_url": "https://media.prodid.org/sha256/e3943ea26ce08ae81809e62936dc4f934fa04da6cd57bd9ab2a90b79da751c09",
"license": "CC-BY-4.0",
"kind": "image"
},
"source": {
"name": "acme.example",
"trust": "verified",
"lapsed": false
},
"seen_at": "2026-09-14T09:12:03Z"
}
]
}Pour qui
Ceux qui produisent les données, et ceux qui en ont besoin.
Fabricants
Publiez vos données produit une fois, sur votre propre domaine. Aucune fiche revendeur ni place de marché ne possède la description de ce que vous fabriquez.
Publier sur votre domaine →Éditeurs d’e-commerce, d’ERP et de PIM
Un document de découverte et un flux par domaine marchand, générés à partir de données que vous avez déjà.
Choisir une voie →Développeurs
Résolvez n’importe quel code en un identifiant qui survit au reconditionnement. Chaque information dit qui l’a donnée, quand, et si cette source la soutient encore.
Obtenir les données →À propos du passeport numérique des produits de l’UE. L’ESPR exige un passeport accessible depuis un support de données sur le produit, et GS1 Digital Link est l’une des syntaxes de support en cours de normalisation pour cela. prodid n’est pas un service de passeport et publier ici ne vaut conformité à rien ; c’est le même travail de fond : un enregistrement lisible par machine par produit, à une adresse stable que vous contrôlez.
État
Où en est réellement le projet.
Spec v1. L’index et l’éditeur hébergé tournent sur prodid.org. Tout le monde peut publier, sur son propre domaine ou en hébergé.
- Stable
Spécification v1. Elle ne change que par ajout ; tout le reste serait une v2. Un document de découverte v0 est accepté jusqu’au 2027-01-26 00:00 UTC. Lisez-la et dites où elle se trompe.
- Canary et un jeu de données
Aucun catalogue d’éditeur n’est encore indexé. L’index contient deux sources : le canary du projet, canary.prodid.org, qui prouve la publication, l’exploration et la résolution de bout en bout, et dataset:wikidata, un import de test limité à 5 éléments Wikidata, unverified et sous CC0-1.0.
- Par conception
L’index est remplaçable. La spécification, les schémas, les opid et les correspondances de codes sont sous CC0. Chaque assertion garde la licence de sa source. Les informations vivent sur les domaines qui les publient : chacun peut les explorer à nouveau, et les codes imprimés gardent leur sens.
Donnez à vos produits une identité qui survit au code-barres.
Deux fichiers et un enregistrement DNS sur votre propre domaine, ou un site hébergé sans aucun domaine.