Un código de barras no es un producto. prodid sí.
Un identificador abierto y permanente para cada producto físico. Cada código de barras y número de pieza se resuelve a él, y cada dato sobre él nombra la fuente que lo dijo.
La especificación se publica solo en inglés, y el texto en inglés es el normativo.
Item · Acme
Trail Jacket
azul marino · M · se vende en TR, DE
- material100% recycled polyester✓ acme.example
- weight480 g✓ acme.example
- nameAcme Trail Jacket, navy, Mlapsed · shop.example
El problema
Cuatro códigos, una chaqueta y nada que los una.
Un producto recibe un código de barras nuevo por cada mercado, tamaño de envase y cambio de embalaje, y sus datos viven en un sistema distinto para cada uno. Cuando dos no coinciden, uno se sobrescribe sin avisar.
prodid da al producto en sí un identificador que no cambia cuando cambia el código de barras.
09506000134352
unidad de venta para DE y TR
otro GTIN
la misma chaqueta en pack de dos
otro GTIN
el embalaje del año que viene
TJ-2041-NVY-M
número de pieza del fabricante
Una variante
9p2d4kv7mq3nbhxf
Nunca se reutiliza ni se borra. Cualquier código que haya apuntado aquí sigue funcionando.
El modelo
Familia, variante, item. Los códigos apuntan a ellos; no son ellos.
Cada nivel tiene su propio opid: 16 caracteres que no codifican nada, así que nada del producto puede volverlos incorrectos.
family · 3n7k2q9vdfhb4mta
Acme Trail Jacket
El producto tal como se habla de él.
variant · 9p2d4kv7mq3nbhxf
azul marino · talla M
Una combinación de color, talla y similares.
item · kq7m3v9dn2hb4t5x
Unidad de venta para DE y TR
Lo que lleva un código de barras.
- gtin09506000134352
- mpnTJ-2041-NVY-M
- skuTJ-2041-NVY-M
Un embalaje nuevo añade un item nuevo con un código nuevo, bajo la misma variante y la misma familia. Nada de lo que apuntaba al anterior se rompe.
Cómo funciona
Publica en tu dominio. prodid lo indexa. Cualquiera lo resuelve.
01 · Publicar
Tres cosas en tu dominio
- /.well-known/prodid.json
- /prodid/items.ndjson
- _prodid TXT "v=prodid0; host=…"
Un documento de descubrimiento, un feed con un producto por línea y un registro DNS que demuestra que el dominio es tuyo.
Cómo publicar →02 · Indexar
Comprobado, emparejado, atribuido
- cada línea validada contra el esquema
- emparejada con un opid existente o con uno nuevo
- cada campo guardado como afirmación de tu dominio
Minoristas, registros y conjuntos de datos abiertos son fuentes del mismo modo: junto al fabricante, nunca por encima.
Cómo funcionan las afirmaciones →03 · Resolver
Una URL, impresa en el producto
prodid.org/01/09506000134352
Navegador → una página
API → el registro JSON
La ruta usa la sintaxis de GS1 Digital Link, así que puede ser el propio código QR de la etiqueta.
Cómo funciona la resolución →
Afirmaciones
Cada dato nombra su fuente. Los desacuerdos siguen a la vista.
Nada se fusiona en una única «verdad». Cuando una fuente deja de publicar, sus afirmaciones se conservan y se marcan como lapsed, no se borran.
| Propiedad | Valor | Fuente | Confianza | Visto |
|---|---|---|---|---|
| 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
- Controla el dominio y está confirmada como titular de la marca.
- verified
- Demostró el control de un dominio por DNS o por su propio sitio web.
- unverified
- Un nombre alojado sin dominio, un conjunto de datos o una contribución.
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"
}
]
}Para quién
Para quienes crean los datos y para quienes los necesitan.
Fabricantes
Declara los datos de tus productos una vez, en tu propio dominio. Ningún anuncio de revendedor ni marketplace es dueño de la descripción de lo que fabricas.
Publica en tu dominio →Proveedores de e-commerce, ERP y PIM
Un documento de descubrimiento y un feed por dominio de comercio, generados con datos que ya tienes.
Elige una vía →Desarrolladores
Resuelve cualquier código a un identificador que sobrevive al reenvasado. Cada dato dice quién lo dijo, cuándo y si esa fuente lo sigue respaldando.
Obtén los datos →Sobre el Pasaporte Digital de Producto de la UE. El ESPR pide un pasaporte accesible desde un soporte de datos en el producto, y GS1 Digital Link es una de las sintaxis de soporte que se están normalizando para ello. prodid no es un servicio de pasaportes y publicar aquí no supone cumplir nada; es el mismo trabajo de base: un registro legible por máquina por producto, en una dirección estable que tú controlas.
Estado
Dónde está esto de verdad.
Spec v1. El índice y el publicador alojado funcionan en prodid.org. Cualquiera puede publicar, en su propio dominio o alojado.
- Estable
Especificación v1. Solo cambia por adición; cualquier otra cosa sería v2. Se acepta un documento de descubrimiento v0 hasta el 2027-01-26 00:00 UTC. Léela y di dónde se equivoca.
- Canary y un conjunto de datos
Aún no hay ningún catálogo de publicador indexado. El índice tiene dos fuentes: el canary del propio proyecto, canary.prodid.org, que demuestra la publicación, el rastreo y la resolución de punta a punta, y dataset:wikidata, una importación de prueba acotada de 5 elementos de Wikidata, unverified y bajo CC0-1.0.
- Por diseño
El índice es reemplazable. La especificación, los esquemas, los opid y las correspondencias de códigos son CC0. Cada afirmación conserva la licencia de su fuente. Los datos viven en los dominios que los publican, así que cualquiera puede volver a rastrearlos y los códigos impresos conservan su significado.
Dale a tus productos una identidad que sobreviva al código de barras.
Dos archivos y un registro DNS en tu propio dominio, o un sitio alojado sin ningún dominio.