Código de barras não é produto. prodid é.
Um identificador aberto e permanente para cada produto físico. Todo código de barras e número de peça resolve para ele, e cada informação sobre ele indica a fonte que a disse.
A especificação é publicada apenas em inglês, e o texto em inglês é o normativo.
Item · Acme
Trail Jacket
azul-marinho · M · vendido em TR, DE
- material100% recycled polyester✓ acme.example
- weight480 g✓ acme.example
- nameAcme Trail Jacket, navy, Mlapsed · shop.example
O problema
Quatro códigos, uma jaqueta e nada ligando um ao outro.
Um produto ganha um código de barras novo a cada mercado, tamanho de embalagem e mudança de embalagem, e os dados dele ficam num sistema diferente para cada um. Quando dois discordam, um é sobrescrito sem aviso.
O prodid dá ao próprio produto um identificador que não muda quando o código de barras muda.
09506000134352
unidade de venda para DE e TR
outro GTIN
a mesma jaqueta em kit com duas
outro GTIN
a embalagem do ano que vem
TJ-2041-NVY-M
número de peça do fabricante
Uma variante
9p2d4kv7mq3nbhxf
Nunca reutilizado, nunca apagado. Todo código que já apontou para cá continua funcionando.
O modelo
Família, variante, item. Códigos apontam para eles; não são eles.
Cada nível tem o seu opid: 16 caracteres que não codificam nada, então nada no produto pode torná-los errados.
family · 3n7k2q9vdfhb4mta
Acme Trail Jacket
O produto como as pessoas falam dele.
variant · 9p2d4kv7mq3nbhxf
azul-marinho · tamanho M
Uma combinação de cor, tamanho e afins.
item · kq7m3v9dn2hb4t5x
Unidade de venda para DE e TR
A coisa que leva um código de barras.
- gtin09506000134352
- mpnTJ-2041-NVY-M
- skuTJ-2041-NVY-M
Uma embalagem nova adiciona um item novo com um código novo, sob a mesma variante e a mesma família. Nada que apontava para o antigo quebra.
Como funciona
Publique no seu domínio. O prodid indexa. Qualquer um resolve.
01 · Publicar
Três coisas no seu domínio
- /.well-known/prodid.json
- /prodid/items.ndjson
- _prodid TXT "v=prodid0; host=…"
Um documento de descoberta, um feed com um produto por linha e um registro DNS que prova que o domínio é seu.
Como publicar →02 · Indexar
Verificado, correspondido, atribuído
- cada linha validada contra o schema
- correspondida a um opid existente ou a um novo
- cada campo guardado como afirmação do seu domínio
Varejistas, registros e conjuntos de dados abertos são fontes do mesmo jeito: ao lado do fabricante, nunca acima dele.
Como as afirmações funcionam →03 · Resolver
Uma URL, impressa no produto
prodid.org/01/09506000134352
Navegador → uma página
API → o registro JSON
O caminho segue a sintaxe GS1 Digital Link, então pode ser o próprio QR code da etiqueta.
Como a resolução funciona →
Afirmações
Cada informação diz sua fonte. A discordância continua visível.
Nada é fundido numa única “verdade”. Quando uma fonte para de publicar, as afirmações dela são mantidas e marcadas como lapsed, não apagadas.
| Propriedade | Valor | Fonte | Confiança | 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 o domínio e está confirmada como dona da marca.
- verified
- Provou o controle de um domínio por DNS ou pelo próprio site.
- unverified
- Um nome hospedado sem domínio, um conjunto de dados ou uma contribuição.
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 quem
Para quem produz os dados e para quem precisa deles.
Fabricantes
Declare os dados dos seus produtos uma vez, no seu próprio domínio. Nenhum anúncio de revendedor ou marketplace é dono da descrição do que você fabrica.
Publique no seu domínio →Fornecedores de e-commerce, ERP e PIM
Um documento de descoberta e um feed por domínio de loja, gerados a partir de dados que você já tem.
Escolha uma via →Desenvolvedores
Resolva qualquer código para um identificador que sobrevive a uma nova embalagem. Cada informação diz quem a disse, quando e se essa fonte ainda a sustenta.
Obtenha os dados →Sobre o Passaporte Digital de Produto da UE. O ESPR exige um passaporte acessível a partir de um portador de dados no produto, e o GS1 Digital Link é uma das sintaxes de portador em padronização para isso. O prodid não é um serviço de passaporte e publicar aqui não significa conformidade com nada; é a mesma base: um registro legível por máquina por produto, num endereço estável que você controla.
Status
Onde isto realmente está.
Spec v1. O índice e o publicador hospedado rodam em prodid.org. Qualquer pessoa pode publicar, no próprio domínio ou hospedado.
- Estável
Especificação v1. Só muda por adição; qualquer outra coisa seria v2. Um documento de descoberta v0 é aceito até 2027-01-26 00:00 UTC. Leia e diga onde está errada.
- Canary e um conjunto de dados
Nenhum catálogo de publicador está indexado ainda. O índice tem duas fontes: o canary do próprio projeto, canary.prodid.org, que prova publicação, rastreamento e resolução de ponta a ponta, e dataset:wikidata, uma importação de teste limitada a 5 itens do Wikidata, unverified e sob CC0-1.0.
- Por projeto
O índice é substituível. A especificação, os schemas, os opid e os mapeamentos de códigos são CC0. Cada afirmação mantém a licença da sua fonte. As informações ficam nos domínios que as publicam, então qualquer pessoa pode rastreá-las de novo e os códigos impressos mantêm seu significado.
Dê aos seus produtos uma identidade que sobreviva ao código de barras.
Dois arquivos e um registro DNS no seu próprio domínio, ou um site hospedado sem domínio nenhum.